cgroups (V1) 不起作用——如何诊断/调试?

cgroups (V1) 不起作用——如何诊断/调试?

我在共享系统上设置了 cgroup,将某个组的 cpu 访问限制为 25%,但它似乎不起作用。以下是遵循的步骤:

  1. 将此行添加到/etc/cgrules.conf

    @guest_users cpu lowcpu

在上面的记录中,@guest_users是我想要限制其成员 cpu 使用率的 Linux 组,cpu是控制器,lowcpu是配置 cgroup 的句柄,如下一步所示。

  1. 将以下行添加到/etc/cgconfig.conf

    group lowcpu{
      cpu{
       cpu.shares=256;
      }
    }
    
  2. 使用启用并重新启动cgred和服务。cgconfigsystemctl

我运行的是CentOS系统7.5,内核3.10,32核。

我确实看到目录/sys/fs/cgroup/cpu/lowcpu已创建,并且文件cpu.shares中有第 256 行。

尽管如此,我发现topguest_users 组中的用户仍然能够使 cpu 过载。关于可能的原因和调试问题的途径有什么建议吗?

答案1

这个答案在堆栈溢出帮助了。我发现cpu.shares只有当 cgroup 和系统进程之间存在 CPU 争用时,内核才会启动该规则。如果没有争用,所有CPU资源都可以被cgroup使用。将以下行添加到 cpu 部分就可以了:

cpu.cfs_period_us=1000000;
cpu.cfs_quota_us=800000;

上述几行的效果是,每 1 秒的 cpu 都会为 cgroup 进程分配 0.8 秒的时间片。

要验证 cgroup 是否已创建且处于活动状态,命令systemd-cglssystemd-cgtop很有用。

相关内容