从指南了解 linux kernel 3rd edition,第 8.2.10 章,Slab coloring-
从第 2 章我们知道,同一个硬件缓存行映射了许多不同的 RAM 块。在本章中,我们还看到相同大小的对象最终存储在缓存中的相同偏移量处。在不同的slab中具有相同偏移量的对象将以相对较高的概率最终映射到同一缓存行中。因此,高速缓存硬件可能会浪费内存周期,将两个对象从同一高速缓存行来回传输到不同的 RAM 位置,而其他高速缓存行未得到充分利用。板分配器尝试通过称为板着色的策略来减少这种令人不快的缓存行为:将称为颜色的不同任意值分配给板。
(1)我无法理解平板着色试图解决的问题。当正常进程访问数据时,如果它不在缓存中并且遇到缓存未命中,则将数据与来自进程尝试访问的数据的周围地址的数据一起提取到缓存中以提高性能。如何会出现相同的特定缓存行不断被交换的情况?一个进程在两个不同内存区域的内存区域内不断访问相同偏移量的两个不同数据地址的概率非常低。即使确实发生了,缓存策略通常也会根据某些议程(例如 LRU、Random 等)选择要交换的行。不存在这样的策略可以根据被访问地址的最低有效位中的匹配来选择驱逐行.
(2)我无法理解平板着色(从平板的末尾到开头占用空闲字节并导致第一个对象具有不同偏移量的不同平板)如何解决缓存交换问题?
[已解决]经过小型调查,我相信我找到了问题的答案。答案已发布。