it-swarm.com.de

Warum zählt das Lesen von / dev / zero nicht als IO_RBYTES?

Ich entleere eine Festplatte unter einem Linux 4.x-Betriebssystem mit diesem Befehl:

Sudo sh -c 'pv -pterb /dev/zero > /dev/sda'

Und ich öffnete ein weiteres tty und startete Sudo htop Und bemerkte Folgendes:

  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, aber IO_RBYTES Bleibt 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 viel IO_RBYTES oder IO_WBYTES erzeugt.

Ich denke, dies ist nicht programmspezifisch, aber warum liest man nicht aus /dev/zero Und schreibt in /dev/{zero,null}, Um als E/A-Bytes zu zählen?

25
iBug

Sie zählen zwar als E/A, jedoch nicht von dem Typ, der anhand der Felder gemessen wird, die Sie betrachten.

In htop zeigen IO_RBYTES Und IO_WBYTES Die Felder read_bytes Und write_bytes Aus /proc/<pid>/io, Und diese Felder messen Bytes, die durch die Blockschicht gehen. /dev/zero Bezieht die Blockebene nicht ein, daher werden dort keine Lesevorgänge angezeigt.

Um E/A von /dev/zero Zu sehen, müssen Sie die Felder rchar und wchar in /proc/<pid>/io Betrachten, die in htop als RCHAR und WCHAR:

rchar : Gelesene Zeichen

Die Anzahl der Bytes, die durch diese Task aus dem Speicher gelesen wurden. Dies ist einfach die Summe der Bytes, die dieser Prozess an read(2) und ähnliche Systemaufrufe übergeben hat. Es enthält Dinge wie Terminal-E/A und wird nicht davon beeinflusst, ob die tatsächliche physische Festplatten-E/A erforderlich war oder nicht (der Lesevorgang wurde möglicherweise aus dem Seitencache ausgeführt).

wchar : geschriebene Zeichen

Die Anzahl der Bytes, die diese Aufgabe verursacht hat oder auf die Festplatte geschrieben werden soll. Hier gelten ähnliche Einschränkungen wie bei rchar.

Siehe man 5 proc und man 1 htop für Details.

54
Stephen Kitt