psコマンド出力フィールドの%CPUがプロセスの実際のCPU使用量ではありませんか?

psコマンド出力フィールドの%CPUがプロセスの実際のCPU使用量ではありませんか?

たとえば、このBSDスタイルコマンドの出力フィールドの1つps auxはです%CPU。代替コマンドps -efl出力C(またはCP)フィールド。

psマニュアルページによると:

  • %CPUプロセスの CPU 使用率で、「##.#」形式です。現在、使用されているCPU時間をプロセスが実行された時間(CPU時間/リアルタイム比)で割ってパーセンテージで表示します。
  • 本質的に整数で表される%CPU

これがpsマニュアルページの詳細%CPUまたはですC。しかし、インターネット上のほとんどの本やウェブサイトは、単に次のように言います%CPU or C is CPU usage of a process

プロセスで使用される CPU 処理能力の割合を、CPU で使用できる総処理能力の割合として考えることもできます。それとも私だけそうなのだろうか?

ベストアンサー1

リアルタイムに対するCPU時間の割合(複数の合理的な方法の1つとして計算されます)はいプロセスで使用される CPU 処理能力を、CPU で使用できる総処理能力のパーセンテージで測定したものです。

システム内のすべてのプロセスは、プロセッサで実行中または待機中の2つの状態にすることができます。現実はこれより複雑でより多くのプロセス状態を持っていますが、単純化のために、この答えは実行中の状態を区別しません。 、実行可能、中断可能な待機、中断不可能な待機など)。

通常のプロセスは通常、プロセッサ上で実行するのに少し時間を費やし、最終的にイベントが発生するのを待ちます(たとえば、ネットワーク接続へのデータ到着、ディスクI / O完了、ロック可能、実行可能プロセスの完了後にCPUを再利用できるようになります))。時間を使い切ってしまいました)。

そのインターバルの長さに対するインターバル中にプロセスがプロセッサで実行されるのに要する時間の割合は、非常に興味深い属性である。プロセスは、これらの特性によって大きく異なる場合があります。たとえば、科学コンピューティングプログラムを実行するプロセスは最終的に多くのCPUとわずかなI / Oを使用しますが、シェルは主にI / Oを待ち、時々いくつかの処理を実行します。

理想的な状況(スケジューラのオーバーヘッドなし、割り込みなしなど)と完全な測定では、システムの各プロセスが1秒で使用するCPU時間の合計は1秒未満で、残り時間はアイドル状態です。 CPU時間。より多くのプロセス、特にCPUバインドプロセスが追加されると、アイドルCPU時間の割合が減少し、すべてのプロセスで使用される合計CPU時間は1秒あたり1秒に近づきます。この時点で追加のプロセスを追加すると、実行可能なプロセスがCPUを待つことになり、実行キューの長さが長くなり(負荷の平均が増加し)、最終的にシステムが遅くなる可能性があります。

開始から経過した時間に対するプロセスの合計CPU時間の単純な割合を取ることは、最終的にプロセスの時間を表します。平均CPU使用率。一部のプロセスは実行中に動作を変更するため(たとえば、クエリを待っているデータベースサーバーと多くの複雑なクエリを実行するのと同じデータベースサーバーなど)、最近のCPU使用率を知ることがより興味深いことがよくあります。したがって、一部のシステム(FreeBSD、Mac OS Xなど)では、次のように崩壊平均が使用されます。このマンページ:

プロセスの CPU 使用率です。これは、前(リアルタイム)時間の1分単位の崩壊平均です。計算の時間ベースが異なるため(プロセスが非常に長く進行しているため)、すべての%cpuフィールドの合計は100%を超える可能性があります。

Linuxには、以下に基づいてCPU使用率を提供する単純化された統計があります。このマンページ:

CPU 使用率は、現在のプロセスの全寿命中の実行時間の割合として表示されます。これは理想的ではなく、psが準拠する規格を満たしていません。 CPU使用量が正確に100%になる可能性はほとんどありません。

おすすめ記事