禁用透明HugePages


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)


上一篇:IDEA 程序出现class xxx is never used 警告如何消除


下一篇:if you don't go after what you want, you'll never have it