Sto svuotando un disco rigido su alcuni SO Linux 4.x usando questo comando:
sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
E ho aperto un altro tty e ho iniziato sudo htop
e notato questo:
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
Il valore per IO_WBYTES
sembra abbastanza normale, ma IO_RBYTES
rimane a 4 KiB e non cambia mai.
Ho eseguito alcuni altri programmi, ad esempio
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
ed è stato sorpreso di vedere nessuno di loro genera molto IO_RBYTES
o IO_WBYTES
.
Penso che questo non sia specifico per nessun programma, ma perché non legge /dev/zero
e scrive per /dev/{zero,null}
contare come byte I / O?
/dev/null
non finendo per interfacciarsi con tale hardware e non ostruire i bus I / O. Portato all'estremo; sono anche le operazioni di lettura / scrittura nella / dalla memoria? Certo, non esiste una delineazione dura per queste cose, e tutto dipende da quale prospettiva prendi in queste cose e da quanto utile questa prospettiva ti finisce per essere.
/dev/{null,zero}
(che di solito non è un collo di bottiglia). Questa è solo la mia prospettiva però :)
read(2)
e write(2)
conta come I / O, il che è molto ragionevole nel suo senso.