控制组 (strong>cgroups ) 使我们能够将计算资源分配给特定的进程或者任务。
我们可以将一组 CPU 和内存分配给特定的任务组,甚至分配给特定的用户。
本文将详细介绍将定义的内存资源分配给特定用途的步骤。
Ulimit 将无法实现此目标,因为 ulimit 限制每个进程的用户内存消耗。
最好的选择是使用 cgroups。
使用 cgroups 用户不仅可以限制内存资源,还可以限制 CPU/IO。
让我们看一个将用户“john”使用的内存限制为 100mb 的示例。
欢迎来到之路教程(on itroad-com)
限制特定用户的内存
- 编辑 cgroups 配置文件 /etc/cgconfig.conf 并添加以下几行
# vi /etc/cgconfig.conf group memlimit { memory { memory.limit_in_bytes = 104857600; #### limit memory to 100MB } }
以上代码将创建名为 memlimit 的 cgroup,其中限制为 100mb 。
- 现在编辑另一个文件 /etc/cgrules.conf 并添加以下行:
# vi /etc/cgrules.conf john memory memlimit
这将告诉 cgroups 用户 john 将被添加到 memlimit cgroup 并且只能从系统中获取 100mb。
- 完成配置文件的编辑后,重新启动服务 cgred 和 cgconfig 。
# service cgred restart # service cgconfig restart
cgconfig(control group config) 服务 - 用于创建 cgroups 和管理子系统
cgred(控制组规则引擎守护进程)服务 - 用于根据 /etc/cgrules.conf 文件中设置的参数将任务移动到 cgroup 中。
- 启用这两个服务以在系统启动时启动。
有了这个,我们确保在启动时读取配置文件 /etc/cgconfig.conf 和 /etc/cgrules.conf 并创建 cgroups。
# chkconfig cgred on # chkconfig cgconfig on
日期:2020-09-17 00:11:57 来源:oir作者:oir