目录

配置透明的大内存页

目录

透明大内存页(THP)是HugeTLB的替代解决方案。使用THP,内核会自动为进程分配大内存页,因此不需要手动预留大内存页。

THP功能有两种操作模式:系统范围和每个进程。当在系统范围内启用THP时,内核会尝试在可能分配大页面时,内核会尝试在可能分配大页面时为任何进程分配大页面,并且该进程使用大的连续虚拟内存区域。如果每个进程启用THP,则内核仅将大页面分配给madvise()系统调用指定的各个进程的内存区域。

注意,THP功能仅支持2MB页面。默认情况下启用透明大页面,要检查状态,运行:

1
cat /sys/kernel/mm/transparent_hugepage/enabled

要启用透明的大页面,请运行:

1
echo always > /sys/kernel/mm/transparent_hugepage/enabled

为了防止应用程序分配超出必要的内存资源,可以在系统范围内禁用大页面,并且只能通过以下命令在MADV_HUGEPAGE madvise区域启用:

1
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled

要禁用透明大内存页,运行:

1
echo never > /sys/kernel/mm/transparent_hugepage/enabled

有时,为了短期分配提供低延迟比使用长期分配立即获得最佳性能具有更高的优先级,这种情况下,可以在启用THP的同事禁用direct compaction

直接压缩巨大页面分配期间的同步内存压缩。禁用直接压缩不能保证节省内存。 但可以减低频繁页面错误期间更高延迟的风险,主要如果工作负载从THP中获益很大,则性能会降低,要禁用直接压缩,运行:

1
echo madvise > /sys/kernel/mm/transparent_hugepage/defrag