Memory

在 cgroup 和外部世界之間分配 CPU 核心

  • March 24, 2015

是否可以以與記憶體限制類似的方式管理對 CPU 核心的訪問?

特別是我需要能夠動態地創建和銷毀 cgroup,這會將一組特定的程序限制為所需數量的 CPU 核心。

我不能使用 CPU 集,因為這需要在多插槽(直到小型 NUMA)機器上工作,如果我將程序硬固定到核心上,由於核心碎片(程序範圍從幾分鐘到幾個月不等),我很快就會遇到巨大的性能問題在執行時)。

第二個複雜之處是這需要與 cgroups 之外的程序很好地配合。

例如,我可以有以下情況:

1 process limited to 2 cores and 4GB RAM

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

這兩個選項可用於限制 cgroup 可用的 CPU 核心數量:

cpu.cfs_period_us
cpu.cfs_quota_us

cfs_period_us定義需要執行的頻率定義了 cgroup 在每個期間應該接收cfs_quota_us多少。us因此,如果您指定cfs_quota_us為 N 倍,cfs_period_us則 cgroup 的數量將接收 N 個核心。

引用自:https://unix.stackexchange.com/questions/191014