CPU時間とCPU使用率は同じですか?


23

CPU時間の Wikipediaページでは、

CPU時間は、クロックティックまたは秒で測定されます。多くの場合、CPU使用率と呼ばれるCPU容量の割合としてCPU時間を測定すると便利です。

期間をパーセンテージで置き換える方法がわかりません。を見るとtop、2.17のコアを使用し%CPUていることMATLABはわかりませんか?

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
18118 jasl      20   0 9248400 261528  78676 S 217.2  0.1   8:14.75 MATLAB      

質問

CPU使用量をよりよく理解するために、CPU使用量を自分で計算するにはどうすればよいですか?


「トップ」を開いた状態で「1」を押すと、コアごとに粒度が細かくなります。
ピーター14

それが一番です(1)。
マイケルハンプトン

Linuxに、このコマンドラインリクエストで各プロセッサがどれだけビジーであるかを表示させてください。mpstat -P ALL 5 3マルチプロセッサステータスの場合は5秒3間隔で入力します。コアの数によって報告される%CPUを除算して、平均CPUビジー%を取得します。iostat -xm 5 3 enterは、使用可能なコア/ CPUの数を示します。
ウィルソンHauck

回答:


32

CPU時間は、個別のタイムスライス(ティック)で割り当てられます。特定の数のタイムスライスでは、CPUはビジーであり、そうでない場合は(アイドルプロセスで表されます)。下の図では、CPUは10個のCPUスライスのうち6個でビジーです6/10 = .60 =ビジー時間の60%(したがって、アイドル時間は40%になります)。

ここに画像の説明を入力してください

パーセンテージ「番号又は100個の部分に分割何かの部品の特定の数として表現される速度」として定義されます。したがって、この場合、これらの部分は時間の離散スライスであり、何かはビジータイムスライスとアイドルタイムスライス(ビジータイムとアイドルタイムスライスの割合)です。

CPUはGHz(1秒間に数十億サイクル)で動作するため。オペレーティングシステムは、ティックと呼ばれる小さな単位でその時間をスライスします。実際には1/10秒ではありません。Windowsのティックレートは1秒間に1,000万ティックであり、Linuxではsysconf(_SC_CLK_TCK)1秒間に通常100ティックです。

のようなものtopでは、ビジーなCPUサイクルはユーザー時間やシステム時間などの割合にさらに分割されます。ではtopLinux上およびWindowsのパフォーマンスモニタ、あなたは多くの場合、合計は100%* the_number_of_cpu_coresあるので、100%を超えて行くの表示を、取得します。

オペレーティングシステムでは、これらの貴重なスライスをプロセスに割り当てるスケジューラの仕事であるため、スケジューラがこれを報告します。


1
タイムスライスは、10億分の1秒単位では測定されません。彼らはそれほど短くはありません。これらは、0.1ミリ秒から10ミリ秒の間にある可能性が高くなります。APIの時間値の解決は、タイマー割り込みのレートとは異なります。Linuxの一部のAPI呼び出しには、ナノ秒単位で指定された時間がありますが、その頻度のタイマー割り込みは望ましくありません。1秒あたり100万の割り込みがある場合、すべてのCPU時間をコンテキストスイッチに費やします。
カスペルド14

2
1000ティックを意味しますか?Linuxシステムはすべて、1000ティック(EL5およびEL6)、または1000ティック+ティックレス(EL7)のいずれかです。それとも別の意味ですか?
マイケルハンプトン

1
マニュアルページには、「対応する変数は廃止されています」と書かれています。それに頼ることはできないと思います。今月の/boot/config-2.6.32-whateverでカーネル構成を確認しました...
Michael Hampton

1
あ、いや、彼らは同じことを報告していない。CLK_TCKは、ユーザー空間に対して明示的にスケーリングされた値であり、カーネルが実際に使用するティック数に関係なく、明らかに100になります。SO(にあるいくつかの良い説明12
マイケル・ハンプトン

2
また、そのAPI呼び出しが参照するWindowsの「チック」は、Windowsタイマーの割り込み頻度と同じではなく、したがって実際には比較できないと思います。
マイケルハンプトン

15

CPU時間は、プロセスがCPUを使用している時間です-パーセンテージに変換することは、経過した実時間の量で割ることによって行われます。

したがって、2秒間で1秒のCPU時間を使用するプロセスがある場合、CPUの50%を使用しています。

MATLABプロセスの場合、217%は、最後のサンプルインターバルで毎秒2.17秒のCPU時間を使用したことを示します。事実上、2つのCPUコアを独占し、3分の1を使用します。


5
または、8個のCPUの25%と9個目のCPUの一部を使用している可能性があります。
ボブジャービス-復帰モニカ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.