开发者
资源
最佳实践:性能最佳实践 – 内存大页
最佳实践:性能最佳实践 – 内存大页
发表于2025/09/10
1140

1.1 概述

相比传统 4 KB 分页,openEuler 同时支持 2 MB 与 1 GB 的内存大页(Huge Pages),可显著降低 TLB Miss,提升内存访问密集型业务性能。

openEuler 通过以下两种技术实现大页:

  1. 静态大页(Static Huge Pages)

    • 需在宿主机启动前预留固定大小的大页池。
    • 虚拟机创建时通过 XML 指定从该池分配内存,保证物理连续且全程大页。
    • 页面大小可选 2 M 或 1 G;修改池大小后必须重启宿主机才能生效。
    • 部署相对复杂,但性能可预测性最佳。
  2. 透明大页(Transparent Huge Pages, THP)

    • 由内核自动把相邻 4 KB/64 KB 页合并成 2 MB 大页,也可自动拆分。
    • 对虚拟机透明,无需预留池;缺 2 M 连续页时退回到原生页面大小(x86_64 为 4 K,AArch64 为 64 K)。
    • 开启方便,但可能带来额外合并/拆分开销;追求极致稳定性能时可关闭。

提示:若虚拟机已完全使用静态大页,建议关闭 THP,减少宿主机后台活动,进一步保障性能稳定性。

2.2 操作指导

2.2.1 使用静态大页

在创建虚拟机前,于 XML 的 <memoryBacking> 段内加入以下片段即可。

  • 1 GB 大页示例
<memoryBacking>
```
<page size='1' unit='GiB'/>
</hugepages>
- 2 MB 大页示例  


```xml

<memoryBacking>
```
<page size='2' unit='MiB'/>
</hugepages>
> 注意:宿主机必须先通过 `sysctl vm.nr_hugepages` 或内核参数预留足够 1 G/2 M 大页,否则虚拟机启动会失败。



2.2.2 使用透明大页



动态开关 THP 只需写入 sysfs 接口,无需重启。



- 开启 THP  


```bash

echo always > /sys/kernel/mm/transparent_hugepage/enabled
  • 关闭 THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled

可将其加入 /etc/rc.local 或 systemd 服务实现开机持久化。

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞