特定のプロセスに対してtopas
を実行すると、CPU%列に43%と表示され、85%にジャンプします。
私が実行するとき:
"ps aux | grep processName"
同じプロセスは5%です。
より正確なものは何ですか? Linuxの「watch」コマンドに似たループも作成しましたが、%5になっていることがわかります。
Topasとpsの違いは何ですか、そして誰が正しいですか?
ps
の出力:
[ttfai231:root]/root>ps aux | head -1; ps aux | sort -rn +2 | head -10
USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND
root 9306548 8.6 1.0 12880 12880 - A 13:35:33 41:20 MYDAEMON
root 1048868 2.0 0.0 448 448 - A 13:22:36 11:50 wait
これは、各フィールドの計算方法の違いだと思います。 topas
フィールドの場合:
%CPU使用率
監視間隔でのプロセスの平均プロセッサ使用量。プロセスが最初に表示されるとき、この値は、プロセスの存続期間中の平均プロセッサー使用量です。
... ps
フィールド:
%CPU
(uおよびvフラグ)プロセスがCPUを使用した時間のパーセンテージプロセスが開始されてから。この値は、プロセスがCPUを使用する時間をプロセスの経過時間で割ることによって計算されます。マルチプロセッサ環境では、同じプロセス内の複数のスレッドが異なるCPUで同時に実行される可能性があるため、値は使用可能なCPUの数でさらに除算されます。 (このデータが計算されるタイムベースはさまざまであるため、すべての%CPUフィールドの合計が100%を超える可能性があります。)
違いを強調する説明の一部を太字にしました。
topas
CPU%値は、プロセスが多かれ少なかれCPU時間を使用するにつれて変動するため、最新の(おそらく短い)間隔でのCPU使用率が表示されます。 ps
%CPU値は、常にプロセスの存続期間中の平均として表示されます。