cgroup / cpusetオプションで使用できるプロセスセットのコアを制限するとします。
このcgroupに割り当てられたスレッドが多すぎるか、スレッドが使用可能なコアに対して過度の競合を経験しているかどうかを知る必要があります。
どうすればいいですか?
cgroupupがない場合は、負荷平均を使用します。経験的に、負荷平均はtop
コア数より小さくなければなりません。 cgroup / cpusetを考えると、似たようなことがありますか?
ベストアンサー1
特定の問題に応じて、2つのオプションがあります。
「ロード平均」ではなく、cgroup内のスレッド/プロセス数に興味がある場合:
tasks
cgroupファイルの行数を数えます。このファイルは、スレッドまたはプロセスがcgroupで作成または削除されるたびに自動的に更新されます。
実際の活用に興味がある場合:
これは少しトリッキーです。tasks
上記のファイルからcgroupのプロセス/スレッドのリストを取得してから、各PIDの使用量を確認できますが、/proc
このアプローチでは競合状態が高く、競合スポーツで収益を上げることができます。または、バージョン2のcgroupを使用している場合は、cpu.stat
cgroupのファイルを調べることができます。ファイルには cgroup で消費する CPU 時間のマイクロ秒数を計算する複数行があるため、毎秒 2 回確認してその差を 10000 で割って使用率を得ることができます (コア 1 を 100% 全体使用する場合、全体使用率は2つのコアは20%です。 cpuacctコントローラーを持つcgroupのうち、バージョン1を使用して同様のアプローチを実行できます(cpusetコントローラーの下に作成したcgroupをミラーリングするそのコントローラーの下にcgroupを作成します)。