论文阅读:Offloading Distributed Applications onto SmartNICs using iPipe

摘要:

包含丰富计算资源的新兴多核SoC SmartNIC具有卸载通用数据中心服务器任务的潜力,但是目前尚不清楚如何有效地使用SmartNIC并最大程度地减少卸载收益,尤其是对于分布式应用程序。

为此,我们描述了四个商用SmartNIC的特性,并从四个角度总结了卸载性能的影响:

  • 流量控制

  • 计算能力

  • 板载内存

  • 主机通信

根据我们的特征,我们构建了iPipe,这是一个基于参与者的框架,用于将分布式应用程序卸载到SmartNIC上。 iPipe的核心是混合调度程序,它结合了基于FCFS和基于DRR的处理器共享,可以容忍具有可变执行成本的任务,并最大限度地提高NIC计算的利用率。

使用iPipe,我们构建了一个实时数据分析引擎,一个分布式交易系统和一个复制的键值存储,并在商用SmartNIC上对其进行了评估。我们的评估表明,当处理10 / 25Gbps的应用程序带宽时,NIC端卸载可以节省多达3.1 / 2.2强大的Intel内核,并将应用程序延迟降低23.0 / 28.0 µs。

背景/问题:

多核SoC(片上系统)SmartNIC已经出现在数据中心中,旨在缓解网络带宽增加和CPU计算能力停滞之间的差距。它们不仅针对协议处理的加速,而且还为数据中心带来了新的计算基础,以低成本扩展了服务器的计算能力——SmartNICs通常用简单的微体系结构封装计算核心,从而使其具有成本效益。

通常,这些SmartNIC包括多核处理器,板载SRAM / DRAM,数据包处理和特定于域的加速器以及可编程DMA引擎,不同的组件通过高带宽相干内存总线或互连连接。如今,大多数SmartNIC都配备了一个或两个10 / 25GbE端口,并且即将推出100 / 200GbE产品,这些计算资源使主机可以在不牺牲性能和程序通用性的情况下减轻通用计算(包括复杂的算法和数据结构)的负担。

最近有一些研究工作将网络功能转移到基于FPGA的SmartNIC上,他们采用常规的特定领域加速方法,将大多数应用程序逻辑整合到FPGA可编程逻辑模块中。这种方法适用于特定类别的应用程序,这些应用程序具有足够的并行性,确定性的程序逻辑以及可以在FPGA上有效合成的常规数据结构。但是针对具有复杂数据结构和算法的分布式应用程序,还没有相关的方法,因为这些应用程序不能在基于FPGA的SmartNIC上有效实现。

解决方法:

我们将SmartNIC分为四个架构组件:流量控制,计算单元,板载内存和主机通信,并使用微基准来表征其性能。实验确定了我们必须认识到的资源约束,说明了硬件加速单元的效用,并为如何有效利用资源提供了指导。

我们基于特征研究设计和实现iPipe框架。

iPipe引入了用于分布式应用程序开发的参与者编程模型,每个参与者都有自己独立的私有状态,并通过消息与其他参与者进行通信。我们的框架提供了分布式内存对象抽象,并支持角色迁移,响应动态工作负载变化并确保线速流量的传递。iPipe的核心是Actor调度程序,该调度程序结合了基于FCFS和DRR的处理器共享,从而可以承受具有可变执行成本的任务,并最大限度地提高SmartNIC的资源利用率。 iPipe允许来自不同应用程序的多个参与者安全地共存于SmartNIC,从而防止参与者状态损坏和拒绝服务攻击。

iPipe的机制可实现对任意应用程序逻辑的动态且可感知工作负载的卸载,这与以往专注于专门任务的静态卸载的工作并不相同。

实现细节:

多核SoC SmartNIC包括四个主要部分(如上图所示):

  • 计算单元,包括通用ARM / MIPS多核处理器,以及用于数据包处理的加速器(例如,深度处理、数据包检查,数据包缓冲区管理)和专用功能(例如加密/解密,哈希,模式匹配,压缩)

  • 板载内存,其中包含快速的自我管理暂存器和较慢的L2 / DRAM

  • 流量控制模块,用于在TX / RX端口和数据包缓冲区之间传输数据包,并带有将数据包发送到NIC核心的内部流量管理器或NIC交换机

  • 用于与主机通信的DMA引擎

根据SmartNIC核心与流量的交互方式,我们将SmartNIC进一步分为两种类型:路径上和路径外SmartNIC。

路径上SmartNIC的核心位于数据包通信路径上,并具有处理每个传入/传出数据包的功能,偏离路径的SmartNIC根据安装在NIC交换机上的转发规则将流量流传递到主机核心(绕过NIC核心)。

iPipe框架的设计和实现

我们使用从实验中收集到的见解来分析,任务应从以下几个方面出发:

  • 可编程性:配备SmartNIC的商用服务器是具有非对称计算能力的非缓存一致性异构计算平台。我们需要可用于开发通用分布式应用程序的简单编程抽象。

  • 计算效率:SmartNIC上有大量计算资源(例如,多核处理器,适度的L2 / DRAM和大量加速器),但应该高效地使用它们,不适当的卸载可能会导致NIC内核超载,带宽损失和浪费的执行停顿。

  • 隔离:SmartNIC可以同时容纳多个应用程序,应该保证不同的应用程序不能互相影响状态,应用程序之间不存在性能干扰,并且尾部延迟是适度的。

iPipe具有三个关键系统组件:

  • 一个actor调度程序,该调度程序可跨SmartNIC和主机核心工作,并使用混合FCFS / DRR调度规则来启用执行演员处理程序,执行成本各不相同

  • 分布式对象抽象,支持灵活的参与者迁移并支持软件管理的缓存,以减轻SmartNIC承载主机通信的成本

  • 一种安全隔离机制,可保护参与者状态免受损坏和拒绝服务攻击

 

posted @ 2019-10-23 20:11  扯铃-  阅读(923)  评论(0编辑  收藏  举报