Linux CGroup可为系统中所运行任务(进程)的用户定义组群分配资源—比如CPU 时间、系统内存、网络带宽或者这些资源的组合。下面主要是限制CPU的占用。
共享CPU的占用时间和比率,建议查看各个VPS商家的TOS。
Virmach是CPU不能超过2小时使用50%。
一、安装并启用CGroup
yum install libcgroup libcgroup-tools numactl -y
启用CGroup
systemctl start cgconfig.service
二、限制用户的CPU占用
1、添加配置
vi /etc/cgconfig.conf
在最后面添加
group users_normal_limit{ cpu{ # 限制CPU使用率为30% cpu.cfs_period_us=100000; cpu.cfs_quota_us=30000; } }
主要修改cpu.cfs_quota_us,为与cpu.cfs_period_us的比例。
2、添加受限制用户
vi /etc/cgrules.conf
在最后面添加
@user cpu users_normal_limit
添加限制用户
usermod -a -G users root
或者更多
usermod -a -G users www usermod -a -G users mysql
3、使用配置生效
设置Cgroup服务开机启动
systemctl enable cgconfig systemctl enable cgred
重启Cgroup服务
systemctl restart cgconfig systemctl restart cgred
三、限制单个程序的CPU占用
1、查看VPS CPU的线程数
grep 'processor' /proc/cpuinfo | sort -u | wc -l
2、创建隔离组
cd /sys/fs/cgroup/cpu mkdir cpu_test
说明:目录创建完成会自动生成以下文件(注:该目录无法手动删除,如果不加入开机自启,重启后会消失)
ls cpu_test/
3、修改参数
echo 30000 > /sys/fs/cgroup/cpu/cpu_test/cpu.cfs_quota_us
注:默认-1不限制,现在改成20000,是将cpu.cfs_quota_us设为30000,相对于cpu.cfs_period_us的100000是30%;可以理解cpu使用率限制在30%。
4、限制某个程序占用的CPU
查看进程
top
限制程序
echo 进程pid >> /sys/fs/cgroup/cpu/cpu_test/tasks
把多个进程写入tasks,表示共享30% CPU。
四、跑一个耗cpu的脚本
vi cpu.sh
写入
#/bin/bash x=0 while [ True ];do x=$x+1 done;
设置权限并运行
chmod +x cpu.sh sh cpu.sh &