在服务器上设置账户(用户)的 CPU 最大利用率,可以通过多种方式实现,具体取决于你的操作系统和环境。以下是在 Linux 系统中限制某个用户或进程的 CPU 使用率的方法:
🧩 一、使用 cgroups(Control Groups)
这是最强大且推荐的方式,尤其适用于现代 Linux 系统(如 CentOS 7+/RHEL 7+/Ubuntu 16.04+)。
✅ 步骤:
1. 安装 cgroup-tools(如果未安装)
# Ubuntu/Debian
sudo apt-get install cgroup-tools
# CentOS/RHEL
sudo yum install libcgroup-tools
2. 创建一个 cgroup 来限制 CPU 使用
例如:限制用户 exampleuser 的 CPU 使用为最多 50%(单核)。
sudo cgcreate -g cpu:/userlimit
echo 50000 > /sys/fs/cgroup/cpu/userlimit/cpu.cfs_quota_us
echo 100000 > /sys/fs/cgroup/cpu/userlimit/cpu.cfs_period_us
上面表示每 100ms(周期)最多使用 50ms CPU 时间,即 50%。
3. 将用户的进程加入该 cgroup
可以使用 cgexec 命令启动程序:
sudo cgexec -g cpu:userlimit su - exampleuser -c "your_command_here"
或者你可以配置 PAM 模块自动将用户的所有进程加入指定 cgroup(较复杂,需额外配置)。
🧩 二、使用 cpulimit 工具(按进程限制)
如果你只想限制某个特定进程的 CPU 使用率,而不是整个用户,可以使用 cpulimit。
✅ 安装和使用:
# 安装
sudo apt-get install cpulimit # Debian/Ubuntu
sudo yum install cpulimit # CentOS/RHEL
# 限制某个进程 PID 的 CPU 到 50%
sudo cpulimit -p <PID> -l 50
🧩 三、使用 nice 和 renice 调整优先级(不是硬性限制)
虽然不能直接设置最大 CPU 使用率,但可以调整进程优先级,间接影响其资源分配。
nice -n 19 your_command # 启动低优先级进程
renice 19 -p <PID> # 修改已有进程优先级
🧩 四、结合 systemd 用户实例(适用于有 GUI 或服务的用户)
你也可以通过 systemd 的 slice 和 scope 单元来限制用户资源,这需要更复杂的配置,适合高级用户。
🔐 总结对比
| 方法 | 是否能限制 CPU 百分比 | 是否按用户限制 | 是否推荐 |
|---|---|---|---|
cgroups |
✅ 是 | ✅ 是 | ⭐ 推荐 |
cpulimit |
✅ 是 | ❌ 否(按进程) | 中等推荐 |
nice/renice |
❌ 否(仅优先级) | ✅ 是 | 低推荐 |
systemd resource control |
✅ 是 | ✅ 是 | 高级推荐 |
📝 示例:限制用户所有进程的 CPU 使用率到 50%
# 创建 cgroup
sudo cgcreate -g cpu:/cpu_limit_50
# 设置 CPU 限制为 50%
echo 50000 | sudo tee /sys/fs/cgroup/cpu/cpu_limit_50/cpu.cfs_quota_us
echo 100000 | sudo tee /sys/fs/cgroup/cpu/cpu_limit_50/cpu.cfs_period_us
# 获取用户的所有进程并加入 cgroup
for pid in $(pgrep -u exampleuser); do
echo $pid | sudo tee /sys/fs/cgroup/cpu/cpu_limit_50/tasks
done
如你需要根据具体场景(比如 Web 服务、SSH 用户、Docker 环境等)进一步定制,请提供更多信息,我可以给出针对性方案。
云计算HECS