次のコマンドを使用して、一部のLinux 4.xオペレーティングシステムでハードドライブを消去しています。
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
4KiBのままで絶対に変更されません。
私は次のような他のプログラムを実行しました。
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
IO_RBYTES
そしてそれらのどれも多くの成果を出せなかったという事実に驚きましたIO_WBYTES
。
これが特定のプログラムに固有のものではないようですが、読み取りと書き込みがI / Oバイトとして計算されない/dev/zero
のはなぜですか?/dev/{zero,null}
答え1
I / Oとして計算されますが、表示されているフィールドで測定されたタイプではありません。
ブロックレイヤを通過するバイトを測定するhtop
、IO_RBYTES
およびのおよびフィールドをIO_WBYTES
表示します。read_bytes
ブロックレイヤーは関連付けられていないため、そのレイヤーから読み取った内容は表示されません。write_bytes
/proc/<pid>/io
/dev/zero
のI / Oを表示するには、のと/dev/zero
フィールドを確認する必要があります。そのフィールドrchar
はとのように表示されます。wchar
/proc/<pid>/io
htop
RCHAR
WCHAR
文字タイプ: 読んだ文字
この操作により、ストレージから読み込まれたバイト数が発生しました。これは単にプロセスに渡されるバイトの合計です。
read(2)
そして同様のシステムコール。これにはターミナルI / Oなどが含まれ、物理物理ディスクI / Oが必要かどうかに影響されません(読み取りはページキャッシュですでに満たされている可能性があります)。文字タイプ: 書かれた文字
これにより、ディスクに書き込まれたか書き込まれなければならなかったバイト数。 rcharに似た警告がここに適用されます。
バラよりman 5 proc
そしてman 1 htop
もっと学ぶ。