向放置服务报告 CPU 特性¶
https://blueprints.launchpad.net/nova/+spec/report-cpu-features-as-traits
放置服务已经支持 Traits。所有计算节点的capabilities都应该使用 Traits API 报告给放置服务。本规范建议使用 Traits API 向放置服务报告计算节点的 CPU 特性。
问题描述¶
目前 Nova 支持基于计算节点的 CPU 特性调度实例,但目前还不够完善。
所有虚拟驱动程序中 CPU 特性的命名不一致,这导致操作员的配置不一致。
每个计算节点的 CPU 特性存储在
compute_nodesDB 表的 JSON-BLOB 中。因此,无法有效地查询具有特定 CPU 特性的计算节点。Flavor extra spec capabilities 将 CPU 特性和其他内容混合在一起,并且依赖于虚拟驱动程序。
用例¶
最终用户期望无论云使用哪种虚拟驱动程序,CPU 特性的命名都应该是标准且一致的。
最终用户期望以一致的方式请求 CPU 特性的capabilities。
提议的变更¶
建议计算节点应使用 Traits API 将 CPU 特性报告给放置服务。CPU 特性应映射到 os-traits 库中定义的 CPU traits。
然后管理员可以在 extra spec traits 中为每个 flavor 定义所需的 traits
openstack flavor set 1 --property trait:HW_CPU_X86_AVX=required --property trait:HW_CPU_X86_AVX2=required
以上命令将两个 CPU 特性设置为 flavor 所需。这意味着启动该 flavor 的任何服务器都将被调度到具有 CPU 特性 avx 和 avx2 的计算节点。
备选方案¶
如果只是保留基于 CPU 特性调度实例的旧方法,那么云互操作性上没有任何改进。
数据模型影响¶
无
REST API 影响¶
没有 API 变更,并将原始 CPU 特性报告保留到 DB 表 compute_nodes 中,以保持 /os-hypervisors API 的向后兼容性。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
最终用户应使用 flavor 中的 extra spec traits 而不是 extra spec capabilities:cpu_info:features 来定义所需的 CPU 特性。
性能影响¶
无
其他部署者影响¶
一旦所有虚拟驱动程序都使用 traits 一致地报告 CPU 特性,就可以弃用并删除 ComputeCapabilitiesFilter。
开发人员影响¶
无
升级影响¶
无
实现¶
每个虚拟驱动程序应将 CPU traits 附加到计算节点的资源提供程序中,方法是使用 update_provider_tree() 方法。
Libvirt¶
配置选项 CONF.libvirt.cpu_mode 和 CONF.libvirt.cpu_model 可以更改暴露给 guest 的 CPU 特性。libvirt 虚拟驱动程序应仅返回可供 guest 使用的 CPU 特性。
报告的 CPU 特性基于 guest CPU 模型。CPU 模型将由下表确定
+-----------------------+------------------------+------------------+
| CONF.libvirt.cpu_mode | CONF.libvirt.cpu_model | Guest CPU model |
+-----------------------+------------------------+------------------+
| none | N/A | qemu64 |
| host-model | N/A | host cpu model |
| host-passthrough | N/A | host cpu model |
| custom | custom cpu model | custom cpu model |
+-----------------------+------------------------+------------------+
对于 libvirt 虚拟驱动程序,可以使用 virConnectBaselineCPU libvirt API 调用来查询 CPU 模型并将模型转换为 CPU 特性。其他虚拟驱动程序可以使用其虚拟 API 中的类似调用来确定 CPU 特性。
其他虚拟驱动程序没有相同的配置。对于其他虚拟驱动程序,它们将报告 CPU traits,方式与当前相同。
负责人¶
- 主要负责人
Alex Xu <hejie.xu@intel.com>
- 其他贡献者
Lei Zhang <lei.a.zhang@intel.com>
工作项¶
实现一个接口,该接口返回每个虚拟驱动程序中 CPU 特性的 traits 列表。
在 update_provider_tree() 方法中实现将 CPU traits 报告给计算节点资源提供程序。
依赖项¶
N/A
测试¶
需要相关的单元测试和功能测试。
文档影响¶
在管理员指南中解释如何使用 traits 定义所需的 CPU 特性。
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
Rocky |
引入 |