大约 5 年来,我一直想在 CentOS(6) 中限制用户的 CPU - 而不使用 cloudlinux。
到目前为止,仍然无法得到答案。cgroups 似乎是一个解决方案。但是,我不知道如何设置配置文件。
这个问题开始回答了这个问题,但没有回答这个问题。我每隔几个月就会再次搜索,但无济于事。
如何将整个用户(而不仅仅是进程)的 CPU 使用率限制在 10% 以下?
我确实需要帮助来设置它,因为这确实是必要的。
这是我目前得到的。
我安装了服务 libcgroup yum install libcgroup
。
我检查ls /cgroup
并确认它已安装。我得到了以下输出:
blkio cpu cpuacct cpuset devices freezer memory net_cls
现在,我转到该cgconfig.conf
文件。它位于/etc/cgconfig.conf
mount { ... }
在文件的部分下方cgconfig.conf
,我添加了以下内容。我不知道这是否正确(不知道这是否占用了 10% 的 CPU)。
我需要一些帮助来完成这项工作,以便我最终可以将用户限制为所需的 CPU 百分比(并且,理想情况下,如果可能的话,限制内存!)
这是为了创建名为limitcpu
(虽然我实际上想称之为有限组或其他名称,因为我也想限制内存,但现在我们就称它为limitcpu
组)的组。
group limitcpu {
cpu {
cpu.shares = 200;
# cpu.cfs_period_us
# cpu.cfs_quota_us
}
memory {
}
}
然后我应该使用这个模板:
template users/%g/%u {
cpuacct{
}
cpu {
cpu.shares = "1000";
}
}
%g
应该是组名。
%u
应该是用户名。
好的,假设我想要限制的用户名为resourcehoggeruser
。我该如何完成上述配置来限制分配给该用户的 CPU 和内存?
它看起来应该是这样的吗?
template users/limitcpu/resourcehoggeruser {
cpuacct{
}
cpu {
cpu.shares = "1000";
}
}
- 我还需要什么才能让它工作?上面的代码准确吗?
- 当代码正确时,这会实现我想要的效果吗,即将用户名产生的任何进程限制在所需的总 CPU 百分比内?
- 这是文件中放置该代码的正确位置吗?
什么是“共享”?假设我有 16 个 CPU 和 24GB RAM。
cpu.shares
如果我想要 10% 的 CPU,我应该输入什么数字?- CPU 占用 20% 怎么样?
记忆力怎么样?
- 我还使用什么代码来限制用户所有进程的内存?
- 如果它使用我猜想的那种东西,
mem.shares
那么 10% 内存的“份额”是多少?20% 内存呢?
非常感谢您的帮助!非常感谢。我真的需要让它工作起来。我搜索了很长时间,仍然找不到明确的答案,所以我真的需要你的帮助。