cgred

cgrulesengd(cgred服务对于的应用)在Redhat 7中,用于按用户管理资源,包含在libcgroup-tools工具包中。但是,Redhat 8抛弃了这一工具。

snippet.bash
[root@bogon ~]# rpm -q --changelog libcgroup
* Tue Jan 14 2014 Peter Schiffer <pschiffe@redhat.com> 0.41-1
- resolves: #966008
  updated to 0.41
- removed deprecated cgred service
  please use Control Group Interface in Systemd instead

有关评论:

Looking at version numbers: 0.41-21.el7 and 0.41-19.el8, it is no wonder that dnf can’t raise huge alarm as it should. While both appear “0.41”, they are entirely different beasts, branched ages ago (in 2013, I guess).

systemd限制用户资源

注意:本方法不适用于su方式切换登录的用户。即,用户使用GDMssh登录时资源使用受此限制。

配置

可以使用systemd设置用户的资源配置。例如,假设想限制用户fairyfar的CPU使用上限为30%(即单个CPU核的30%),可以按以下步骤配置:

Step 1. 获取用户UID

snippet.bash
[root@bogon ~]# id fairyfar
uid=1002(fairyfar) gid=1002(fairyfar) groups=1002(fairyfar)

Step 2. 设置配额

snippet.bash
[root@bogon ~]# systemctl set-property user-1002.slice CPUQuota=30%

以上步骤如果报以下错误:

snippet.bash
[root@bogon ~]# systemctl set-property user-1002.slice CPUQuota=30%
Failed to set unit properties on user-1002.slice: Unit user-1000.slice is not loaded.

则,先执行以下命令:

snippet.bash
[root@bogon ~]# systemctl start user-1002.slice

Step 3. 查看配置情况

snippet.bash
[root@bogon ~]# systemctl cat user-1002.slice
 
# /etc/systemd/system/user-1002.slice.d/50-CPUQuota.conf
[Slice]
CPUQuota=30%

Step 4. 让配置立即生效

snippet.bash
[root@bogon ~]# systemctl daemon-reload

可以控制的资源列表详见 参考文献3。请注意:不同参数引入的systemd版本。

删除配置

如果systemd版本大于等于229,则可以使用revert命令:

snippet.bash
[root@bogon ~]# systemctl revert user-1002.slice

否则,低版本需要手动删除:

snippet.bash
[root@bogon ~]# rm -rf /etc/systemd/system/user-1002.slice.d/

删除的路径在systemctl cat结果中可以找到,当然也可以有选择性地删除部分配置项。

参考