使用大页面如何提高性能?
我读到大页通过减少 TLB 查找和减小页表的大小来提高性能。有人能告诉我这对性能有何帮助吗?
如果我有一个使用 4 个虚拟内存页面 (4*4kb=16kb) 的应用程序,那么每个页面都直接映射到某个物理内存位置,但是如果我们使用 16kb 大小的大页面,那么它不是映射 4 个页面,而是这样只需要映射一个,从而减少页表大小,并且将其交换到磁盘的机会更少,因此 TLB 缓存更长?
答案1
塞尔吉回答了。 TLB 有固定数量的时隙。如果可以使用 TLB 中的信息将虚拟地址映射到物理地址,则可以避免昂贵的页表遍历。但 TLB 无法缓存所有页面的映射。
因此,如果您使用较大的页面,固定数量的虚拟到物理映射将覆盖更大的总体地址范围,从而提高 TLB(这是缓存的映射)的命中率。
答案2
提高性能的另一个原因是可以访问连续的内存块。假设您有一个 PCIe 设备,可以将 DMA 数据传输到内存中。通过使用大页面,它可以将 2MB(或最多 1GB)的数据 DMA 到连续的 DRAM 空间中,而通过使用默认的 4KB 页面,您可能需要跳转到 DRAM 中的许多不同的物理页面,这会导致速度变慢。