SLAB内存管理

时间:2013-01-22 01:27:04

标签: linux-kernel

我对SLAB memory management mechanism的结构感到困惑。

我知道有多个'缓存'是特定于常用数据对象的,但为什么每个缓存都包含多个'slabs'?

缓存中每个slab的区别是什么?为什么不简单地将缓存填充数据对象本身?为什么需要这个额外的层?

1 个答案:

答案 0 :(得分:3)

我可能来不及回答这个问题,但这对其他人也有帮助。 正如我从Understanding Linux Virtual Memory Manager看到的那样,有平板有三大好处。

    由伙伴系统引起的
  1. 减少内部碎片。因为我们有最适合较小物体的缓存。
  2. 更好的硬件缓存使用 - 通过将对象分开以在不同的平板中的不同偏移处开始,从而可以减少缓存线之间的干扰。这是基于我们已经物理索引缓存的假设。
  3. slab是缓存中的主要单位,可以立即获取/放弃。这也会导致减少外部碎片(请参阅The Slab Allocator : An Object Caching Kernel memory Allocator中的第3.2节)。