Amiya · 2021年05月07日

FPGA智能网卡综述(5): FPGA inline

NICA

原版见ATC 2019。

这个专题主要对基于FPGA的智能网卡技术进行介绍,上篇介绍了NanoPU、PANIC、Tonic、Corundum等,这次介绍“NICA: An Infrastructure for Inline Acceleration of Network Applications”,主要介绍FPGA inline加速器抽象。高山留存阅读点滴。

集成FPGA(F-NIC)的SmartNIC是加速I/O密集型网络应用程序的一个较为吸引人的平台,已经越来越多地部署在数据中心和公有云等,例如,在微软Azure服务器中,实现了线速吞吐量和低、可预测的延迟,以及高能效的可用性,包括英特尔在内的许多硬件供应商已经在未来的产品中宣布了F-NIC。

数据中心F-NIC主要用于加速基础设施功能,如网络功能和软件定义的网络。这些任务利用了F-NIC的在线inline处理能力,即数据在主机和网络之间传输时进行处理,而不需要CPU参与。此外,F-NIC通常被重新设计为运行完整应用程序的独立FPGA,例如搜索或深度学习。

F-NIC在云计算中不断增长的部署所带来的新的加速机会,而不仅仅是基础设施任务和单一的应用程序。寻求利用F-NIC在网络密集型应用中在线加速数据平面处理。例如,F-NIC可能运行数据中心tax任务,如反序列化、哈希和身份验证,据报道,这些任务消耗了数据中心四分之一的CPU周期。F-NIC可以作为键-值存储的额外缓存层,在命中时直接响应并消除CPU的参与。例如,F-NIC体系结构可以实现memcache近线速吞吐量(40gbps)。之前已有工作报告了针对特定应用程序的流量控制、数据包转换和网络协议栈等理想结果

构建-NIC加速应用程序仍然困难重重:
**首先,对于F-NIC上的通用应用程序在线加速没有足够的操作系统抽象。**这种抽象应该将F-NIC任务与应用程序流程相关联,并且它们应该提供定义良好的执行边界和隔离的每个任务状态,同时支持F-NIC功能与应用程序逻辑的集成。OpenCL和CUDA提供了一般的lookaside加速支持,但它们与F-NIC不太匹配,因为它们需要显式的内核调用和数据传输,而这些与在线处理场景无关。Floem提供了语言级构造来加速SmartNIC上的应用程序,但它的目标是基于CPU而不是基于FPGA的SmartNIC架构,并要求应用程序重构以使用其数据流模型,从而使传统工作负载的加速变得复杂。SmartNIC加速的网络框架,如AccelNet、eBPF XDP和DPDK rte\_security,是特定领域的,缺乏应用程序级抽象。用于数据平面加速的系统,例如P4和FlexNIC,公开了用于F-NIC管理的数据包级匹配操作规则,但是缺乏对应用程序级语义的抽象。
**其次,F-NIC不提供虚拟化支持,阻止了云租户之间的共享。**FPGA和GPU的现有虚拟化机制依赖于计算结构的空间划分或粗粒度时分。然而,前者会导致硬件利用率不足,而后者可能会由于较慢的上下文切换和FPGA重新配置时间而影响处理延迟,从而不适合延迟敏感的任务。更重要的是,F-NIC缺乏I/O路径虚拟化,无法通过网络、FPGA和主机CPU之间的共享总线隔离和保护每个应用程序的I/O。因此,当前的F-NIC不能保证共存应用程序的性能隔离。

NICA是基于FPGA的服务器加速系统,引入了新的软件抽象和共同设计的F-NIC硬件运行时态,用于云系统中的应用程序加速。NICA管理一个或多个加速器功能单元(AFU),托管在F-NIC上的特定于应用程序的硬件加速器。这种AFU可以由用户开发,也可以由云供应商提供并按需部署。

**操作系统抽象。**NICA中介绍了一种新的ikernel(inline内核)抽象,它表示用户程序中的AFU。应用程序动态地将ikernel连接到一个或多个传输层套接字,从而激活相应的AFU。随后,通过这些套接字发送和接收的所有通信数据都由AFU处理,无需CPU参与。为了通过套接字进行通信,CPU可以使用标准的POSIX套接字API调用,或者应用程序级消息的高性能零拷贝接口。ikernel抽象对进程是私有的,并为AFU应用程序和网络状态提供保护。

**AFU虚拟化。**NICA支持在多个虚拟机(vm)之间共享AFU,同时保证状态保护和服务质量(QoS)。解决了两个主要需求:1)AFU I/O通道虚拟化,包括主机和网络流量,通过为AFU发送和接收的I/O添加防欺骗、分类和数据包调度程序;2)细粒度AFU分时,它使用硬件任务调度程序,以精细的粒度切换上下文,从而使对延迟敏感的应用程序能够更好地利用硬件。

NICA提供必要的FPGA上的服务,以加速多租户环境下F-NIC上的应用,包括驻留在FPGA上的网络传输层、计算和I/O调度块以及AFU状态隔离。然而,以FPGA为核心的高通量网络的发展超出了研究范围。然而,一些有效的解决方案显现,例如模板库,其中包含用于网络处理的优化构建块。此外,我们相信云提供商将越来越多地提供使用“应用市场”部署模式提供AFU,各种AFU可用于其基础设施。

在Mellanox Innova F-NIC上用Xilinx FPGA和2GB板载内存实现了NICA的原型,实现了ikernel API,将其与VMA内核旁路网络堆栈集成,并在KVM hypervisor中实现了AFU虚拟化支持。还设计了用于软件抽象和AFU虚拟化的FPGA硬件支持,并在FPGA中集成了完整的UDP和部分TCP层实现。

使用微基准来评估系统,并加速两个实际应用程序:memcached服务器和Node.js-基于物联网监控服务器,通过在F-NIC上实现相应的AFU。启用F-NIC加速只需要较少的软件更改:分别额外增加107行C和20行JavaScript。

与memcached集成的热点数据缓存AFU对16B键-值查找,可达到6µs 99%延迟和40.3 Mtps吞吐量,40 Gbps线速率的99%,比6核CPU基准线快21.6倍。对于0.2%集的Zipf(0.99)分布的工作负载,NICA加速的结果是4.6倍的加速。

NICA允许在多个vm之间共享F-NIC,同时提供显著的性能提升。它引入了可以忽略不计的吞吐量和延迟开销,同时保持了由hypervisor控制的公平带宽分配。

总之,NICA具有如下特点:

• 引入ikernel操作系统抽象,用于F-NIC上应用程序的inline加速。

• 设计了一个F-NIC虚拟化框架,支持I/O QoS和计算资源的低延迟时分复用。

• 基于Mellanox F-NIC实现了NICA,分析了其性能,验证了加速memcached和Node.js-基于物联网的服务器开发核性能优势。

FPGA智能网卡专题:

FPGA-inline加速器SmartNIC(4):Corundum

FPGA-inline加速器SmartNIC(3):Tonic

FPGA-inline加速器SmartNIC(2):PANIC

FPGA-inline加速器SmartNIC(1):NanoPU

作者:珠穆朗玛2048
来源:https://zhuanlan.zhihu.com/p/359924869

更多FPGA智能网卡相关技术干货请关注FPGA加速器技术专栏。

推荐阅读
关注数
1601
内容数
22
阐述CPU性能瓶颈问题如何破解,FPGA如何突围
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息