节能策略

概要

显示名称: 节能 策略

目标: saving_energy

节能策略

描述

节能策略与虚拟机工作负载整合策略可以执行动态电源管理 (DPM) 功能,该功能尝试通过在资源利用率低迷时期进一步动态整合工作负载来节省电力。虚拟机迁移到更少的宿主机上,未使用的宿主机将被关闭。

整合后,节能策略会根据以下详细策略生成电源开启/关闭解决方案

在此策略中,用户提供一个预设数字(min_free_hosts_num),该 min_free_hosts_num 描述了用户期望拥有的最小空闲计算节点数量,其中“空闲计算节点”指的是未使用但仍处于开启状态的节点。

如果实际的未使用节点数量(处于开启状态)大于给定的数字,则随机选择冗余节点并关闭它们;如果实际的未使用节点数量(处于开启状态)小于给定的数字并且存在备用的未使用节点(处于关闭状态),则随机选择一些节点(未使用,关闭)并开启它们。

需求

在此策略中,为了计算 min_free_hosts_num,用户必须提供两个参数

  • 一个参数(“min_free_hosts_num”)是一个常量整数。该数字应为整数类型且大于零。

  • 另一个参数(“free_used_percent”)是一个百分比数字,它描述了 min_free_hosts_num/nodes_with_VMs_num 的商,其中 nodes_with_VMs_num 是运行虚拟机的节点数量。该参数用于计算动态 min_free_hosts_num。 具有虚拟机的节点指的是在其上运行虚拟机的节点。

然后选择较大的一个作为最终的 min_free_hosts_num。

Limitations

  • 至少 2 台物理计算宿主机

Spec URL

https://specs.openstack.org/openstack/watcher-specs/specs/2025.2/implemented/energy-saving-strategy.html

需求

此功能将使用 Ironic 来执行电源开启/关闭操作,因此此功能要求配置 ironic 组件。并且计算节点应由 Ironic 管理。

Ironic 安装: https://docs.openstack.org/ironic/2025.2/install/index.html

集群数据模型

默认 Watcher 的计算集群数据模型

Nova 集群数据模型收集器

Nova 集群数据模型收集器创建了计算服务暴露的资源的内存表示。

行动

动作

description

change_node_power_state

计算节点电源开启/关闭

通过使用此操作,您将能够开启/关闭计算节点的电源。

动作模式是

schema = Schema({
 'resource_id': str,
 'state': str,
})

resource_id 引用一个裸机节点 ID(此命令返回可用 ironic 节点的列表:ironic node-list)。state 值应为 onoff

规划器

默认 Watcher 的规划器

权重规划器实现

此实现根据权重构建具有父级的动作。权重较高的动作集将在其他动作之前被调度。有 2 个配置选项可以配置:action_weights 和 parallelization。

Limitations

  • 此规划器需要对 action_weights 和 parallelization 配置进行良好的调整。

配置

策略参数是

参数

type

默认值

description

free_used_percent

数字

10.0

一个有理数,描述了 min_free_hosts_num/nodes_with_VMs_num 的商

min_free_hosts_num

Int

1

一个整数,描述最小的空闲计算节点数量

效能指标

算法

有关节能策略的更多信息,请参阅:https://specs.openstack.org/openstack/watcher-specs/specs/2025.2/implemented/energy-saving-strategy.html

如何使用它?

步骤 1:将计算节点信息添加到 ironic 节点管理

$ ironic node-create  -d pxe_ipmitool -i ipmi_address=10.43.200.184 \
  ipmi_username=root  -i ipmi_password=nomoresecret -e compute_node_id=3

步骤 2:创建审计以进行优化

$ openstack optimize audittemplate create \
  saving_energy_template1 saving_energy --strategy saving_energy

$ openstack optimize audit create -a saving_energy_audit1 \
  -p free_used_percent=20.0