常用的Cgroup相关命令和配置文件
Command | Synopsis |
---|---|
service cgconfig status/start/stop/restart | 查看已存在子系统 |
lssubsys –am | 查看已存在子系统 |
cgclear | 清除所有挂载点内部文件,相当于service cgconfig stop |
cgconfigparser -l /etc/cgconfig.conf | 重新挂载 |
Cgroup默认挂载点(CentOS): | /cgroup |
cgconfig配置文件: | /etc/cgconfig.conf |
1 Cgroup介绍
Cgroup实现包含一个主框架和若干subsystem. 主框架实现了进程组的管理, 包括维护进程组的树状结构, 进程的加入和退出; 而每个subsystems实现一种具体资源的控制器.
在具体实现中, cgroup巧妙的利用了Linux的文件系统来实现进程组树状组织关系, 对于subsystem的资源配置也由配置文件的读写来完成. 在mount这个文件系统时可以一个subsystem组合, 表示是否需要启用对应的subsystem. LXC实现一般会选择加载所有的subsystem.
通过/proc/cgroups可以查看内核支持哪些subsys
下面的命令即可加载cgroup文件系统并启用所有的subsystem
1 | mount -t cgroup none /cgroup |
下面的命令即可创建一个cgroup
1 | mkdir /cgroup/LXC201509015 |
memory
物理内存被所有的容器共享, 一个异常的容器可能会消耗大量的物理内存, 影响其他容器的表现. 使用memory, 我们可以限制每个容器可以使用的物理内存大小.该subsys的配置文件如下:
配置文件 | 属性 | 描述 |
---|---|---|
memory.usage_in_bytes | 只读 | 容器占用的物理内存 |
memory.max_usage_in_bytes | 只读 | 容器占用的物理内存的历史峰值 |
memory.limit_in_bytes | 读写 | 容器允许使用的物理内存大小 |
memory.memsw.usage_in_bytes | 只读 | 容器占用的物理内存+交换空间 |
memory.memsw.max_usage_in_bytes | 只读 | 容器占用物理内存+交换空间的历史峰值 |
memory.memsw.limit_in_bytes | 读写 | 容器允许使用的物理内存+交换空间大小 |
子系统介绍:
blkio 子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。
cpu子系统使用调度程序提供对 CPU 的 cgroup 任务访问。
cpuacct 子系统自动生成 cgroup 中任务所使用的 CPU 报告。
cpuset子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。
devices 子系统可允许或者拒绝 cgroup 中的任务访问设备。
freezer子系统挂起或者恢复 cgroup 中的任务。
memory子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。
net_cls 子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。
ns子系统负责名称空间。
4.启动限制机制,限制内存
echo 1048576 > /cgroup/GroupA/memory.limit_in_bytes
echo 8340 > /cgroup/GroupA/tasks
4.启动资源控制机制,设置内存、CPU、IO限制等。
mount -t cgroup -o memory memcg /cgroup #/cgroup是memcg subsys的挂载点,就是一个hierarchy
mkdir /cgroup/GroupA #在hierarchy下创建了一个名为GroupA的cgroup
echo 10M > /cgroup/GroupA/memory.limit_in_bytes #为控制组GroupA分配内存大小,这是强制限制,当进程试图占用的内存超过了cgroups的限制,会触发out of memory,导致进程被kill掉
echo $$ > /cgroup/GroupA/tasks #控制的进程,写入PID
2.启动cgconfig服务。cgconfig默认是不随系统启动的可手工启动,也可以使用 chkconfig cgconfig on 来配置它随系统启动。
service cgconfig restart