目前在网络上搜索到的禁用 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
,这一项仍需要手动配置。
附录
参考链接
- Chapter 3. Customizing TuneD profiles - Red Hat Documentation
- tuned-profiles(7) - Debian Manpage
- TuneD - Ubuntu Docs
- How do I disable Transparent Huge Pages (THP) and confirm that it is disabled? - splunk
- Transparent Hugepage Support - kernel.org
- Disabling Transparent HugePages - Database Installation Guide for Linux
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2025-01-07 18:02 PM