40.6. 管理透明巨页
在 Red Hat Enterprise Linux 9 中透明巨页(THP)默认被启用。但是,您可以使用运行时配置、TuneD 配置文件、内核命令行参数或 systemd 单元文件启用、禁用或将透明巨页设置为 madvise
。
40.6.1. 使用运行时配置管理透明巨页 复制链接链接已复制到粘贴板!
可在运行时管理透明巨页(THP),来优化内存使用率。系统重启后,运行时配置不是持久的。
流程
检查 THP 的状态:
cat /sys/kernel/mm/transparent_hugepage/enabled
$ cat /sys/kernel/mm/transparent_hugepage/enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 THP.
启用 THP:
echo always > /sys/kernel/mm/transparent_hugepage/enabled
$ echo always > /sys/kernel/mm/transparent_hugepage/enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用 THP:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 THP 设置为
madvise
:echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
$ echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要防止应用程序分配比必需的多的内存资源,请禁用系统范围的透明巨页,并仅对通过
madvise
系统调用明确请求它的应用程序启用它们。注意有时,为短期分配提供低延迟的优先级比立即实现长时间分配的性能要高。在这种情况下,您可以在启用 THP 时禁用直接压缩。
直接压缩是在巨页分配过程中同步的内存压缩。禁用直接压缩功能无法保证保存内存,但可能会降低频繁页面错误期间延迟更高的风险。另外,禁用直接压缩只允许异步压缩
madvise
中突出显示的虚拟内存区域(VMAs)。请注意,如果工作负载从 THP 有很大的好处,则性能会降低。禁用直接压缩:$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
40.6.2. 使用 TuneD 配置文件管理透明巨页 复制链接链接已复制到粘贴板!
您可以使用 TuneD 配置文件管理透明巨页(THP)。tuned.conf
文件提供 TuneD 配置文件的配置。这个配置在系统重启后是持久的。
先决条件
-
tuned
软件包已安装。 -
tuned
服务已启用。
流程
将活跃的配置文件复制到同一目录中:
sudo cp -R /usr/lib/tuned/my_profile /usr/lib/tuned/my_copied_profile
$ sudo cp -R /usr/lib/tuned/my_profile /usr/lib/tuned/my_copied_profile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
tune.conf
文件:sudo vi /usr/lib/tuned/my_copied_profile/tuned.conf
$ sudo vi /usr/lib/tuned/my_copied_profile/tuned.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要启用 THP,请添加行:
[bootloader] cmdline = transparent_hugepage=always
[bootloader] cmdline = transparent_hugepage=always
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要禁用 THP,请添加行:
[bootloader] cmdline = transparent_hugepage=never
[bootloader] cmdline = transparent_hugepage=never
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 THP 设置为
madvise
,请添加行:[bootloader] cmdline = transparent_hugepage=madvise
[bootloader] cmdline = transparent_hugepage=madvise
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
重启
TuneD
服务:sudo systemctl restart tuned
$ sudo systemctl restart tuned
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 激活新的配置文件:
sudo tuned-adm profile my_copied_profile
$ sudo tuned-adm profile my_copied_profile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证新配置文件是否处于活跃状态:
sudo tuned-adm active
$ sudo tuned-adm active
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否设置了所需的 THP 模式:
cat /sys/kernel/mm/transparent_hugepage/enabled
$ cat /sys/kernel/mm/transparent_hugepage/enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
40.6.3. 使用内核命令行参数管理透明巨页 复制链接链接已复制到粘贴板!
您可以通过修改内核参数,来在引导时管理透明巨页(THP)。这个配置在系统重启后是持久的。
先决条件
- 您在系统上具有 root 权限。
流程
获取当前的内核命令行参数:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过添加内核参数来配置 THP。
要启用 THP:
grubby --args="transparent_hugepage=always" --update-kernel=DEFAULT
# grubby --args="transparent_hugepage=always" --update-kernel=DEFAULT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要禁用 THP:
grubby --args="transparent_hugepage=never" --update-kernel=DEFAULT
# grubby --args="transparent_hugepage=never" --update-kernel=DEFAULT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 THP 设置为
madvise
:grubby --args="transparent_hugepage=madvise" --update-kernel=DEFAULT
# grubby --args="transparent_hugepage=madvise" --update-kernel=DEFAULT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
重启系统以使更改生效:
reboot
# reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 THP 的状态,请查看以下文件:
cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow grep AnonHugePages: /proc/meminfo
# grep AnonHugePages: /proc/meminfo AnonHugePages: 0 kB
Copy to Clipboard Copied! Toggle word wrap Toggle overflow grep nr_anon_transparent_hugepages /proc/vmstat
# grep nr_anon_transparent_hugepages /proc/vmstat nr_anon_transparent_hugepages 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
40.6.4. 使用 systemd 单元文件管理透明巨页 复制链接链接已复制到粘贴板!
您可以使用 systemd 单元文件来在系统启动时管理透明巨页(THP)。通过创建 systemd 服务,您可以在系统重启后获得一致的 THP 配置。
先决条件
- 您在系统上具有 root 权限。
流程
-
创建新的 systemd 服务文件来启用、禁用,并将 THP 设置为
madvise
。例如:/etc/systemd/system/disable-thp.service
。 通过向新的 systemd 服务文件添加以下内容来配置 THP。
要启用 THP,请在
<new_thp_file>.service
文件中添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要禁用 THP,请在
<new_thp_file>.service
文件中添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 THP 设置为
madvise
,请在<new_thp_file>.service
文件中添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
启用并启动服务:
systemctl enable <new_thp_file>.service
# systemctl enable <new_thp_file>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start <new_thp_file>.service
# systemctl start <new_thp_file>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 THP 的状态,请查看以下文件:
cat /sys/kernel/mm/transparent_hugepage/enabled
$ cat /sys/kernel/mm/transparent_hugepage/enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow