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

相关推荐
张火火isgudi20 小时前
fedora43 安装 nvidia 驱动以及开启视频编解码硬件加速
linux·运维·视频编解码·nvidia
IT199521 小时前
Qt笔记-使用SSH2进行远程连接linux服务器并上传文件
linux·服务器·笔记
XXYBMOOO21 小时前
内核驱动开发与用户级驱动开发:深度对比与应用场景解析
linux·c++·驱动开发·嵌入式硬件·fpga开发·硬件工程
lengjingzju1 天前
一网打尽Linux IPC(三):System V IPC
linux·服务器·c语言
大聪明-PLUS1 天前
如何编写你的第一个 Linux 内核模块
linux·嵌入式·arm·smarc
知识分享小能手1 天前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04文件压缩与解压缩知识点详解(12)
linux·学习·ubuntu
用户6135411460161 天前
Krb5-libs-1.18.2-5.ky10.x86_64.rpm 安装失败怎么办?附详细步骤
linux
zhougl9961 天前
Vuex 模块命名冲突:问题解析与完整解决方案
linux·服务器·apache
一世琉璃白_Y1 天前
Ubuntu(VMware)虚拟机网络异常排查与解决方案
linux·网络·ubuntu
AI+程序员在路上1 天前
网桥及IP转发在嵌入式linux eth0与wlan0连接使用方法
linux·tcp/ip·php