在 systemd 场景下的 CPU 限制方式


一、核心区别

项目 cgroup v1 cgroup v2
是否支持 CPUQuota= systemd 模拟 原生支持
CPU 子系统 独立:cpu, cpuacct 统一:cpu
关键文件 cpu.cfs_quota_us cpu.max
systemd 推荐方式 set-property或 直接写文件 set-property
是否全局 system.slice system.slice
重启后是否失效 临时 临时

二、如何判断用的是 v1 还是 v2

复制代码
stat -fc %T /sys/fs/cgroup
输出 含义
tmpfs cgroup v1
cgroup2fs cgroup v2

三、已有 systemd unit 临时限制 CPU

假设 unit 为:xj.service


cgroup v1

方式 1:直接写 cgroup(最稳)

复制代码
# 查看路径
systemctl show xj.service -p ControlGroup

# 设置 20%
echo 20000 | sudo tee /sys/fs/cgroup/cpu/system.slice/xj.service/cpu.cfs_quota_us
  • 周期默认:100000微秒
  • 20000 / 100000 = 20%

立即生效, 重启 / 机器后失效


方式 2:systemctl(推荐)

复制代码
sudo systemctl set-property xj.service CPUQuota=20%

⚠️ 前提:

复制代码
CPUAccounting=yes

如果没开:

复制代码
sudo systemctl set-property xj.service CPUAccounting=yes
sudo systemctl restart xj.service

取消限制

复制代码
echo -1 | sudo tee /sys/fs/cgroup/cpu/system.slice/xj.service/cpu.cfs_quota_us

或:

复制代码
sudo systemctl set-property xj.service CPUQuota=

cgroup v2

方式 1:systemctl( 官方推荐)

复制代码
sudo systemctl set-property xj.service CPUQuota=20%

立即生效,不修改 unit 文件,重启后失效


方式 2:直接写 cgroup(高级)

复制代码
cat /sys/fs/cgroup/system.slice/xj.service/cpu.max

设置为 20%:

复制代码
echo "20000 100000" | sudo tee /sys/fs/cgroup/system.slice/xj.service/cpu.max

取消限制

复制代码
sudo systemctl set-property xj.service CPUQuota=

或:

复制代码
echo "max 100000" | sudo tee /sys/fs/cgroup/system.slice/xj.service/cpu.max

四、systemd 命令在 v1 / v2 下的行为差异

systemd 命令 cgroup v1 cgroup v2
CPUQuota= systemd 转换 原生支持
CPUWeight=
IOWeight=
直接写文件 推荐 可用

相关推荐
Net_Walke9 分钟前
【Linux系统】静态链接库与动态链接库
linux·嵌入式硬件
syc789012330 分钟前
中文语境下AI编码工具实战对比:从迭代体验看日常开发选择
linux·人工智能·ubuntu
凡人叶枫1 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
vsropy3 小时前
Ubuntu网络图标消失问题/有网络问号
linux·运维·ubuntu
coderwu3 小时前
Ubuntu 24.04 终端输入 openclaw config 提示未找到命令解决办法
linux·运维·ubuntu
凡人叶枫5 小时前
Effective C++ 条款28:避免使用 handles 指向对象内部
linux·服务器·开发语言·c++·嵌入式开发
AI帮小忙5 小时前
Debian系linux操作系统里安装OpenClaw
linux·运维·debian
极创信息5 小时前
Linux挖矿病毒深度清理实战教程,从进程隐藏、Rootkit驻留到彻底根除
java·大数据·linux·运维·安全·tomcat·健康医疗
weixin_307779136 小时前
Python写入Shell文件使用Linux系统的换行符
linux·开发语言·python·自动化
liulilittle7 小时前
Linux Swap 文件配置与持久化(虚拟内存)
linux·运维·服务器