安装cgroup
要使用cgroup首先需要系统支持,需要安装两个rpm包
yum install libcgroup libcgroup-tools
创建限制内存的cgroup组
cgroup组需要在/sys/fs/cgroup/memory目录下创建,我们创建一个限制进程内存大小为10M的cgroup组,这个组中内存使用不能够超过10M
直接在/sys/fs/cgroup/memory/目录下新建一个目录
mkdir memory10M
目录创建好后进入目录发现已经自动生成了一系列的配置文件
其中memory.limit_in_bytes文件中设置了这个cgroup组中能够使用的内存大小,单位是byte。
写入10M大小的内存限制
echo $((10*1024*1024)) > memory.limit_in_bytes
我们创建一个测试程序t.py
x=[]
for i in range(100000000):if i%100==0:print(i)x.append("a"*10000)
在我们上面创建好的cgroup中执行这个python程序
cgexec -g memory:memory10M python t.py
当内存超出cgroup的限制之后,进程就会由于oom被kill掉
cgexec命令来源于libcgroup-tools安装包
如果需要删除cgroup,直接移除对应的cgroup文件夹即可(不能直接删除目录,删除会报错)
rmdir memory10M
memory.memsw.limit_in_bytes:内存+swap空间使用的总量限制
memory.move_charge_at_immigrate:当进程移动到其他cgroup中的时候,它所占用的内存是否也会被移动过去
memory.memsw.limit_in_bytes:限制swap+memory的大小