# 内存大页<a name="ZH-CN_TOPIC_0187048019"></a>

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

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

-   静态大页

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


-   透明大页

    openEuler默认开启透明大页模式（THP），虚拟机分配内存时自动选择可用的2M连续页，同时自动完成大页的拆分合并，当没有可用的2M连续页时，它会选择可用的4K页面进行分配。透明大页的好处是不需要用户感知，同时能尽量使用2M大页以提升内存访问性能。


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

## 操作步骤<a name="section1018225453212"></a>

-   使用静态大页

    在创建虚拟机之前通过修改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
    ```


