Cgroup限制进程内存
下面是在centos上测试的,亲测可用:
[root@VM_0_13_centos cgroup]# uname -a
Linux VM_0_13_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
1.安装cgroup
yum install -y libcgroup libcgroup-tools
2.允许程序申请内存
echo 1 > /proc/sys/vm/overcommit_memory
3.创建内存限制
cd /sys/fs/cgroup/memory/
mkdir memory100M
echo $((100*1024*1024)) > memory100M/memory.limit_in_bytes
4.加限制运行(可以在任意目录下操作)
创建一个py文件
cd ~
mkdir test
cd test
touch aaa.py
往aaa.py写入下面内容:
x=[]
for i in range(100000000):
if i%100==0:
print(i)
x.append("a"*10000)
加限制执行:
cgexec -g memory:memory100M python3 aaa.py
输出如下:
0
100
200
300
400
500
600
700
800
900
1000
1100
1200
...
9900
10000
Killed
10000*10000B 大约是95M
10100*10000B 大约是96M
再加上python运行,和一个长度约为10000list所耗内存大约100M