CPU時間 のWikipediaページに、
CPU時間は、クロックティックまたは秒で測定されます。多くの場合、CPU時間をCPU使用率と呼ばれるCPUの容量のパーセンテージとして測定すると便利です。
期間をパーセンテージに置き換える方法がわかりません。 top
を見ても、%CPU
MATLAB
が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使用率を計算するにはどうすればよいですか?
CPU時間はdiscreteタイムスライス(ティック)で割り当てられます。特定の数のタイムスライスの間、CPUはビジーですが、それ以外の場合はビジーです(アイドルプロセスによって表されます)。下の図では、CPUは10個のCPUスライスのうち6でビジーです。 6/10 = .60 =ビジー時間の60%(したがって、40%のアイドル時間が存在します)。
パーセンテージは、「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%を超える表示が得られることがよくあります。
オペレーティングシステムでは、これらの貴重なスライスをプロセスに割り当てるのはスケジューラのジョブなので、これを報告するのはスケジューラです。
CPU時間は、プロセスがCPUを使用している時間です。CPUをパーセンテージに変換するには、渡されたリアルタイムの時間で除算します。
したがって、2秒間に1秒のCPU時間を使用するプロセスがある場合、CPUの50%を使用しています。
MATLABプロセスの場合、217%は、最後のサンプル間隔で毎秒2.17秒のCPU時間を使用していることを示します-2つのCPUコアを独占し、3分の1を占めています。