2011-02-09 14 views
4

top -b -n 1を実行すると、コマンドは常に同じCPU値を返します。ここで問題になることができるものtopコマンド最初の繰り返しは常に同じ結果を返します

[[email protected] ~]$ top -b -n 5 -d.2 | grep "Cpu(s)" 
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st 
Cpu(s): 39.8%us, 27.7%sy, 0.0%ni, 31.3%id, 0.0%wa, 0.0%hi, 1.2%si, 0.0%st 
Cpu(s): 39.0%us, 35.4%sy, 0.0%ni, 23.2%id, 0.0%wa, 0.0%hi, 1.2%si, 1.2%st 
Cpu(s): 41.2%us, 34.1%sy, 0.0%ni, 15.3%id, 1.2%wa, 0.0%hi, 2.4%si, 5.9%st 
Cpu(s): 59.0%us, 30.1%sy, 0.0%ni, 4.8%id, 0.0%wa, 0.0%hi, 3.6%si, 2.4%st 
[[email protected] ~]$ top -b -n 5 -d.2 | grep "Cpu(s)" 
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st 
Cpu(s): 18.9%us, 17.8%sy, 0.0%ni, 63.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu(s): 18.8%us, 21.2%sy, 0.0%ni, 55.3%id, 2.4%wa, 0.0%hi, 1.2%si, 1.2%st 
Cpu(s): 29.4%us, 24.7%sy, 0.0%ni, 45.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu(s): 60.5%us, 24.4%sy, 0.0%ni, 11.6%id, 1.2%wa, 0.0%hi, 1.2%si, 1.2%st 
[[email protected] ~]$ top -b -n 5 -d.2 | grep "Cpu(s)" 
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st 
Cpu(s): 43.4%us, 38.6%sy, 0.0%ni, 15.7%id, 0.0%wa, 0.0%hi, 1.2%si, 1.2%st 
Cpu(s): 55.3%us, 40.0%sy, 0.0%ni, 4.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu(s): 39.5%us, 48.8%sy, 0.0%ni, 5.8%id, 1.2%wa, 0.0%hi, 1.2%si, 3.5%st 
Cpu(s): 40.7%us, 55.6%sy, 0.0%ni, 2.5%id, 0.0%wa, 0.0%hi, 0.0%si, 1.2%st 
[[email protected] ~]$ top -b -n 5 -d.2 | grep "Cpu(s)" 
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st 
Cpu(s): 27.1%us, 10.6%sy, 0.0%ni, 61.2%id, 1.2%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu(s): 25.3%us, 5.7%sy, 0.0%ni, 67.8%id, 0.0%wa, 0.0%hi, 0.0%si, 1.1%st 
Cpu(s): 15.5%us, 16.7%sy, 0.0%ni, 64.3%id, 0.0%wa, 0.0%hi, 0.0%si, 3.6%st 
Cpu(s): 57.3%us, 11.2%sy, 0.0%ni, 30.3%id, 0.0%wa, 0.0%hi, 0.0%si, 1.1%st 
[[email protected] ~]$ top -b -n 5 -d.2 | grep "Cpu(s)" 
Cpu(s): 18.5%us, 10.0%sy, 0.0%ni, 67.0%id, 4.2%wa, 0.0%hi, 0.2%si, 0.1%st 
Cpu(s): 44.0%us, 6.0%sy, 0.0%ni, 42.9%id, 0.0%wa, 0.0%hi, 3.6%si, 3.6%st 
Cpu(s): 45.8%us, 9.6%sy, 0.0%ni, 44.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu(s): 34.5%us, 8.3%sy, 0.0%ni, 57.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu(s): 38.6%us, 14.5%sy, 0.0%ni, 45.8%id, 0.0%wa, 0.0%hi, 0.0%si, 1.2%st 

任意のアイデア: 次テスト実行に連続して5回を考えてみましょうか?

+0

わかりませんが、これを再現できます。 Kubuntu karmicを実行中。私はさらに、CPU計算を行っているバックグラウンドでPythonプロセスを実行しました。変化なし。 – Falmarri

答えて

3

CPU使用率の数値は、時間間隔にわたる平均値として算出されます。最初の反復では、その時間間隔は「システムブートから現在まで」です。その後の反復では、時間間隔は「最後の反復から現在まで」です。

+0

また、sysrqbの解と受け入れられた答えに基づいて、私は現在以下を使用しています: top -b -n 2 -d1 | grep "Cpu(s)" |テール-n + 2 –

4

Topは、開始前のプロセス時間を知りません。したがって、負荷平均や待機スレッドなどのさまざまな要因に基づいて、最初のパスで推測します。

トップを対話的に起動し、返された結果の最初のバッチをすばやく調べると、同じ効果が得られます。

シンプルなソリューション:top -b -n 5 -d.2 | grep "Cpu(s)" | tail -n+2

8

、誰もが1行を探している場合は、私もこの問題に遭遇したといくつかの掘削をしたこの

top -b -n 5 -d.2 | grep "Cpu" | tail -n1 | awk '{print($2)}' | cut -d'%' -f 1

1

を試しCPUの値を取得します。

「トップマン」とスクロールしている場合は、セクション7で次のように表示されます。 。 。

トップコマンドは、サンプル間のCPU時間値の変化を調べてCPUを計算します。最初にそれを実行すると、比較する前のサンプルがないので、これらの初期値はブート後のパーセンテージです。つまり、少なくとも2つのループが必要であるか、最初のループからのサマリー出力を無視する必要があります。これは、たとえばバッチモードの問題です。 CPULOOP = 1環境変数を定義すると、回避策が考えられます。 topコマンドは、標準出力の前にCPUデータのための追加の隠れたループを1回実行します。

希望すると便利です。

2

ここでは、上のすべてのプロセスのCPU使用率の合計を計算する例を示します。私は、値を平滑化するためにデフォルトの間隔を増やすために-dフラグを使います。ヘッダーはLinuxディストリビューション固有のものである可能性があるため、tailは使用しません。

top -b -d 5 -n 2 | awk '$1 == "PID" {block_num++; next} block_num == 2 {sum += $9;} END {print sum}' 
関連する問題