如何在 systemd 用户切片中使用 cgroup 限制?

jhc*_*sdf 6 centos systemd cgroups

我有一个 CentOS 7.4 系统,它有许多通过 SSH 访问系统的用户。我需要一种方法来防止它们消耗系统的所有 CPU 和内存。例如,每个用户获得 1 个 CPU 内核或“1/20 份额”的 CPU 时间就可以了。

我所拥有的最接近的是在用户登录后设置每个用户切片的 CPUQuota 属性。我这样做了,但设置没有效果。我错过了什么?

  • /etc/systemd/user.confDefaultCPUAccounting=yes设置然后重新启动
  • 以测试用户身份登录
  • systemctl set-property user-43045.slice CPUAccounting=yes CPUQuota=20%
  • 作为用户,在 cgroup (systemd-cgls) 内的 shell 中: dd if=/dev/zero of=/dev/null bs=1024k

CPU使用率仍然没有限制。是否有任何受支持的、未弃用的方法来限制 SSH 用户?cgconfig+cgred 方法和 PAM 方法在 CentOS 7 上似乎根本不起作用。

编辑 #1 - 和解决方案

/etc/systemd/system.confCPUQuota选项进行相同的更改后,现在有效果。因此 systemd 出于某种原因需要跟踪系统和用户中的事物。