直到最近,我认为CPU缓存(至少在某些级别)的大小为4kb,因此将我的分配分组为4kb平板似乎是个好主意,以改善缓存局部性。
但是,阅读Line size of L1 and L2 caches我看到所有级别的CPU缓存行都是64字节,而不是4kb。这是否意味着我的4kb平板是无用的,我应该回到使用常规malloc?
谢谢!
答案 0 :(得分:2)
4KB确实具有重要意义:它是您操作系统的常见页面大小,因此也适用于TLB中的条目。
即使您只使用64页的页面,内存映射文件,交换空间,内核I / O(写入文件或套接字)也将对此页面大小进行操作。
出于这个原因,使用页面大小的池仍然有些优势。