iotop
出力がわかりません。約1.5 MB / sのディスク書き込み(右上)が表示されますが、すべてのプログラムには0.00 B / sがあります。どうして?
このビデオは、Kubuntu 14.04.3 LTS x64 で、数百万のファイルを 含むフォルダーのコンテンツをを使用して削除するときに撮影されましたperl -e 'for(<*>){((stat)[9]<(unlink))}'
。
iotop
を使用して起動されましたsudo iotop
。
iotop
出力がわかりません。約1.5 MB / sのディスク書き込み(右上)が表示されますが、すべてのプログラムには0.00 B / sがあります。どうして?
このビデオは、Kubuntu 14.04.3 LTS x64 で、数百万のファイルを 含むフォルダーのコンテンツをを使用して削除するときに撮影されましたperl -e 'for(<*>){((stat)[9]<(unlink))}'
。
iotop
を使用して起動されましたsudo iotop
。
回答:
iotopが表示する情報は、個々のプロセスやシステム全体について同じ方法で収集されるわけではありません。「実際の」グローバル数値は、プロセスごとの数値の合計ではありません(これが「合計」です)。
すべての情報は、procファイルシステムから収集されます。
/proc/PID/io
rchar
wchar
read
write
readv
writev
recv
send
/proc/vmstat
、具体的にpgpgin
およびから読み取られpgpgout
ます。これらは、カーネルとハードウェアの間で交換されるデータを測定します(より正確には、これはカーネル内のブロックデバイスレイヤーによってシャッフルされるデータです)。プロセスごとのデータとブロックデバイスレイヤーのデータが異なる理由は多数あります。特に:
最後の違いが、ここで見ているものを説明しています。ファイルを削除してもメタデータのみが影響を受け、データは影響を受けないため、プロセスは何も書き込みません。削除するファイルをリストするためにディレクトリの内容を読み込んでいる可能性がありますが、それは気付かないうちにスクロールするほど小さいものです。
Linuxがファイルメタデータの更新を監視する方法を提供するとは思わない。/sys/fs
一部のファイルシステムでは、エントリを介してファイルシステムごとのI / Oを監視できます。特定のプロセスに対してメタデータI / Oを説明することはできないと思います。複数のプロセスが同じメタデータを読み取ったり変更したりする可能性があるため、一般的な場合は非常に複雑になります。
rm -r
が現在処理されているかを確認することで確認できますがstrace
、各ディレクトリでのトラバーサルの順序はいくぶん予測不可能であるため、完了率の非常に有用な推定値は得られません。そのファイルシステムで進行中の大規模な操作が1つだけで、ハードリンクがあまり多くないdf -i
場合、監視は処理されたファイルの数を示します。