首页/系统/Linux 运维命令速查/cgroup v2 资源限制观察
性能与监控48 条

cgroup v2 资源限制观察

现代发行版默认 cgroup v2 统一层级:memory.max/cpu.weight/io.max 是单元与容器限制的落点,配合 systemd 资源指令可查可用。

Linux 运维命令速查系统更新于 2026-10-13

cgroup v2 怎么看

现代发行版普遍使用统一层级的资源控制框架,服务与容器的资源限制最终都落在一组层级化的控制文件上。理解这一点很有价值:既能解释「为什么进程被限制住」,也能在排查内存被回收、CPU 被压制、磁盘被限速时,直接找到限制的来源与数值,而不是靠猜。

基本信息

适用平台使用统一层级资源控制的现代 Linux 发行版
观察入口/sys/fs/cgroup/ 下的层级目录与控制器文件
与 systemd 的关系服务单元的资源指令会写成对应的控制文件
常见控制器CPU、内存、IO 三类

典型使用场景

  • 确认某个服务被限制了多少内存,而不是只看机器总量
  • 排查容器因内存上限被终止的原因
  • 核对 CPU 权重设置是否按预期生效
  • 限制备份类任务占用的磁盘带宽
  • 给服务设置更严格的资源边界,避免影响同机其他服务

检查环境与限制

检查环境与限制
mount | grep cgroup                       # 确认是统一层级还是旧式层级
cat /sys/fs/cgroup/cgroup.controllers     # 当前启用的控制器
systemctl show myapp -p MemoryMax -p MemoryHigh -p CPUWeight -p IOWeight   # 单元级限制
cat /sys/fs/cgroup/system.slice/myapp.service/memory.max 2>/dev/null       # 落到文件上的内存上限
cat /sys/fs/cgroup/system.slice/myapp.service/memory.events 2>/dev/null    # 是否发生过内存回收或终止
systemd-cgtop                             # 按层级看资源占用

给单元设限制

给单元设限制
sudo systemctl edit myapp
# [Service]
# MemoryMax=2G          # 硬上限,超出会触发终止
# MemoryHigh=1.5G       # 软上限,超出先尝试回收
# CPUWeight=50          # 相对权重,别人抢不到时才体现
# IOWeight=100          # 磁盘带宽的相对权重
sudo systemctl daemon-reload && sudo systemctl restart myapp
systemctl show myapp -p MemoryMax         # 复核生效值

关键文件与参数读法

项目含义判断要点
内存软上限超过后开始回收,不立即终止先设它观察效果,再加硬上限
内存硬上限超过后触发终止设置过紧会导致进程被杀
内存事件计数统计回收与终止次数非零说明限制正在起作用
CPU 权重相对权重而非绝对配额空闲时不受限,争抢时才体现
IO 权重磁盘带宽的相对权重与具体设备能力相关,需实测
内存软上限是挤压式治理、硬上限是终止式兜底:治理内存问题建议先设软上限观察回收效果,确有需要再加硬上限。

排查顺序

  • 先确认系统使用的是统一层级还是旧式层级
  • 再查单元被设置的限制值,而不是看机器总资源
  • 查看内存事件计数,判断限制是否正在起作用
  • 核对系统日志里的终止记录,确认是否被内存机制杀掉
  • 定位后调整限制参数,并重新观察一段时间的效果
旧式层级时代的参数命名与新版本完全不同,老脚本与老文档里的写法不能直接照搬,迁移时需要逐项改写。

易错点

  • 旧式层级的参数名在统一层级里已全部更换,老脚本照搬会静默不生效
  • 限制设得过紧会触发内存终止,排查时要先看内存事件计数与系统日志
  • 把 CPU 权重当成绝对配额理解,实际只有在发生争抢时才有意义
  • 只在容器内看资源数值,忽略宿主机的层级设置,结论可能完全对不上

数据来源与参考

  • 内核文档:cgroup-v2.rst
  • man 5 systemd.resource-control
  • systemd 官方文档:resource control

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌