Linux下如何配值HugePages。,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
站在用戶的角度思考問題,與客戶深入溝通,找到常山網(wǎng)站設(shè)計(jì)與常山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋常山地區(qū)。
HugePages是通過使用大頁內(nèi)存來取代傳統(tǒng)的4kb內(nèi)存頁面,使得管理虛擬地址數(shù)變少,加快了從虛擬地址到物理地址的映射以及通過摒棄內(nèi)存頁面的換入換出以提高內(nèi)存的整體性能。尤其是對于8GB以上的內(nèi)存以及較大的Oracle SGA size,建議配值并使用HugePage特性。
基于x86_64 Linux下來描述如何配值 HugePages。
1、Hugepage的引入
操作系統(tǒng)對于數(shù)據(jù)的存取直接從物理內(nèi)存要比從磁盤讀寫數(shù)據(jù)要快的多,但是物理內(nèi)存是有限的,這樣就引出了物理內(nèi)存與虛擬內(nèi)存的概念。虛擬內(nèi)存就是為了滿足物理內(nèi)存的不足而提出的策略,它是利用磁盤空間虛擬出的一塊邏輯內(nèi)存,這部分磁盤空間Windows下稱之為虛擬內(nèi)存,Linux下被稱為交換空間(Swap Space)。
對于這個(gè)大內(nèi)存的管理(物理內(nèi)存+虛擬內(nèi)存),大多數(shù)操作系統(tǒng)采用了分段或分頁的方式進(jìn)行管理。分段是粗粒度的管理方式,而分頁則是細(xì)粒度管理方式,分頁方式可以避免內(nèi)存空間的浪費(fèi)。相應(yīng)地,也就存在內(nèi)存的物理地址與虛擬地址的概念。通過前面這兩種方式,CPU必須把虛擬地址轉(zhuǎn)換程物理內(nèi)存地址才能真正訪問內(nèi)存。為了提高這個(gè)轉(zhuǎn)換效率,CPU會緩存最近的虛擬內(nèi)存地址和物理內(nèi)存地址的映射關(guān)系,并保存在一個(gè)由CPU維護(hù)的映射表中。為了盡量提高內(nèi)存的訪問速度,需要在映射表中保存盡量多的映射關(guān)系。
linux的內(nèi)存管理采取的是分頁存取機(jī)制,為了保證物理內(nèi)存能得到充分的利用,內(nèi)核會按照LRU算法在適當(dāng)?shù)臅r(shí)候?qū)⑽锢韮?nèi)存中不經(jīng)常使用的內(nèi)存頁自動交換到虛擬內(nèi)存中,而將經(jīng)常使用的信息保留到物理內(nèi)存。通常情況下,Linux默認(rèn)情況下每頁是4K,這就意味著如果物理內(nèi)存很大,則映射表的條目將會非常多,會影響CPU的檢索效率。因?yàn)閮?nèi)存大小是固定的,為了減少映射表的條目,可采取的辦法只有增加頁的尺寸。因此Hugepage便因此而來。也就是打破傳統(tǒng)的小頁面的內(nèi)存管理方式,使用大頁面2m,4m,16m等等。如此一來映射條目則明顯減少。如果系統(tǒng)有大量的物理內(nèi)存(大于8G),則物理32位的操作系統(tǒng)還是64位的,都應(yīng)該使用Hugepage。
二、hugepages相關(guān)概念
Page Table: page table也就是一種用于內(nèi)存管理的實(shí)現(xiàn)方式,用于物理地址到虛擬之間的映射。因此對于內(nèi)存的訪問,先是訪問Page Table,然后根據(jù)Page Table 中的映射關(guān)系,隱式的轉(zhuǎn)移到物理地址來存取數(shù)據(jù)。
TLB: Translation Lookaside Buffer (TLB) ,CPU中的一塊固定大小的cache,包含了部分page table的映射關(guān)系,用于快速實(shí)現(xiàn)虛擬地址到物理地址的轉(zhuǎn)換。
hugetlb: hugetlb 是TLB中指向HugePage的一個(gè)entry(通常大于4k或預(yù)定義頁面大小)。 HugePage 通過hugetlb entries來實(shí)現(xiàn),也可以理解為HugePage 是hugetlb page entry的一個(gè)句柄。
hugetlbfs: 一個(gè)類似于tmpfs的新的in-memory filesystem,在2.6內(nèi)核被提出。
三、Regular Pages 與 HugePages
a、Regular Pages
在下圖中有兩個(gè)不同的進(jìn)程,兩個(gè)進(jìn)程對于內(nèi)存的訪問是首先訪問本地的page table,而本地的page table又參照了system-wide table的page(也就是前面描述的TLB),最終system-wide table中的entry指向了實(shí)際的物理地址。圖中物理地址page size大小4kb。也可以看到進(jìn)程1和進(jìn)程2在system-wide table中都指向了page2,也就是同一個(gè)物理地址。Oracle sga中共享內(nèi)存的使用會出現(xiàn)上述情形。
b、Huge Pages
在下圖中,本地的page table 與system page table中都包含了huge page屬性。因此page table中的任意一個(gè)page可能使用了常規(guī)的page,
也有可能使用了huge page。同樣進(jìn)程1和進(jìn)程2都共享了其中的Hpage2。圖中的物理內(nèi)存常規(guī)的page size是4kb,huge page size 是4mb。
四、 hugepage 優(yōu)點(diǎn)
對于較大的系統(tǒng)內(nèi)存以及sga,使用hugepage可以極大程度的提高Oracle數(shù)據(jù)庫性能。
a、Not swappable
無需交換。也就是不存在頁面由于內(nèi)存空間不足而存在換入換出的問題
b、Relief of TLB pressure
減輕TLB的壓力,也就是降低了cpu cache可緩存的地址映射壓力。由于使用了huge page,相同的內(nèi)存大小情況下,管理的虛擬地址數(shù)量變少。
TLB entry可以包含更多的地址空間,cpu的尋址能力相應(yīng)的得到了增強(qiáng)。
c、Decreased page table overhead
降低page table負(fù)載,對于普通的page,每個(gè)entry需要64bytes進(jìn)行管理,對于50gb的內(nèi)存,管理這些entry,需要800mb的大小
(50*1024*1024)kb/4kb*64bytes/1024/1024=800mb。
d、Eliminated page table lookup overhead
消除page table查找負(fù)載
e、Faster overall memory performance
提高內(nèi)存的整體性能
關(guān)于 Linux下如何配值HugePages。問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
分享文章:Linux下如何配值HugePages。
轉(zhuǎn)載注明:http://www.chinadenli.net/article12/jcogdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)頁設(shè)計(jì)公司、App開發(fā)、面包屑導(dǎo)航、網(wǎng)站排名、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)