博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cgroup使用--cpu资源限制
阅读量:2428 次
发布时间:2019-05-10

本文共 4665 字,大约阅读时间需要 15 分钟。

安装
操作系统:centos7

安装cgroup

[root@localhost ~]# yum install -y libcgroup-tools.x86_64Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.ustc.edu.cn * extras: mirrors.cqu.edu.cn * updates: mirrors.cqu.edu.cnResolving Dependencies--> Running transaction check---> Package libcgroup-tools.x86_64 0:0.41-21.el7 will be installed--> Finished Dependency ResolutionDependencies Resolved================================================================================================================ Package                         Arch                   Version                      Repository            Size================================================================================================================Installing: libcgroup-tools                 x86_64                 0.41-21.el7                  base                  99 kTransaction Summary================================================================================================================Install  1 PackageTotal download size: 99 kInstalled size: 257 kDownloading packages:libcgroup-tools-0.41-21.el7.x86_64.rpm                                                   |  99 kB  00:00:00     Running transaction checkRunning transaction testTransaction test succeededRunning 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 cgroupcgroup 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_releasecgroup.event_control   cpuacct.usage         cpu.cfs_quota_us   cpu.shares         taskscgroup.procs           cpuacct.usage_percpu  cpu.rt_period_us   cpu.stat
cpu限制

先来一个很占cpu的程序

#include
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

转载地址:http://yecmb.baihongyu.com/

你可能感兴趣的文章
linux创建指定大小的文件
查看>>
Redis运维和开发学习笔记(2) redis持久化
查看>>
Redis运维和开发学习笔记(4) Redis参数意义
查看>>
Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式
查看>>
Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令
查看>>
Redis运维和开发学习笔记(7) 内存管理和过期策略
查看>>
Redis源码分析(零)学习路径笔记
查看>>
Redis源码分析(一)redis.c //redis-server.c
查看>>
Redis源码分析(二)redis-cli.c
查看>>
redis源码剖析(三)——基础数据结构
查看>>
redis源码剖析(四)跳表
查看>>
redis源码剖析(五)—— 字符串,列表,哈希,集合,有序集合
查看>>
redis源码剖析(六)—— Redis 数据库、键过期的实现
查看>>
redis源码剖析(七)—— Redis 数据结构dict.c
查看>>
redis源码剖析(八)—— 当你启动Redis的时候,Redis做了什么
查看>>
redis源码剖析(九)—— Redis双链表实现
查看>>
redis源码剖析(十一)—— Redis字符串相关函数实现
查看>>
事务隔离级别动图演示
查看>>
mysql row_id为什么是6字节?为什么是8字节
查看>>
伪随机数和真随机数
查看>>