Estoy vaciando un disco duro en algunos SO Linux 4.x usando este comando:
sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
Y abrí otro tty y comencé a sudo htop
notar esto:
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
El valor de IO_WBYTES
parece bastante normal, pero IO_RBYTES
permanece en 4 KiB y nunca cambia.
Ejecuté algunos otros programas, por ejemplo
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
y me sorprendió ver que ninguno de ellos genera mucho IO_RBYTES
o IO_WBYTES
.
Creo que esto no es específico de ningún programa, pero ¿por qué no lee /dev/zero
y escribe para /dev/{zero,null}
contar como bytes de E / S?
/dev/null
para no terminar la interfaz con ese hardware y no obstruir los buses de E / S. Llevado al extremo; ¿son las lecturas / escrituras a / desde la memoria también E / S? Por supuesto, no hay una delineación difícil para estas cosas, y todo depende de la perspectiva que tome en estas cosas y de cuán útil esa perspectiva termine siendo para usted.
/dev/{null,zero}
(que generalmente no es un cuello de botella). Sin embargo, esa es solo mi perspectiva :)
read(2)
y write(2)
cuenta como E / S, lo cual es muy razonable en su propio sentido.