tidb 服务器透明大页关闭

请教下各位老师,在部署安装TIDB的时候,已经按照官方文档的步骤,关闭了透明大页内存
grubby --default-kernel
grubby --args=“transparent_hugepage=never” --update-kernel /boot/vmlinuz-3.10.0-957.el7.x86_64
grubby --info /boot/vmlinuz-3.10.0-957.el7.x86_64
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

但是把服务器重启后,发现 cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

而且tiup 执行check的时候也能检查出透明大页内存,请问这是为什么?
但是服务器重启后 执行 cat /proc/meminfo |grep -i ‘hugepage’
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
发现之前使用的透明大页内存的也没有再使用了,应该是透明大页内存开机自关闭了,但是为什么cat /sys/kernel/mm/transparent_hugepage/defrag
是[always] madvise never

所以关闭透明大页的正确方法方法?

你好。
这是因为 echo never > /sys/kernel/mm/transparent_hugepage/xxxx 这种修改方式是非持久化的,你可以查下 Linux 文件系统 /sys 目录的相关知识点。所以重启服务器就会失效。 如果想持久化,可以将命令写到“开机启动脚本”中,如 /etc/rc.local
我之前给官方提过这个问题,不知道有没被采纳,见 tiup cluster check --apply 更改持久化需求

用修改grub方式会比较好,比如redhat 7上
修改/etc/default/grubGRUB_CMDLINE_LINUX增加transparent_hugepage=never 然后执行grub2-mkconfig -o /boot/grub2/grub.cfg,重启系统

1 个赞

可以学习Tiup Apply 的做法自动修正。

所以你只要执行下列命令就行了,在开机启动的时候设置。
echo “echo never > /sys/kernel/mm/transparent_hugepage/defrag” >> /etc/rc.local
echo “echo never > /sys/kernel/mm/transparent_hugepage/enabled” >> /etc/rc.local

一样的效果,按照你推荐的方法试了下,重启服务器后,cat /sys/kernel/mm/transparent_hugepage/defrag 还是
[always] madvise never

你的linux什么版本

redhat 7.7 和7.4 都试了
一样的效果

https://blog.51cto.com/u_14036245/4317982