cgroup使用--cpu资源限制

安装
操作系统:centos7

安装cgroup

[root@localhost ~]# yum install -y libcgroup-tools.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * extras: mirrors.cqu.edu.cn
 * updates: mirrors.cqu.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package libcgroup-tools.x86_64 0:0.41-21.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================
 Package                         Arch                   Version                      Repository            Size
================================================================================================================
Installing:
 libcgroup-tools                 x86_64                 0.41-21.el7                  base                  99 k

Transaction Summary
================================================================================================================
Install  1 Package

Total download size: 99 k
Installed size: 257 k
Downloading packages:
libcgroup-tools-0.41-21.el7.x86_64.rpm                                                   |  99 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libcgroup-tools-0.41-21.el7.x86_64                                                           1/1 
  Verifying  : libcgroup-tools-0.41-21.el7.x86_64                                                           1/1 

Installed:
  libcgroup-tools.x86_64 0:0.41-21.el7                                                                          

Complete!

通过mount可以查看cgroup文件系统,系统默认挂载目录是/sys/fs/cgroup。

[root@localhost ~]# mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)

当然也可以创建自定义目录,然后挂载到cgroup文件系统上。

mkdir -p /root/cgroup-test/
mount -t cgroup -o none,name=cgroup-test cgroup-test /root/cgroup-test/

一旦mount成功可以看到目录下多了一些文件

[root@localhost ~]# ls -l /root/cgroup-test/
total 0
-rw-r--r--. 1 root root 0 Mar  1 04:09 cgroup.clone_children
--w--w--w-. 1 root root 0 Mar  1 04:09 cgroup.event_control
-rw-r--r--. 1 root root 0 Mar  1 04:09 cgroup.procs
-r--r--r--. 1 root root 0 Mar  1 04:09 cgroup.sane_behavior
-rw-r--r--. 1 root root 0 Mar  1 04:09 notify_on_release
-rw-r--r--. 1 root root 0 Mar  1 04:09 release_agent
-rw-r--r--. 1 root root 0 Mar  1 04:09 tasks

同样也可以去/sys/fs/cgroup的各个子目录下去创建一个自己的目录,同样的创建成功后该目录下还是会多出一些文件。

[root@localhost cpu]# mkdir -p /sys/fs/cgroup/cpu/cpu-test/
[root@localhost cpu]# ls /sys/fs/cgroup/cpu/cpu-test/
cgroup.clone_children  cpuacct.stat          cpu.cfs_period_us  cpu.rt_runtime_us  notify_on_release
cgroup.event_control   cpuacct.usage         cpu.cfs_quota_us   cpu.shares         tasks
cgroup.procs           cpuacct.usage_percpu  cpu.rt_period_us   cpu.stat
cpu限制

先来一个很占cpu的程序

#include<stdio.h>

int main()
{
   while(1)
   {
   }
    return 0;
}

编译运行
[root@localhost ~]# gcc cpu.c -o cpu
[root@localhost ~]# ./cpu

查看cpu占有率

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                    
  2485 root      20   0    4212    352    276 R 100.0  0.0   1:10.24 cpu                                        

对程序添加cpu资源限制

[root@localhost ~]# cat /sys/fs/cgroup/cpu/cpu-test/cpu.cfs_quota_us 
-1
[root@localhost ~]# echo 20000 > /sys/fs/cgroup/cpu/cpu-test/cpu.cfs_quota_us
[root@localhost ~]# echo 2485 > /sys/fs/cgroup/cpu/cpu-test/tasks

再次查看cpu使用率,已经降到了20%左右。可见cpu限制生效了。

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                               
  2485 root      20   0    4212    352    276 R  26.7  0.0   8:51.00 cpu 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值