次のコマンドを使用して、一部のLinux 4.x OSのハードドライブを空にします。
Sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
そして、私は別のttyを開いてSudo htop
を開始し、これに気づきました:
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
IO_WBYTES
の値はごく普通のようですが、IO_RBYTES
は4 KiBのままで、変更されることはありません。
私は他のいくつかのプログラムを実行しました、例えば
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
そして、それらのどれもIO_RBYTES
またはIO_WBYTES
を大量に生成しないことに驚きました。
これは特定のプログラムに固有のものではないと思いますが、なぜ/dev/zero
から読み取って/dev/{zero,null}
に書き込むのをI/Oバイトとしてカウントしないのですか?
これらはI/Oとしてカウントされますが、見ているフィールドによって測定されるタイプのものではありません。
htop
では、_IO_RBYTES
_および_IO_WBYTES
_は_read_bytes
_の_write_bytes
_および_/proc/<pid>/io
_フィールドを示し、これらのフィールドはブロックレイヤーを通過するバイトを測定します。 _/dev/zero
_はブロックレイヤーを含まないため、そこからの読み取りは表示されません。
_/dev/zero
_からのI/Oを表示するには、_/proc/<pid>/io
_のrchar
フィールドとwchar
フィールドを確認する必要があります。これらのフィールドは、htop
にRCHAR
およびWCHAR
として表示されます。
rchar:読み取った文字
このタスクによってストレージから読み取られたバイト数。これは、このプロセスが
read(2)
に渡したバイトと同様のシステムコールの合計です。これには、ターミナルI/Oなどが含まれ、実際の物理ディスクI/Oが必要かどうかには影響されません(ページキャッシュからの読み取りは満たされている可能性があります)。wchar:書き込まれた文字
このタスクによってディスクに書き込まれた、またはディスクに書き込まれるバイト数。ここでも、rcharと同様の警告が適用されます。
詳細は _man 5 proc
_ および _man 1 htop
_ を参照してください。