目录
1.CGroups介绍
2.功能
为docker作为准备
3.CGroup应用案例
1.安装及开启服务
yum -y install libcgroup
yum -y install libcgroup-tools
systemctl start cgconfig.service
systemctl enable cgconfig.service
systemctl status cgconfig
2.限制进程使用CPU
1.查看cpu shares(cpu分片)
1.查看资源限制子系统
lssubsys
2.查看子系统配置文件所在位置
ls /sys/fs/cgroup/
3.查看CPU时间分片,用于保证分组所得到的CPU分片总量
cat /sys/fs/cgroup/cpu/cpu.shares
2.使用CPU子系统创建两个group分组
vim /etc/cgconfig.conf
group lesscpu{
cpu{
cpu.shares=200;
}
}
group morecpu {
cpu{
cpu.shares=800;
}
}
修改完配置文件需要重启下服务
system restart cgconfig
3.验证cpu的性能被限制
准备一个死循环脚本
vim /tmp/tmpshell.sh
#!/bin/bash
a=1
while true
do
a=$[$a+1]
done
通过三个窗口,第一个是正常窗口,第二个是lesscpu,第三个是morecpu;
第一个窗口
top
使用top命令查看当前进程
第二个窗口
cgexec -g cpu:morecpu bash /tmp/tmpshell.sh
第三个窗口
cgexec -g cpu:lesscpu bash /tmp/tmpshell.sh
三个窗口都运行相应代码后,如下
此时,%cpu还是接近100%的
原因:这台主机是多核cpu
多核cpu限制性能的方法
通过命令查看硬件信息,发现有两个cpu
echo 0 > /sys/devices/system/cpu/cpu0/online
让cpu0停止工作
echo 1 > /sys/devices/system/cpu/cpu0/online
让cpu0工作
echo 1 > /sys/devices/system/cpu/cpu1/online
让cpu1工作
online为1工作,online为0不工作
多核cpu就关闭多余的cpu,留一个工作即可
对比下关闭前后的cpu信息
关闭前:cpu0,cpu1都在工作
关闭cpu0后:只剩下cpu1
再次运行下死循环脚本并在窗口1查看运行情况
分别保持在 80%和20%