关闭Linux内存透明大页Transparent HugePages,THP
在CentOS 7中,关闭透明大页(Transparent HugePages,THP)通常是通过修改内核参数或配置文件来完成的。透明大页有时会对数据库性能(例如Oracle)产生负面影响,因此关闭它可能是必要的。以下是关闭透明大页的几种方法:
1. 临时关闭(无需重启)
使用以下命令临时关闭透明大页,但重启后会恢复默认设置。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
可以通过以下命令验证是否已关闭:
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
输出应显示类似于 [never] always madvise
,表示已成功关闭。
2. 永久关闭(重启后仍然有效)
为了永久关闭透明大页,可以通过以下步骤:
2.1 修改grub
配置文件
编辑/etc/default/grub
文件,添加transparent_hugepage=never
到GRUB命令行参数:
vi /etc/default/grub
找到以下行:GRUB_CMDLINE_LINUX="..."
修改为:
GRUB_CMDLINE_LINUX="... transparent_hugepage=never"
2.2 更新GRUB配置:
对于BIOS系统:
grub2-mkconfig -o /boot/grub2/grub.cfg
对于UEFI系统:
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
2.3 重启系统:
reboot
2.4 重启后再次检查:
cat /sys/kernel/mm/transparent_hugepage/enabled
3. 通过rc.local
永久关闭
如果不想修改GRUB,可以通过rc.local
脚本在每次启动时自动关闭透明大页:
编辑
/etc/rc.d/rc.local
文件,添加以下行:echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
确保
rc.local
脚本有可执行权限:chmod +x /etc/rc.d/rc.local
重启系统后,
rc.local
会自动执行关闭透明大页的命令。
4. 验证透明大页是否已关闭
使用以下命令检查透明大页状态:
cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/defrag
如果显示 [never] always madvise,表示已成功关闭。
grep AnonHugePages /proc/meminfo
AnonHugePages: 0 kB---------->>>返回值若是零代表关闭
如果按照这些步骤后依然无法关闭透明大页,可以检查系统是否有其他服务(如tuned
或kernel
)在干扰透明大页的设置。
评论