PSI CPUがいっぱいだったとはどういう意味ですか?

PSI CPUがいっぱいだったとはどういう意味ですか?

見つけました。二つ 記事PSIに関しては、彼らはすべてCPUに「いくつかの」指標しかないと言います。atopまた、「cpu some」のみ表示されます。

しかし、私のシステムには「cpu full」マークがあります。

$ cat /proc/pressure/cpu
some avg10=0.05 avg60=0.33 avg300=0.33 total=5815043711
full avg10=0.00 avg60=0.02 avg300=0.06 total=1288113602

CPUがすべてのジョブを停止するまでの時間を測定する必要がありますが、これが発生する原因は何ですか?実際に何を測定しますか?

答え1

私は同じことを迷っていましたが、うまくいく説明が見つかりませんでした。 cgroup PSIファイルを表示すると、状況が若干異なります。
それで、Linuxカーネルのソースコードを見ました。 psi.c

[psi.c]
もちろん、CPUリソースのFULL状態はシステムレベルではなくcgroupレベルに存在します。 cgroup レベルで FULL は、cgroup 内のすべての非アイドル操作が cgroup 以外の他のタスクで使用されている CPU リソースによって遅延されるか、cgroup cpu.max 構成によって制限されることを意味します。

fullで提供しないでください/proc/pressure/cpu。それは言葉ではありません。ホストでは CPU リソースが不足しているため、すべてのジョブを同時にブロックすることはできません。 CPUの数と同じ数はいつでも実行できます(メモリまたはIOによってブロックされていない限り、これは他のファイルに反映されます)。この値は、
特定のワークロードの最大リソースを制限するために仮想化(コンテナ)またはcgroupを使用している場合にfull存在できます。/sys/fs/cgroup/<cgroup_name>/cpu.pressure数値が 0 より大きい場合は、すべての CPU が cgroup 外部ジョブに使用されることを意味するため、そのグループ内のすべての CPU が使用されます。 cgroup CPU リソースが不足しているため、cgroup 内でジョブがブロックされました。
RAMまたはIOによる一時停止は、CPUの負担ではなく、対応するファイルに反映されます。

システムがこれを表示する場合は、ある種のfull奇妙/proc/pressure/cpuな構成であるか、仮想化されたシステムがcgroup値でファイルを上書きする可能性があります。

答え2

ソースを検索してください、ルーク。カーネル文書のカーネルツリーにありますDocumentation/accounting/psi.rst

The "some" line indicates the share of time in which at least some
tasks are stalled on a given resource.

The "full" line indicates the share of time in which all non-idle
tasks are stalled on a given resource simultaneously. In this state
actual CPU cycles are going to waste, and a workload that spends
extended time in this state is considered to be thrashing. This has
severe impact on performance, and it's useful to distinguish this
situation from a state where some tasks are stalled but the CPU is
still doing productive work. As such, time spent in this subset of the
stall state is tracked separately and exported in the "full" averages.

答え3

ツールを使用すると、システムに手動でストレスを与え、stress-ngCPU負荷を監視できます。

./stress-ng --cpu 5 --aggressive -a 0 --timeout 5m & watch -n 1 'cat /proc/pressure/cpu'

これにより、次の指標を提供できます。

some avg10=31.57 avg60=8.96 avg300=2.02 total=6285744
full avg10=0.77 avg60=0.22 avg300=0.05 total=235866

ここでは、ロード全体が更新されていることを明確に確認できます。

関連情報