第 38 章 配置巨页

物理内存以固定大小的块的形式进行管理,称为页。在 x86_64 架构中,由 Red Hat Enterprise Linux 9 支持,默认的内存页大小为 4 KB。此默认页面大小被证明适用于常规用途的操作系统,如 Red Hat Enterprise Linux,它支持许多不同类型的工作负载。

但是,在某些情况下,特定应用程序可能会从使用更大的页面中受益。例如,在使用 4 KB 页面时,如果应用程序需要处理大量的、相对固定的数据集合时(有几百兆字节甚至数千兆字节数据)可能会遇到性能问题。这种数据集可能需要大量的 4 KB 页面,这可能导致操作系统和 CPU 的大量开销。

这部分提供有关 RHEL 9 中巨页的信息以及如何配置它们。

38.1. 可用的巨页功能

在 Red Hat Enterprise Linux 9 中,您可以使用巨页来处理大数据集的应用程序,并改进此类应用程序的性能。

以下是 RHEL 9 支持的巨页方法:

HugeTLB 页

HugeTLB 页面也称为静态巨页。有两种方法可以保留 HugeTLB 页面:

  • 在引导时:这可以增加成功的几率,因为在引导时内存还没有很大的碎片。但是,在 NUMA 机器上,页面数量会自动在不同的 NUMA 节点间进行分隔。

有关影响引导时 HugeTLB 页行为的参数的更多信息,请参阅 在引导时保留 HugeTLB 页的参数 ,以及如何使用这些参数在引导时配置 HugeTLB 页,请参阅 在引导时配置 HugeTLB

  • 在运行时:它允许您为每个 NUMA 节点保留巨页。如果在引导过程中以早期方式进行运行时保留,则可能会降低内存碎片的可能性。

有关在运行时影响 HugeTLB 页行为的参数的更多信息,请参阅 在运行时保留 HugeTLB 页的参数,以及如何使用这些参数在运行时配置 HugeTLB 页,请参阅 在运行时配置 HugeTLB

透明巨页 (THP)

使用 THP 时,内核会自动将巨页分配给进程,因此不需要手动保留静态巨页。以下是 THP 中的两种操作模式:

  • 系统范围 :内核会在可以分配巨页时尝试为进程分配巨页,进程会使用一个大型连续的虚拟内存区域。
  • 针对每个进程 :内核仅将巨页分配给单个进程的内存区域,您可以使用 madvise () 系统调用来指定。

    注意

    THP 功能只支持 2 MB 页面。

有关在引导时影响 HugeTLB 页行为的参数的更多信息,请参阅 启用透明巨页禁用透明巨页