私は、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負荷でバックアップします。
top
(またはhtop
)を実行しても、高CPUで実行しても何も意味がありません。実際、数分間監視すると、最高のアイテムはおそらく高3%CPUになります。
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の高負荷の原因を突き止めることができますか?
これらは「CPU負荷平均」ではなく、システムの「負荷平均」です。 CPUがビジーであるとは限りませんが、システムの何かがビジーです。この値は/proc/loadavg
どのman proc
はより詳細に説明しています:
/proc/loadavg
このファイルの最初の3つのフィールドは、平均1、5、15分間の実行キュー(状態R)またはディスクI/O待機(状態D)のジョブ数を示す負荷平均値です。それらはuptime(1)や他のプログラムによって与えられる負荷平均数と同じです。 4番目のフィールドは、スラッシュ(/)で区切られた2つの数値で構成されます。これらの最初は、現在実行可能なカーネルスケジューリングエンティティ(プロセス、スレッド)の数です。スラッシュの後の値は、システムに現在存在するカーネルスケジューリングエンティティの数です。 5番目のフィールドは、システムで最後に作成されたプロセスのPIDです。
したがって、表示されているのは、実行中またはディスクを待機しているプロセスの平均です。
平均20の負荷が表示されている場合は、平均20のプロセスが実行中または待機状態にあることを意味します。負荷平均が非常に高く、CPUが非常に低い、または負荷平均が非常に低く、CPUが非常に高い場合があります。これらは関係を共有していないためです。
%wa
高は、他のすべてを遅くする不思議な頻度でディスクを破壊する何らかのプロセスである可能性があります。そのため、Dプロセスを開始する原因を特定します。 wa
はIOほとんどのトップの実装で待機することを意味します。