1.設置memlock
編輯/etc/security/limits.conf
增加:
* Soft memlock 稍小於RAM值
* hard memlock 稍小於RAM值
Memlock,鎖定內存地址的大小,值大於sga沒關系的,所以我們可以設置這個值在我們想要的SGA size和物理內存size之間,這個值得單位是kb
驗證
ulimit -l
104857600 --- 為memlock大小
2.禁用AMM特性
SQL> show parameter target NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ archive_lag_target integer 0 db_flashback_retention_target integer 1440 fast_start_io_target integer 0 fast_start_mttr_target integer 0 memory_max_target big integer 0 memory_target big integer 0 parallel_servers_target integer 16 pga_aggregate_target big integer 200M sga_target big integer 600M SQL>
3.根據Oracle的腳本計算hugepage大小(計算時要確保Oracle已經啟動)
./hugepages_setting.sh
4.根據腳本的計算值在2個節點編輯/etc/sysctl.conf
加入
vm.nr_hugepages = 30739
5.設置USE_LARGE_PAGES
ALTER SYSTEM SET use_large_pages=only SCOPE=SPFILE; SHUTDOWN IMMEDIATE; STARTUP;
alert日志顯示
****************** Large Pages Information ***************** Total Shared Global Region in Large Pages = 602 MB (100%) Large Pages used by this instance: 301 (602 MB) Large Pages unused system wide = 5 (10 MB) (alloc incr 4096 KB) Large Pages configured system wide = 306 (612 MB) Large Page size = 2048 KB ***********************************************************
6.查看
# grep HugePages /proc/meminfo
HugePages_Total: 1496
HugePages_Free: 485
HugePages_Rsvd: 446
HugePages_Surp: 0
上面的輸出會發生變化,確保配置有效,the HugePages_Free value should be smaller than HugePages_Total and there should be some HugePages_Rsv.
另需確保環境變量DISABLE_HUGETLBFS unset,該變量會禁用Oracle使用Hugepage
7.禁用透明大頁
ORACLE建議關閉透明大頁的功能:透明大頁會導致節點不可預料的重啟,以及RAC的性能問題;透明大頁也會導致單節點數據庫環境發生不可預料的性能問題或延遲。
(1)查看是否開啟
# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never #
- [always]表示啟用
- [never]表示禁用
# grep AnonHugePages /proc/meminfo
AnonHugePages: 20142080 kB
參考:
:heart:(2)和(3)兩種方法,優先選擇(2)
(2)修改文件/etc/grub.conf,添加一行:
transparent_hugepage=never
(3)修改文件/etc/rc.local文件,添加:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
(4)重啟
參考:
HugePages on Oracle Linux 64-bit (文檔 ID 361468.1)