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

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

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

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

  • /etc/systemd/user.conf设置DefaultCPUAccounting=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.conf对选项进行相同的更改后CPUQuota现在已生效。因此,出于某种原因,systemd 需要跟踪系统和用户中的事物。

相关内容