36.3. 在引导时配置 HugeTLB
HugeTLB 子系统支持的页大小取决于具体架构。x86_64 架构支持 2 MB 巨页和 1 GB gigantic 节页。
这个步骤描述了如何在引导时保留 1 GB 页面。
流程
要为
1 GB页创建一个 HugeTLB 池,请启用default_hugepagesz=1G和hugepagesz=1G内核选项:grubby --update-kernel=ALL --args="default_hugepagesz=1G hugepagesz=1G"
# grubby --update-kernel=ALL --args="default_hugepagesz=1G hugepagesz=1G"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/usr/lib/systemd/system/目录中创建一个名为hugetlb-gigantic-pages.service的新文件,并添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/usr/lib/systemd/目录中创建一个名为hugetlb-reserve-pages.sh的新文件,并添加以下内容:在添加以下内容时,使用您要保留的 1GB 页面数替换 number_of_pages,并使用您要保留的节点的名称替换 node。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,要在 node0 上保留两个
1 GB页面,在 node1 上保留 1GB 页面,将 number_of_pages 替换 2(对于 node0)和 1(对于 node1):reserve_pages 2 node0 reserve_pages 1 node1
reserve_pages 2 node0 reserve_pages 1 node1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建可执行脚本:
chmod +x /usr/lib/systemd/hugetlb-reserve-pages.sh
# chmod +x /usr/lib/systemd/hugetlb-reserve-pages.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用早期引导保留:
systemctl enable hugetlb-gigantic-pages
# systemctl enable hugetlb-gigantic-pagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
注意
-
您可以通过在任何时候写入
nr_hugepages来尝试在运行时保留更多1 GB页。但是,为了避免由于内存碎片而导致失败,请在引导过程的早期保留1 GB页。 - 保留静态巨页可有效地减少系统可用的内存量,并阻止它正确利用内存容量。虽然正确大小的保留巨页池可能会对使用它的应用程序有用,但保留巨页的过度或未使用的池最终会降低整体系统性能。当设置保留的巨页池时,请确定系统可以正确地利用其完整的内存容量。