web-dev-qa-db-ja.com

CPU時間とCPU使用率はどのように同じですか?

CPU時間 のWikipediaページに、

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

期間をパーセンテージに置き換える方法がわかりません。 topを見ても、%CPUMATLABが2.17のコアを使用していることを教えてください。

  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使用率を計算するにはどうすればよいですか?

23
Jasmine Lognnes

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

enter image description here

パーセンテージは、「100の部分に分割された何かの特定の数の部分として表される数または率」として定義されます。したがって、この場合、これらの部分は個別の時間スライスであり、ビジータイムスライスとアイドルタイムスライス、つまりビジーからアイドルタイムスライスへの比率です。

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

topのようなものでは、ビジー状態のCPUサイクルは、ユーザー時間やシステム時間などの割合にさらに分解されます。 LinuxのtopおよびWindowsのperfmonでは、合計が100%* the_number_of_cpu_coresであるため、100%を超える表示が得られることがよくあります。

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

32
Kyle Brandt

CPU時間は、プロセスがCPUを使用している時間です。CPUをパーセンテージに変換するには、渡されたリアルタイムの時間で除算します。

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

MATLABプロセスの場合、217%は、最後のサンプル間隔で毎秒2.17秒のCPU時間を使用していることを示します-2つのCPUコアを独占し、3分の1を占めています。

15
Shane Madden