9.3. 类别元数据


在创建类别时 ,使用--property 选项指定类别元数据。类别元数据也称为额外规格。类别元数据决定了实例硬件支持和配额,影响实例放置、实例限值和性能。

实例资源使用量

使用下表中的属性键,配置实例的 CPU、内存和磁盘 I/O 使用量限制。

注意

用于限制实例 CPU 资源使用的额外 spec 是特定于主机的可调属性,这些属性直接传递给 libvirt,然后将限制传递给主机操作系统。因此,支持的实例 CPU 资源限值配置取决于底层主机操作系统。

有关如何在 RHOSP 部署中为 Compute 节点配置实例 CPU 资源使用情况的更多信息,请参阅 RHEL 9 文档中的了解 cgroups 以及 Libvirt 文档中的 CPU 调优

Expand
表 9.3. 资源使用量的类别元数据
描述

quota:cpu_shares

指定域的 CPU 时间的比例加权共享。默认为提供的默认值。计算调度程序相对于同一域中其他实例上的此属性设置的值。例如,使用 quota:cpu_shares=2048 配置的实例被分配为使用 quota:cpu_shares=1024 配置的实例加倍。

quota:cpu_period

指定以微秒为单位强制 cpu_quota 的时间周期。在 cpu_period 中,每个 vCPU 无法消耗超过运行时的 cpu_quota。设置为范围 1000 - 1000000 中的值。设置为 0 以禁用。

quota:cpu_quota

指定每个 cpu_period 中 vCPU 允许的最大带宽,以微秒为单位:

  • 设置为范围 1000 - 18446744073709551 中的值。
  • 设置为 0 以禁用。
  • 设置为负值以允许无限带宽。

您可以使用 cpu_quotacpu_period 来确保所有 vCPU 都以相同的速度运行。例如,您可以使用以下类别来启动最多 50% 物理 CPU 能力的实例:

$ openstack flavor set cpu_limits_flavor \
  --property quota:cpu_quota=10000 \
  --property quota:cpu_period=20000

实例磁盘调整

使用下表中的属性键来调优实例磁盘性能。

注意

计算服务将以下服务质量设置应用到计算服务调配的存储,如临时存储。要调整 Block Storage (cinder)卷的性能,还必须为卷类型配置和关联服务质量(QoS)规格。如需更多信息,请参阅存储指南中的块存储服务(cinder)服务质量规格

Expand
表 9.4. 用于磁盘调优的类别元数据
描述

quota:disk_read_bytes_sec

指定实例可使用的最大磁盘读取,以每秒为单位。

quota:disk_read_iops_sec

指定 IOPS 中可供实例使用的最大磁盘读取。

quota:disk_write_bytes_sec

指定实例可使用的最大磁盘写入,以每秒为单位。

quota:disk_write_iops_sec

指定 IOPS 中可供实例使用的最大磁盘写入。

quota:disk_total_bytes_sec

指定可供实例使用的最大 I/O 操作,以字节为单位。

quota:disk_total_iops_sec

指定可供实例使用的最大 I/O 操作(以 IOPS 为单位)。

实例网络流量带宽

通过配置 VIF I/O 选项,使用下表中的属性键来配置实例网络流量的带宽限制。

注意

配额 :vif swig 属性已弃用。反之,您应该使用 Networking (neutron)服务服务质量(QoS)策略。有关 QoS 策略的更多信息,请参阅网络指南中的配置服务质量(QoS)策略。只有在使用 ML2/OVS 机制驱动 NeutronOVSFirewallDriver 设置为 iptables_hybrid 时,才会支持 quota:vif_* 属性。

Expand
表 9.5. 带宽限制的类别元数据
描述

quota:vif_inbound_average

(已弃用)指定进入实例的流量所需的平均位率(单位为 kbps)。

quota:vif_inbound_burst

(已弃用)指定以 KB 为单位的峰值速度的最大传入流量量。

quota:vif_inbound_peak

(已弃用)指定实例可以接收传入流量的最大速率,以 kbps 为单位。

quota:vif_outbound_average

(已弃用)指定从实例传出的流量所需的平均位率(单位为 kbps)。

quota:vif_outbound_burst

(已弃用)指定可在峰值速度(KB)中突发的最大传出流量。

quota:vif_outbound_peak

(已弃用)指定实例可以发送传出流量(以 kbps 为单位)的最大速率。

硬件视频 RAM

使用下表中的 property key 来配置用于视频设备的实例 RAM 的限制。

Expand
表 9.6. 视频设备的类别元数据
描述

hw_video:ram_max_mb

指定用于视频设备的最大 RAM,以 MB 为单位。与 hw_video_ram 镜像属性一起使用。hw_video_ram 必须小于或等于 hw_video:ram_max_mb

watchdog 行为

使用下表中的 property 键,在实例上启用虚拟硬件 watchdog 设备。

Expand
表 9.7. watchdog 行为的类别元数据
描述

hw:watchdog_action

指定启用虚拟硬件 watchdog 设备并设置其行为。如果实例挂起或失败,则 watchdog 设备执行配置的操作。watchdog 使用 i6300esb 设备,模拟 PCI Intel 6300ESB。如果没有指定 hw:watchdog_action,则禁用 watchdog。

设置为以下有效值之一:

  • disabled :(默认)未附加该设备。
  • 重置 :强制实例重置。
  • poweroff :强制实例关闭。
  • 暂停 :暂停实例。
  • none :启用 watchdog,但如果实例挂起或失败时不执行任何操作。 

    注意

    使用特定镜像的属性设置的 watchdog 行为会覆盖您使用类别设置的行为。

随机数字生成器(RNG)

使用下表中的属性键在实例上启用 RNG 设备。

Expand
表 9.8. RNG 的类别元数据
描述

hw_rng:allowed

设置为 False,以禁用通过其镜像属性添加到实例的 RNG 设备。

Default: True

hw_rng:rate_bytes

指定实例可以从主机熵中读取的最大字节数。

hw_rng:rate_period

以毫秒为单位指定读取周期的持续时间。

虚拟性能监控单元(vPMU)

使用下表中的 property 键,为实例启用 vPMU。

Expand
表 9.9. vPMU 的 flavor 元数据
描述

hw:pmu

设置为 True,为实例启用 vPMU。

perf 等工具使用实例上的 vPMU 来更准确地分析和监控实例性能。对于实时工作负载,vPMU 的模拟可能会带来额外的延迟,这些延迟可能并不正常。如果不需要提供的遥测,请设置 hw:pmu=False

实例 CPU 拓扑

使用下表中的属性键定义实例中处理器的拓扑。

Expand
表 9.10. CPU 拓扑的类别元数据
描述

hw:cpu_sockets

指定实例的首选插槽数。

默认:请求的 vCPU 数量

hw:cpu_cores

指定实例的每个插槽的首选内核数。

默认: 1

hw:cpu_threads

指定实例每个内核的首选线程数量。

默认: 1

hw:cpu_max_sockets

使用镜像属性指定用户可以为其实例选择的最大插槽数。

示例: hw:cpu_max_sockets=2

hw:cpu_max_cores

指定用户可以使用镜像属性为每个插槽选择的最大内核数。

hw:cpu_max_threads

指定每个内核可使用镜像属性为实例选择的最大线程数。

串行端口

使用下表中的 property key 来配置每个实例的串行端口数量。

Expand
表 9.11. 串行端口的类别元数据
描述

hw:serial_port_count

每个实例的最大串行端口。

CPU 固定策略

默认情况下,实例虚拟 CPU (vCPU)是带有一个核心和一个线程的套接字。您可以使用属性创建将实例 vCPU 固定到主机的物理 CPU 内核(pCPU)的类别。您还可以在并发多线程(SMT)架构中配置硬件 CPU 线程行为,其中一个或多个内核有线程同级。

使用下表中的属性键来定义实例的 CPU 固定策略。

Expand
表 9.12. CPU 固定的类别元数据
描述

hw:cpu_policy

指定要使用的 CPU 策略。设置为以下有效值之一:

  • 共享 :(默认)主机 pCPU 之间的实例 vCPU 浮点值。
  • 专用 :将实例 vCPU 固定到一组主机 pCPU。这会创建一个实例 CPU 拓扑,它与实例固定到的 CPU 拓扑匹配。这个选项意味着 1.0 的过量使用比率。

hw:cpu_thread_policy

指定在 hw:cpu_policy=dedicated 时使用的 CPU 线程策略。设置为以下有效值之一:

  • prefer: (默认)主机可能或可能没有 SMT 架构。如果存在 SMT 架构,计算调度程序会优先选择线程同级数据。
  • 隔离 :主机不能有 SMT 架构,或者必须模拟非SMT 构架。此策略通过请求不报告 HW_CPU_HYPERTHREADING 特征的主机来确保计算调度程序将实例放置到没有 SMT 的主机上。您还可以使用以下属性显式请求这个特征:

    --property trait:HW_CPU_HYPERTHREADING=forbidden

    如果主机没有 SMT 架构,则 Compute 服务会如预期将每个 vCPU 放置到不同的内核中。如果主机有 SMT 架构,则行为由 [workarounds]/disable_fallback_pcpu_query 参数的配置决定:

    • true :不使用 SMT 架构的主机,调度会失败。
    • :计算服务将每个 vCPU 放置到不同的物理内核中。计算服务不会将其他实例的 vCPU 放置到同一核心上。因此,保证在每个使用的内核上同级一个线程都不可用。
  • require: 主机必须具有 SMT 架构。此策略确保计算调度程序通过请求报告 HW_CPU_HYPERTHREADING 特征的主机,将实例放置到带有 SMT 的主机上。您还可以使用以下属性显式请求这个特征:

    --property trait:HW_CPU_HYPERTHREADING=required

    计算服务在线程同级上分配每个 vCPU。如果主机没有 SMT 架构,则不使用它。如果主机有 SMT 架构,但没有足够内核,且有可用线程同级内核,则调度会失败。

实例 PCI NUMA 关联性策略

使用下表中的 property key 创建类别,以指定 PCI 透传设备和 SR-IOV 接口的 NUMA 关联性策略。

Expand
表 9.13. PCI NUMA 关联性策略的类别元数据
描述

hw:pci_numa_affinity_policy

指定 PCI 透传设备和 SR-IOV 接口的 NUMA 关联性策略。设置为以下有效值之一:

  • 必需 :计算服务创建一个实例,该实例仅当实例的其中一个 NUMA 节点与 PCI 设备关联时才会请求 PCI 设备。这个选项提供最佳性能。
  • preferred :计算服务会尝试根据 NUMA 关联性选择 PCI 设备。如果不可能,计算服务将实例调度到没有与 PCI 设备关联性的 NUMA 节点上。
  • 传统 :(默认)计算服务在以下情况下创建请求 PCI 设备的实例:

    • PCI 设备与至少一个 NUMA 节点的关联。
    • PCI 设备不提供有关其 NUMA 关联性的信息。

实例 NUMA 拓扑

您可以使用属性创建类别,以定义实例 vCPU 线程的主机 NUMA 放置,以及从主机 NUMA 节点分配实例 vCPU 和内存。

为实例定义 NUMA 拓扑可提高实例操作系统的性能,其内存和 vCPU 分配会大于计算主机中的 NUMA 节点的大小。

计算调度程序使用这些属性来确定适合实例的主机。例如,云用户使用以下类型启动一个实例:

$ openstack flavor set numa_top_flavor \
  --property hw:numa_nodes=2 \
  --property hw:numa_cpus.0=0,1,2,3,4,5 \
  --property hw:numa_cpus.1=6,7 \
  --property hw:numa_mem.0=3072 \
  --property hw:numa_mem.1=1024

计算调度程序搜索有两个 NUMA 节点的主机,一个有 3GB RAM,另一个运行 6 个 CPU,另一个具有 1GB RAM 和两个 CPU。如果主机只有一个 NUMA 节点,其能力运行 8 个 CPU 和 4GB RAM,则计算调度程序不会将其视为有效的匹配。

注意

由类别定义的 NUMA 拓扑不能被镜像定义的 NUMA 拓扑覆盖。如果镜像 NUMA 拓扑与类别 NUMA 拓扑冲突,计算服务会引发 ImageNUMATopologyForbidden 错误。

Important

您不能使用此功能将实例限制到特定的主机 CPU 或 NUMA 节点。只有在完成广泛的测试和性能测量后,才使用此功能。您可以使用 hw:pci_numa_affinity_policy 属性。

使用下表中的属性键来定义实例 NUMA 拓扑。

Expand
表 9.14. NUMA 拓扑的类别元数据
描述

hw:numa_nodes

指定将实例 vCPU 线程的执行限制为的主机 NUMA 节点数量。如果没有指定,vCPU 线程可以在任意数量的可用主机 NUMA 节点上运行。

hw:numa_cpus.N

映射到实例 NUMA 节点 N 的实例 vCPU 列表。如果没有指定此密钥,则 vCPU 会平均划分到可用的 NUMA 节点。

N 从 0 开始。请谨慎使用 3.0.N 值,只有在至少有两个 NUMA 节点时才使用。

只有在设置了 hw:numa_nodes 并且只有实例的 NUMA 节点有非对称分配 CPU 和 RAM (对于某些 NFV 工作负载很重要)时才需要此属性有效。

hw:numa_mem.N

映射到实例 NUMA 节点 N 的实例内存数量。如果没有指定这个键,则会在可用的 NUMA 节点之间平均划分内存。

N 从 0 开始。请谨慎使用 3.0.N 值,只有在至少有两个 NUMA 节点时才使用。

只有在设置了 hw:numa_nodes 并且只有实例的 NUMA 节点有非对称分配 CPU 和 RAM (对于某些 NFV 工作负载很重要)时才需要此属性有效。

警告

如果 hw:numa_cpus.Nhw:numa_mem.N 的组合值分别大于 CPU 或内存的数量,则计算服务会引发异常。

CPU 实时策略

使用下表中的属性键定义实例中处理器的实时策略。

注意
  • 虽然大多数实例 vCPU 可使用实时策略运行,但您必须将至少一个 vCPU 标记为非实时客户机进程和仿真程序开销进程。
  • 要使用这个额外规格,您必须启用固定的 CPU。
Expand
表 9.15. CPU 实时策略的类别元数据
描述

hw:cpu_realtime

设置为 yes,以创建将实时策略分配给实例 vCPU 的类别。

默认: no

hw:cpu_realtime_mask

指定不为其分配实时策略的 vCPU。您必须使用符号(^)添加掩码值。以下示例显示除 vCPU 0 和 1 外的所有 vCPU 都有实时策略:

$ openstack flavor set <flavor> \
 --property hw:cpu_realtime="yes" \
 --property hw:cpu_realtime_mask=^0-1
注意

如果镜像上设置了 hw_cpu_realtime_mask 属性,则它优先于类别上设置的 hw:cpu_realtime_mask 属性。

仿真程序线程策略

您可以为实例分配一个用于仿真程序线程的 pCPU。仿真程序线程是不与实例直接相关的仿真程序进程。实时工作负载需要专用仿真程序线程 pCPU。要使用仿真程序线程策略,您必须通过设置以下属性来启用固定的 CPU:

--property hw:cpu_policy=dedicated

使用下表中的 property 键来定义实例的仿真程序线程策略。

Expand
表 9.16. 仿真程序线程策略的类别元数据
描述

hw:emulator_threads_policy

指定用于实例的仿真程序线程策略。设置为以下有效值之一:

  • 共享 :仿真程序线程浮点值在 NovaComputeCpuSharedSet heat 参数中定义的 pCPUs。如果没有配置 NovaComputeCpuSharedSet,则与实例关联的固定 CPU 中的仿真程序线程浮点数。
  • 隔离 :为仿真程序线程为每个实例保留额外的专用 pCPU。请谨慎使用此策略,因为它会禁止资源密集型。
  • unset :(默认)仿真程序线程策略没有启用,在与实例关联的固定 CPU 之间仿真程序线程浮点值。

实例内存页面大小

使用下表中的属性键,创建具有显式内存页面大小的实例。

Expand
表 9.17. 内存页面大小的类别元数据
描述

hw:mem_page_size

指定用于支持实例的大页大小。使用此选项会创建 1 NUMA 节点的隐式 NUMA 拓扑,除非被 hw:numa_nodes 指定。设置为以下有效值之一:

  • large :选择大于主机上支持的最小页大小的页大小(在 x86_64 上可以是 2 MB 或 1 GB)。
  • Small :选择主机上支持的最小页面大小。在 x86_64 系统中,这是 4 kB (常规页面)。
  • 任何 :选择最大可用巨页大小,由 libvirt 驱动程序决定。
  • <pagesize>:如果工作负载具有特定要求,明确设置页的大小。使用整数值(以 KB 为单位)或任何标准后缀。例如: 4KB2MB20481GB
  • unset :(默认)大页不用于支持实例,且不会生成隐式 NUMA 拓扑。

PCI 透传

使用下表中的 property key 将物理 PCI 设备(如图形卡或网络设备)附加到实例。有关使用 PCI 透传的更多信息,请参阅配置 PCI 透传

Expand
表 9.18. PCI 透传的类别元数据
描述

pci_passthrough:alias

使用以下格式指定要分配给实例的 PCI 设备:

<alias>:<count>
  • < alias> 替换为与特定 PCI 设备类对应的别名。
  • <count > 替换为分配给实例的 &lt ;alias& gt; 类型的 PCI 设备数。

hypervisor 签名

使用下表中的 property key 从实例隐藏管理程序签名。

Expand
表 9.19. 用于隐藏虚拟机监控程序签名的类别元数据
描述

hide_hypervisor_id

设置为 True 以隐藏实例的虚拟机监控程序签名,以允许所有驱动程序在实例上加载和工作。

UEFI 安全引导

使用下表中的 property key 创建使用 UEFI 安全引导保护的实例。

注意

带有 UEFI 安全引导的实例必须支持 UEFI 和 GUID 分区表(GPT)标准,并包括一个 EFI 系统分区。

Expand
表 9.20. UEFI 安全引导的类别元数据
描述

os:secure_boot

设置为 required,以便为使用此类别启动的实例启用安全引导。默认禁用此选项。

实例资源特征

每个资源提供程序都有一组特征。特征是资源提供程序的定性方面,例如存储磁盘类型或 Intel CPU 指令集扩展。实例可以指定它需要的特征。

可以指定的特征在 os-traits 库中定义。特征示例包括:

  • COMPUTE_TRUSTED_CERTS
  • COMPUTE_NET_ATTACH_INTERFACE_WITH_TAG
  • COMPUTE_IMAGE_TYPE_RAW
  • HW_CPU_X86_AVX
  • HW_CPU_X86_AVX512VL
  • HW_CPU_X86_AVX512CD

有关如何使用 os-traits 库的详情,请参考 https://docs.openstack.org/os-traits/latest/user/index.html

使用下表中的 property 键来定义实例的资源特征。

Expand
表 9.21. 资源特征的类别元数据
描述

trait:<trait_name>

指定 Compute 节点特征。将 trait 设置为以下有效值之一:

  • 必需 :选择托管实例的 Compute 节点必须具有特征。
  • 禁止 :选择托管实例的 Compute 节点不能具有特征。

例如:

$ openstack flavor set --property trait:HW_CPU_X86_AVX512BW=required avx512-flavor

实例裸机资源类

使用下表中的 property key 为实例请求裸机资源类。

Expand
表 9.22. 裸机资源类的类别元数据
描述

resources:<resource_class_name>

使用此属性指定标准裸机资源类来覆盖实例所需的自定义裸机资源类。

您可以覆盖的标准资源类是 VCPUMEMORY_MBDISK_GB。为防止计算调度程序使用裸机类别属性来调度实例,请将标准资源类的值设为 0

自定义资源类的名称必须以 CUSTOM_ 开头。要确定与 Bare Metal 服务节点的资源类型对应的自定义资源类的名称,请将资源类转换为大写,请将所有标点替换为下划线,并将 prefix 替换为 CUSTOM_。

例如,要在具有 -resource-class baremetal.SMALL 的节点上调度实例,请创建以下类别:

$ openstack flavor set \
 --property resources:CUSTOM_BAREMETAL_SMALL=1 \
 --property resources:VCPU=0 --property resources:MEMORY_MB=0 \
 --property resources:DISK_GB=0 compute-small
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部