CentOS/RHEL 6:如何使用 cgroups 限制特定用户的内存资源

控制组 (strong>cgroups ) 使我们能够将计算资源分配给特定的进程或者任务。
我们可以将一组 CPU 和内存分配给特定的任务组,甚至分配给特定的用户。

本文将详细介绍将定义的内存资源分配给特定用途的步骤。
Ulimit 将无法实现此目标,因为 ulimit 限制每个进程的用户内存消耗。
最好的选择是使用 cgroups。
使用 cgroups 用户不仅可以限制内存资源,还可以限制 CPU/IO。
让我们看一个将用户“john”使用的内存限制为 100mb 的示例。

欢迎来到之路教程(on itroad-com)

限制特定用户的内存

  1. 编辑 cgroups 配置文件 /etc/cgconfig.conf 并添加以下几行
# vi /etc/cgconfig.conf
group memlimit {
	memory {
		memory.limit_in_bytes = 104857600;    #### limit memory to 100MB
	}
}

以上代码将创建名为 memlimit 的 cgroup,其中限制为 100mb 。

  1. 现在编辑另一个文件 /etc/cgrules.conf 并添加以下行:
# vi /etc/cgrules.conf
john memory memlimit

这将告诉 cgroups 用户 john 将被添加到 memlimit cgroup 并且只能从系统中获取 100mb。

  1. 完成配置文件的编辑后,重新启动服务 cgred 和 cgconfig 。
# service cgred restart
# service cgconfig restart

cgconfig(control group config) 服务 - 用于创建 cgroups 和管理子系统
cgred(控制组规则引擎守护进程)服务 - 用于根据 /etc/cgrules.conf 文件中设置的参数将任务移动到 cgroup 中。

  1. 启用这两个服务以在系统启动时启动。
    有了这个,我们确保在启动时读取配置文件 /etc/cgconfig.conf 和 /etc/cgrules.conf 并创建 cgroups。
# chkconfig cgred on
# chkconfig cgconfig on
日期:2020-09-17 00:11:57 来源:oir作者:oir