36.6. 管理透明巨页
透明巨页(THP)在 Red Hat Enterprise Linux 8 中默认启用。但是,您可以启用、禁用或使用运行时配置、TuneD 配置文件、内核命令行参数或 systemd 单元文件将透明巨页设置为 madvise 。
36.6.1. 使用运行时配置管理透明巨页 复制链接链接已复制到粘贴板!
可在运行时管理透明巨页(THP),以优化内存使用率。系统重启后,运行时配置不是持久的。
流程
检查 THP 的状态:
cat /sys/kernel/mm/transparent_hugepage/enabled
$ cat /sys/kernel/mm/transparent_hugepage/enabledCopy 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/enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用 THP:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
$ echo never > /sys/kernel/mm/transparent_hugepage/enabledCopy 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/enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要防止应用程序分配比需要多的内存资源,请禁用系统范围的透明巨页,并只为通过
madvise系统调用明确请求它的应用程序启用它们。注意有时,为短期分配提供低延迟的优先级比立即实现长时间分配的性能要高。在这种情况下,您可以在启用 THP 时禁用直接压缩。
直接压缩是在巨页分配过程中同步的内存压缩。禁用直接压缩功能无法保证保存内存,但可能会降低频繁页面错误期间延迟更高的风险。另外,禁用直接压缩只允许
madvise中突出显示的虚拟内存区域(VMAs)的异步压缩。请注意,如果工作负载从 THP 有很大的好处,则性能会降低。禁用直接压缩:$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
36.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_profileCopy 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.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要启用 THP,请添加行:
[bootloader] cmdline = transparent_hugepage=always
[bootloader] cmdline = transparent_hugepage=alwaysCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要禁用 THP,请添加行:
[bootloader] cmdline = transparent_hugepage=never
[bootloader] cmdline = transparent_hugepage=neverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 THP 设置为
madvise,请添加行:[bootloader] cmdline = transparent_hugepage=madvise
[bootloader] cmdline = transparent_hugepage=madviseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
重启
TuneD服务:sudo systemctl restart tuned
$ sudo systemctl restart tunedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新配置文件设置为活跃:
sudo tuned-adm profile my_copied_profile
$ sudo tuned-adm profile my_copied_profileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证新配置文件是否处于活跃状态:
sudo tuned-adm active
$ sudo tuned-adm activeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否设置了所需的 THP 模式:
cat /sys/kernel/mm/transparent_hugepage/enabled
$ cat /sys/kernel/mm/transparent_hugepage/enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
36.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=DEFAULTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要禁用 THP:
grubby --args="transparent_hugepage=never" --update-kernel=DEFAULT
# grubby --args="transparent_hugepage=never" --update-kernel=DEFAULTCopy 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=DEFAULTCopy to Clipboard Copied! Toggle word wrap Toggle overflow
重启系统以使更改生效:
reboot
# rebootCopy 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 kBCopy 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 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
36.6.4. 使用 systemd 单元文件管理透明巨页 复制链接链接已复制到粘贴板!
您可以使用 systemd 单元文件,在系统启动时管理透明巨页(THP)。通过创建一个 systemd 服务,您可以在系统重启后获得一致的 THP 配置。
前提条件
- 您在系统上具有 root 权限。
流程
-
创建新的 systemd 服务文件,以启用、禁用 THP ,并将 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>.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start <new_thp_file>.service
# systemctl start <new_thp_file>.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 THP 的状态,请查看以下文件:
cat /sys/kernel/mm/transparent_hugepage/enabled
$ cat /sys/kernel/mm/transparent_hugepage/enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow