cgroupと外部世界の間にCPUコアを割り当てる

cgroupと外部世界の間にCPUコアを割り当てる

メモリ制限と同様の方法でCPUコアへのアクセスを管理できますか?

具体的には、特定のプロセスセットを必要なCPUコア数に制限するために、cgroupを動的に作成および削除できる必要があります。

マルチソケット(最大の小さなNUMA)システムで作業する必要があるため、CPUセットは使用できません。プロセスをコアにハード固定すると、コアの断片化(プロセス範囲は実行時に数分から数ヶ月まで)。

2番目の問題は、これがcgroup外部プロセスとうまく機能する必要があることです。

たとえば、次のような状況が発生する可能性があります。

1 process limited to 2 cores and 4GB RAM

2 processes unlimited, but should have guaranteed access to the remainder of the machine

答え1

次の2つのオプションを使用して、cgroupで使用可能なCPUコアの数を制限できます。

cpu.cfs_period_us
cpu.cfs_quota_us

cfs_period_usこれをどのくらいの頻度で実行するかを定義し、cfs_quota_us各期間にcgroupが受け取る必要がある金額を定義します。usしたがって、N回指定すると、cfs_quota_uscgroupの数はN個のコアを受け取ります。cfs_period_us

関連情報