Ich lösche eine Festplatte unter einem Linux 4.x-Betriebssystem mit dem folgenden Befehl:
sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
Und ich öffnete ein weiteres tty und fing an sudo htop
und bemerkte dies:
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
Der Wert für IO_WBYTES
scheint ganz normal zu sein, IO_RBYTES
bleibt aber bei 4 KiB und ändert sich nie.
Ich habe zum Beispiel ein paar andere Programme ausgeführt
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
und war überrascht zu sehen, dass keiner von ihnen eine Menge von IO_RBYTES
oder erzeugt IO_WBYTES
.
Ich denke, das ist nicht programmspezifisch, aber warum liest /dev/zero
und schreibt /dev/{zero,null}
man nicht als E / A-Bytes?
/dev/null
um keine Schnittstellen für solche Hardware zu erhalten und E / A-Busse nicht zu verstopfen. Auf das Äußerste gebracht; Werden Lese- / Schreibvorgänge in / aus dem Speicher auch E / A-Vorgänge ausgeführt? Natürlich gibt es für diese Dinge keine genaue Abgrenzung, und alles hängt davon ab, welche Perspektive Sie in diesen Dingen einnehmen und wie nützlich diese Perspektive letztendlich für Sie ist.
/dev/{null,zero}
(was normalerweise kein Engpass ist). Das ist aber nur meine Perspektive :)
read(2)
und write(2)
als I / O zählt, was in seinem eigenen Sinne sehr vernünftig ist.