我最近读到了关于slab系统的缓存着色并且不明白。 为什么缓存着色会在不同的平板中为对象添加各种偏移量可以提高性能?
我最初的猜测是: 具有缓存偏移的slab分配器,尝试将slabs的第一个对象放在不同缓存颜色的内存中。如果客户端从这些平板分配N个对象,它将获得具有N个缓存颜色的N个对象。
我的猜测是正确的还是有人可以给我更多提示? 非常感谢,
答案 0 :(得分:5)
我建议通过“Understanding Linux virtual memory”书 - slab allocator章节。正如它引用的那样,
slab分配器的最后一项任务是使用最佳硬件缓存。如果在将对象打包到板中后剩余空间,则剩余空间用于对板进行着色。平板着色是一种尝试让不同平板中的对象在缓存中使用不同行的方案。通过将对象放置在slab内的不同起始偏移处,对象可能会在CPU缓存中使用不同的行,这有助于确保来自同一slab缓存的对象不太可能相互冲洗。
我认为这可以回答你的疑问。
答案 1 :(得分:0)
我在另一个问题中回答了相同的问题。您可以参考它。