发布时间:2026/8/13 14:15:14
Linux memcg_wb_domain脏页写回domain与cgroup关联 Linux memcg_wb_domain脏页写回domain与cgroup关联memcg_wb_domain是memory cgroup与writeback(回写)子系统之间的关键桥梁。在cgroup v2环境下每个memory cgroup拥有独立的脏页写回domain这使得内核可以基于cgroup粒度控制脏页比例、回写阈值和回写速率从而实现每cgroup级别的内存写回隔离。wb_domain结构扩展内核在wb_domain中嵌入memcg特定的字段使得每个memory cgroup都能拥有独立的回写domain而非全局共享一个domain。cstruct wb_domain {spinlock_t lock;/** 脏页限制和阈值dirty_limit是cgroup允许的脏页上限* dirty_thresh和bg_thresh分别是同步回写和后台回写阈值*/unsigned long dirty_limit;unsigned long dirty_thresh;unsigned long bg_thresh;/** 回写带宽估算用于计算回写速率* 基于周期性的脏页产生量和回写完成量*/struct dirty_throttle_control dtc;struct bdi_writeback_congested *congested;/** memcg特有字段指向所属memory cgroup的指针*/struct mem_cgroup *memcg;struct cgroup_subsys_state *css;};memcg_wb_domain的创建与初始化当memory cgroup被创建时内核调用memcg_wb_domain_init为其分配并初始化独立的写回domain。cint memcg_wb_domain_init(struct mem_cgroup *memcg, gfp_t gfp){struct wb_domain *dom;dom kzalloc(sizeof(*dom), gfp);if (!dom)return -ENOMEM;spin_lock_init(dom-lock);dom-memcg memcg;dom-css memcg-css;/** 初始化dirty阈值计算所需的时间戳和速率估算*/dom-dtc.thresh 0;dom-dtc.dirty 0;dom-dtc.time 0;dom-dtc.rate 0;dom-dtc.bw_time 0;dom-dtc.bw 0;/** 注册到全局domain链表用于per-domain的* 回写线程调度和阈值计算*/spin_lock(wb_domain_list_lock);list_add(dom-list, wb_domains);spin_unlock(wb_domain_list_lock);memcg-wb_domain dom;return 0;}脏页阈值计算中的cgroup关联当全局脏页阈值计算发生时memcg_wb_domain参与计算每个cgroup的独立脏页限制。核心函数memcg_wb_domain_dirty_limits根据cgroup memory限制和脏页比例计算阈值。cvoid memcg_wb_domain_dirty_limits(struct mem_cgroup *memcg,unsigned long *dirty_thresh,unsigned long *bg_thresh){struct wb_domain *dom memcg-wb_domain;unsigned long memcg_limit;unsigned long dirty_ratio;unsigned long bg_ratio;if (!dom)return;/** 获取cgroup的内存上限。* 如果memory.max为max(无限制)则回退到系统全局阈值*/memcg_limit memcg_page_state(memcg, MEMCG_LIMIT);if (memcg_limit PAGE_COUNTER_MAX) {*dirty_thresh global_dirty_limit;*bg_thresh global_background_dirty_limit;return;}/** 根据vm.dirty_ratio和vm.dirty_background_ratio计算阈值* dirty_thresh min(memcg_limit * dirty_ratio / 100, global_dirty_limit)* 同时确保阈值不超过cgroup限制本身*/dirty_ratio vm_dirty_ratio;bg_ratio vm_dirty_background_ratio;*dirty_thresh memcg_limit * dirty_ratio / 100;*bg_thresh memcg_limit * bg_ratio / 100;/** 硬件限制阈值不能低于PAGE_SIZE的倍数* 也不能超过系统总的可回收页*/*dirty_thresh min(*dirty_thresh, global_dirty_limit);*bg_thresh min(*bg_thresh, global_background_dirty_limit);dom-dirty_thresh *dirty_thresh;dom-bg_thresh *bg_thresh;}page dirtier追踪与写回domain绑定每个脏页(通过set_page_dirty标记)需要被关联到其所属memcg的写回domain。内核通过page-mem_cgroup和page-mapping-host的inode信息确定页面归属。cvoid memcg_wb_domain_register_page(struct page *page){struct mem_cgroup *memcg;struct wb_domain *dom;struct inode *inode;if (!page-mapping || !page-mapping-host)return;inode page-mapping-host;if (!inode-i_sb-s_bdi)return;/** 获取产生脏页的memcg通过page_cgroup关联查找*/memcg page_mem_cgroup(page);if (!memcg || !memcg-wb_domain)return;dom memcg-wb_domain;/** 将inode的回写关联到cgroup特定的bdi_writeback* 确保回写线程在刷脏页时考虑cgroup的domain信息*/if (inode-i_wb ! memcg-wb_domain-bdi-wb) {inode_attach_wb(inode, dom-bdi-wb);}}memcg_wb_domain在回写流程中的调度作用当内核触发回写操作时(wb_workfn或周期性回写)writeback代码根据页面所属cgroup的domain信息检查是否达到该cgroup的脏页阈值。cbool memcg_wb_domain_should_writeback(struct mem_cgroup *memcg){struct wb_domain *dom memcg-wb_domain;unsigned long dirty;if (!dom)return false;/** 统计该cgroup的当前脏页数量*/dirty memcg_page_state(memcg, MEMCG_DIRTY);/** 如果脏页数超过后台阈值触发回写* 如果超过同步阈值则需要阻塞dirtier*/if (dirty dom-bg_thresh)return true;return false;}通过memcg_wb_domain机制每个memory cgroup拥有了独立的脏页管理能力。这意味着一个cgroup内的大量脏页产生不会影响其他cgroup的写回行为从而在容器化环境中实现了真正的I/O资源隔离。当cgroup被销毁时memcg_wb_domain_destroy负责回收domain并确保所有挂起的回写操作在cgroup移除前完成。

相关新闻

2026/8/12 14:57:43

3个关键升级让魔兽争霸3在现代电脑上焕发新生

3个关键升级让魔兽争霸3在现代电脑上焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争霸3的卡顿、黑边、地图限制而烦恼&am…

2026/8/12 13:38:16

Linux may_open open_flag验证与O_TRUNC截断处理

Linux may_open是VFS层打开文件路径上的权限和标志验证关卡,位于fs/namei.c。它在do_dentry_open之前执行,负责对用户传入的open_flags做语义合规性检查,以及O_TRUNC截断条件的判定。任何不满足内核策略的flag组合都会在此被拒绝。 // fs/n…

2026/8/12 17:18:50

AI浪潮下,谁来守护品牌的真实面孔?

2026年,生成式AI已占据63%的信息检索流量入口。当用户不再翻页搜索引擎、而是直接向AI提问"哪个牌子的耳机好"时,品牌竞争的主战场已经悄然转移——从网页排名,转移到了AI对话框里。这场迁移催生了一个全新赛道:GEO&…

2026/8/13 14:13:53

Oracle数据库迁移实战:从评估到割接的全流程指南

1. 项目缘起:为什么数据迁移是DBA的“成人礼” 如果你在Oracle数据库领域待过一段时间,一定会认同一个观点:没独立主导过一次完整的数据迁移,你的DBA生涯是不完整的。这听起来有点夸张,但事实如此。数据迁移&#xff0…

2026/8/13 14:13:53

PyWinAssistant:如何用自然语言轻松操控Windows桌面?

PyWinAssistant:如何用自然语言轻松操控Windows桌面? 【免费下载链接】pywinassistant The first open-source Artificial Narrow Intelligence generalist agentic framework Computer-Using-Agent that fully operates graphical-user-interfaces (GUI…

2026/8/13 14:13:53

gprmax3.0安装、GPU加速(CUDA)配置

gprmax3.0安装、GPU加速(cuda)配置、通过python使用gprmax的问题 一、安装过程二、通过NVIDIA CUDA使用GPU加速功能三、通过VS2026或VScode操纵gprmax 本篇记录一下最新VS2026、Python3.14,来使用gprmax3.0,以供参考。 一、安装…

2026/8/13 14:13:53

Rsoft安装

(下载链接来自其他文章) 下载安装包:https://pan.baidu.com/s/1zoARB9R2Ou2ryR5tMX4XOQ?pwd1234#list/path%2F密码:1234首先安装驱动如果驱动安装失败且使用的是Windows11系统,首先尝试在“Windows安全中心”--“设备…

2026/8/12 10:37:12

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 5:35:25

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/13 0:02:21

Prefix Cache

Prefix Cache(前缀缓存) 是大模型推理引擎(如 vLLM、SGLang、TensorRT-LLM)中用于跨请求复用已计算 KV Cache 的核心内存与计算优化技术。 它的核心目的在于:彻底消除重复 Prompt 的 Prefill 阶段计算,将首…

2026/8/13 0:02:21

VSCode插件精选:从AI补全到代码规范,打造高效开发环境

1. 项目概述:为什么说插件是VSCode的灵魂?如果你和我一样,每天有超过8小时的时间是在VSCode里度过的,那你肯定明白,一个顺手的开发环境有多重要。VSCode本身已经足够优秀了,但真正让它从“好用的编辑器”蜕…

2026/8/13 0:02:21

如何快速完成文件批量重命名:FreeReNamer终极指南

如何快速完成文件批量重命名:FreeReNamer终极指南 【免费下载链接】FreeReNamer 功能强大又易用的文件批量重命名软件 项目地址: https://gitcode.com/gh_mirrors/fr/FreeReNamer 你是否曾经面对成百上千个杂乱无章的文件感到头疼?传统的手动重命…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…