zoukankan      html  css  js  c++  java
  • 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
    

      

     

  • 相关阅读:
    Notepad++编译和运行Java
    Notepad++ 代码格式化插件
    使用electron构建跨平台Node.js桌面应用经验分享
    如何在64位WIN7下安装64位的解压版mysql-5.6.37-winx64.zip
    排序算法之冒泡排序的思想以及Java实现
    centos7.1部署java环境服务器
    Hadoop化繁为简-从安装Linux到搭建集群环境
    零基础搭建 spring mvc 4 项目(本文基于 Servlet 3.0)
    关闭Eclipse按空格和等号键自动补全内容
    新一代服务器性能测试工具Gatling
  • 原文地址:https://www.cnblogs.com/zhangb8042/p/14738117.html
Copyright © 2011-2022 走看看