前言
内存是由块管理,即众所周知的页面。超大页面是 2MB 和 1GB 大小的内存块。2MB 使用的页表可管理多 GB 内存,而 1GB 页是 TB 内存的最佳选择。红帽企业版 Linux 6 开始就采用了超大页面管理。
超大页面必须在引导时分配。它们也很难手动管理,且经常需要更改代码以便可以有效使用。因此红帽企业版 Linux 也部署了透明超大页面 (THP)。THP 是一个提取层,可自动创建、管理和使用超大页面的大多数方面。THP可以改进系统的性能。
开关文件
cat /sys/kernel/mm/transparent_hugepage/enabled
使用命令查看时,如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、[madvise]表示(只在MADV_HUGEPAGE标志的VMA中使用THP)
存在问题
THP在有些应用场景会出现异常,因此oracle、mongodb、redis等服务都建议关闭这个特性,因为这个可能导致延迟和内存使用问题。
临时解决方法:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
RHEL/CentOS可以直接写到/etc/rc.local里面实现开始自动修改
总结
Transparent Huge Pages(THP)可以减少使用超大页面的复杂行,目前THP已在各种系统、配置、程序和负载中测试优化,可以改进大多数系统配置的性能。如果不是必要,或者已知存在问题的服务,还是建议开启来。