Estou esvaziando um disco rígido em alguns sistemas operacionais Linux 4.x usando este comando:
sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
E eu abri outro tty e comecei sudo htope 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 de IO_WBYTESparece bastante normal, mas IO_RBYTESpermanece em 4 KiB e nunca muda.
Eu corri alguns outros programas, por exemplo
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
e ficou surpreso ao ver que nenhum deles gera muito IO_RBYTESou IO_WBYTES.
Eu acho que isso não é específico para nenhum programa, mas por que não lê /dev/zeroe grava para /dev/{zero,null}contar como bytes de E / S?
/dev/nullnão terminam a interface com esse hardware e não obstruem os barramentos de E / S. Levado ao extremo; As leituras / gravações na / da memória também são de E / S? Obviamente, não há delineamento rígido para essas coisas, e tudo depende de qual perspectiva você adota e de quão útil essa perspectiva acaba sendo para você.
/dev/{null,zero}(que geralmente não é um gargalo). Essa é apenas a minha perspectiva:)
read(2)e write(2)conta como I / O, que é muito razoável em seu próprio sentido.