首先确认系统支持cgroups v2,通过mount | grep cgroup检查type cgroup2;然后创建cgroup目录并设置cpu.max文件限制CPU配额,如echo "50000 100000"限制50%使用率;将进程PID写入cgroup.procs以应用限制;最后通过cat /sys/fs/cgroup/.../cpu.stat查看nr_throttled是否大于0验证节流效果。

在Linux系统中,精确控制进程的CPU使用率对资源优化、服务隔离和性能测试非常重要。通过cgroups(Control Groups),我们可以实现对进程CPU占用的精细化管理。本文将带你了解如何使用cgroups v2来限制进程的CPU使用率,确保系统稳定运行。
cgroups是Linux内核提供的一种机制,用于限制、记录和隔离进程组的资源使用(如CPU、内存、I/O等)。cgroups分为v1和v2两个版本,现代发行版普遍启用cgroups v2,它结构更清晰、配置更统一。
本教程基于cgroups v2,适用于Ubuntu 20.04+、CentOS 8+、Debian 11+等支持该特性的系统。
首先检查你的系统是否启用cgroups v2:
mount | grep cgroup
如果输出中包含type cgroup2,说明已启用。例如:
sysfs on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime)
如果没有,请在启动参数中添加cgroup_no_v1=all或根据发行版文档启用v2。
cgroups v2通过cpu.max文件控制CPU配额。其格式为:
<配额> <周期>
其中:
例如,要限制进程最多使用50% CPU,可设置:
echo "50000 100000" > /sys/fs/cgroup/mygroup/cpu.max
表示每100ms最多运行50ms,即50% CPU使用率。
若想限制为20% CPU:
echo "20000 100000" > /sys/fs/cgroup/mygroup/cpu.max
步骤如下:
sudo mkdir /sys/fs/cgroup/limited
echo "30000 100000" > /sys/fs/cgroup/limited/cpu.max
echo $BASHPID > /sys/fs/cgroup/limited/cgroup.procs
或者启动新进程:
your_command & echo $! > /sys/fs/cgroup/limited/cgroup.procs
此时,该进程及其子进程将受CPU限制影响。
可以使用top或htop观察进程CPU使用情况。也可以读取cgroup统计信息:
cat /sys/fs/cgroup/limited/cpu.stat
输出示例:
usage_usec 300000 user_usec 250000 system_usec 50000 nr_periods 10 nr_throttled 3
重点关注nr_throttled:如果该值大于0,说明进程因超限被节流,限制已生效。
以上就是Linux如何精确控制进程CPU使用率_Linuxcgroups资源限制教学的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号