下面有關於Transparent HugePages查看和關閉的方式
1.什么是Transparent HugePages?
Transparent HugePages是RHEL6的新特性。
為了提升性能,Kernel會將程序緩存在內存中,每頁內存以2M為單位。
想要有效的使用THP,kernel要在內存中找到一系列連續的物理內存來滿足需求,也可能會對齊。
為了達到這個效果,系統新加了一個khugepaged進程,這個進程會偶爾嘗試把正在使用的較小頁面換到hugepage中。這樣就能使hugepage使用達到最大化。
2.如何關閉THP
盡管THP的本意是為提升性能,但某些數據庫廠商還是建議直接關閉THP(比如說Oracle、MongoDB等),否則可能導致性能下降,內存鎖,甚至系統重啟等問題。
比較流行的關閉方法有兩種
第一種:在/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
第二種:
1 .編輯 /etc/default/grub,在GRUB_CMDLINE_LINUX加入選項 transparent_hugepage=never
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
2.重新生成grub配置文件
On BIOS-based machines, issue the following command as root:
# grub2-mkconfig -o /boot/grub2/grub.cfg
On UEFI-based machines, issue the following command as root:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
step3 重啟你的系統
驗證結果
重啟前
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
#
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
#
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
#
重啟后
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
#