40.3. 在引导时配置 HugeTLB
HugeTLB 通过在引导时保留巨页来启用使用巨页,从而尽量减少内存碎片,并确保有足够的资源可用于从较大的内存页面中受益的工作负载。
40.3.1. 使用内核命令行参数配置 HugeTLB 复制链接链接已复制到粘贴板!
您可以使用内核命令行参数在引导过程的最早阶段保留 HugeTLB 页面。这个方法提供了在内核启动过程中成功保留所需数量的巨页和大小的最机,因为内存是在内核启动期间分配的。
首选使用内核引导参数保留 HugeTLB 页面,因为此方法可确保与使用 systemd 单元相比,分配更大的连续内存区域。
该流程中的示例演示了如何使用命令行选项配置 HugeTLB 页面。这些示例不一定适用于您的系统配置。在在您的环境中应用这些设置前,请查看您的系统要求和目标。
先决条件
- 在您的系统中必须具有 root 权限。
流程
更新内核命令行使其包含 HugeLTB 选项。
为您的架构保留默认大小的 HugeTLB 页面:
# grubby --update-kernel=ALL --args="hugepages=10"这个命令保留默认池大小的 10 HugeTLB 页面。例如,在
x86_64上,默认的池大小为2 MB。在具有非统一内存访问(NUMA)的系统上,分配在 NUMA 节点上均匀分布。如果系统有两个 NUMA 节点,每个节点保留五个页面。要保留不同的 HugeTLB 页面大小,请在内核命令行中指定
hugepagesz和hugepages选项:# grubby --update-kernel=ALL --args="hugepagesz=2M hugepages=10 hugepagesz=1G hugepages=1"该命令保留 10 页(共
2 MB)和 1 页(1 GB)。系统在引导时保留 HugeTLB 页面的指定数量和大小,确保在操作系统开始正常操作前分配内存。
重要选项的顺序非常重要。每个
hugepagesz=选项必须紧接其对应的hugepages=选项。