使用 4kb 分配池有什么好处吗?
Is there any benefit to using 4kb allocation pools?
直到最近,我认为 CPU 缓存(至少,某些级别)大小为 4kb,因此将我的分配分组到 4kb slab 似乎是个好主意,以提高缓存局部性。
但是,阅读 Line size of L1 and L2 caches 我看到所有级别的 CPU 缓存行都是 64 字节,而不是 4kb。这是否意味着我的 4kb slab 没用了,我应该回去使用常规的 malloc?
谢谢!
4KB 确实具有重要意义:它是操作系统的通用页面大小,因此对于 TLB 中的条目也是如此。
Memory-mapped 文件、交换 space、内核 I/Os(写入文件或套接字)将在此页面大小上运行,即使您仅使用 64 字节的页。
出于这个原因,使用 page-sized 池仍然有些优势。
直到最近,我认为 CPU 缓存(至少,某些级别)大小为 4kb,因此将我的分配分组到 4kb slab 似乎是个好主意,以提高缓存局部性。
但是,阅读 Line size of L1 and L2 caches 我看到所有级别的 CPU 缓存行都是 64 字节,而不是 4kb。这是否意味着我的 4kb slab 没用了,我应该回去使用常规的 malloc?
谢谢!
4KB 确实具有重要意义:它是操作系统的通用页面大小,因此对于 TLB 中的条目也是如此。
Memory-mapped 文件、交换 space、内核 I/Os(写入文件或套接字)将在此页面大小上运行,即使您仅使用 64 字节的页。
出于这个原因,使用 page-sized 池仍然有些优势。