linux使用cgroup资源限制

一、环境介绍

阿里云服务器,系统版本为centos7.9

[root@master ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@master ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs           1.8G  460K  1.8G   1% /run
tmpfs           1.8G     0  1.8G   0% /sys/fs/cgroup
/dev/vda1        40G  2.0G   36G   6% /
tmpfs           365M     0  365M   0% /run/user/0

  

二、挂载cgroup文件系统(我使用的阿里云服务器,已经挂载好了/sys/fs/cgroup)

未挂载参考文档:https://www.jianshu.com/p/66734cde7994

 

三、cpu资源限制

1、查看cpu限制目录情况

[root@master ~]# ll /sys/fs/cgroup/cpu/
total 0
drwxr-xr-x 2 root root 0 May  7 10:16 assist
-rw-r--r-- 1 root root 0 May  7  2021 cgroup.clone_children
--w--w--w- 1 root root 0 May  7  2021 cgroup.event_control
-rw-r--r-- 1 root root 0 May  7  2021 cgroup.procs
-r--r--r-- 1 root root 0 May  7  2021 cgroup.sane_behavior
-r--r--r-- 1 root root 0 May  7  2021 cpuacct.stat
-rw-r--r-- 1 root root 0 May  7  2021 cpuacct.usage
-r--r--r-- 1 root root 0 May  7  2021 cpuacct.usage_percpu
-rw-r--r-- 1 root root 0 May  7  2021 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 May  7  2021 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 May  7  2021 cpu.rt_period_us
-rw-r--r-- 1 root root 0 May  7  2021 cpu.rt_runtime_us
-rw-r--r-- 1 root root 0 May  7  2021 cpu.shares
-r--r--r-- 1 root root 0 May  7  2021 cpu.stat
-rw-r--r-- 1 root root 0 May  7  2021 notify_on_release
-rw-r--r-- 1 root root 0 May  7  2021 release_agent
-rw-r--r-- 1 root root 0 May  7  2021 tasks
[root@master ~]# cat /sys/fs/cgroup/cpu/cpu.cfs_period_us
100000 #表示将cpu时间片分成100000份

 

2、在cpu目录下新创建一个控制组(新建一个目录)

[root@master ~]# mkdir  /sys/fs/cgroup/cpu/testcpu
[root@master ~]# ll /sys/fs/cgroup/cpu/testcpu
total 0
-rw-r--r-- 1 root root 0 May  7 10:28 cgroup.clone_children
--w--w--w- 1 root root 0 May  7 10:28 cgroup.event_control
-rw-r--r-- 1 root root 0 May  7 10:28 cgroup.procs
-r--r--r-- 1 root root 0 May  7 10:28 cpuacct.stat
-rw-r--r-- 1 root root 0 May  7 10:28 cpuacct.usage
-r--r--r-- 1 root root 0 May  7 10:28 cpuacct.usage_percpu
-rw-r--r-- 1 root root 0 May  7 10:28 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 May  7 10:28 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 May  7 10:28 cpu.rt_period_us
-rw-r--r-- 1 root root 0 May  7 10:28 cpu.rt_runtime_us
-rw-r--r-- 1 root root 0 May  7 10:28 cpu.shares
-r--r--r-- 1 root root 0 May  7 10:28 cpu.stat
-rw-r--r-- 1 root root 0 May  7 10:28 notify_on_release
-rw-r--r-- 1 root root 0 May  7 10:28 tasks

  

3、限制cpu使用率为50%

[root@master ~]# cat /sys/fs/cgroup/cpu/testcpu/cpu.cfs_quota_us
-1
[root@master ~]# echo 5000 > /sys/fs/cgroup/cpu/testcpu/cpu.cfs_quota_us
[root@master ~]# cat /sys/fs/cgroup/cpu/testcpu/cpu.cfs_quota_us
5000

  

4、指定限制的进程

[root@master ~]# cat  /sys/fs/cgroup/cpu/testcpu/tasks 
[root@master ~]# echo <pid>  /sys/fs/cgroup/cpu/testcpu/tasks #将限制的pid好写道tasks中就完成限制了

 

四、模拟高cpu使用率测试

1、使用seq模拟高cpu使

 

 

 

 

 

 

 2、将pid写入到上面的tasks文件中

 

 3、查看

 

 五、内存限制

1、在memory下创建一个新的控制组

mkdir  /sys/fs/cgroup/memory/testmem

2、设置限制的内存大小

#查看初始值,初始值没有做限制
[root@master ~]# cat  /sys/fs/cgroup/memory/testmem/memory.limit_in_bytes 
9223372036854771712

#设置1M大小的内存限制
[root@master ~]# echo  1M >/sys/fs/cgroup/memory/testmem/memory.limit_in_bytes
[root@master ~]# cat /sys/fs/cgroup/memory/testmem/memory.limit_in_bytes
1048576

3、限制进程

#将需要限制的pid写入tasks中
echo <pid> > /sys/fs/cgroup/memory/testmem/tasks 

  

六、限制内存测试

1、创建test账号测试,并切换为test账号   

[root@master ~]# useradd test
[root@master ~]# su - test
[test@master ~]$ echo $$ #查看当前的pid
2209

  

2、使用seq创建一个文件用于测试

[test@master ~]$ seq 10000000 > test.txt
[test@master ~]$ ll test.txt  -h
-rw-rw-r-- 1 test test 76M May  7 11:24 test.txt

  

3、未限制前可以正常vim文件

[test@master ~]$ vim test.txt 
[test@master ~]$ 

  

4、限制进程的内存使用

[root@master ~]# cat     /sys/fs/cgroup/memory/testmem/tasks 
[root@master ~]# echo 2209 > /sys/fs/cgroup/memory/testmem/tasks
[root@master ~]# cat /sys/fs/cgroup/memory/testmem/tasks
2209

  

5、重新vim测试

[test@master ~]$ echo $$
2209
[test@master ~]$ vim test.txt 
Killed

  

 

 

 

 

 

 

posted @ 2021-05-07 10:32  巽逸  阅读(474)  评论(0编辑  收藏  举报