安装完cgroups,系统会出现目录:/sys/fs/cgroup
- 创建cpu资源控制组,限制cpu使用率最大为50%
cd /sys/fs/cgroup/cpu
mkdir testcpu
echo ‘10000’ > ./testcpu/cpu.cfs_period_us
echo ‘5000’ > ./testcpu/cpu.cfs_quota_us - 创建内存资源控制组,限制内存资源最大使用为100MB
cd /sys/fs/cgroup/memory
mkdir testmem
echo ‘104857600’ > ./testmem/memory.limit_in_bytes - 将进程加入到资源限制组
cgexec -g cpu:testcpu ./test
cgexec -g mem:testmem ./test - 可执行进程示例程序
g++ -o test test.cc --std=c++11 -lpthread
(test是一个可执行文件,功能是起一个进程,该进程占用cpu和内存资源)
下面演示通过systemctl修改cgroup参数,以为cron.service添加cpu和内存限制为例:
- 编辑/lib/systemd/system/cron.service文件,在[service]增加
CPUShares=600
MemoryLimit=500M - 重新加载配置文件并重启cron.service
systemctl daemon-reload
systemctl restart cron.service - 查看/sys/fs/cgroup/cpu/system.slice/cron.service/cpu.shares和/sys/fs/cgroup/memory/system.slice/cron.serive/memory.limit_in_bytes发现已经配置上了
- 除了步骤1中编辑unit的配置文件,还可以用systemctl set-property命令来修改,这种方式也是永久有效的
systemctl set-property cron.service CPUShares=700 MemoryLimit=102400