使用 TuneD 优雅禁用 THP 透明大页功能
后知后觉 暂无评论

目前在网络上搜索到的禁用 Transparent Huge Pages (THP) 都是使用 rc.local 脚本进行关闭,而随着版本更新,部分发行版已经禁用此启动脚本。那么有什么更优雅的实现方法吗?

检查 THP 状态

可以使用命令查询当前 THP 功能状态:

## 查询结果中使用 [] 括起来的就是当前状态
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled

通过 TuneD 配置工具禁用

检查并安装 TuneD 配置管理工具,在 RHEL 及衍生版上一般自带,无需额外安装。

## RHEL, CentOS 等衍生发行版
sudo dnf install tuned
## Debian, Ubuntu 等衍生发行版
sudo apt install tuned

检查当前使用的配置

使用下述命令可以检查当前使用的配置:

sudo tuned-adm active

使用下述命令可以查看系统推荐的配置:

sudo tuned-adm recommend

一般情况下,虚拟机环境的默认配置都是 virtual-guest

自定义配置

在获取了默认配置后即可在此基础上创建自定义配置,实现自定义配置。

sudo mkdir /etc/tuned/thp/
cat << EOF | sudo tee /etc/tuned/thp/tuned.conf
[main]
summary=Optimize for THP
description=Configures THP for better performance
include=virtual-guest

[vm]
transparent_hugepages=never
transparent_hugepage.defrag=never
EOF

以下面的配置文件为例,简单介绍一下其配置文件格式:

[main]
## 下面两行都是配置文件的描述,按需修改
summary=Optimize for THP
description=Configures THP for better performance
## 表示以某配置为基础进行修改,这里改为上述查询到的默认配置名即可
include=virtual-guest

[vm]
## 下面的配置都是在上述基础上额外配置的项目
transparent_hugepages=never
transparent_hugepage.defrag=never

启用刚才编写的自定义配置(立即生效):

sudo tuned-adm profile thp

使用命令检查可以发现 THP 的两个子项全部被配置为 never,并且重启后依然可以保持。


通过 grub 启动配置禁用

另外可以通过修改 grub 启动配置修改内核启动参数禁用 THP 功能,但此方式存在瑕疵。

## 修改 /etc/default/grub 添加参数 transparent_hugepage=never
GRUB_CMDLINE_LINUX="transparent_hugepage=never"
小贴士:如果原配置中包含其他启动参数,注意使用空格分隔新加入的参数。

修改配置后,重新生成启动配置文件:

## RHEL
sudo grub2-mkconfig
## Debian
sudo update-grub2

重启后会发现 transparent hugepage defrag 无法被设为 never,这一项仍需要手动配置。


附录

参考链接

如果遇到问题或者对文章内容存疑,请在下方留言,博主看到后将及时回复,谢谢!
回复 / 查看「历史评论
回答38+31=