メモリ制限と同様の方法で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_us
cgroupの数はN個のコアを受け取ります。cfs_period_us