CentOS 7 – 使用cgroups限制进程资源

cgroups简介

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

cgroups使用

# 下载一个可以模拟cpu高负载的工具,mathomatic是质数生成器,会加大处理器的负荷wget tar xf mathomatic-16.0.5.tar.bz2cd 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 -hcgcreate -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-primescgexec -g cpu:large /usr/local/bin/matho-primes 0 9999999999 > /dev/nullcgexec -g cpu:small /usr/local/bin/matho-primes 0 9999999999 > /dev/nullcgexec -g cpu:small /usr/local/bin/matho-primes 0 9999999999 > /dev/null # 在small组中起两个matho-primes进程,然后top观察cpu时间# small组两个matho-primes进程差不多共享cpu,large组的进程得到更多的cpu时间

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

本文永久更新链接地址:

人的不幸缘于欲望,所以知足者长乐。

CentOS 7 – 使用cgroups限制进程资源

相关文章:

你感兴趣的文章:

标签云: