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

相关推荐
绵绵细雨中的乡音1 小时前
网络基础知识
linux·网络
Peter·Pan爱编程1 小时前
Docker在Linux中安装与使用教程
linux·docker·eureka
kunge20132 小时前
Ubuntu22.04 安装virtualbox7.1
linux·virtualbox
清溪5492 小时前
DVWA中级
linux
Sadsvit3 小时前
源码编译安装LAMP架构并部署WordPress(CentOS 7)
linux·运维·服务器·架构·centos
xiaok3 小时前
为什么 lsof 显示多个 nginx 都在 “使用 443”?
linux
苦学编程的谢4 小时前
Linux
linux·运维·服务器
G_H_S_3_4 小时前
【网络运维】Linux 文本处理利器:sed 命令
linux·运维·网络·操作文本
Linux运维技术栈4 小时前
多系统 Node.js 环境自动化部署脚本:从 Ubuntu 到 CentOS,再到版本自由定制
linux·ubuntu·centos·node.js·自动化
拾心214 小时前
【运维进阶】Linux 正则表达式
linux·运维·正则表达式