it-swarm-ja.com

CPUのパーセントはどういう意味ですか?

プロセスごとのCPU使用率を監視しています。プロセスはどのようにして50%のCPUしか使用しませんか?プロセスは100%、0%、100%の順に使用しませんか?他のすべての命令とは異なり、異なるプログラムです。

11
Anthony D

合計を1秒に1回だけポーリングします。あなたはそれが最後の1秒のうちどれだけ使用したかを見ています。

CPUが50%でしばらく座っているのを見ると、おそらく起こっているのは、デュアルCPUシステムで1つのCPUを100%使用しているということです。

16
Joel Coehoorn

技術的にはあなたは正しいです。いつでも、CPUは使用されているか、使用されていません。ただし、それをグラフに表示することはあまり役に立ちません。そのため、グラフは一定期間、おそらく1秒ごとにCPU使用率を平均しています。

11
Eric Petroelje

OSは、特定の期間プロセスをスケジュールします。したがって、プロセスが(たとえば)10ミリ秒のうち1ミリ秒にスケジュールされている場合、10%のCPUを使用します。

(シングルスレッド、シングルCPUシステムでは)プロセスが実行されているか、実行されていないため、少し直感に反します。つまり、100%または0%を使用しています。表示されるパーセンテージは、時間枠全体で測定され、実行するプロセスにタイムスロットを割り当てるOSの測定値です。

I/Oにアクセスしている場合、プロセスはこれに寄与しないことに注意してください。したがって、大規模な計算を行う場合は、100%登録します(他に何も実行されないと仮定します)。その後、ネットワークパケット/ディスクアクセスなどを待つと、プロセスがまだ実行されているにもかかわらず、CPUの数値が低下します。

3
Brian Agnew

非常に低いレベルでは、あなたは基本的に正しいです。任意の時点で、プロセッサは特定のプロセスに対して命令を実行しているか、実行していないかのどちらかです。

ただし、OSはプロセスとプロセッサの間に位置しているため、プロセスは時間を共有します。表示されるパーセンテージは、OSがそのプロセスを許可した最近の処理時間のパーセンテージです。

2
tim

それは平均時間に基づいています。すべてのスレッドが(優先度に基づいて)同じCPU時間の区画を持つことができますが、スレッドは「ありがとう、でも私はアイドル状態です」と言って、次のスレッドに順番を渡すことができます。そのため、プログラムは常に同じ%時間を使用しているわけではなく、ほとんどのプログラムは0%のCPUを消費しており、実際にCPUを必要とするプログラムはそれ自体でほぼ100%の時間を費やす可能性があります。

なぜ50%で上限が設定されているのですか?おそらく2つのCPUコアがあり、1つだけを使用しています。

または、提案されているように、ハイパースレッディングを使用していますが、これが正確にどのように動作するかはわかりません。

1
Havenard

プログラムが大量のI/O(ディスクまたはネットワークの読み取り/書き込み)を実行している可能性があります。それはプログラムをビジー状態に保ちますが、CPU時間をほとんどまたはまったく必要としません。

0
Mike Two

システム使用率はサンプリングされ、平均化されます。これが唯一の賢明な方法です。

例えば。プロセス/スレッドが1秒間に実行に費やした時間の記録が保持されます。 CPUに1秒を費やした場合、それは100%のCPU(または、2つのCPUがある場合は50%など)、100ミリ秒を費やした場合、10%のCPU使用率になります。

0
nos