【银河麒麟】管理cgroup内存资源的两个工具用法 【概述】Cgroup 的全称是 Control Groups控制组。它是 Linux 内核提供的一种强大机制用于限制、记录和隔离进程组包括进程和线程对系统资源如CPU、内存、磁盘I/O、网络带宽等的使用。在银河麒麟系统中cgmanager和cgroup-tools都可以用来管理cgroup组资源以下是就cgroup内存管理对这两种方法进行介绍。【用法】一、cgmanager用法 环境中已默认安装1、创建cgroup组名字自定义我这里是group_Acgm 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_A4、查看该组的内存限制情况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组组名可以自定义我这里是limitedsudo 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组3、cgroup 的目录本质上是内核在内存中生成的虚拟文件重启配置就没有了