从 CPU 型号列表中选择 CPU 型号

https://blueprints.launchpad.net/nova/+spec/cpu-model-selection

问题描述

在 libvirt 驱动中,目前我们使用 cpu_modelnova.conf 中(当 cpu_mode 设置为 custom 时)指定实例在此主机上应使用的 CPU 型号。这可能会对实时迁移的计算节点可用性产生影响。

  • 如果实例降落在使用的 CPU 型号“高级”的计算节点上,那么它可能只能实时迁移到集群中的少数计算节点,或者实时迁移失败。

  • 管理员可以配置所有计算节点使用相同的 CPU 型号。但有些用户可能需要针对某些特殊应用(例如视频编辑和科学计算)请求“高级”CPU 标志。

用例

作为管理员,我希望即使集群中存在不同的 CPU 型号,也能在所有计算节点之间实时迁移实例。

作为用户,我希望在支持特定 CPU 功能的主机上启动实例,并且该实例能够实时迁移到尽可能多的也支持该实例的其他主机。

提议的变更

cpu_model 配置属性重命名为 cpu_models,它是一个主机支持的 CPU 型号的有序列表。预计该列表将按顺序排列,以便更常见和不太高级的 CPU 型号排在前面。报告的 CPU 功能特征将是所有 CPU 型号特征的并集。将 cpu_model 标记为已弃用,因此现有的配置文件将继续工作,但会记录警告。

请注意,这不是添加新的配置属性,而是重命名现有的配置属性并将其从单数扩展为复数形式。将 cpumodel 标记为已弃用是为了与旧的配置文件保持兼容性。否则,同时(甚至在我们弃用 cpu_model 之后)支持单数和复数形式可能会导致混淆和可避免的拼写错误。避免它们。

最终用户通过特征 [1] 指定他们需要的 CPU 功能。如果 cpu_mode 设置为 custom,则 libvirt 驱动程序将选择 cpu_models 中的第一个 CPU 型号(如果指定了 cpu_model_extra_flags,则与 cpu_model_extra_flags 结合使用),该型号可以提供所需的特征。这将更有可能使实例以后能够实时迁移。如果没有指定任何 CPU 功能特征,则实例将配置为使用列表中的第一个 CPU 型号。

例如,如果最终用户指定 CPU 功能 avxavx2,如下所示

openstack flavor set 1 --property trait:HW_CPU_X86_AVX=required --property trait:HW_CPU_X86_AVX2=required

并且 cpu_models 配置如下

[libvirt]
cpu_mode = custom
cpu_models = SandyBridge,IvyBridge,Haswell,Broadwell

那么 Haswell,第一个同时支持 avxavx2 的 CPU 型号,将由 libvirt 选择。

如果指定了 cpu_model_extra_flagscpu_models,则应针对每个配置的项目进行检查,以确保它们与主机 CPU 兼容。任何不兼容都应阻止计算服务启动,并强制用户更正配置。

一些相关点

  • 如果同时设置了 cpu_modelscpu_model,则将忽略 cpu_model

  • 通常,数据中心只部署了少量的 CPU 代,因此预计 cpu_models 不会包含像前面人为示例中那样多的 CPU。

  • 选项 cpu_models 中的值将不区分大小写。

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

可以忽略不计。

其他部署者影响

在配置选项帮助文本中添加一些信息,指示操作员应小心仅指定硬件可以完全支持的型号。如果他们指定由 QEMU 模拟的 CPU 功能,则可能导致性能下降。

开发人员影响

升级影响

实现

负责人

待定

工作项

  • 配置:将 [libvirt]cpu_model 重命名为 [libvirt]cpu_models

  • Virt 驱动程序更改。

  • 添加/修改单元测试。

依赖项

测试

添加单元测试。

文档影响

更新发布说明,介绍 [libvirt]cpu_models

参考资料

[2] Stein 迭代的此规范

https://specs.openstack.org/openstack/nova-specs/specs/stein/approved/cpu-model-selection.html

[3] 正在进行的工作规范,用于添加更多“超visor 了解”的 CPU

API 到 Nova – https://review.openstack.org/#/c/645814/ (“具有超visor 考虑的 CPU 选择”)

历史

修订

发布名称

描述

Stein

引入