轉摘_如何使linux擴充套件使用 大記憶體

wisdomone1發表於2010-03-18
HugePages在linux kernel 2.6被完整引進,其目的是為了提供更大的記憶體頁面以便於更好的支援大記憶體。

       在linux中,預設的記憶體頁面是4096位元組,而現行物理裝置中,記憶體動輒幾十G,當系統執行記憶體較大的應用程式(比如資料庫)時,過小的記憶體頁面會產 生大量的TLB miss和缺頁中斷,將大大降低程式效能。Hugepages提供了2M到256M的大記憶體頁面(大小取決於核心版本和物理架構)來代替預設的頁面大小.

       使用Hugepages可以得到更好的效能,因為Hugepages不可交換,可以避免記憶體的換入換出,對一個Oracle database,可以將使用的SGA作為Hugepages釘住,會整體上提升db的效能。Oracle推薦在64bit Linux上對大記憶體資料庫使用Hugepages.

      
       以RHEL4 64bit為例,配置Hugepages過程如下:

1 更改os引數,配置Hugepages大小

      Hugepages需設定為比SGA略大一點,過大的設定會造成記憶體浪費,過小則會造成無法使用。

(1)修改/etc/sysctl.conf引數,增加vm.nr_hugepages=”/< Hugepagesize>”,並使之生效

      注意vm.nr_hugepages的單位,其值為需要設定成Hugepages的總記憶體大小/Hugepages的頁面大小.

      HugePages的頁面大小可以這樣獲得:

[root@jss01 ~]# grep Hugepagesize/proc/meminfo

Hugepagesize: 2048 kB

(2) 修改/etc/security/limits.conf,增加locked memory的最大限制,設定成大於等於sga大小。

* soft memlock

* hard memlock

2.重新啟動db,檢查是否生效

[root@jss01 ~]# grep Huge /proc/meminfo

HugePages_Total: 4000

HugePages_Free: 0

Hugepagesize: 2048 kB

      HugePages_Free表示剩餘的大記憶體頁面數,應該是接近為0的數字。

     在32bit OS中,使用Hugepages是為了配合大記憶體擴充套件,由於32bit OS的定址空間限制,使用的SGA有限。儘管可以透過降低Oracle軟體的mapped_base(掛載地址)來實現sga的擴充套件,但無法突破4G制 約。而透過VLM (Very Large Memory)技術,hugemem核心的OS可以將SGA最大記憶體擴充套件到62Gb(smp核心最大支援14Gb SGA).在kernel 2.6之後,實現VLM可以藉助hugepages+in-memory filesystem (ramfs)。

     需注意的是,使用VLM,將不能使用SGA自動動態調整功能。

      以RHEL4 32bit為例,具體步驟如下:

1.建立ramfs

[root@jss01 ~]umount /dev/shm

[root@jss01 ~]mount -t ramfs ramfs /dev/shm

[root@jss01 ~]chown oracle:oinstall /dev/shm

2.配置os引數和Hugepages大小(步驟略,同上)

3.配置db parameter

      32bit擴充套件大記憶體需要犧牲掉一些特性,引數檔案裡面,需要做如下改動:

(1) 移除DB_CACHE_SIZE/DB_xK_CACHE_SIZE等引數,用以老引數DB_BLOCK_BUFFERS代替。

(2) 設定 USE_INDIRECT_DATA_BUFFERS=TRUE

(3) 移除sga_target(11g memory_target/memory_max_target)等引數

4.重啟instance/驗證

       對於不存在Hugepages功能的更早的一些核心版本(比如RHAS 2,可以透過bigpages+in-memory filesystem(shmfs)來實現大記憶體擴充套件.

      注意,與在32bit下VLM使用Hugepages不同的是,在64bit Linux下使用Hugepages並不需要修改資料庫引數。當然,在物理裝置飛速發展的今天,還是儘快升級到你手頭的32bit OS到64bit OS上來吧,何必在去為一些記憶體擴充套件苦苦折騰.

      具體可參考Metalink Note 261889.1 317141.1 361468.1 361323.1等

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

相關文章