搜索

7.4. 计算调度程序权重

download PDF

每个 Compute 节点都有一个权重,调度程序可以使用它来优先调度实例。在计算调度程序应用过滤器后,它会从剩余的候选 Compute 节点中选择具有最大权重的 Compute 节点。

计算调度程序通过执行以下任务来确定每个 Compute 节点的权重:

  1. 调度程序将每个权重规范化为 0.0 到 1.0 之间的值。
  2. 调度程序将规范化权重乘以 weigher multiplier。

计算调度程序通过使用候选 Compute 节点内资源可用性的下半值来计算每种资源类型的权重规范化:

  • 资源可用性最低的节点(minval)被分配为 '0'。
  • 资源可用性最高的节点(maxval)被分配为 '1'。
  • minval - maxval 范围内具有资源可用性的节点分配使用以下公式计算的规范化权重:

    (node_resource_availability - minval) / (maxval - minval)

如果所有 Compute 节点都有相同的资源可用性,则它们都会规范化为 0。

例如,调度程序计算 10 个 Compute 节点间可用 vCPU 的规范化权重,每个都有不同数量的可用 vCPU,如下所示:

Compute 节点

1

2

3

4

5

6

7

8

9

10

没有 vCPU

5

5

10

10

15

20

20

15

10

5

规范化权重

0

0

0.33

0.33

0.67

1

1

0.67

0.33

0

计算调度程序使用以下公式来计算 Compute 节点的权重:

(w1_multiplier * norm(w1)) + (w2_multiplier * norm(w2)) + ...

下表描述了可用于权重的配置选项。

注意

可以使用与下表中详述的选项相同的聚合元数据键在主机聚合上设置权重。如果在主机聚合上设置,主机聚合值将具有优先权。

表 7.2. 计算调度程序权重
配置选项类型描述

filter_scheduler/weight_classes

字符串

使用此参数配置以下哪些属性用于计算每个 Compute 节点的权重:

  • nova.scheduler.weights.ram.RAMWeigher - 权衡 Compute 节点上的可用 RAM。
  • nova.scheduler.weights.cpu.CPUWeigher - 权衡 Compute 节点上的可用 CPU。
  • nova.scheduler.weights.disk.DiskWeigher - 权衡 Compute 节点上的可用磁盘。
  • nova.scheduler.weights.metrics.MetricsWeigher - 权衡 Compute 节点的指标。
  • nova.scheduler.weights.affinity.ServerGroupSoftAffinityWeigher - 将 Compute 节点的概率增加到给定实例组中的其他节点。
  • nova.scheduler.weights.affinity.ServerGroupSoftAntiAffinityWeigher - 将 Compute 节点的概率增加到给定实例组中的其他节点。
  • nova.scheduler.weights.compute.BuildFailureWeigher - Weighs Compute 节点的数量,最近失败的引导尝试次数。
  • nova.scheduler.weights.io_ops.IoOpsWeigher - 根据工作复制为 Compute 节点加权重。
  • nova.scheduler.weights.pci.PCIWeigher - 按其 PCI 可用性计算 Compute 节点。
  • nova.scheduler.weights.cross_cell.CrossCellWeigher - 基于它们所在的单元,在移动实例时优先使用源单元格中的 Compute 节点。
  • nova.scheduler.weights.all_weighers -(Default)使用上述所有 weighers。

filter_scheduler/ram_weight_multiplier

浮点

使用此参数指定基于可用 RAM 的 eigh 主机的倍数。

设置为正值,以首选具有更多可用 RAM 的主机,这会将实例分散到多个主机。

设置为负值,以首选使用较少可用 RAM 的主机,这会尽可能填充(堆栈)主机,然后再调度到较早使用的主机。

绝对值(无论是正还是负值)控制 RAM weigher 相对于其他 Weighers 的强度量。

Default: 1.0 - 调度程序均匀地将实例分散到所有主机中。

filter_scheduler/disk_weight_multiplier

 浮点

使用此参数根据可用磁盘空间指定用于 weigh 主机的倍数。

设置为正值,以首选具有更多可用磁盘空间的主机,这会将实例分散到多个主机。

设置为负值,以首选使用较少的可用磁盘空间的主机,这会尽可能填充(stacks)主机,然后再调度到较早使用的主机。

绝对值(无论是正还是负值)控制磁盘我们相对于其他 Weighers 的强度程度。

Default: 1.0 - 调度程序均匀地将实例分散到所有主机中。

filter_scheduler/cpu_weight_multiplier

 浮点

使用此参数根据可用的 vCPU 指定用于 weigh 主机的倍数。

设置为正值,以首选具有更多可用 vCPU 的主机,这会将实例分散到多个主机。

设置为负值,以首选具有较少可用 vCPU 的主机,这将尽可能填充(堆栈)主机,然后再调度到较早使用的主机。

绝对值(无论是正还是负)控制 vCPU weigher 相对于其他 Weighers 的强度。

Default: 1.0 - 调度程序均匀地将实例分散到所有主机中。

filter_scheduler/io_ops_weight_multiplier

 浮点

使用此参数指定基于主机负载的 eigh 主机的倍数。

设置为负值,以首选将工作负载分布到更多主机的主机。

设置为正数值,以首选具有更高工作负载的主机,这会将实例调度到已经忙碌的主机上。

绝对值(无论是正还是负)控制 I/O 操作相对于其他 Weighers 的强度。

Default: -1.0 - 调度程序在更多主机间分发工作负载。

filter_scheduler/build_failure_weight_multiplier

浮点

使用此参数指定根据最近的构建失败,用于 weigh 主机的倍数。

设置为正值,以增加主机最近报告的构建故障的意义。然后,选择构建失败的主机不太可能被选择。

设置为 0, 以禁用受最近故障数的计算主机。

默认: 1000000.0

filter_scheduler/cross_cell_move_weight_multiplier

浮点

使用此参数指定跨移动期间用于 weigh 主机的倍数。此选项决定了在移动实例时放入相同源单元的主机上放置了多少权重。默认情况下,调度程序在迁移实例时优先选择同一源单元中的主机。

设置为正值,以首选实例当前运行的同一单元中的主机。设置为负值,以首选位于实例当前运行的不同单元格中的主机。

默认: 1000000.0

filter_scheduler/pci_weight_multiplier

正浮动点

使用此参数指定根据主机上的 PCI 设备数量以及实例请求的 PCI 设备数量,以权衡主机的倍数。如果实例请求 PCI 设备,则 Compute 节点越多的 PCI 设备越高,权重越高。

例如,如果存在三个可用的主机,一个主机只有一个 PCI 设备,一个具有多个 PCI 设备,一个没有 PCI 设备,则计算调度程序会根据实例的需求来优先选择这些主机。如果实例请求一个 PCI 设备,调度程序应优先选择第一个主机,如果实例请求一个 PCI 设备,则第二个主机如果实例请求了 PCI 设备,则第二个主机是第三个主机。

配置这个选项,以防止非 PCI 实例使用 PCI 设备在主机上占用资源。

Default: 1.0

filter_scheduler/host_subset_size

整数

使用此参数指定要选择主机的过滤主机子集的大小。您必须将这个选项设置为至少 1。1 代表选择由权重函数返回的第一个主机。调度程序忽略小于 1 的任何值,而是使用 1。

设置为大于 1 的值,以防止多个调度程序处理选择同一主机的类似请求,从而造成潜在的竞争条件。从最适合请求的 N 主机中随机选择主机,从而降低冲突的可能性。但是,您设置这个值越高,所选主机对于给定请求可能的最佳选择。

默认:1

filter_scheduler/soft_affinity_weight_multiplier

正浮动点

使用此参数指定用于 weigh 主机进行组软关联性的倍数。

注意

在创建具有此策略的组时,您需要指定 microversion:

$ openstack --os-compute-api-version 2.15 server group create --policy soft-affinity <group_name>

Default: 1.0

filter_scheduler/soft_anti_affinity_weight_multiplier

正浮动点

使用此参数指定用于 weigh 主机组 soft-anti-affinity 的倍数。

注意

在创建具有此策略的组时,您需要指定 microversion:

$ openstack --os-compute-api-version 2.15 server group create --policy soft-affinity <group_name>

Default: 1.0

metrics/weight_multiplier

浮点

使用此参数指定用于权重指标的倍数。默认情况下,weight_multiplier=1.0,这会将实例分散到可能的主机上。

设置为大于 1.0 的数字,以提高指标对总体权重的影响。

设置为 0.0 和 1.0 之间的数字,以减少指标对整体权重的影响。

设置为 0.0 以忽略指标值,并返回 weight_of_unavailable 选项的值。

设置为负数,以优先选择具有较低指标的主机以及主机中的堆栈实例。

Default: 1.0

metrics/weight_setting

以逗号分隔的 metric=ratio 对列表

使用此参数指定用于权重的指标,以及用于计算每个指标的权重的比率。有效的指标名称:

  • cpu.frequency - CPU 频率
  • cpu.user.time - CPU 用户模式时间
  • cpu.kernel.time - CPU 内核时间
  • cpu.idle.time - CPU 空闲时间
  • cpu.iowait.time - CPU I/O 等待时间
  • cpu.user.percent - CPU 用户模式百分比
  • cpu.kernel.percent - CPU 内核百分比
  • cpu.idle.percent - CPU 空闲百分比
  • cpu.iowait.percent - CPU I/O 等待百分比
  • cpu.percent - Generic CPU 使用

示例: weight_setting=cpu.user.time=1.0

metrics/必需

布尔值

使用此参数指定如何处理不可用的已配置的 metrics/weight_setting 指标:

  • true - 需要指标。如果指标不可用,则会引发异常。要避免异常,请使用 NovaSchedulerEnabledFilters 中的 MetricsFilter 过滤器。
  • False - 不可用的指标在 weighing 进程中被视为一个负因素。使用 weight_of_unavailable 配置选项设置返回的值。

metrics/weight_of_unavailable

浮点

如果有任何 metrics/weight_setting 指标不可用,则使用此参数指定要使用的权重,以及 metrics/required=False

默认: -10000.0

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.