FPGA用户用例提案

  1. FPGA资源
  2. 问题描述
  3. 用例
  4. 拟议变更
  5. 备选方案
  6. 安全影响

FPGA资源

目前,Nova缺乏管理可变资源的能力,如基于FPGA的加速器。

问题描述

哪些FPGA(现场可编程门阵列)可以给出,将FPGA资源作为PCI设备虚拟机加速器的所有准备工作,提供给系统,是一个手动行为。

此外,现代FPGA为我们提供了更多功能,如能将可编程阵列划分到各个区域,这让单独编程成为可能,并且每个编程的区域可能被几个VM使用。这在共享资源的背景下尤其重要。
在虚拟机之间,在这种情况下,单个FPGA器件可以容纳一个或多个加速器,可以通过分配一个或多个虚拟机来利用这些加速器,而不是使用PCI通过传递整个设备通过单个VM。attach加速器的其他常用方式是将FPGA作为一个或多个虚拟功能和一个物理接口的能力功能,类似的方式如何使用SR-IOV暴露一些网络适配器。

为了系统化,FPGA可以在以下方面的资源:

  • 算法(加速器,可以编程的FPGA)是一个资源,
  • 能够由租户(裸机,VM)编程(使用)整个FPGA
  • 跟踪区域的使用情况(如果FPGA为其提供支持的话)
  • 跟踪在多个客户端共享加速器的能力,
  • 离散的FPGA板载存储器也应该被跟踪。

从利用的角度来看,应考虑以下几个方面:

  • 如果具有区域功能的FPGA,则整个FPGA或只有一个区域被使用,就是说相同的芯片可以同时用作一个或多个资源

  • 具有区域功能的FPGA,但若不具备部分区域重新编程,可能需要暂停/停止该FPGA的运行,从而将编程期望的算法烧录进FPGA芯片

FPGA的其他可能的使用可以加速基础设施。明显的一个例子就是加速Open vSwitch。

用例

从用户的角度来看,它应该是简单的请求特定的资源(加速器/芯片访问)。对于用户所有的复杂性都应该被隐藏。

1.作为用户,我想运行特定的工作负载,且需要使用特定的硬件或加速,所以我指定一个flavor或image,以便调度程序帮我选定含有可用硬件的正确主机。

2.作为操作者,我想有具备FPGA资源的计算主机的配置选项,使其可以由Nova resource tracker跟踪管理。

2.作为操作者,我希望能够编程FPGA加速器(使用外部entity,服务或库),将其注册为新资源并使用SR-IOV接口在虚拟机之间共享。

4.作为一名开发人员,我想能够使用虚拟机与整个FPGA和其连接在一起,或者启动能够FPGA编程的裸机。

拟议变更

对于第一和第二点的用例,应该有自动的方式,在Nova资源管理器中发现和管理这些资源。另外应该有一个提供FPGA编程的库。Nova应该能够使用这样的库(类似于os-brick,并且尽量去除所有复杂的东西,如编程和重新配置,也应该
能获得有关FPGA芯片状态的实际信息。

备选方案

1.用外部的服务来代替库,借此将算法编程进FPGA,再向nova提供FPGA资源。

2.我们什么也不做,给操作者留下负担,让操作者手动配置加速器,并配置节点通过 PCI passthrough来使用FPGA资源。

安全影响

请注意,虽然没有观察到对堆栈本身的安全影响,可能是裸机(或者通过PCI暴露FPGA的VM)有潜在风险。允许开发人员编程自己的算法。问题这里是算法本身,可能会显示为异常功耗使得硬件故障或甚至物理损坏的风险。


转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至 backendcloud@gmail.com