将 PCI 请求分配到多个设备

https://blueprints.launchpad.net/nova/+spec/distribute-pci-allocation

PCI 请求是基于列表方式配置的。在 SR-IOV 网络设备中,一组候选虚拟功能可以跨越多个物理功能和物理端口。将单个和多个设备请求分配到多个物理功能可以提供

  • 更好的可用链路负载均衡。

  • 当为单个虚拟机分配多个设备时,提供 L2 冗余。

问题描述

简单的基于队列的设备选择对于 PCI SR-IOV 设备并不能在物理连接上分配负载,也不能允许虚拟机通过请求多个基于 SR-IOV 的端口来实现 L2 冗余。

用例

在每个物理网络都有一个物理功能,并且创建具有多个 SR-IOV 端口的 Openstack 实例的系统中,将端口分配分散到候选物理功能上可以提供更均匀的设备和链路利用率,并允许虚拟机利用 L2 冗余链路进行绑定等操作。

提议的变更

提议的更改将修改 PCI SR-IOV 的 PCI 设备请求调度,以便在相同的关联标签下,均匀地分配可用多个物理功能的 VF 使用量。

分配以尽力为基础进行,因此即使 PCI 请求无法以分布式方式支持,但仍然可以通过当前的基于队列的分配方案来满足,虚拟机仍然会被启动。

备选方案

没有直接满足更均匀利用率请求分配的替代方案。确保虚拟机的多个 SR-IOV 设备请求跨越多个物理链路可以使用额外的端口详细信息,但仍然需要更改 PCI 请求调度。

可以通过基于可用吞吐量进行调度来改进链路优化,但是,这并不能满足物理链路冗余用例。此外,它仅适用于底层设备实际提供吞吐量详细信息的情况。

数据模型影响

当前模型应该足够,因为它包含所需的簿记功能。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

在调度虚拟机创建时,复杂度会增加,这可能会增加连接到多个类似 PCI SR-IOV 设备的虚拟机调度的时长。它对其他情况没有影响。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

受让人

Roman Bogorodskiy <rbogorodskiy@mirantis.com>

工作项

  • 更改 PCI 设备选择逻辑以支持跨多个 PCI 根(物理功能)的分配

  • 扩展 PCI 请求 API 以支持多个设备请求。

  • 修改调度器代码以使用新的 API。

依赖项

无。

测试

选择逻辑的更改可以通过单元测试进行测试,PCI 请求 API 的扩展也可以进行测试。

此外,计划也用功能测试覆盖此功能。

文档影响

无。

参考资料

无。