星期一, 2月 28, 2022

Huge Page與Transparent Huge Page

簡單的說,都跟記憶體分頁管理有關係。要用 Huge Page ,程式需要做調整,為了簡化使用方式,Red Hat 在 RHEL6 引入 Transparent Huge Page ,預設啟用,主要是要讓程式可以不需要更動,就可以使用 Huge Page。

詳情可以參考:

一般來說,若主機主要是執行資料庫,例如 Oracle, Redis, MongoDB, PostgreSQL,就不要使用 Transparent Huge Page。

在 RHEL 6 以後 Transparent Huge Page 預設是啟用,可以用以下指令檢查

cat /sys/kernel/mm/transparent_hugepage/enabled

輸出是 always ,就表示有啟用。若為 never ,就沒有啟用。madvise 是什麼意思呢?

當有啟用 Transparent Huge Page 時,Huge Page 就被禁用,可以用以下指令檢查,若為 0,表示禁用。

cat /proc/sys/vm/nr_hugepages

要禁用 Transparent Huge Page,用以下指令就可以

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

在 RHEL8 裡,有 tuned,當使用上面設定無法生效時,有可能就是這個 tuned 在搞鬼。這時可以建立一個新的 tuned profile: /etc/tuned/nothp_profile/tuned.conf

內容是

[main]
include= throughput-performance

[vm]
transparent_hugepages=never

執行以下指令就可以生效。

chmod +x /etc/tuned/nothp_profile/tuned.conf
tuned-adm profile nothp_profile

若要永久禁用,可以在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 加入 transparent_hugepage=never

執行 grub2-mkconfig -o 之後,重開機即可。

沒有留言: