Linux Hugepage ,AMM及 USE_LARGE_PAGES - 1

tolywang發表於2014-05-27

Linux 6.1 


1.  Hugepage基本概念 

    系統程式是透過虛擬地址訪問記憶體,但是CPU必須把它轉換成實體記憶體地址才能真正訪問記憶體。
為了提高這個轉換效率,CPU會快取最近的“虛擬記憶體地址和實體記憶體地址”的對映關係,並儲存在
一個由CPU維護的對映表(page table)中。

    page table(頁表)是作業系統上的虛擬記憶體系統的資料結構模型,用於儲存虛擬地址與物理地
址的對應關係。當我們訪問記憶體時,首先訪問"page table",然後Linux再透過"page table"的mapping
來訪問真實實體記憶體(RAM或SWAP).

    在32位系統下,一個程式訪問1GB的記憶體,會產生1M的頁表,如果是在64位系統,將會增大到2M。
很容易推算,如果一個SGA設定為60G,有1500個ORACLE使用者程式,64位LINUX的系統上,最大的頁表
佔用記憶體為:60*2*1500/1024=175G 。


    為了儘量提高記憶體的訪問速度,需要在對映表中儲存儘量多的對映關係。而在Redhat Linux中,
記憶體都是以頁(Page)的形式劃分的,預設情況下每頁是4K Bytes,這就意味著如果實體記憶體很大,比
如64G ,則對映表的條目將會非常多,這將會影響CPU的檢索效率(CPU需要轉化虛擬地址為實體地址)。
而且根據上面的推算,頁表會佔用比實體記憶體還多的記憶體大小。

   因記憶體大小是固定的,為了減少對映表的條目,可採取的辦法只有增加頁的尺寸。這種增大的內
存頁尺寸在Linux 2.1中,稱為Big page;在AS 3/4或後續版本中,稱為Hugepage。如果系統有大量
的實體記憶體(大於8G),則無論32位的作業系統還是64位的,都應該使用Hugepage。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1171322/,如需轉載,請註明出處,否則將追究法律責任。

相關文章