一、环境介绍
阿里云服务器,系统版本为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