0

0

Linux cgroup 在资源控制中的作用

冷漠man

冷漠man

发布时间:2026-01-28 11:55:03

|

724人浏览过

|

来源于php中文网

原创

cgroup是内核级强制资源控制机制,能硬性限制CPU、内存、IO等资源;超限时进程被OOM killer杀掉或等待下个调度周期。

linux cgroup 在资源控制中的作用

Linux cgroup 是什么,它真能限制进程资源吗

能,而且是内核级强制控制。cgroup(control group)不是用户态工具或监控代理,而是 Linux 内核提供的资源隔离与分组管理机制。只要正确挂载、配置并把进程加入对应 cgroup,CPU、内存、IO 等资源上限就会被硬性执行——超限时,比如内存用超 memory.max,进程会直接被 OOM killer 杀掉;CPU 时间超配额,就只能等下个调度周期。

为什么 memory.max 设了却没生效

常见原因是没启用 memory controller,或者进程没真正进入目标 cgroup。从 kernel 5.8+ 开始,memory controller 默认不启用,需在启动参数中显式添加 cgroup_enable=memory 并配合 swapaccount=1(若需限制 swap)。另外,仅创建目录、写入 memory.max 不够,必须把进程 PID 写入该 cgroup 的 cgroup.procstasks 文件:

echo $PID > /sys/fs/cgroup/mygroup/cgroup.procs

注意:cgroup.procs 写入的是线程组 ID(即主线程 PID),tasks 才是单个线程 ID;混用会导致部分线程未受控。

  • systemd 启动的服务默认在自己的 scope 下,需用 SystemMaxMemoryMemoryMax= 在 unit 文件里配置,而非手动改 cgroup 文件
  • 容器运行时(如 runc)通常自动设置 cgroup,但 debug 时建议检查 /proc/$PID/cgroup 确认进程归属
  • memory.maxmax 表示不限制,不是“最大值”,别误设成字符串 "max"

cpu.maxcpu.weight 到底怎么选

两者定位完全不同:cpu.weight(cgroup v2)是相对权重,用于公平调度,不设硬上限;cpu.max 才是绝对配额,格式为 "max us/sec",例如 "50000 100000" 表示每 100ms 最多用 50ms CPU 时间。

实际场景中:

好买卖商城
好买卖商城

好买卖商城开源商城 是基于Opencart网店系统,针对中文用户而改进的本地化分支,是真正的开源PHP中文网店系统,兼容Opencart的插件。该系统具有易于操作的可视化安装界面、完善的前台商品展示和户在线购物车功能、强大的后台管理和维护功能模块简单易用,灵活的插件机制,更易于扩展。另外,好买卖商城开源商城 还集成集成了支付宝等支付和物流插件,更适合中文用户使用。 好买卖商城2.0开源商城流程进行

下载
  • 做资源保障型服务(如数据库主实例),优先用 cpu.max 防止单一进程吃满 CPU
  • 做批处理任务混部(如日志压缩 + 实时 API),用 cpu.weight 更灵活,避免低权任务完全饿死
  • cpu.max 对短时突发无效——它只在周期性配额检查点(默认 100ms)生效,高频小任务可能连续抢到多个周期的额度

为什么 cgroup v1 和 v2 混用会出问题

根本原因是两者不兼容:v1 按子系统挂载(cpumemory 各自独立挂载),v2 是统一挂载单棵树,所有控制器必须同时启用或禁用。如果你看到 /sys/fs/cgroup/cpu/sys/fs/cgroup/unified 同时存在,说明系统处于混合模式,此时 systemd、Docker 等组件行为不可预测。

确认方式:

mount | grep cgroup

理想输出应只含一行 cgroup2 on /sys/fs/cgroup type cgroup2。若要彻底切换到 v2:

  • 内核启动参数加 systemd.unified_cgroup_hierarchy=1
  • 禁用旧版控制器:确保 /proc/sys/kernel/cgroup_disable 为空或不含 cpumemory
  • Docker 20.10+ 默认支持 v2,但需在 /etc/docker/daemon.json 中显式设 "cgroup-parent": "/docker" 类路径,否则可能 fallback 到 v1

cgroup 的复杂性不在语法,而在它和调度器、OOM killer、page cache 回收等内核子系统的耦合深度——一个配置项改错,可能让延迟毛刺变高,或让内存回收卡住整个节点。动手前,先看 /sys/fs/cgroup/xxx/cgroup.events 里的 populatedlow 事件,比盲目调参更可靠。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

418

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1500

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

623

2023.11.24

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

1

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.9万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号