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
提高記憶體的整體效能