1. 程式人生 > >HugePage 大頁

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

提高記憶體的整體效能