![DU によって CPU 使用率が高くなるのはなぜですか?](https://rvso.com/image/623615/DU%20%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%20CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E3%81%8C%E9%AB%98%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
CentOS 6.5 では、du -sk /home
/ sh -c (du -sk \/home) 2>/dev/null
home のディスク使用がスケジュールされているため実行しますが、du
CPU 使用率が 100% になります。さらに、終了する前に別の du が実行され、それが積み重なって、システムがダウンしてしまいます。
それ以来、自動チェックを無効にしましたが、du -sk /home
手動でも実行できません。du
他のディレクトリでは問題なく(高速に)実行されます(ただし、/home は最大で 4912620 なので、それほど時間はかからないはずです)。
DUが/homeでCPU使用率を高くする原因を知りたい
更新 1: 完全な再起動 (ホスト + ゲスト) により問題は解決しました。
アップデート2: 問題が再発しました。du の実行中、CPU 使用率は (us) と (sy) の間でほぼ半々に分かれています。(wa) は 1% を超えることはありません。また、IOWAIT はディスク書き込みのみ?
答え1
正確な理由は言えませんが、何が起こっているのかを絞り込むために私が行うことは次のとおりです。
cd /home
for i in * ; do echo "Starting in ${i}..." ; du -s ${i} ; done
これにより、ディレクトリ内の各コマンドに対して「du -s」が実行され/home
、実行内容が表示されます。また、シェルとして sh または bash を使用していることが前提となります。
問題の原因となっているディレクトリが見つかったら、さらに 1 つのディレクトリに移動して、そこで何が起こるかを確認します。また、この方法では、for ループを開始するレベルの隠し (「ドット」) ディレクトリはチェックされないことに注意してください。隠しディレクトリもチェックするか、glob 式を変更して隠しディレクトリを含める必要がある場合があります。
答え2
ようやく問題が何なのかが分かりました。この郵便受け。
root> modprobe vhost_net root> echo vhost_net > /etc/modules
何らかの理由で、以前は virtio インターフェースがドライバーをロードしていませんでした。今はすべて正常です。