Linux使用 cgroup限制进程cpu利用率的方法
June 06, 2025 | 0 Minute Read
挂载cgroup子系统(若未挂载):
mount -t cgroup2 none /sys/fs/cgroup
chmod o+wt /sys/fs/cgroup
创建控制组:
mkdir /sys/fs/cgroup/mygroup
echo "+cpu" > /sys/fs/cgroup/cgroup.subtree_control
echo "+memory" > /sys/fs/cgroup/cgroup.subtree_control
表示每 100ms 最多运行 50ms(即 50%)
echo "50000 100000" > /sys/fs/cgroup/mygroup/cpu.max
设置最大内存使用为 512MB
echo $((512 * 1024 * 1024)) > /sys/fs/cgroup/mygroup/memory.max
用低优先级模式运行
添加 进程pid 到 grous 组里面
PID=$(pidof your_command)
echo $PID > /sys/fs/cgroup/mygroup/cgroup.procs
查看当前 cgroup 状态
cat /sys/fs/cgroup/mygroup/cpu.stat
cat /sys/fs/cgroup/mygroup/memory.current
测试完 删除 cgroup(必须先清空)
rmdir /sys/fs/cgroup/mygroup
使用 systemd-run 命令也可达到同样的目的