cgroups简介

Centos7使用cgroups限制进程资源

cgroups简介

控制组(cgroups)是一个linux内核特性,它允许你指定内核应该如何给一个进程组分配特定的资源。你可以用cgroups指定在某一个组中的进程使用多少cpu时间、系统内存、网络带宽、或者这些资源的组合。

(选自马哥教育的微信公众平台)

cgroups使用

#下载一个可以模拟cpu高负载的工具,mathomatic是质数生成器,会加大处理器的负荷````wgethttp:``//mathomatic``.orgserve.de``/mathomatic-16``.0.5.``tar``.bz2``tar``xfmathomatic-16.0.5.``tar``.bz2``cd``mathomatic-16.0.5``/primes/``make``&&``make``install``#编译安装``#centos7系统需要安装libcgroup-tools包,才有cgroup配置命令``yum``install``-ylibcgroup-tools.x86_64``#创建两个不同cpu资源分配的组``cgcreate-gcpu:``/large``#具体命令使用cgcreate-h``cgcreate-gcpu:``/small``#cpu.shares是cpu控制的一个属性,更多的属性``#可以到/sys/fs/cgroup/cpu目录下查看,默认值是1024,值越大,能获得更多的cpu时间``cgset-rcpu.shares=512small``#cgexec启动一个cgroup任务``matho-primes0999999999>``/dev/null``&``#生成一个从0到999999999的质数列表``cgexec-gcpu:small``/usr/local/bin/matho-primes``0999999999>``/dev/null``&``#后台运行``#使用top命令查看发现cpu被100%占用,因为是一个单独的进程,它使用尽可能多的cpu``#cgroups限制仅在两个或多个以上进程竞争cpu资源时起作用````PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND````6726root20092082540488R99.90.00:34.47matho-primes``cgexec-gcpu:large``/usr/local/bin/matho-primes``09999999999>``/dev/null``cgexec-gcpu:small``/usr/local/bin/matho-primes``09999999999>``/dev/null``cgexec-gcpu:small``/usr/local/bin/matho-primes``09999999999>``/dev/null``#在small组中起两个matho-primes进程,然后top观察cpu时间``#small组两个matho-primes进程差不多共享cpu,large组的进程得到更多的cpu时间

下次打算将cgroups应用到我们的计算存储一体机上,用来限制glusterfs进程和nova-compute,避免存储服务和计算服务抢占cpu等资源。

cgroups简介
控制组(cgroups)是一个linux内核特性,它允许你指定内核应该如何给一个进程组分配特定的资源。你可…

控制组(cgroups)是一个Linux内核特性,它允许你指定内核应该如何给一个进程组分配特定的资源。你可以用cgroups指定在某一个组中的进程使用多少cpu时间、系统内存、网络带宽、或者这些资源的组合。

cgroups使用

#金沙城中心赌场
下载一个可以模拟cpu高负载的工具,mathomatic是质数生成器,会加大处理器的负荷
 wget
 
tar xf mathomatic-16.0.5.tar.bz2
cd mathomatic-16.0.5/primes/
make && make install        #  编译安装
 
#
CentOS7系统需要安装libcgroup-tools包,才有cgroup配置命令
yum install -y libcgroup-tools.x86_64
 
# 创建两个不同cpu资源分配的组
cgcreate -g cpu:/large      # 具体命令使用cgcreate -h
cgcreate -g cpu:/small
 
# cpu.shares是cpu控制的一个属性,更多的属性
#
可以到/sys/fs/cgroup/cpu目录下查看,默认值是1024,值越大,能获得更多的cpu时间
cgset -r cpu.shares=512 small
 
# cgexec启动一个cgroup任务
matho-primes 0 999999999 > /dev/null &  #
生成一个从0到999999999的质数列表
cgexec -g cpu:small /usr/local/bin/matho-primes 0 999999999 >
/dev/null & # 后台运行
 
#
使用top命令查看发现cpu被100%占用,因为是一个单独的进程,它使用尽可能多的cpu
# cgroups限制仅在两个或多个以上进程竞争cpu资源时起作用
 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM    TIME+
COMMAND   
 6726 root      20  0    9208  2540    488 R  99.9  0.0  0:34.47
matho-primes
 
cgexec -g cpu:large /usr/local/bin/matho-primes 0 9999999999 >
/dev/null
cgexec -g cpu:small /usr/local/bin/matho-primes 0 9999999999 >
/dev/null
cgexec -g cpu:small /usr/local/bin/matho-primes 0 9999999999 >
/dev/null 
# 在small组中起两个matho-primes进程,然后top观察cpu时间
#
small组两个matho-primes进程差不多共享cpu,large组的进程得到更多的cpu时间

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图