
私はVirtualMin 4.08.gpl GPLと2つのCPUコアを持つUbuntu Linux 12.04.1を実行しています。
過去数週間、ほぼ継続的に5をはるかに超える負荷平均で実行され、しばしば10に近く、時には20に近かった。
現在のCPU負荷平均:9.20(1分)8.20(5分)7.81(15分)
同時に、VirtualMinは次を返します。
Virtual Memory: 996 MB total, 15.44 MB used
Real Memory: 3.80 GB total, 972.43 MB used
Local disk space: 915.94 GB total, 116.03 GB used
マシンを数回再起動(shutdown -rf now
)すると、すぐに高いCPU負荷状態に戻ります。
高いCPU top
(またはhtop
)で実行すると、機密情報は返されません。実際に数分間見てみると、親プロジェクトのCPUが3%高くなる可能性があります。
Top はまた、次を返します。
Cpu(s): 2.2%us, 1.2%sy, 0.0%ni, 0.0%id, 96.5%wa, 0.0%hi, 0.2%si, 0.0%st
%wa
高すぎて心配になります。 80%以上を維持しているようです。私はそれが%待機していることを知っていますが、それが実際に何を意味するのかわかりません。
どこでデバッグを開始し、CPU負荷の高い原因を見つけることができますか?
答え1
これは「CPU負荷平均」ではなく、システム「負荷平均」です。これは必ずしもCPUが使用中であるという意味ではありませんが、システムの一部が使用中であることを意味します。この値はより詳細な説明にあります/proc/loadavg
。man proc
/proc/loadavg
ファイルの最初の3つのフィールドはロード平均値で、平均1分、5分、15分間キューで実行されているか(ステータスR)、ディスクI / Oを待っている(ステータスD)ジョブの数を提供します。これは、uptime(1)および他のプログラムによって提供されるのと同じ負荷平均です。 4番目のフィールドは、スラッシュ(/)で区切られた2つの数字で構成されています。 1つ目は、現在実行可能なカーネルスケジューリングエンティティ(プロセス、スレッド)の数です。スラッシュの後の値は、現在システムに存在するカーネルスケジューリングエンティティの数です。 5番目のフィールドは、システムで最後に作成されたプロセスのPIDです。
したがって、表示されるのは実行中またはディスクを待つ平均プロセスです。
負荷平均が20の場合、「実行中」または「待機」状態のプロセスが平均20個あることを意味します。負荷平均は非常に高く、CPUは非常に低く、負荷平均は非常に低く、CPUは非常に高い場合があります。なぜなら互いに関係がないからです。
%wa
特定のプロセスが警告の頻度でディスクを損傷し、他のすべてのプロセスの速度を低下させる可能性があるため、Dプロセスから始めて犯人を見つけます。これはwa
、IOがほとんどの親実装を待っていることを意味します。