从 CPU 型号列表中选择 CPU 型号¶
https://blueprints.launchpad.net/nova/+spec/cpu-model-selection
问题描述¶
在 libvirt 驱动中,目前我们使用 cpu_model 在 nova.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 功能 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 = SandyBridge,IvyBridge,Haswell,Broadwell
那么 Haswell,第一个同时支持 avx 和 avx2 的 CPU 型号,将由 libvirt 选择。
如果指定了 cpu_model_extra_flags 或 cpu_models,则应针对每个配置的项目进行检查,以确保它们与主机 CPU 兼容。任何不兼容都应阻止计算服务启动,并强制用户更正配置。
一些相关点
如果同时设置了
cpu_models和cpu_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 |
引入 |