#这里只针对CentOs7系统,内核3.10,grub2
#修改/etc/default/grub,在GRUB_CMDLINE_LINUX中添加transparent_hugepage=never,如下
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=system/root rd.lvm.lv=system/swap rhgb quiet transparent_hugepage=never"
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
#但是这里有个问题,重启机器后,defrag一直是always,而不是never,但是也不影响使用,
#我还没有弄明白defrag的作用,从字面意思是整理内存碎片的作用,按理说应该不影响使用,但是有问题,重启机器后,又变成never了。
#下面是解决disable THP的推荐方法(机器重启后THP仍旧是关闭的):
#disable-transparent-hugepages脚本内容,放到/etc/init.d/下,
#并授权可执行权限chmod 755 /etc/init.d/disable-transparent-hugepages,并加入开机自启动chkconfig --add disable-transparent-hugepages
#!/bin/bash
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' > ${thp_path}/enabled
echo 'never' > ${thp_path}/defrag
re='^[0-1]+$'
if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]]
then
#RHEL 7
echo 0 > ${thp_path}/khugepaged/defrag
else
#RHEL 6
echo 'no' > ${thp_path}/khugepaged/defrag
fi
unset re
unset thp_path
;;
esac
mkdir /etc/tuned/no-thp -p
echo -e "[main]\ninclude=virtual-guest\n[vm]\ntransparent_hugepages=never" >/etc/tuned/no-thp/tuned.conf
tuned-adm profile no-thp
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
#都是always madvise [never]才可以。这个是不用重启机器。
转载于:https://blog.51cto.com/laodou/2326610