CentOS上使用cgroup限制进程使用内存

安装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的大小

相关推荐
测试界的小码农10 小时前
【Linux 命令实战(03):文件创建、复制、移动与删除,掌握 touch、mkdir、cp、mv、rm】
linux·服务器·php
byte轻骑兵11 小时前
实战 1:修改 BlueZ 源码,添加自定义开机日志
linux·aiot·bluez·电脑蓝牙·嵌入式蓝牙
叼烟扛炮11 小时前
Linux 学习笔记(五十):网络层——IP 协议、子网划分与 NAT 魔法
linux·笔记·学习
叼烟扛炮11 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
AR-26710-12 小时前
Linux Day32——实操五类资源告急排查
linux·运维
StarsGreen12 小时前
libva中的图像格式说明
linux
H.莓飛13 小时前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
Rabitebla13 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
无人生还别怕14 小时前
如何搭建docker仓库(轻量级)registry
linux·运维·docker·云原生·容器·registry·openanolisos
无足鸟ICT14 小时前
【RHCA+】agedu命令(查看磁盘使用情况)
linux