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

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

是否可以以与内存限制类似的方式管理对 CPU 内核的访问?

特别是,我需要能够动态创建和销毁 cgroup,将一组特定的进程限制为所需的 CPU 核心数量。

我无法使用 CPU 集,因为这需要在多插槽(最多小型 NUMA)机器上工作,如果我将进程硬固定到核心,我很快就会因核心碎片而遇到巨大的性能问题(进程范围从几分钟到几个月不等)在运行时)。

第二个复杂之处是,这需要与 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

这两个选项可用于限制 cgroup 可用的 CPU 核心数量:

cpu.cfs_period_us
cpu.cfs_quota_us

cfs_period_us定义了需要执行此操作的频率,定义了cgroup 在每个时间段内应接收cfs_quota_us多少数量。us因此,如果您指定为 N 倍,cgroupcfs_quota_us的数量将接收 N 个核心。cfs_period_us

相关内容