Transparent HugePages(透明大頁)


Transparent HugePages(透明大頁)

1. 介紹

從RedHat6, RedHat7, OL6, OL7 SLES11 and UEK2 kernels開始,透明大頁默認是被開啟的以便去改善操作系統的內存管理。透明大頁與之前版本的傳統意義上的HugePages是類似的,最主要的區別在於透明大頁是可以在操作系統運行過程中動態設置的然而傳統的hugepages是需要重啟操作系統才能生效。

RAC環境下透明大頁可能會造成不可預知的節點重啟和各種性能問題,另外在單實例的環境下透明大頁也會造成不可預知的性能問題。所以oracle強烈建議在所有運行oracle數據庫的服務器上關閉透明大頁。

相關文檔:ALERT: Disable Transparent HugePages on SLES11, RHEL6, RHEL7, OL6, OL7 and UEK2 Kernels (文檔 ID 1557478.1)

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

Oracle Linux: Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration (文檔 ID 401749.1)

2. 查看透明大頁設置

用如下方式檢查透明大頁是否啟用

1.默認是啟用狀態的,設置是[always]:

# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] never

Note 1:紅帽內核,查看的路徑與上面不同:

# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

[always] never

Note 2:對於UEK2內核,像2.6.39-400.116.0版本的透明大頁已經重內核中移除了,如果該參數沒有被編譯進內存那么/sys/kernel/mm/transparent_hugepage是不存在的。

2.未啟用的設置是[never]:

# cat /sys/kernel/mm/transparent_hugepage/enabled

always [never]

如果"enabled"沒有設置成"[never]",那么說明透明大頁是啟用狀態的。

也可以用下面方式進行查看:

grep AnonHugePages /proc/meminfo

如果輸出包含一列類似"AnonHugepages: xxxx kB"值大於0kB,那么說明內核正在使用透明大頁因為內核正在使用的透明大頁僅僅是像堆棧和堆的匿名內存塊,AnonHugepages在/proc/meminfo中顯示的值是當前內核是用的透明大頁值。

3. 禁用透明大頁的兩種方式

1.在/etc/grub.conf(/boot/grub/grub.conf)中添加如下行信息然后重啟服務(這是首選方法):

transparent_hugepage=never

一旦修改了我們就可以看到如下類似內容:

title Oracle Linux Server (2.6.32-300.25.1.el6uek.x86_64)

        root (hd0,0)

kernel /vmlinuz-2.6.32-300.25.1.el6uek.x86_64 ro root=LABEL=/ transparent_hugepage=never

        initrd /initramfs-2.6.32-300.25.1.el6uek.x86_64.img

2.在/etc/rc.local中添加如下內容然后重啟服務(在紅帽7版本中雖然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

在紅帽內核文件路徑為/sys/kernel/mm/redhat_transparent_hugepage/ accordingly。

注:

在SLES11 SP3操作系統環境下transparent_hugepage=never參數必須設置在YAST-bootloader- Edit settings - in line: optional kernel parameter [before showopts].


免責聲明!

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



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