Transparent Huge Pages
1 查看是否启用
# 针对redhat/CentOS6
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
# 针对其他系统及CentOS7开始
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
使用命令查看时,如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、
[madvise]表示(只在MADV_HUGEPAGE标志的VMA中使用THP
通过grub.conf/rc.local配置文件来控制大页是否随系统启动.
通过调整/sys/kernel/mm/redhat_transparent_hugepage/enabled 文件实时控制是否使用透明大页。
2 不启用透明大页
2.1 grub
通过grub 来控制透明大页,是根本上不启用透明大页这一功能。
CentOS 6
/etc/grub.conf 是系统启动时参数文件,大页随系统启动或者停止 ,可以通过参数transparent_hugepage 来控制。
transparent_hugepage = never 表示透明大页功能不随系统启动
transparent_hugepage = always 表示透明大页功能随系统启动
vi /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/VolGroup--LogVol0-LogVol01
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/VolGroup--LogVol0-LogVol01 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup-LogVol0/LogVol01 rd_LVM_LV=VolGroup-LogVol0/LogVol00 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-504.el6.x86_64.img
transparent_hugepage=never
CentOS7/CentOS8
在这两个版本中,grub的位置发生了变化。变为 /etc/default/grub,我们只需要将 transparent_hugepage=never
添加到 GRUB_CMDLINE_LINUX 这个变量里即可。示例如下:
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="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
reboot
2.2 rc.local
通过rc.local 设置不启用,实际上是在开机的过程中先启用,然后再关闭。 下面是修改rc.local的脚本:
CentOS 6
cat >> /etc/rc.local <<EOF
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
# 不使用
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
# 使用
# echo always > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
EOF
CentOS7-8
cat >> /etc/rc.local <<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
# 不使用
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 使用
# echo always > /sys/kernel/mm/transparent_hugepage/enabled
fi
EOF
其实这个脚本,只是将临时关闭透明大页的方法以脚本的方式保存,使系统启动时运行脚本,达到不使用透明大页的目的。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




