Skip to content

OpenEuler 22.03 LTS 开启 cgroup v2

一、什么是 cgroup

  • cgroup(Control Groups)是 Linux 内核提供的资源控制与隔离机制,用于对进程(或进程组)进行 CPU、内存、IO、PID 等资源的限制、统计与优先级管理。
  • 常见用途包括容器资源隔离、服务质量保障、批处理任务限流、故障隔离与精准监控。

二、cgroup v2 简介

  • cgroup v2 将所有控制器统一到单一层级,提供一致的接口与更清晰的语义,便于系统级委派与容器编排。
  • Kubernetes v1.35 中弃用和移除了cgroup v1,移除 cgroup v1 支持只会影响在不支持 cgroup v2 的旧版 Linux 发行版上运行节点的集群管理员; 在这些节点上,kubelet 将无法启动。 管理员必须将其节点迁移到启用了 cgroup v2 的系统。

三、cgroup v2 对比 cgroup v1 的优势

  • 单一层级避免多层级“打架”,资源行为更可预测。
  • 更强的委派与安全:通过 cgroup.subtree_control 精确声明下游可用控制器,避免越权。
  • 更细粒度与更现代的资源控制:memory.low/high/max、cpu.max/burst、io.latency 等,支持更细致的限流与保护。
  • 统一命名与行为:文件接口更一致,原子移动与统一 PID 视图减少歧义与边界条件。
  • 容器生态兼容更好:systemd、Kubernetes、containerd 在 v2 上支持更完善,默认行为更一致。

四、openEuler 开启 cgroup v2

1、查看是否开启了 cgroup v2

bash
stat -fc %T /sys/fs/cgroup/
  • 对于 cgroup v2,输出为 cgroup2fs
  • 对于 cgroup v1,输出为 tmpfs

2、如果不是 cgroup v2,运行以下命令并重启

bash
sudo grubby --update-kernel=ALL --args=systemd.unified_cgroup_hierarchy=1
sudo reboot

3、重启后验证

bash
stat -fc %T /sys/fs/cgroup/

期望看到:

  • 输出 cgroup2fs
最近更新

采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小弟