Oracle 標準大頁和透明大頁

dapolan發表於2022-03-08

說明:

標準大頁(HugePages)

標準大頁(HugePages)是從 Linux Kernel 2.6 後被引入的。

目的是用更大的記憶體頁面(memory page size)以適應越來越大的系統記憶體,讓作業系統可以支援現代硬體架構的大頁面容量功能。

透明大頁(Transparent HugePages)

透明大頁(Transparent Huge Pages)縮寫為THP,透明超大頁面(THP)在RHEL 6中預設情況下對所有應用程式都是啟用的。

核心試圖儘可能分配巨大的頁面,主核心地址空間本身被對映為巨大的頁面,減少了核心程式碼的TLB壓力。

核心將始終嘗試使用大頁來滿足記憶體分配。

如果沒有可用的巨大頁面(例如由於物理連續記憶體不可用),核心將回退到正常的4KB頁面。

THP也是可交換的(不像hugetlbfs)。

這是透過將大頁面分成更小的4KB頁面來實現的,然後這些頁面被正常地換出。

透明大頁存在的問題:

Oracle Linux team在測試的過程中發現,如果linux開啟透明大頁THP,則I/O讀寫效能降低30%;

如果關閉透明大頁THP,I/O讀寫效能則恢復正常。

另,建議在Oracle Database中不要使用THP。

ORACLE官方不建議在使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 時開啟透明大頁(THP),因為透明大頁存在一些問題:

1. 在RAC環境下,透明大頁(THP)會導致異常節點重啟和效能問題;

2. 在單機環境中,透明大頁(THP)也會導致一些異常的效能問題;

標準大頁和透明大頁區別:

兩者區別在於大頁的分配機制,標準大頁管理是預分配 方式,而透明大頁管理則是動態分配 方式。

目前透明大頁與傳統大頁混合使用會出現一些問題,導致效能問題和系統重啟。

如何開啟標準大頁(HugePages)

適用於:

1.Kernel Version 2.6及更高。

2.Oracle AMM記憶體管理和HugePages不相容,確保在AMM關閉的情況下啟動HugePages。

啟用HugePages方法:

1 執行以下命令以確定核心是否支援HugePages

$ grep Huge /proc/meminfo

2 配置memlock

在/etc/security/limits.conf檔案中設定memlock值,memlock設定以KB為單位。

當啟用HugePages記憶體時,最大鎖定記憶體限制應至少設定為當前伺服器記憶體的90%。

禁用HugePages記憶體時,最大鎖定記憶體限制應設定為至少3145728 KB(3 GB)。

例如,如果安裝了64 GB RAM,則新增以下條目以增加最大鎖定記憶體地址空間:

*   soft   memlock    60397977

*   hard   memlock    60397977

也可以將memlock值設定為高於SGA要求的值。

再次以oracle使用者身份登入並執行ulimit-l命令以驗證新的memlock設定:

su - oracle

$ ulimit -l

3 啟動例項

檢查例項是啟動狀態

srvctl status instance -d dbname

如果沒啟動,手動啟動例項

srvctl start instance -d dbname -i instance_name -o open

4 使用指令碼為當前共享記憶體段計算hugepages配置的建議值:

root使用者下執行

chmod +x hugepages_settings.sh 

./hugepages_settings.sh 

指令碼來自My Oracle Support note 401749.1,指令碼詳細內容見末尾。

5 停止資料庫例項

srvctl stop instance -d dbname -i instance_name -o immediate

6 設定vm.nr_hugepages核心引數

寫入配置檔案,永久生效

vi /etc/sysctl.conf

vm.nr_hugepages=<value from above>

sysctl -p

# sysctl -w vm.nr_hugepages=<value from above> 臨時改變,重啟失效

7 啟動例項

srvctl start instance -d dbname -i instance_name -o open

8 檢查可用的hugepages

$ grep Huge /proc/meminfo

如果配置沒生效,需要重啟伺服器

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

AnonHugePages:         0 kB

HugePages_Total:     179

HugePages_Free:        9

HugePages_Rsvd:        7

HugePages_Surp:        0

Hugepagesize:       2048 kB


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

相關文章