HugePage 大页

HugePage

普通的内存页面大小是 4 KB

1. Hugepage的引入

而系统的内存管理一般是通过虚拟地址到物理地址的映射。虚拟地址一般是在磁盘虚拟出的一块逻辑内存。这部分磁盘空间Windows下称之为虚拟内存,Linux下被称为交换空间(Swap Space)。

CPU必须将虚拟地址转换成物理地址,才能够真正的访问内存。为了提高转换的效率,CPU会在cache中缓存最近的虚拟地址到物理地址的映射关系,保存在cpu维护的映射表中。为了提高内存的访问速度,需要在映射表中保存尽可能多的映射关系。

Linux下默认的页大小是4KB,对于内存大于8G以上的场合,则映射表的条目将非常多,这样会影响cpu的检索效率。

对于内存大小固定的场合,为了减少映射条目,可以增大页面的大小。因此,HugePage是一个不错的方案。

2. HugePage相关概念

  • Page Table
    page table也就是一种用于内存管理的实现方式,用于物理地址到虚拟之间的映射。因此对于内存的访问,先是访问Page Table,然后根据Page Table 中的映射关系,隐式的转移到物理地址来存取数据。

  • TLB
    Translation Lookaside Buffer (TLB) ,CPU中的一块固定大小的cache,包含了部分page table的映射关系,用于快速实现虚拟地址到物理地址的转换。

  • hugetlb
    hugetlb 是TLB中指向HugePage的一个entry(通常大于4k或预定义页面大小)。 HugePage 通过hugetlb entries来实现,也可以理解为HugePage 是hugetlb page entry的一个句柄。

  • hugetlbfs
    一个类似于tmpfs的新的in-memory filesystem,在2.6内核被提出。

3. HugePage的优点

对于较大的系统内存以及sga,使用hugepage可以极大程度的提高Oracle数据库性能。

a、Not swappable

无需交换。也就是不存在页面由于内存空间不足而存在换入换出的问题

b、Relief of TLB pressure

减轻TLB的压力,也就是降低了cpu cache可缓存的地址映射压力。由于使用了huge page,相同的内存大小情况下,管理的虚拟地址数量变少。

TLB entry可以包含更多的地址空间,cpu的寻址能力相应的得到了增强。

c、Decreased page table overhead

降低page table负载,对于普通的page,每个entry需要64bytes进行管理,对于50gb的内存,管理这些entry,需要800mb的大小

(5010241024)kb/4kb*64bytes/1024/1024=800mb。

d、Eliminated page table lookup overhead

消除page table查找负载

e、Faster overall memory performance

提高内存的整体性能

猜你喜欢

转载自www.cnblogs.com/ckqq/p/9902504.html