Estou esvaziando um disco rígido em algum sistema operacional Linux 4.x usando este comando:
sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
E eu abri outro tty e comecei sudo htop
e notei isso:
PID USER PRI NI CPU% RES SHR IO_RBYTES IO_WBYTES S TIME+ Command
4598 root 20 0 15.5 1820 1596 4096 17223823 D 1:14.11 pv -pterb /dev/zero
O valor para IO_WBYTES
parece bastante normal, mas IO_RBYTES
permanece em 4 KiB e nunca muda.
Eu executei alguns outros programas, por exemplo
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
e fiquei surpreso ao ver que nenhum deles gera muito IO_RBYTES
ou IO_WBYTES
.
Eu acho que isso não é específico para nenhum programa, mas por que não lê /dev/zero
e grava para /dev/{zero,null}
contar como bytes de E/S?
Eles contam como E/S, mas não do tipo medido pelos campos que você está visualizando.
Em
htop
,IO_RBYTES
eIO_WBYTES
mostram os camposread_bytes
e de , e esses campos medem os bytes que passam pela camada de bloco. não envolve a camada de bloco, então as leituras dela não aparecem lá.write_bytes
/proc/<pid>/io
/dev/zero
Para ver E/S de
/dev/zero
, você precisa ver os camposrchar
e em , que aparecem em as e :wchar
/proc/<pid>/io
htop
RCHAR
WCHAR
Veja
man 5 proc
eman 1 htop
para detalhes.