开启大页内存池

在Linux操作系统上运行内存需求量较大的应用程序时,由于其采用的默认页面大小为4KB,因而将会产生较多TLB Miss和缺页中断,从而大大影响应用程序的性能。当操作系统使用大页内存时,将会大大减少TLB Miss和缺页中断的数量,显著提高应用程序的性能。大页内存分为两种,一种是标准大页,标准大页适合那些需要高性能和细粒度控制的应用程序,适用于对内存管理和性能有严格要求的场景。另一种是透明大页,透明大页适合那些希望简化配置并自动优化内存使用的应用程序,尤其适用于大多数通用场景,可根据需要来选择开启哪种大页。

以下为各优化手段对大页内存支持的情况,各优化手段可搭配使用:

表1 大页内存优化手段

优化手段

支持透明大页

支持标准大页

是否需要重启物理机

malloc使用大页

支持,(glibc低版本不支持,高版本支持,参考malloc使用大页

支持

tmpfs使用大页

支持

不支持

glibc动态库大页

不支持

支持

标准大页(HugePage)技术于Linux Kernel 2.6版本被引入到内核,可通过uname -r确认当前内核版本是否大于2.6。

使能OS开启透明大页内存

  1. 确认透明大页是否开启:

    执行命令cat /sys/kernel/mm/transparent_hugepage/enabled确认透明大页是否启动,若回显结果为[always]则表明已开启透明大页。一般透明大页是默认开启的。

  2. 执行以下命令,开启透明大页:
    echo always > /sys/kernel/mm/transparent_hugepage/enabled

    需要注意的是采用这种方式开启透明大页,重启服务器后会失效。

使能OS开启标准大页内存