搜索

3.3. 类型元数据

download PDF

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

实例资源使用量

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

注意

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

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

表 3.3. 资源使用情况的类别元数据
描述

quota:cpu_shares

指定域的 CPU 时间成比例权重共享。默认为 OS 提供的默认值。计算调度程序相对于同一域中的其他实例上设置此属性的计算调度程序。例如,使用 quota:cpu_shares=2048 配置的实例会加倍 CPU 时间作为使用 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 以相同的速度运行。例如,您可以使用以下类别来启动最多可消耗的物理 CPU 能力 50% 的实例:

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

实例磁盘调整

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

注意

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

表 3.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

指定 IOPS 中可用于实例的最大 I/O 操作。

实例网络流量带宽

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

注意

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

表 3.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 键配置实例 RAM 的限值,以用于视频设备。

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

hw_video:ram_max_mb

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

watchdog 行为

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

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

hw:watchdog_action

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

设置为以下有效值之一:

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

    注意

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

随机数字生成器(RNG)

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

表 3.8. RNG 的类别元数据
描述

hw_rng:allowed

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

Default: True

hw_rng:rate_bytes

指定实例在每个期间可以从主机的熵读取的最大字节数。

hw_rng:rate_period

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

虚拟性能监控单元(vPMU)

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

表 3.9. vPMU 的类别元数据
描述

hw:pmu

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

perf 等工具使用实例上的 vPMU 来为配置集和监控实例性能提供更准确的信息。对于实时工作负载,vPMU 的模拟可能会带来额外的延迟,这可能会不可靠。如果它提供的遥测不需要,请设置 hw:pmu=False

虚拟受信任的平台模块(vTPM)设备

使用下表中的属性键为实例启用 vTPM 设备。

表 3.10. vTPM 的类别元数据
描述

hw:tpm_version

设置为要使用的 TPM 版本。TPM 版本 2.0 是唯一受支持的版本。

hw:tpm_model

设置为要使用的 TPM 设备模型。如果没有配置 hw:tpm_version,则忽略。设置为以下有效值之一:

  • TPM -tis: (默认) TPM 接口规格。
  • TPM-crb :命令响应缓冲.仅与 TPM 版本 2.0 兼容。

实例 CPU 拓扑

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

表 3.11. 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 键来配置每个实例的串行端口数量。

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

hw:serial_port_count

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

CPU 固定策略

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

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

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

hw:cpu_policy

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

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

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 架构的主机,调度会失败。
    • false :计算服务将每个 vCPU 放置到不同的物理内核中。Compute 服务不会将来自其他实例的 vCPU 放置到同一内核中。因此,每个使用的内核中有一个线程同级状态都保证不可用。
  • require: 主机必须具有 SMT 架构。此策略确保计算调度程序通过请求报告 HW_CPU_HYPERTHREADING 特征的主机,将实例放置到带有 SMT 的主机。也可以使用以下属性显式请求此特征:

    --property trait:HW_CPU_HYPERTHREADING=required

    Compute 服务在线程同级时分配每个 vCPU。如果主机没有 SMT 架构,则不会使用它。如果主机具有 SMT 架构,但没有足够的空闲线程同级内核可用,则调度会失败。

hw:cpu_dedicated_mask

指定专用(固定)或共享(未固定/浮动)的 CPU。

  • 要指定专用 CPU,请指定 CPU 号或 CPU 范围。例如,将 属性设置为 2-3,以指定 CPU 2 和 3 专用,并且所有剩余的 CPU 都共享。
  • 要指定共享 CPU,请在 CPU 号或 CPU 范围前加上一个 caret (^)。例如,将 属性设置为 ^0-1,以指定 CPU 0 和 1 被共享,并且所有剩余的 CPU 都专用。

实例 PCI NUMA 关联性策略

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

表 3.14. 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 节点与 PCI 设备相同的主机套接字中的 NUMA 节点关联时,才会请求 PCI 设备。例如,以下主机架构有两个套接字,每个套接字有两个 NUMA 节点,而 PCI 设备则连接到其中一个套接字中的一个节点。

    与 PCI 设备相同的主机套接字中的 NUMA 节点关联性

    计算服务可以将有两个 NUMA 节点和 套接字 PCI NUMA 关联性策略的实例固定到主机节点的以下组合,因为它们都至少有一个实例 NUMA 节点固定到 PCI 设备的套接字:

    • 节点 0 和节点 1
    • 节点 0 和节点 2
    • 节点 0 和节点 3
    • 节点 1 和节点 2
    • 节点 1 和节点 3

    实例无法固定到的主机节点的唯一组合是节点 2 和节点 3,因为这些节点都与 PCI 设备位于同一个套接字上。如果其他节点被其他实例使用,且只有节点 2 和 3 可用,则实例不会启动。

实例 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 拓扑冲突,Compute 服务会引发 ImageNUMATopologyForbidden 错误。

小心

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

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

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

hw:numa_nodes

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

hw:numa_cpus.N

以逗号分隔的实例 vCPU 列表,映射到实例 NUMA 节点 N。如果没有指定此密钥,则 vCPU 在可用的 NUMA 节点之间平均划分。

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

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

hw:numa_mem.N

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

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

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

警告

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

CPU 实时策略

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

注意
  • 虽然大多数实例 vCPU 都可以使用实时策略运行,但您必须将至少一个 vCPU 标记为非实时客户端进程和仿真程序开销进程。
  • 要使用这个额外规格,您必须启用固定 CPU。
表 3.16. 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 键来定义实例的仿真程序线程策略。

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

hw:emulator_threads_policy

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

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

实例内存页面大小

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

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

hw:mem_page_size

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

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

PCI passthrough

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

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

pci_passthrough:alias

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

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

hypervisor 签名

使用下表中的 property 键从实例中隐藏 hypervisor 签名。

表 3.20. 用于隐藏管理程序签名的类别元数据
描述

hide_hypervisor_id

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

UEFI 安全引导

使用下表中的 property 键创建一个通过 UEFI 安全引导保护的实例。

注意

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

表 3.21. 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 键来定义实例的资源特征。

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

trait:<trait_name>

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

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

例如:

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

实例裸机资源类

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

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

resources:<resource_class_name>

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

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

自定义资源类的名称必须以 CUSTOM_ 开头。要确定与 Bare Metal 服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,将所有标点替换为下划线,并将前缀替换为 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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

© 2024 Red Hat, Inc.