论文阅读: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承载主机通信的成本
一种安全隔离机制,可保护参与者状态免受损坏和拒绝服务攻击
论文阅读:Offloading Distributed Applications onto SmartNICs using iPipe的更多相关文章
- 分布式多任务学习论文阅读(四):去偏lasso实现高效通信
1.难点-如何实现高效的通信 我们考虑下列的多任务优化问题: \[ \underset{\textbf{W}}{\min} \sum_{t=1}^{T} [\frac{1}{m_t}\sum_{i=1 ...
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 Word Embeddings A Survey
论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
- [置顶]
人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)
这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...
- Nature/Science 论文阅读笔记
Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...
- [论文阅读] ALM-HCS(高对比场景自适应对数映射)
[论文阅读] ALM-HCS(高对比场景自适应对数映射) 文章: Adaptive Logarithmic Mapping for Displaying High Contrast Scenes 1. ...
- 论文阅读(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 ...
- BITED数学建模七日谈之三:怎样进行论文阅读
前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...
随机推荐
- 云数据库RDS SQL Server 版
云数据库RDS SQL Server版是一种可弹性伸缩的在线数据库服务,并具备自动监控.备份.容灾恢复等方面的全套解决方案,彻底解决数据库运维的烦恼 请观看视频简介 SQL Server是发行最早的商 ...
- jdbc简单使用
1.代码 import java.sql.*; public class DBUtil { public static void main(String[] args) throws ClassNot ...
- PHP7 错误及异常机制
关键词 error 不能在编译期发现的运行期错误,比如试图用 echo 输出一个未赋值的变量,这类问题往往导致程序或逻辑无法继续下去而需要中断: exception 程序执行过程中出现意料之外的情况, ...
- python基础之初始函数
首先,为什么要使用函数? 函数的本质来说,就是写一串代码具有某些功能,然后封装起来,接下来可以很方便的调用 例如...然后... # s = '金老板小护士'# len(s) #在这里需求是求字符串s ...
- server001
- java中super总结
1:super 可以在子类调用父类中的成员变量(包括static修饰的变量)和方法(包括static修饰的方法) 2:super 可以调用父类的构造方法 super(参数列表),在没有定义时,并且没有 ...
- java实现spark常用算子之distinct
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- Centos7下安装ZooKeeper
1.下载源码 zookeeper 需要jdk的支持,需要先安装jdk 官网下载地址: http://mirrors.hust.edu.cn/apache/zookeeper/ 选择最新的版本进行下载 ...
- jq自动触发事件
$('.btn_fath ').trigger("click");$('.btn_fath ').click();
- 服务命令(systemctl的使用)
常用的service与systemctl命令的对比 应用举例: ●start:开启服务 ●stop:停止服务 ●status:参数来查看服务运行情况 ●restart:重新加载服务 应用举例·: #启 ...