Centos 7 和 systemd:CPU 配额?

Centos 7 and systemd: CPU Quota?

OS版本信息:

[root@localhost system]# cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core) 

test.slice的配置如下:

[root@localhost system]# cat test.slice 

[Unit]
Description=Test Slice
Documentation=man:systemd.special(7)
DefaultDependencies=no
Before=slices.target
Wants=-.slice
After=-.slice

[Slice]
CPUAccounting=on
CPUShares=1024

我像这样创建了另一个文件(称之为 testhigh.slice)并给它 CPU 份额 = 128。当我在任一切片中启动 CPU 饥饿进程时,我看到 CPU 按照预期按比例分配。

但是,似乎没有办法真正将一个切片的 CPU 限制为一个常数,例如10%。 systemd 无法识别 CPUQuota 选项:

Apr 23 21:34:00 localhost.localdomain systemd[1]: [/usr/lib/systemd/system/test.slice:22] Unknown lvalue 'CPUQuota' in section 'Slice'

原则上,能够精确地分配资源将是一件了不起的事情,但现在我无法让它发挥作用。请帮忙;如果可能的话,我想要一个来自 systemd 框架内部的解决方案。

RHEL/Centos7 附带的 systemd 基于版本 208。CPUQuota 支持似乎直到 213 才包含在内。

你应该可以通过运行你想要的slice/scope进程进行实验,然后直接修改/sys/fs/cgroup/cpu下的cpu.cfs_{quota,period}_us比率/...我希望你在那里设置的任何东西只要没有任何 systemd activity 会导致它重新写入文件。