hugepage設置


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 

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)重啟

參考:

  1. Configuring HugePages for Oracle on Linux (x86-64)

  2. HugePages on Oracle Linux 64-bit (文檔 ID 361468.1)

  3. Hugepages詳解(詳細介紹了Hugepages的原理)






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM