暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

CentOS 7如何禁用透明大页功能

DBA闲思杂想录 2022-06-26
4325

CentOS 7下如何禁用透明大页(Transparent Huge Pages)呢?之前在这篇文章“Linux关于透明大页(Transparent Huge Pages)的介绍”中介绍了几种禁用透明大页的方法,但是这些方法在CentOS 7下会失效:

首先,CentOS 7下已经没有/etc/grub.conf这个配置文件了。

# ls /etc/grub.conf
ls: cannot access /etc/grub.conf: No such file or directory

其次,CentOS 7下,即使在/etc/rc.local中设置了禁用透明大页的脚本,但是它在重启的时候可能不会生效。注意了, CentOS 7 的 rc.local 默认需要修改权限才会执行。

那么在CentOS下如何禁用透明大页呢?下面我们以CentOS 7.9.2009为例来介绍一下

# more /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

#
 cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

方法1:修改配置文件rc.local

我们在/etc/rc.local中设置了禁用透明大页的脚本(如下所示)

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

修改后的内容

# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

修改配置后,重启依然不会生效,此时需要修改rc.local的权限,授予执行权限后,重启才会生效。以前的Linux版本在引导时会执行这个脚本,而在CentOS7下,这个脚本将不会在其他所有的服务启动后执行。所以你必须执行“chmod +x etc/rc.d/rc.local”来确保确保这个脚本在引导时执行。

# ls -ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Mar 15 2019 /etc/rc.local -> rc.d/rc.local
# ls -lrt /etc/rc.d/rc.local
-rw-r--r--. 1 root root 599 Jan 20 10:42 /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local

方法2:修改配置文件tuned.conf

# yum list installed |grep tuned
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
tuned.noarch 2.9.0-1.el7 @anaconda

#
 cd /usr/lib/tuned/virtual-guest

如果你没有安装tuned的话,需要先安装tuned组件,如果已经安装了这个组件则可跳过。然后在目录/usr/lib/tuned/virtual-guest下找到配置文件tuned.conf,在配置文件tuned.conf中填加下面配置,重启即可。

[vm]
transparent_hugepage=never

方法3:命令临时修改

如果不想重新启动,也可以通过下面命令禁用透明大页。一般情况下,生产环境不能谁便重启,所以我们在修改配置后,可以使用下面命令临时禁用透明大页功能。

echo 'never' | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
echo 'never' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/enabled

注意:上述命令只能临时禁用透明大页,下次服务器重启会失效。所以必须按方法1或2设置禁用透明大页。


文章转载自DBA闲思杂想录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论