最近看了关于slab系统的缓存着色,没看懂。为什么缓存着色可以为不同slab中的对象添加各种偏移量可以提高性能?
我最初的猜测是:带有缓存偏移量的slab分配器,尝试将slab的第一个对象放在不同缓存颜色的内存中。如果客户端从这些slab中分配N个对象,它将获得N个具有N种缓存颜色的对象。
我的猜测是否正确,或者有人可以给我更多提示吗?多谢,
我建议阅读“ Understanding Linux virtual memory ”一书——slab 分配器一章。正如它所引用的,
平板分配器的最终任务是优化硬件缓存使用。如果在将对象打包到平板后还有剩余空间,则剩余空间用于为平板着色。板着色是一种尝试让不同板中的对象使用缓存中的不同行的方案。通过将对象放置在slab内不同的起始偏移处,对象可能会在CPU缓存中使用不同的行,这有助于确保来自同一slab缓存的对象不太可能相互刷新。
我想这回答了你的疑问。
我在另一个问题中回答了同样的问题。你可以参考一下。