一、Cgroups的创建

Cgroups创建主要包括有以下步骤组成:
1、创建并挂载一个hierarchy
2、在新建的hierarchy上的cgroup的根节点中扩展出两个子cgroup
3、通过subsystem来限制cgroup中进程的资源
4、Docker中的Cgroups
在介绍具体使创建步骤前,我首先介绍一下虚拟机环境:
在这里插入图片描述

二、创建并挂载一个hierarchy

创建并挂载一个hierarchy指令如下:

mkdir cgroups-test
mount -t cgroup -o none,name=cgroups-test cgroups-test ./cgroups-test
ll cgroups-test/

执行完成后出现下面界面表示创建挂载成功
在这里插入图片描述

三、在新建的hierarchy上的cgroup的根节点中扩展出两个子cgroup

在新建的hierarchy上的cgroup的根节点中扩展出两个子cgroup的具体指令如下:

cd cgroups-test/
mkdir cgroup-1 cgroup-2
ls

当出现下面步骤表示创建成功
在这里插入图片描述

可以看出,在一个cgroup的目录下创建文件夹时,系统Kernel会自动把该文件夹标记为这个cgroup的子cgroup,它们会继承父cgroup的属性。

几个文件功能说明:

  • 1、tasks,标识该cgroup下面的进程ID。如果把一个进程ID写入了tasks文件,就是把该进程加入了这个cgroup中。
  • 2、cgroup.procs 是树中当前cgroup中的进程组ID。如果是根节点,会包含所有的进程组ID。
  • 3、cgroup.clone_children,默认值为0。如果设置为1,子cgroup会继承父cgroup的cpuset配置。

四、往一个cgroup中添加和移动进程

首先,查看一个进程目前所处的cgroup
具体指令如下所示:

echo $$
cat /proc/1019/cgroup 

把进程移动到节点cgroup-1/中
具体指令如下所示:

cd cgroup-1/
cat tasks 
cat cgroup.procs 

之后在执行下面语句:

echo $$ >> tasks
cat /proc/1019/cgroup 
cat cgroup.procs 
cat tasks 

当看到当前进程1019已经加入到cgroups-test:/cgroup-1中就完成了。但需要注意的是,到目前为止,上面创建的hierarchy并没有关联到任何的subsystem,所以还是没有办法通过上面的cgroup节点来限制一个进程的资源占用。

五、通过subsystem来限制cgroup中进程的资源

1、安装stress工具,具体指令如下:

yum install stress.x86_64

2、不使用Cgroups限制,启动一个占用200M内存的stress进程

stress --vm-bytes 200m --vm-keep -m 1

测试结果

top 

3、使用Cgroups进行限制,仅允许使用100M内存

首先参照前面步骤,在memory 的根节点下新建一个cgroup节点test-limit-memory

cd /sys/fs/cgroup/memory
mkdir test-limit-memory

然后,设置该cgroup节点的最大内存占用为100M

cd test-limit-memory/
cat memory.limit_in_bytes 

echo "100m" >> ./memory.limit_in_bytes 
cat memory.limit_in_bytes 

然后,把当前进程移动到这个cgroup节点test-limit-memory中

cat tasks 
echo $$ >> tasks 
cat tasks 

最后,再次运行

stress --vm-bytes 200m --vm-keep -m 1

六、Docker中的Cgroups

docker run -itd  -e is_leader=true -e node_name=aaa -m 128m 

docker 会自动在memory hierarchy的目录下新建一个cgroup节点

pwd
cat memory.limit_in_bytes 
cat memory.usage_in_bytes 

其中:
1、 memory.limit_in_bytes 内存限制
2、memory.usage_in_bytes 该cgroup中的进程已经使用的memory

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐