v1
2026-08-30
slab 停车降低 list_lock 竞争 · v1
__slab_free() 引入 parking:trylock 失败将 full->partial slab 放每节点 llist,减少 list_lock 竞争
原始补丁链接
子 Patch(2)
1/2
mm/slub: make the case handling in __slab_free() easier to follow
重构 __slab_free():明确 7 种 slab 状态转换分支;partial->partial 走 early continue;用 return 替代 goto 结尾;SL_partial 在循环后按需读取。无功能变化。
2/2
mm/slub: introduce slab parking to reduce list_lock contention
为缓解 __slab_free() 中 full->partial/empty 转换需获取 list_lock 入 partial 链导致的争用,引入 slab parking 机制:把新释放的 slab 停放起来而非立即入链,延迟/合并 list 操作,降低锁竞争。基于 profiling 显示 full->partial 占比高。