HugePage在oracle中的應用

淡定的DBA發表於2014-10-06
注意:HugePages和oracle AMM(自動記憶體管理)是互斥的,所有使用HugePages必須設定記憶體引數MEMORY_TARGET / MEMORY_MAX_TARGET 為0
配置HugePages的具體步驟
1、修改核心引數memlock,單位是KB,如果記憶體是512G,memlock的大小要稍微小於實體記憶體。計劃lock 400GB的記憶體大小。引數設定為大於SGA+100MB,單位KB
#vi /etc/security/limits.conf
oracle soft memlock 419430400 100GB*1024*1024
oracle hard memlock 419430400 100GB*1024*1024
儲存退出,引數就生效了
2、使用oracle帳號驗證大小
[ora11g@ ~]#su - oracle
[ora11g@ ~]$ ulimit -a|grep lock
core file size (blocks, -c) 0
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) 419430400
file locks (-x) unlimited
3、如果使用AMM記憶體管理,要取消改設定。MEMORY_TARGET和 MEMORY_MAX_TARGET引數設定為0
SQL> alter system reset memory_targets cope=spfile ;
SQL> alter system reset memory_max_target scope=spfile;
SQL> alter system set sga_target = 288G scope=spfile;
SQL> alter system set pga_aggregate_target = 96G scope = spfile;

4、計算需要使用的hugepag大小(常用方法)
驗證hugepage的大小
[root@ora11g ~]# grep Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB
簡單的計算原理是total SGA_MAX_SIZE(多個instance的總和)/hugepagesize + N,N為少量記憶體盈餘,一般多出100就足夠了。如果主機記憶體512GB,計劃288GB用於SGA共享記憶體,
則大記憶體頁需288×1024/2=147456(288×1024×1024/2048=147456)
5、修改vm.nr_hugepages引數,值等於第四步計算的值
引數vm.nr_hugepages指明瞭記憶體頁數,如果設定大記憶體頁為512G,則vm.nr_hugepages的大小為288G×1024×1024/2048K=147456
vi /etc/sysctl.conf
vm.nr_hugepages = 147456
sysctl -p 命令使配置生效。
6、關閉資料庫,建議完整重啟主機和資料庫
7、驗證
方法一:
#grep HugePages /proc/meminfo
HugePages_Free小於HugePages_Total的值則表示設定成功。如果HugePages_Rsvd應該保持少量保留記憶體。
注意,HugePages如果配置不恰當會引起系統效能下降等風險,需要慎重。
小技巧:執行
#free -g,檢視used選項的大小是不是288GB,就可以了
參考資料MOS文件
HugePages on Linux: What It Is... and WhatIt Is Not... [ID 361323.1]
HugePages on Oracle Linux 64-bit [ID361468.1]

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

相關文章