内存大页.md 2.3 KB
Newer Older
F
freesky-edward 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
# 内存大页<a name="ZH-CN_TOPIC_0187048019"></a>

## 概述<a name="section1468142183114"></a>

相比传统的4K内存分页,openEuler也支持2MB/1GB的大内存分页。内存大页可以有效减少TLB miss,显著提升内存访问密集型业务的性能。openEuler使用两种技术来实现内存大页。

-   静态大页

    静态大页要求宿主机操作系统在加载前提前预留一个静态大页池,虚拟机创建时通过修改xml配置文件的方式,指定虚拟机的内存从静态大页池中分配。静态大页能保证虚拟机的所有内存在host上始终以大页形式存在,保证物理连续,但增加了部署的困难,修改静态大页池的页面大小后需要重启host才能生效。静态大页的页面大小支持2M或1G。


-   透明大页

14
    如果开启透明大页模式THP(Transparent Huge Pages),虚拟机分配内存时自动选择可用的2M连续页,同时自动完成大页的拆分合并,当没有可用的2M连续页时,它会选择可用的64K(AArch64架构)或4K(x86_64架构)页面进行分配。透明大页的好处是不需要用户感知,同时能尽量使用2M大页以提升内存访问性能。
F
freesky-edward 已提交
15 16 17 18


在虚拟机完全使用静态大页的场景下,可以通过关闭透明大页的方法,减少宿主机操作系统的开销,以便虚拟机获得更稳定的性能。

19
## 操作指导<a name="section1018225453212"></a>
F
freesky-edward 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

-   使用静态大页

    在创建虚拟机之前通过修改XML的方式,为虚拟机配置使用静态大页。

    ```
      <memoryBacking>
        <hugepages>
          <page size='1' unit='GiB'/>
        </hugepages>
      </memoryBacking>
    ```

    以上XML片段表示为虚拟机配置1G静态大页。

    ```
      <memoryBacking>
        <hugepages>
          <page size='2' unit='MiB'/>
        </hugepages>
      </memoryBacking>
    ```

    以上XML片段表示为虚拟机配置2M静态大页。

-   使用透明大页

    通过sysfs可以动态开启使用透明大页:

    ```
    # echo always > /sys/kernel/mm/transparent_hugepage/enabled
    ```

    动态关闭使用透明大页:

    ```
    # echo never > /sys/kernel/mm/transparent_hugepage/enabled
    ```