5.4. 在 Compute 节点上配置巨页


作为云管理员,您可以配置 Compute 节点,以启用实例来请求巨页。

注意

配置巨页会在实例上创建一个隐式 NUMA 拓扑,即使未请求 NUMA 拓扑。

流程

  1. 打开 Compute 环境文件。
  2. 将巨页内存量配置为在每个 NUMA 节点上为不是实例的进程保留:

    parameter_defaults:
      ComputeParameters:
        NovaReservedHugePages: ["node:0,size:1GB,count:1","node:1,size:1GB,count:1"]
    • 将每个节点的 size 值替换为分配的巨页大小。设置为以下有效值之一:

      • 2048 (用于 2MB)
      • 1GB
    • 将每个节点的 count 值替换为每个 NUMA 节点使用 OVS 的巨页数量。例如,对于 Open vSwitch 使用的 4096 个套接字内存,将其设置为 2。
  3. 在 Compute 节点上配置巨页:

    parameter_defaults:
      ComputeParameters:
        ...
        KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32"
    注意

    如果配置多个巨页大小,还必须在第一次引导过程中挂载巨页文件夹。如需更多信息,请参阅 第一次引导过程中挂载多个巨页文件夹

  4. 可选: 要允许实例分配 1GB 巨页,配置 CPU 功能标志 NovaLibvirtCPUModelExtraFlags,使其包含 pdpe1gb:

    parameter_defaults:
      ComputeParameters:
        NovaLibvirtCPUMode: 'custom'
        NovaLibvirtCPUModels: 'Haswell-noTSX'
        NovaLibvirtCPUModelExtraFlags: 'vmx, pdpe1gb'
    注意
    • CPU 功能标志不需要配置为允许实例仅请求 2 MB 巨页。
    • 当主机支持 1G 巨页分配时,您只能将 1G 巨页分配给实例。
    • 当将 NovaLibvirtCPUModelExtraFlags 设置为 host-modelcustom 时,您只需要将 NovaLibvirtCPUModelExtraFlags 设置为 pdpe1gb
    • 如果主机支持 pdpe1gb,并且 host-passthrough 用作 NovaLibvirtCPUMode,则不需要将 pdpe1gb 设置为 NovaLibvirtCPUModelExtraFlagspdpe1gb 标志仅包含在 Opteron_G4 和 Opteron_G5 CPU 模型中,它不包含在 QEMU 支持的任何 Intel CPU 模型中。
    • 要缓解 CPU 硬件问题,如 Microarchitectural Data Sampling (MDS),您可能需要配置其他 CPU 标记。如需更多信息,请参阅 RHOS Mitigation for MDS ("Microarchitectural Data Sampling")安全 Flaws
  5. 要避免在应用 Meltdown 保护后性能会降低的问题,请配置 CPU 功能标志 NovaLibvirtCPUModelExtraFlags 来包含 +pcid

    parameter_defaults:
      ComputeParameters:
        NovaLibvirtCPUMode: 'custom'
        NovaLibvirtCPUModels: 'Haswell-noTSX'
        NovaLibvirtCPUModelExtraFlags: 'vmx, pdpe1gb, +pcid'
    提示
  6. NUMATopologyFilter 添加到 NovaSchedulerEnabledFilters 参数(如果尚不存在)。
  7. 使用其他环境文件将计算环境文件添加到堆栈中,并部署 overcloud:

    (undercloud)$ openstack overcloud deploy --templates \
      -e [your environment files]  \
      -e /home/stack/templates/<compute_environment_file>.yaml

5.4.1. 为实例创建巨页类型

要让您的云用户创建使用巨页的实例,您可以创建一个带有 hw:mem_page_size 额外 spec 键的类别,以用于启动实例。

先决条件

流程

  1. 为需要巨页的实例创建类别:

    $ openstack flavor create --ram <size_mb> --disk <size_gb> \
     --vcpus <no_reserved_vcpus> huge_pages
  2. 要请求巨页,请将类别的 hw:mem_page_size 属性设置为所需的大小:

    $ openstack flavor set huge_pages --property hw:mem_page_size=<page_size>
    • <page_size > 替换为以下有效值之一:

      • :选择主机上支持的最大页面大小,其在 x86_64 系统上可能为 2 MB 或 1 GB。
      • Small :(默认)选择主机上支持的最小页面大小。在 x86_64 系统上,这是 4 kB (常规页面)。
      • any: 使用镜像中设置的 hw_mem_page_size 选择页大小。如果镜像没有指定页面大小,请选择由 libvirt 驱动程序决定的最大可用页面大小。
      • <pageSize > :如果工作负载具有特定要求,则设置显式页面大小。将整数值用于页大小(以 KB 为单位)或任何标准后缀。例如: 4KB、2MB、2048、1GB。
  3. 要验证类别会创建一个带有巨页的实例,请使用您的新类别启动实例:

    $ openstack server create --flavor huge_pages \
     --image <image> huge_pages_instance

    计算调度程序标识了具有足够可用巨页的主机,以支持实例的内存。如果调度程序无法找到具有足够页面的主机和 NUMA 节点,则请求将失败,并显示 NoValidHost 错误。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部