端口范围 SR-IOV NUMA 亲和性策略¶
https://blueprints.launchpad.net/nova/+spec/port-scoped-sriov-numa-affinity
在 Ussuri 版本中 [1],添加了支持通过 flavor 或 image 指定 PCI NUMA 亲和性策略。这项工作建立在 Ussuri 版本中引入的先前功能之上,并扩展了粒度,以允许为每个 neutron 端口指定 NUMA 亲和性策略。
问题描述¶
在某些环境中,服务器的外形受到限制,阻止 PCI 设备在服务器上的所有 NUMA 节点上物理安装,例如高密度刀片/多服务器系统或非标准外形设备。在 Ussuri 版本中,操作员获得了通过 flavor 或 image 指定 VM 范围内的 NUMA 亲和性策略的灵活性,但在许多情况下,不同的 NIC 具有不同的约束。
用例¶
作为在高性能或受限外形硬件上部署 openstack 的操作员,我希望为 SR-IOV 设备指定每个端口的 NUMA 亲和性策略,该策略与 VM 范围内的 pci NUMA 亲和性策略不同。
作为租户或 VNF 供应商,我希望能够根据其用途自定义网络接口的亲和性,例如,数据平面接口的严格亲和性,而管理接口则没有亲和性。
作为操作员,我希望利用 NUMA 感知的 vSwitches,但仍然能够为单个 VM 接口禁用它。
提议的变更¶
通过 neutron API 扩展 [2],引入了每个接口的 NUMA 亲和性策略。neutron API 扩展引入了一个新的端口属性,该属性保存请求的亲和性策略。端口 NUMA 亲和性策略将具有高于 flavor、image 或基于配置的策略规范的优先级。因此,优先级关系将是端口 > image/flavor > PCI 别名。
这将使操作员能够为每个 PCI 别名指定默认亲和性策略,反过来可以通过 flavor 和 image 覆盖 VM 的亲和性策略,最后可以通过每个端口的策略细化 NIC 亲和性。
基于 flavor 和 image 的方法涵盖了通过每个接口 NUMA 亲和性策略实现的 80% 的用例,而无需更改 neutron API。现在 neutron API 已经增强以支持端口 NUMA 亲和性策略,此规范可以解决剩余的 20% 的用例。
注意
此规范将解决仅针对 NUMA 实例的 NUMA 亲和性。如果 VM 本身没有 NUMA 拓扑,则每个端口的 NUMA 亲和性策略不会使实例成为 NUMA 实例。此功能将支持 SR-IOV NUMA 亲和性和 NUMA 感知的 vswitches,但不会应用于 cyborg 管理的接口。
为了协助调度,将添加一个新的计算能力特征 COMPUTE_NET_NUMA_AFFINITY。libvirt 驱动程序将被修改为如果配置了通过 PCI 直通白名单的 SR-IOV 网络接口或 NUMA 感知的 vswitches,则报告此特征。
将添加一个预过滤器,以便在存在端口 NUMA 亲和性策略时,将一个必需的特征请求附加到未命名的特征组。这对于使用 NUMA 感知 vswitches 的 NUMA 部署的严格亲和性策略 require 是必需的。
neutron api 扩展 [2] 将被更新以支持新添加的 socket pci 亲和性策略 [3]。
备选方案¶
无
数据模型影响¶
nova.network.model.VIF 对象将扩展为包含 NUMA 亲和性策略。虽然这存储在数据库中,但它存储为网络信息缓存中的 json blob,因此不会更改模式或 rpc 对象。
REST API 影响¶
Nova 中不会直接更改任何现有的 API。但是,已经添加了一个新的 API 扩展 [2] 到 neutron 以存储端口 NUMA 亲和性策略。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
由于调度程序已经支持 PCI 亲和性,因此添加一种新的传递 PCI 策略的方式不应影响调度性能。
其他部署者影响¶
正如先前启用 SR-IOV/PCI 设备的 NUMA 亲和性所要求的,必须启用 PCI 直通和 NUMA 拓扑过滤器。
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
sean-k-mooney
功能联络人¶
- 功能联络人
sean-k-mooney
工作项¶
无
依赖项¶
socket NUMA 亲和性策略依赖于 [3]。唯一的其他依赖项是扩展请求规范对象以存储请求的网络。这是路由网络规范 [4] 的一部分,由 [5] 实现。
测试¶
由于此功能与 SR-IOV 相关,因此无法通过 tempest 在上游 gate 中进行测试。将提供单元测试以断言策略是否正确传递到现有的 PCI 分配代码,并且可以根据需要扩展现有的功能测试。由于此功能只是提供了一种指定 PCI 亲和性策略的另一种方式,因此代码更改很小,并且可以利用大部分现有的测试覆盖范围。最重要的是断言配置、flavor、image 和端口之间的策略优先级关系。
文档影响¶
将提供一个发布说明和对网络文档的更新。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Wallaby |
引入 |