摘要:

包含丰富计算资源的新兴多核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承载主机通信的成本

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

论文阅读:Offloading Distributed Applications onto SmartNICs using iPipe的更多相关文章

  1. 分布式多任务学习论文阅读(四):去偏lasso实现高效通信

    1.难点-如何实现高效的通信 我们考虑下列的多任务优化问题: \[ \underset{\textbf{W}}{\min} \sum_{t=1}^{T} [\frac{1}{m_t}\sum_{i=1 ...

  2. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  3. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

  4. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  5. [置顶] 人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)

    这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...

  6. Nature/Science 论文阅读笔记

    Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...

  7. [论文阅读] ALM-HCS(高对比场景自适应对数映射)

    [论文阅读] ALM-HCS(高对比场景自适应对数映射) 文章: Adaptive Logarithmic Mapping for Displaying High Contrast Scenes 1. ...

  8. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  9. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

随机推荐

  1. TCP/IP 物理层卷二 -- 交换技术

    一.概念 交换技术是指各台主机之间.各通信设备之间或者主机和通信设备之间(简单理解:你的PC和我的PC之间.你的PC和我的路由器.路由器之间)为交换信息所采用的的数据格式和交换装置的方式. 二.交换技 ...

  2. 关于前端JS判断字符串是否包含另外一个字符串的方法总结

    RegExp 对象方法 test() var str = "abcd"; var reg = RegExp(/d/); console.log(reg.test(str)); // ...

  3. [Codeforces 266E]More Queries to Array...(线段树+二项式定理)

    [Codeforces 266E]More Queries to Array...(线段树+二项式定理) 题面 维护一个长度为\(n\)的序列\(a\),\(m\)个操作 区间赋值为\(x\) 查询\ ...

  4. CentOS7部署ntp服务器

    主机 角色 192.168.48.128 Server 192.168.48.129 Client 192.168.48.130 Client 所有主机安装ntp服务 yum install -y n ...

  5. python、第三篇:表相关操作

    一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:https://www.cnblogs.com/Forever-x/p/11317479.html 二 表介绍 ...

  6. ERA-interim

    数据介绍整理中... https://software.ecmwf.int/wiki/display/UER/Time-integrated+surface+solar+radiation+downw ...

  7. LeetCode OJ -- 无重复字符的最长子串

    给定一个字符串,找出不含有重复字符的 最长子串 的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. 给定  ...

  8. Hive Serde(四)

    Hive Serde 目的: ​ Hive Serde用来做序列化和反序列化,构建在数据存储和执行引擎之间,对两者实现解耦. 应用场景: ​ 1.hive主要用来存储结构化数据,如果结构化数据存储的格 ...

  9. win10上使用自带的Hyper-V安装虚拟机

    Hyper-V管理器,新建虚拟机,安装了.iso系统,但启动报错,电脑上联想G40-70,都说在bios设置的security里开启硬件虚拟化选项,可我security里没有虚拟化相关选项, 后来在 ...

  10. idea 注册码 2月

    https://blog.csdn.net/zhw0596/article/details/81394870 不显示.java后缀 https://segmentfault.com/q/1010000 ...