v6
2026-09-29
memcg stock 迁移 · v6
v6 将 memcg 的 per-CPU 预充电 stock 抽象移到 page_counter,使各计数器可缓存 charge,暂不改行为。
原始补丁链接
子 Patch(5)
1/5
mm/memcontrol: flatten try_charge_memcg control flow
为让后续 page_counter_try_charge 感知 per-CPU stock,重构 try_charge_memcg:把 memsw 与 memory 的嵌套收费拆成各自成功/失败路径,无功能变化。
2/5
mm/page_counter: introduce per-CPU stock
把 memcg 的七槽 per-CPU stock 复制到 page_counter 层,新增 page_counter_stock_pcp、page_counter 的 stock 指针和 CSS 引用;移植 drain/refill 但暂不接线。
3/5
mm/page_counter: make page_counter_try_charge() stock-aware
page_counter_try_charge 新增 may_batch/nr_charged 并接入 stock:may_batch 处理 !allow_spinning 快速收费,nr_charged 保持 memory.high 批量记账;当前无 counter 启用。
4/5
mm/memcontrol: move memory stock to page counters
memcg 的 memory 计数改用 page_counter stock,可缓存释放 refill stock,而 uncharge_gather、回滚、记账转移直接 uncharge 层级;memsw.usage_in_bytes 报较大值维持 v1 不变式。
5/5
mm/memcontrol: add stock to the memsw page counter
legacy memsw page_counter 获得独立七槽 per-CPU stock,收费、refill、drain、热插拔按 memory/memsw 两 bank 分开;抽出 schedule_stock_drain(),memory 失败时 memsw 直接回滚。