【概述】
Cgroup 的全称是 Control Groups(控制组)。它是 Linux 内核提供的一种强大机制,用于限制、记录和隔离进程组(包括进程和线程)对系统资源(如CPU、内存、磁盘I/O、网络带宽等)的使用。在银河麒麟系统中,cgmanager和cgroup-tools都可以用来管理cgroup组资源,以下是就cgroup内存管理,对这两种方法进行介绍。
【用法】
一、cgmanager用法 (环境中已默认安装)
1、创建cgroup组,名字自定义,我这里是group_A
cgm create memory group_A 创建完成之后会在/sys/fs/cgroup/memory目录下有一个group_A的目录2、设置组 A 的内存限制
cgm setvalue memory group_A memory.limit_in_bytes 52428800 52428800单位为字节,即50M。正常的话没有返回,echo $?为03、将进程添加进该组
cgm movepid memory group_A <PID_A>4、查看该组的内存限制情况
cat /sys/fs/cgroup/memory/group_A/memory.limit_in_bytes5、查看添加进该组的进程
cgm gettasks memory group_A # 或 cat /sys/fs/cgroup/memory/group_A/tasks二、cgroup-tools用法
1、安装cgroup-tools工具
配置、apt update更新源 apt install -y cgroup-tools 安装2、创建memory的cgroup组,组名可以自定义,我这里是limited
sudo cgcreate -g memory:limited 创建后/sys/fs/cgroup/memory目录下会多一个名为limited的目录3、设置该cgroup组的内存限制
echo 104857600 | tee /sys/fs/cgroup/memory/limited/memory.limit_in_bytes4、将进程添加进该组
ps aux | grep xorg 获取xorg进程的id号,这里是829 cgclassify -g memory:limited 8295、查看该组的内存限制情况
cat /sys/fs/cgroup/memory/limited/memory.limit_in_bytes6、查看添加进该组的进程
cat /sys/fs/cgroup/memory/limited/tasks三、注意
1、以下查看的是根层级的 cgroup,系统默认是不限制根层级的总内存的
2、cat/sys/fs/cgroup/memory/tasks里的这些数字,是系统启动时自动加入根 Cgroup 组的内核线程和早期用户进程
以任务栏进程举例说明:对该进程做内存限制前,其属于根cgroup组
将其加入group_A组中后,这个进程就属于这个cgroup组