Cgroup限制进程内存

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

发布了112 篇原创文章 · 获赞 22 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Moluth/article/details/83992752