1.检查是否已启用Transparent HugePages
红帽企业Linux内核:
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
其他内核:
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never <<---- [always]标志 THP is enabled
如果从内核中删除Transparent HugePages,则既不存在/sys/kernel/mm/transparent_hugepage
也不/sys/kernel/mm/redhat_transparent_hugepage files存在。
2.禁用透明HugePages:
OL 7:
1.编辑tuned.conf
[root@prodb ~]# uname -r
4.1.12-112.16.4.el7uek.x86_64
[root@prodb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@prodb ~]# cd /usr/lib/tuned/throughput-performance/
[root@prodb ~]# cp tuned.conf tuned.conf.bak
[vm]
transparent_hugepages=always
to
[vm]
transparent_hugepages=never
2.重启
# shutdown -r now
3.校验
[root@prodb ~]# uname -r
4.1.12-112.16.4.el7uek.x86_64
[root@prodb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never] <<--- THP Disabled
# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-4.1.12-112.16.4.el7uek.x86_64 .... transparent_hugepage=never
如果未生效,按如下方法设置:
1.检查profile
# tuned-adm active
Current active profile: virtual-guest <<--- Virtual-guest is the active profile
2.修改tuned.conf
#cp /usr/lib/tuned/virtual-guest/tuned.conf /usr/lib/tuned/virtual-guest/tuned.conf.bkp_original
增加以下内容:
[main]
include=throughput-performance
[vm]
transparent_hugepages=never
3.重启
# shutdown -r now
4.校验
[root@prodb ~]# uname -r
[root@prodb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
# cat /proc/cmdline
RHEL 7:
1.编辑grub.conf
在GRUB_CMDLINE_LINUX末尾添加transparent_hugepage=never
#vim /etc/default/grub
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap ... transparent_hugepage=never"
2.Rebuild grub
On BIOS-based machines: ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
On UEFI-based machines: ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
3.reboot
# shutdown -r now
4.校验
# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-4.1.12-112.16.4.el7uek.x86_64 .... transparent_hugepage=never
如果未生效,按如下方法设置:
1.检查profile
# tuned-adm active
2.自定义profile
# mkdir /etc/tuned/myprofile-nothp
# cat /etc/tuned/myprofile-nothp/tuned.conf
[main]
include= throughput-performance
[vm]
transparent_hugepages=never
3.激活配置文件
# chmod +x /etc/tuned/myprofile-nothp/tuned.conf
# tuned-adm profile myprofile-nothp
4.重启校验
# shutdown -r now
# cat /sys/kernel/mm/transparent_hugepage/enabled
5.关闭服务
# systemctl stop tuned
# systemctl disable tuned
# systemctl stop ktune
# systemctl disable ktune
或者
# tuned-adm off
THP status in other UEK kernel versions
UEK3 disabled by default
[root@ol6 ~]# grep -i CONFIG_TRANSPARENT_HUGEPAGE /boot/config-3.8.13-118.6.2.el6uek.x86_64
# CONFIG_TRANSPARENT_HUGEPAGE is not set
UEK4 enabled by default
[root@ol7 ~]# grep -i CONFIG_TRANSPARENT_HUGEPAGE /boot/config-4.1.12-37.2.2.el7uek.x86_64
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
RHEL 6或更低版本
启用状态为[always]
# cat /sys/kernel/mm/[hedhat_]transparent_hugepage/enabled
[always] never
或者查询以下内容
# grep AnonHugePages /proc/meminfo
AnonHugepages: xxxx kB
要求XXXX>0
禁用状态为[never]
# cat /sys/kernel/mm/[hedhat_]transparent_hugepage/enabled
always [never]
禁用huge
1.编辑grub.conf
#vi /etc/grub.conf
kernel /vmlinuz-2.6.32-300.25.1.el6uek.x86_64 ro root=LABEL=/ transparent_hugepage=never
或者
#vi /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
2.重启生效
引用:
ALERT: Disable Transparent HugePages on SLES11, RHEL6, RHEL7, OL6, OL7, and UEK2 and above (文档 ID 1557478.1)
NOTE:2066217.1 - Oracle Linux 7 - How to disable Transparent HugePages for RHCK kernel?
(How to disable transparent hugepages (THP) on Red Hat Enterprise Linux 7)