slab 对象池的三种实现slabslubslob。slab对象池描述slab由于 slab 的实现非常复杂slab 中拥有多种存储对象的队列队列管理开销比较大slab 元数据比较臃肿对 NUMA 架构的支持臃肿繁杂slab 引入时内核还没支持 NUMA这样导致 slab 内部为了维护这些自身元数据管理结构就得花费大量的内存空间这在配置有超大容量内存的服务器上内存的浪费是非常可观的。slubslub 简化了 slab 一些复杂的设计同时保留了 slab 的基本思想摒弃了 slab 众多管理队列的概念并针对多处理器NUMA 架构进行优化放弃了效果不太明显的 slab 着色机制。slub 与 slab 相比提高了性能吞吐量并降低了内存的浪费。成为现在内核中常用的 slab 实现。slob专门为嵌入式小型机器小内存的场景设计的所以实现上很精简能在小型机器上提供很不错的性能。其中 slab 的实现最早是由 Sun 公司的 Jeff Bonwick 大神在 Solaris 2.4 系统中设计并实现的由于 Jeff Bonwick 大神公开了 slab 的实现方法因此被 Linux 所借鉴并于 1996 年在 Linux 2.0 版本中引入了 slab用于 Linux 内核早期的小内存分配场景。由于 slab 的实现非常复杂slab 中拥有多种存储对象的队列队列管理开销比较大slab 元数据比较臃肿对 NUMA 架构的支持臃肿繁杂slab 引入时内核还没支持 NUMA这样导致 slab 内部为了维护这些自身元数据管理结构就得花费大量的内存空间这在配置有超大容量内存的服务器上内存的浪费是非常可观的。针对以上 slab 的不足内核大神 Christoph Lameter 在 2.6.22 版本2007 年发布中引入了新的 slub 实现。slub 简化了 slab 一些复杂的设计同时保留了 slab 的基本思想摒弃了 slab 众多管理队列的概念并针对多处理器NUMA 架构进行优化放弃了效果不太明显的 slab 着色机制。slub 与 slab 相比提高了性能吞吐量并降低了内存的浪费。成为现在内核中常用的 slab 实现。而 slob 的实现是在内核 2.6.16 版本2006 年发布引入的它是专门为嵌入式小型机器小内存的场景设计的所以实现上很精简能在小型机器上提供很不错的性能。