夜雨聆风学习资料网

ARTICLE · 1131957

Linux SLAB 分配器:源码级深度解析

Linux SLAB 分配器:源码级深度解析

Linux SLAB 分配器:源码级深度解析

删掉内核里一行代码,全世界都能崩给你看。读它不是为了怀旧,是当代程序员的必修课。

今天拆的是 SLAB 分配器。它蹲在伙伴系统上面,专门管小对象分配。v6.5 是最后一个保留经典 mm/slab.c 的版本,再往后就被 SLUB 取代了。

它有三招:对象释放后留着构造态,下次直接复用;整页切块装对象,把碎片圈在内部;每 CPU 留个本地缓存,命中时连锁都不用加。

结构分四层:kmem_cache 管对象类型,kmem_cache_node 管 NUMA 节点,slab 管物理页,array_cache 当快速通道。

分配走无锁 LIFO 出栈,空了就批量去节点拿一批。释放先入本地栈,满了再批量倒回节点。空闲 slab 超限就整片还给伙伴系统。

这套机制把延迟压得很低,代价就是代码路径绕、元数据重。真要改内核,得顺着这些队列和阈值慢慢摸。

原文Linux SLAB 分配器:源码级深度解析
上海,1小时前,

相关学习资料