在 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=
直接写文件 推荐 可用

相关推荐
高铭杰4 分钟前
万物皆可KV(2)SurrealDB 存储布局分析
linux·服务器
无小道1 小时前
深入解析操作系统文件缓冲区:页缓存、基数树与f_pos的协同设计
linux·缓存·文件缓冲区
AOwhisky2 小时前
Linux(CentOS)系统管理入门笔记(第十二期)——系统管理工具与软件包管理(上篇):Cockpit 与 RPM 包管理
linux·运维·笔记·centos·云计算
寒水馨2 小时前
Linux下载、安装godot-4.7.1-stable(附安装包Godot_v4.7.1-stable_linux.x86_64.zip)
linux·游戏引擎·godot·游戏开发·2d游戏·3d游戏·godot engine
念恒123062 小时前
Socket编程UDP(中)
linux·网络协议·udp
深耕运维十八载云架构实务2 小时前
系统故障玄学之内存明明显示空闲,服务器却频繁卡顿卡死?拆解被忽略的 Linux 隐性内存陷阱
linux
qetfw3 小时前
CentOS 7 搭建 Sendmail + Dovecot 邮件服务器:SMTP、POP3、IMAP 与 TLS
linux·centos
明日清晨3 小时前
printf(“%p\n“,&((struct A *)NULL)->m_float)的原理
linux·服务器·前端
Android系统攻城狮4 小时前
Linux PipeWire深度解析之pw_context_add_spa_lib调用流程与实战(二十九)
linux·运维·服务器·音频进阶·pipewire音频进阶
Dovis(誓平步青云)5 小时前
《如何在CentOS 7中添加Plex官方软件源:解决文件磁盘难管理难题》
linux·运维·服务器·后端·生成对抗网络·centos