您好,登錄后才能下訂單哦!
Linux下如何配值HugePages。,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
HugePages是通過使用大頁內存來取代傳統的4kb內存頁面,使得管理虛擬地址數變少,加快了從虛擬地址到物理地址的映射以及通過摒棄內存頁面的換入換出以提高內存的整體性能。尤其是對于8GB以上的內存以及較大的Oracle SGA size,建議配值并使用HugePage特性。
基于x86_64 Linux下來描述如何配值 HugePages。
1、Hugepage的引入
操作系統對于數據的存取直接從物理內存要比從磁盤讀寫數據要快的多,但是物理內存是有限的,這樣就引出了物理內存與虛擬內存的概念。虛擬內存就是為了滿足物理內存的不足而提出的策略,它是利用磁盤空間虛擬出的一塊邏輯內存,這部分磁盤空間Windows下稱之為虛擬內存,Linux下被稱為交換空間(Swap Space)。
對于這個大內存的管理(物理內存+虛擬內存),大多數操作系統采用了分段或分頁的方式進行管理。分段是粗粒度的管理方式,而分頁則是細粒度管理方式,分頁方式可以避免內存空間的浪費。相應地,也就存在內存的物理地址與虛擬地址的概念。通過前面這兩種方式,CPU必須把虛擬地址轉換程物理內存地址才能真正訪問內存。為了提高這個轉換效率,CPU會緩存最近的虛擬內存地址和物理內存地址的映射關系,并保存在一個由CPU維護的映射表中。為了盡量提高內存的訪問速度,需要在映射表中保存盡量多的映射關系。
linux的內存管理采取的是分頁存取機制,為了保證物理內存能得到充分的利用,內核會按照LRU算法在適當的時候將物理內存中不經常使用的內存頁自動交換到虛擬內存中,而將經常使用的信息保留到物理內存。通常情況下,Linux默認情況下每頁是4K,這就意味著如果物理內存很大,則映射表的條目將會非常多,會影響CPU的檢索效率。因為內存大小是固定的,為了減少映射表的條目,可采取的辦法只有增加頁的尺寸。因此Hugepage便因此而來。也就是打破傳統的小頁面的內存管理方式,使用大頁面2m,4m,16m等等。如此一來映射條目則明顯減少。如果系統有大量的物理內存(大于8G),則物理32位的操作系統還是64位的,都應該使用Hugepage。
二、hugepages相關概念
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內核被提出。
三、Regular Pages 與 HugePages
a、Regular Pages
在下圖中有兩個不同的進程,兩個進程對于內存的訪問是首先訪問本地的page table,而本地的page table又參照了system-wide table的page(也就是前面描述的TLB),最終system-wide table中的entry指向了實際的物理地址。圖中物理地址page size大小4kb。也可以看到進程1和進程2在system-wide table中都指向了page2,也就是同一個物理地址。Oracle sga中共享內存的使用會出現上述情形。
b、Huge Pages
在下圖中,本地的page table 與system page table中都包含了huge page屬性。因此page table中的任意一個page可能使用了常規的page,
也有可能使用了huge page。同樣進程1和進程2都共享了其中的Hpage2。圖中的物理內存常規的page size是4kb,huge page size 是4mb。
四、 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的大小
(50*1024*1024)kb/4kb*64bytes/1024/1024=800mb。
d、Eliminated page table lookup overhead
消除page table查找負載
e、Faster overall memory performance
提高內存的整體性能
關于 Linux下如何配值HugePages。問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。