CプログラムからCPU使用率の統計を取得する


8

CプログラムからCPU使用率の統計を読みたいのですが、CPUの使用率やスチール時間などに興味があります。これらの統計は、topコマンドの3行目に表示されています。

()を使用してtopの出力を解析しようとしましたが、正しい統計を表示し始める前に、常に同じ「架空の」値を提供しているようですawktop -n 1 -b | awk '{print $0}'top

コードから、またはいくつかのコマンドの出力を解析してCPU使用率の統計を取得する方法はありますか?

編集:

プラットフォームはLinuxです

ありがとうございました。


もちろん、標準的な方法はありません。ターゲットOSを正確にします。
jlliagre 2011

回答:


5

の最初の数行を読みたい/proc/stat。あなたはそれを2回読んで、測定された時間を空けて、2番目から最初の数のセットを引く必要があります。行は次のようになります。

cpu  1526724 408013 600675 541100340 2861417 528 14531 0 0 0
cpu0 344507 77818 251244 134816146 1119991 324 13283 0 0 0
cpu1 502614 324065 179301 133991407 1631824 136 906 0 0 0
cpu2 299080 3527 79456 136144067 103208 59 255 0 0 0
cpu3 380521 2602 90672 136148719 6393 7 86 0 0 0
intr 2111239193 344878476 16943 ...

最初の行はすべてのコアの集計です。次の行は各コアを示しています。で始まる行が表示されたらintr、解析を停止することがわかります。

各数値は、CPUが特定の状態で費やした時間です。単位は通常100分の1秒です。フィールドはusernicesystemidleiowaitirqsoftirqstealguest、とguest_nice

もちろん、信頼できるドキュメントはソースコードです。Linuxカーネルソースのコピーが手元にある場合はfs/proc/stat.c、特にshow_stat関数を参照してください。


proc / statが更新される頻度を知っていますか?1ミリ秒に1回程度のように、ありがとうございます。
0xFF

それらは実際のファイルではありません。それらを開くと、その内容が計算されます。
David Schwartz

3

Cで読む方法を示すWeb上のがあります/proc/pid/stat

あなたは読むことができるutimeか、stime二つの異なる瞬間に価値観や目的のCPU使用率の統計を計算します。(私topはこの生データも使用していると思います。)

(忘れました:これはLinux固有です。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.