【容器底层技术】cgroup v2使用与测试

Docker底层原理:Cgroup V2的使用 若系统没有加载cgroup2文件系统,需要执行下面这条命令。 阅读详情
AI摘要

本文详细介绍cgroupv2的配置方法与测试流程,并通过实例演示如何管理与限制进程资源,包括CPU周期与内存分配等。

cgroup v2使用与测试

1. 配置cgroup v2的环境

  1. 判断内核使用的cgroup版本
$ mount | grep cgroup
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /usr/local/aegis/cgroup type tmpfs (rw,relatime,size=51200k)
cgroup on /usr/local/aegis/cgroup/cpu type cgroup (rw,relatime,cpu)

如果输出只有cgroup,说明内核还未挂载cgroup v2或者内核不支持cgroup v2

  1. 判断内核是否支持cgroup v2
$ cat /proc/filesystems | grep cgroup
nodev	cgroup
nodev	cgroup2

出现了cgroup v2说明内核是支持的,可以继续接下来的操作

  1. 挂载cgroup v2

对于使用 systemd 引导的系统,可以在引导文件 /etc/default/grub 的GRUB_CMDLINE_LINUX_DEFAULT中添加如下一行,启用 v2 版本

“systemd.unified_cgroup_hierarchy=yes”

$ sudo vim /etc/default/grub
添加:GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=yes"
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
$ reboot

可以使用cgroup_no_v1 = allows防止cgroup v1抢占所有controller,体验纯cgroup v2环境

最后再进行重启,就可以使用cgroup v2了

2. 初探cgroup v2

查看cgroup2的目录树结构

$ ls /sys/fs/cgroup
cgroup.controllers      cpuset.mems.effective   memory.idle_page_stats.local
cgroup.max.depth        cpu.stat                memory.numa_stat
cgroup.max.descendants  init.scope              memory.pressure
cgroup.procs            io.cost.model           memory.reap_background
cgroup.stat             io.cost.qos             memory.stat
cgroup.subtree_control  io.pressure             memory.use_priority_oom
cgroup.threads          io.stat                 memory.use_priority_swap
cpu.pressure            memory.fast_copy_mm     system.slice
cpuset.cpus.effective   memory.idle_page_stats  user.slice

相比于cgroup v1,v2的目录则显得直接很多,毕竟如果将cgroup v1比作森林的话,cgroup v2就只是一颗参天大树

查看cgroup2可管理的系统资源类型

$ cat cgroup.controllers
cpuset cpu io memory hugetlb pids rdma

查看cgroup2开启的控制器

$ cat cgroup.subtree_control
cpuset cpu io memory pids

在root cgroup下创建一个cgroup

$ mkdir cgrp2test
$ ls cgrp2test
cgroup.controllers      cpu.weight.nice               memory.pressure
cgroup.events           io.bfq.weight                 memory.priority
cgroup.freeze           io.latency                    memory.reap_background
cgroup.max.depth        io.max                        memory.stat
cgroup.max.descendants  io.pressure                   memory.swap.current
cgroup.procs            io.stat                       memory.swap.events
cgroup.stat             io.weight                     memory.swap.high
cgroup.subtree_control  memory.current                memory.swap.max
cgroup.threads          memory.events                 memory.use_priority_oom
cgroup.type             memory.events.local           memory.use_priority_swap
cpu.max                 memory.fast_copy_mm           memory.wmark_high
cpu.pressure            memory.high                   memory.wmark_low
cpuset.cpus             memory.idle_page_stats        memory.wmark_ratio
cpuset.cpus.effective   memory.idle_page_stats.local  memory.wmark_scale_factor
cpuset.cpus.partition   memory.low                    pids.current
cpuset.mems             memory.max                    pids.events
cpuset.mems.effective   memory.min                    pids.max
cpu.stat                memory.numa_stat
cpu.weight              memory.oom.group

查看cgrp2test可用的控制器

$ cat cgroup.controllers 
cpuset cpu io memory pids 

每个child cgroup不会继承其父母的控制器,只有在父节点cgroup.subtree_control显式配置开启的控制器才能在child cgroup中使用。目前cgrp2test可以对cpuset, cpu, io, memroy, pids这些资源进行限制

对cgroup添加cpu资源限制<

docker启用cgroup v2 启动Docker服务。如果你已经按照上面的步骤进行了配置,Docker会自动检测并使用cgroup v2。确认Docker是否在cgroup v2中运行。如果你这里是2那么说明启用了,如果是1,那么就未启用。确认cgroup v2已经启用。系统已经启用Cgroups v2,可以通过。Docker版本在20.10及以上。Linux内核版本在4.15以上。重启系统以应用内核启动参数。 阅读详情

相关推荐

cgroup v2 使用示例

cgroup v2 在ubuntu下的使用示例

OS Developer的博客 1445

ccswitch:基于cgroup v2的容器运行时精准调度系统

cgroup v2是Linux现代资源控制的核心机制,通过cpuset、cpu、memory等控制器实现CPU拓扑绑定、带宽限制与内存隔离。其原理在于内核级资源分组与策略注入,技术价值在于提供确定性SLA保障,支撑金融低延迟、AI训练绑核、多租户硬隔离等严苛场景。相比systemd-run等传统方案,cgroup v2支持原子化、可审计、跨控制器协同的细粒度调度。ccswitch正是深度封装cgroup v2语义与OCI runtime hook机制的工程实践,解决NUMA亲和、缓存污染、子进程逃逸等生产级

weixin_30562507的博客 347

深入解析cgroup v2:从配置到实战资源限制

本文深入解析了cgroup v2的核心原理与实战应用。相较于v1,cgroup v2采用统一的层级结构,配置更直观,行为更可预测。文章详细介绍了从环境检查、启用配置到实战限制CPU与内存的完整流程,并阐述了其自上而下的资源分配模型与无内部进程等核心规则,帮助开发者与运维人员掌握这一容器底层技术,实现精细化的资源管控。

醉三国 420

Debian 10 Docker安装实战:cgroup v2兼容与docker-ce选型指南

Docker 是容器化技术的基石,其核心依赖于 Linux 内核的 cgroup 和 namespace 机制。cgroup v2 作为现代内核统一资源管理标准,已成 Debian 10 默认配置,但旧版容器运行时(如 docker.io)缺乏原生支持,易引发 daemon 启动失败、OCI runtime 错误等典型问题。选择适配良好的 Docker 发行版(如 docker-ce)并正确配置 cgroup 驱动,是保障容器稳定运行的技术前提。该方案广泛应用于 CI/CD 流水线、Kubernetes 节

weixin_34379433的博客 316

保姆级教程:在树莓派5B上用AI Kit跑YOLOv8,实测134fps的完整配置流程

本文提供了一份详细的树莓派5B搭配AI Kit部署YOLOv8的教程,从硬件组装到模型转换、优化和部署,最终实现134FPS的高帧率推理性能。通过Hailo-8L AI加速模块和HEF模型转换,这套方案为边缘AI计算提供了强大支持,适用于智能监控、无人机视觉导航等应用场景。

weixin_28725407的博客 448

Netty UDP

UDP是一种无连接的协议,它并不在通信双方之间建立连接,而是直接将数据包从发送端发送到接收端。UDP不保证数据包的可靠传输,也不保证数据包的顺序,因此其传输速度通常比TCP快,且系统开销较小。然而,这也意味着UDP在某些情况下可能会丢失数据包或数据包到达的顺序错乱。

王小工小工历程 2026

第八篇 永磁同步电机控制-MTPA、MTPV

MTPA 的全称是 Maximum Torque Per Ampere,即 最大转矩电流比控制。核心思想:在输出特定转矩时,通过控制定子电流的幅值和相位(即d轴和q轴电流的分量),使得所需要的定子电流幅值最小。通俗理解:就是用“最省电”的方式产生所需要的力矩。就像开车时,找到一个最合适的油门和档位配合,使得在输出相同动力时,油耗最低。

深耕汽车电子:AUTOSAR、电机控制,助力数字汽车 1870

图像配准(Image Registration)——深度学习方法

参考:https://www.cnblogs.com/carsonzhu/p/11188574.html

m0_46483236的博客 4万+

在Ubuntu22.04.2远程服务器上搭建OHIF+Orthanc

在Ubuntu远程服务器上不翻墙,但是本地windows需要科学上网开始之前,首先在终端输入export -p查看是否有代理端口如下如果有就关了,输入如下命令。

weixin_51116549的博客 1334

麒麟和UOS系统编写桌面点击可执行文件

在桌面上创建一个快捷方式(.desktop 文件)来运行脚本。打开文本编辑器,创建一个新文件,如。这可以通过文本编辑器来完成。首先,确保您的脚本具有执行权限。现在,您应该可以双击桌面上的。保存此文件到桌面目录,例如,在桌面上创建一个快捷方式(文件来运行您的脚本了。使用图形界面或命令行给。现在您可以双击桌面上的。为您脚本的实际路径。是您脚本的实际路径。文件来运行您的脚本了。

u013934107的博客 7249

Ubuntu上通过FinalShell或Asbru访问CentOS虚拟机

使用FinalShell或Asbru远程连接虚拟机

howard2005的专栏 2279

SAP Joule 在顾问与开发者场景的双擎定位:Joule for Consultants 与 Joule for Developers 全面解读

SAP推出企业级AI助手Joule,分为顾问版(Joule for Consultants)和开发者版(Joule for Developers)两个版本。顾问版聚焦咨询业务,整合SAP知识库和方法论,辅助方案设计、差距分析和实施落地;开发者版嵌入开发工具链,支持代码生成、解释、测试和迁移。两者共享智能底座但面向不同场景:顾问版优化项目交付流程,开发者版提升工程效率。典型案例显示,Joule能有效缩短云转型周期,实现从业务咨询到技术落地的无缝衔接。该产品通过AI代理和知识图谱技术,为企业数字化转型提供端到端

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 352

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: Linux内核源码中最常见的数据结构之【mutex】
下一篇: 【云原生】容器技术发展
Hack Rabbit
Hack Rabbit 新星创作者: 运维技术领域 新星创作者: 运维技术领域
博客等级 码龄9年 2893粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hack Rabbit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值