40.3. 在引导时配置 HugeTLB
HugeTLB 通过在引导时保留巨页来启用使用巨页,从而尽量减少内存碎片,并确保有足够的资源可用于从较大的内存页面中受益的工作负载。
40.3.1. 使用内核命令行参数配置 HugeTLB 复制链接链接已复制到粘贴板!
您可以使用内核命令行参数在引导过程的最早阶段保留 HugeTLB 页面。这个方法提供了在内核启动过程中成功保留所需数量的巨页和大小的最机,因为内存是在内核启动期间分配的。
首选使用内核引导参数保留 HugeTLB 页面,因为此方法可确保与使用 systemd 单元相比,分配更大的连续内存区域。
该流程中的示例演示了如何使用命令行选项配置 HugeTLB 页面。这些示例不一定适用于您的系统配置。在在您的环境中应用这些设置前,请查看您的系统要求和目标。
先决条件
- 在您的系统中必须具有 root 权限。
流程
更新内核命令行使其包含 HugeLTB 选项。
为您的架构保留默认大小的 HugeTLB 页面:
grubby --update-kernel=ALL --args="hugepages=10"
# grubby --update-kernel=ALL --args="hugepages=10"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令保留默认池大小的 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"
# grubby --update-kernel=ALL --args="hugepagesz=2M hugepages=10 hugepagesz=1G hugepages=1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令保留 10 页(共
2 MB
)和 1 页(1 GB
)。系统在引导时保留 HugeTLB 页面的指定数量和大小,确保在操作系统开始正常操作前分配内存。
重要选项的顺序非常重要。每个
hugepagesz=
选项必须紧接其对应的hugepages=
选项。
40.3.2. 使用 systemd 服务单元配置 HugeTLB 复制链接链接已复制到粘贴板!
您可以使用 systemd 服务单元在用户空间引导过程中配置 HugeTLB 页面。这个方法允许您在内核初始化后保留大型内存页面,但在大多数用户空间服务启动前。虽然这种方法不是作为内核命令行配置早期的,但可以确保应用程序在系统操作期间可以访问所需的巨页。
先决条件
- 在您的系统中必须具有 root 权限。
流程
在
/usr/lib/systemd/system/
目录中创建一个名为hugetlb-gigantic-pages.service
的新文件,并添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/usr/lib/systemd/
目录中创建一个名为hugetlb-reserve-pages.sh
的新文件,并添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<number_of_pages
> 替换为您要保留的 1GB 页面数,将 <node> 替换为您要保留的节点的名称。例如:要在
node0
上保留两个 1 GB 页面,在node1
上保留 1GB 页面,将 <number_of_pages&
gt;
替换为node0
,1
代表node1
。创建可执行脚本:
chmod +x /usr/lib/systemd/hugetlb-reserve-pages.sh
# chmod +x /usr/lib/systemd/hugetlb-reserve-pages.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用早期引导保留:
systemctl enable hugetlb-gigantic-pages.service
# systemctl enable hugetlb-gigantic-pages.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意-
您可以在运行时尝试保留更多 1 GB 页面,方法是写入
nr_hugepages
。但是,为了避免因为内存碎片导致失败,在引导过程中在早期保留 1 GB 页面。 - 保留静态巨页可以有效地减少系统可用的内存量,并阻止它正确使用其内存容量。虽然正确大小的保留巨页池对使用它的应用程序有用,但保留巨页的过度或未使用的池最终会降低整体系统性能。当设置保留的巨页池时,请确定系统可以正确地使用其完整的内存容量。
-
您可以在运行时尝试保留更多 1 GB 页面,方法是写入