从 CPU 型号列表中选择 CPU 型号¶
https://blueprints.launchpad.net/nova/+spec/cpu-model-selection
问题描述¶
在 libvirt virt 驱动中,目前我们使用 nova.conf 中的 cpu_model(当 cpu_mode 设置为 custom 时)来指定实例在此主机上应使用的 CPU 型号。 如果最终使用了一个 advanced CPU 型号,而你真正关心的只是一个较旧的特性标志,这可能会对实时迁移计算节点可用性产生影响。
用例¶
作为用户,我希望在一个支持特定 CPU 特性的主机上启动一个实例,并且该实例能够实时迁移到尽可能多的其他也支持该实例的主机。
提议的变更¶
将 cpu_model 替换为 cpu_models,这是一个主机支持的有序 CPU 型号列表。 预计该列表将按顺序排列,以便更常见和不太先进的 CPU 型号排在前面。 报告的 CPU 特性特征将是所有 CPU 型号特征的并集。
最终用户通过特性 [1] 指定他们需要的 CPU 特性。 如果 cpu_mode 设置为 custom,libvirt 驱动程序将选择 cpu_models 列表中的第一个 CPU 型号(如果指定了 cpu_model_extra_flags,则与 cpu_model_extra_flags 结合使用),该型号可以提供所需的特性特征。 这将更有可能使实例以后可以实时迁移。 如果未指定任何 CPU 特性特征,则实例将配置为使用列表中的第一个 CPU 型号。
例如,如果最终用户指定 CPU 特性 avx 和 avx2,如下所示
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 = Conroe,Penryn,Nehalem,Westmere,SandyBridge,IvyBridge,Haswell,Broadwell,Skylake-Client,Skylake-Server
那么 Haswell,第一个同时支持 avx 和 avx2 的 CPU 型号将被 libvirt 选择。
如果指定了 cpu_model_extra_flags,则应使用 host.compare_cpu() 将其与 cpu_models 列表中的每个 CPU 型号进行检查,以确保它与 cpu_models 列表中的所有型号兼容。 任何不兼容都应阻止计算主机启动,并且用户需要更正配置。
如果同时设置了 cpu_models 和 cpu_model,则将忽略 cpu_model。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
可以忽略不计。
其他部署者影响¶
在配置选项帮助文本中添加一些信息,指示操作员应小心仅指定硬件可以完全支持的型号。 如果他们指定使用 qemu 模拟的 CPU 特性的型号,可能会导致性能下降。
开发人员影响¶
无
升级影响¶
操作员需要在升级后适当地设置配置选项。 如果未设置 cpu_models,则应将其默认设置为 cpu_model 的值。
实现¶
负责人¶
待定
工作项¶
配置:定义
[libvirt]cpu_models。[libvirt]cpu_model已弃用。Virt 驱动程序更改。
添加/修改单元测试。
依赖项¶
无
测试¶
将添加单元测试。
文档影响¶
更新引入 [libvirt]cpu_models 的发布说明。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Stein |
引入 |