改进计算数据模型

https://blueprints.launchpad.net/watcher/+spec/improve-compute-data-model

问题描述

Watcher ComputeNode 中的字段(vcpus、memory 和 disk_capacity)对应于 Nova API list-hypervisors-details 中的字段(vcpus、memory_mb 和 local_gb)。不幸的是,这些字段没有考虑用于超卖的分配比例,因此可能与已用数量存在差异。

用例

作为 Watcher 用户,我希望 Watcher 能够在超卖资源(cpu、memory 和 disk)的情况下正确工作。

提议的变更

现在 Watcher 已经添加了 Placement helper。Watcher 可以从 API list resource provider inventories 获取资源信息,例如总量、分配比例和保留信息。

Watcher ComputeNode

我们需要在 Watcher ComputeNode 中添加一些字段

  • vcpu_reserved:节点为其自身保留的 cpu 数量。

  • vcpu_ratio:CPU 分配比例。

  • memory_mb_reserved:节点为其自身保留的 memory 数量。

  • memory_ratio:Memory 分配比例。

  • disk_gb_reserved:节点为其自身保留的 disk 数量。

  • disk_ratio:Disk 分配比例。

我们可以通过总量、保留量和分配比例来计算总资源容量。

公式:vcpu 容量 = (vcpus-vcpu_reserved)*vcpu_ratio

例如,对于 vcpu 资源,

vcpus = 8
vcpu_reserved = 2
vcpu_ratio = 5.0

vcpu 容量为 (8 - 2) * 5.0 = 30。

我们还向 Watcher ComputeNode 添加一些新的属性

  • vcpu_capacity:vcpu 的数量,考虑分配比例,但不包括保留量。

  • memory_mb_capacity:memory 的数量,考虑分配比例,但不包括保留量。

  • disk_gb_capacity:disk 的数量,考虑分配比例,但不包括保留量。

计算数据模型

CDM(计算数据模型)将在创建审计时构建,并在接收 Nova 通知时更新。因此,在构建和更新 CDM 时,我们需要从 Placement API 获取资源信息。

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

licanwei

工作项

  • 向 Watcher ComputeNode 添加新字段

  • 更新计算收集器

  • 更新关于 Nova 通知处理

依赖项

测试

添加单元测试

文档影响

参考资料

https://developer.openstack.org/api-ref/compute/

https://developer.openstack.org/api-ref/placement/

历史

修订版

发布名称

描述

Train

引入