banner

rhel7/centos7下transparent_hugepage=never不生效

 

尽管THP初衷是为了提升内存的性能,不过一些数据库厂商还是建议直接关闭掉THP,例如:oracle、mariadb、mysql、mongodb等。

Transparent HugePages可能会造成内存在运行时的延迟分配。为了避免性能问题,Oracle强烈建议对所有Oracle数据库服务器禁用Transparent HugePages。为了提高性能Oracle建议使用标准HugePages。

注:
Transparent HugePages内存与标准HugePages内存的差异在于内核khugepaged线程在运行时动态分配内存。标准HugePages内存是在启动时预先分配在运行时不会发生改变。

关闭Transparent HugePages方式


查看Transparent HugePages状态,当前的状态为开启。

# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

# cat /sys/kernel/mm/transparent_hugepage/defrag

[always] madvise never

关闭Transparent HugePages方式一


编辑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
执行:chmod +x /etc/rc.d/rc.local

注:
rhel7默认情况下,rc.local是不开机执行的
#这个文件是为兼容性而添加的

#在开机过程中强烈建议创建自己的systemd服务或udev规则来运行脚本,而不是使用此文件

#和以前版本相比,此脚本将不会在在其它服务后运行

#记住,必须运行"chmod +x/etc/rc.d/rc.local"命令来确保启动过程中执行此脚本 .

关闭Transparent HugePages方式二


修改/etc/default/grub文件,如下是修改之后的效果:  

# cat /etc/default/grub  

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="rhgb quiet transparent_hugepage=never" ---->>> transparent_hugepage=never是新加的  

GRUB_DISABLE_RECOVERY="true"  

# grub2-mkconfig -o /boot/grub2/grub.cfg ---->>执行该命令  

Generating grub configuration file ...  

Found Linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64  

Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img  

Found linux image: /boot/vmlinuz-0-rescue-3b932bfbe4f94ccf93c11ba19641e845  

Found initrd image: /boot/initramfs-0-rescue-3b932bfbe4f94ccf93c11ba19641e845.img  

done  

# reboot-------->>>>重启生效  


关闭不生效怎么办?


检查下,多半是系统调优工具/tuned/tuned-admin在给你捣乱。

# tuned-adm

usage: tuned-adm [-h] [--version] [--debug] [--async] [--timeout TIMEOUT]

{list,active,off,profile,profile_info,recommend,verify} ...

查看当前生效的配置,当前的配置是virtual-guest

# tuned-adm active

Current active profile: virtual-guest

编辑virtual-guest配置文件

# vi /usr/lib/tuned/virtual-guest/tuned.conf

[vm]

transparent_hugepages=never

总结


学到老,活到老!transparent_hugepage和hugepage你搞混了没有。

注:
内存大页面和透明大页面
hugepage的值是预设值,transparent_hugepage是动态的。

大页面必须在引导时分配。它们也很难手动管理,且经常需要更改代码以便可以有效使用。因此红帽企业版 Linux 也部署了透明超大页面 (THP)。THP 是一个提取层,可自动创建、管理和使用超大页面的大多数方面。

THP 系统管理员和开发者减少了很多使用超大页面的复杂性。因为 THP 的目的是改进性能,所以其开发者(社区和红帽开发者)已在各种系统、配置、程序和负载中测试并优化了 THP。这样可让 THP 的默认设置改进大多数系统配置性能。


推荐阅读:

IT运维工程师学习笔记-Redis笔记(5):redis数据安全-持久化

linux服务器被挖矿脚本分析

情书

阅读: 2100
在同意共创许可协议(CC BY-NC-SA-4.0)的前提下,您可以转载本文。
付生保个人博客
https://shengbao.org/693.html

相关阅读

留言评论

暂无留言