InfiniBand简介

一.什么是infiniband

InfiniBand架构是一种支持多并发链接的“转换线缆”技术,它是新一代服务器硬件平台的I/O标准。由于它具有高带宽、低延时、 高可扩展性的特点,它非常适用于服务器与服务器(比如复制,分布式工作等),服务器和存储设备(比如SAN和直接存储附件)以及服务器和网络之间(比如LAN, WANs和the Internet)的通信 。

二.Infiniband产生的原因

随着CPU性能的飞速发展,I/O系统的性能成为制约服务器性能的瓶颈。于是人们开始重新审视使用了十几年的PCI总线架构。虽然PCI总线结构把数据的传输从8位/16位一举提升到32位,甚至当前的64位,但是它的一些先天劣势限制了其继续发展的势头。PCI总线有如下缺陷:

(1)由于采用了基于总线的共享传输模式,在PCI总线上不可能同时传送两组以上的数据,当一个PCI设备占用总线时,其他设备只能等待;

(2)随着总线频率从33MHz提高到66MHz,甚至133MHz(PCI-X),信号线之间的相互干扰变得越来越严重,在一块主板上布设多条总线的难度也就越来越大;

(3)由于PCI设备采用了内存映射I/O地址的方式建立与内存的联系,热添加PCI设备变成了一件非常困难的工作。目前的做法是在内存中为每一个PCI设备划出一块50M到100M的区域,这段空间用户是不能使用的,因此如果一块主板上支持的热插拔PCI接口越多,用户损失的内存就越多;

(4)PCI的总线上虽然有buffer作为数据的缓冲区,但是它不具备纠错的功能,如果在传输的过程中发生了数据丢失或损坏的情况,控制器只能触发一个NMI中断通知操作系统在PCI总线上发生了错误

    因此,Intel、 Cisco、 Compaq、 EMC、 富士通等公司共同发起了infiniband架构,其目的是为了取代PCI成为系统互连的新技术标准,其核心就是将I/O系统从服务器主机中分离出来。

InfiniBand 采 用双队列程序提取技术,使应用程序直接将数据从适配器 送入到应用内存(称为远程直接存储器存取或RDMA), 反之依然。在TCP/IP协议中,来自网卡的数据先拷贝到 核心内存,然后再拷贝到应用存储空间,或从应用空间 将数据拷贝到核心内存,再经由网卡发送到Internet。这 种I/O操作方式,始终需要经过核心内存的转换,它不 仅增加了数据流传输路径的长度,而且大大降低了I/O 的访问速度,增加了CPU的负担。而SDP则是将来自网 卡的数据直接拷贝到用户的应用空间,从而避免了核心 内存参入。这种方式就称为零拷贝,它可以在进行大量 数据处理时,达到该协议所能达到的最大的吞吐量

三.Infiniband的协议层次与网络结构

 

图1

Infiniband的协议采用分层结构,各个层次之间相互独立,下层为上层提供服务。其中,物理层定义了在线路上如何将比特信号组 成符号,然后再组成帧、 数据符号以及包之间的数据填 充等,详细说明了构建有效包的信令协议等;链路层定义了数据包的格式以及数据包操作的协议,如流控、 路由选择、 编码、解码等;网络层通过在数据包上添加一个40字节的全局的路由报头(Global Route Header,GRH)来进行路由的选择,对数据进行转发。在转发的过程中,路由 器仅仅进行可变的CRC校验,这样就保证了端到端的数据传输的完整性;传输层再将数据包传送到某个指定 的队列偶(QueuePair,QP)中,并指示QP如何处理该数据 包以及当信息的数据净核部分大于通道的最大传输单 元MTU时,对数据进行分段和重组。

  

图2

Infiniband的网络拓扑结构如图2,其组成单元主要分为四类:

(1)HCA(Host Channel Adapter),它是连接内存控制器和TCA的桥梁;

(2)TCA(Target Channel Adapter),它将I/O设备(例如网卡、SCSI控制器)的数字信号打包发送给HCA;

(3)Infiniband link,它是连接HCA和TCA的光纤,InfiniBand架构允许硬件厂家以1条、4条、12条光纤3种方式连结TCA和HCA;

(4)交换机和路由器;

无论是HCA还是TCA,其实质都是一个主机适配器,它是一个具备一定保护功能的可编程DMA(Direct Memory Access,直接内存存取 )引擎,

 

图3

   

如图3所示,每个端口具有一个GUID(Globally Unique Identifier),GUID是全局唯一的,类似于以太网MAC地址。运行过程中,子网管理代理(SMA)会给端口分配一个本地标识(LID),LID仅在子网内部有用。QP是infiniband的一个重要概念,它是指发送队列和接收队列的组合,用户调用API发送接收数据的时候,实际上是将数据放入QP当中,然后以轮询的方式将QP中的请求一条条的处理,其模式类似于生产者-消费者模式。

 

图4

如图4所示,图中Work queue即是QP中的send Queue或者receive Queue,WQ中的请求被处理完成之后,就被放到Work Completion中。

四.如何使用IB verbs传送数据

Infiniband提供了VPI verbs API和RDMA_CM verbs API 这两个API集合,用户使用其中的库函数,就能很方便的在不同的机器之间传输数据。Infiniband建立连接的流程如下图所示:

 

图5

其中buildcontext的流程如下:

图6

连接建立完成之后,就可以调用ibv_post_recv和ibv_post_send收发数据了,发送和接收请求都被放在QP中,后台需要调用ibv_poll_cq来逐条处理请求,由于infiniband连接中,一旦有一条数据发送或者接收失败,其后所有的数据发送或者接收都会失败,因此一旦检测到WC的状态不是成功,需要立即处理此错误(此时最好断开连接)。

五.常见错误

     ibv_poll_cq处理完队列中的数据后,WC会包含此次处理的全部信息,包括wr_id、操作状态、错误码等等,错误码包含的信息对于我们解决错误非常有用,这里我就列举一下我在编写代码中遇到的错误。

(1)错误码为4(IBV_WC_LOC_PROT_ERR ),这种错误通常意味着用户对内存的操作权限不够,需要检测在ibv_post_recv和ibv_post_send时scatter/gather list 中传入的内存地址与长度是否正确,或者ibv_reg_mr操作是否成功。

(2)错误码为5,(IBV_WC_WR_FLUSH_ERR ),在flush的时候出现错误,通常是因为前一个操作出现了错误,接下来的一系列操作都会出现      

IBV_WC_WR_FLUSH_ERR的错误。

(3)错误码为13(IBV_WC_RNR_RETRY_EXC_ERR  ),这种错误一般是因为本地post数据过快。在infiniband传输数据过程中,接收端首选需要注册内存并ibv_post_recv将此内存放入receive queue中然后发送端才能发送数据,如果接受端来不及完成这些操作发送端就发送数据,就会出现上述错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云Aliplayer高级功能介绍(一):视频截图

基本介绍H5 Video是不提供截图的API的, 视频截图需要借助Canvas,通过Canvas提供的drawImage方法,把Video的当前画面渲染到画布上, 最终通过toDataURL方法可以导出图片的base64编码,基本就完成了图片截图的功能。 功能实…

分页

1.首先在数据库中建立一个视图(在aspx中sql查询语句是view_student不是student),在视图里创建create view view_student--创建视图as row_number 行号 一条数据是一行 分页功能要根据行数运算select *,row_number() over(order by stuNo desc…

PCIE总线-PCI、PCIE关系及信号定义

PCI(Peripheral Component Interconnect)总线规范在上世纪九十年代由Intel提出。在处理器体系结构中,PCI总线属于局部总线(Local Bus)。局部总线作为系统总线的延伸,主要功能是为了连接外部设备。 处理器主频的不断提升,要求速度更快&#x…

SQL Server:SQL Like 通配符特殊用法:Escape

%:匹配零个及多个任意字符; _:与任意单字符匹配; []:匹配一个范围; [^]:排除一个范围 ;-:连字符 Symbol Meaning like 5[%] 5% like [_]n _n like [a-cdf] a, b, c, d, o…

案例篇-HBase RowKey 设计指南

1.为什么 Rowkey 这么重要 1.1 RowKey 到底是什么 我们常说看一张 HBase 表设计的好不好,就看它的 RowKey 设计的好不好。可见 RowKey 在 HBase 中的地位。那么 RowKey 到底是什么?RowKey 的特点 如下: 类似于 MySQL、Oracle 中的主键,用于标示唯一的行…

PCIe简介及引脚定义

随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带…

IDEA下搜狗输入法输入中文时卡着不动的参考解决方法

【问题描述】 在IntelliJ IDEA工具的java编辑窗口,给代码增加注释时发现,输入中文时,搜狗输入法界面不动,只显示第一个字母。如图: 我想输入“根据”两个字,但搜狗输入法界面一直卡着不刷新,导…

七 web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理...

如果爬虫没有异常处理,那么爬行中一旦出现错误,程序将崩溃停止工作,有异常处理即使出现错误也能继续执行下去 1.常见状态吗 301:重定向到新的URL,永久性302:重定向到临时URL,非永久性304&#x…

DVI和HDMI中的TMDS接口协议

TMDS(Transition Minimized Differential signal),即过渡调制差分信号,也被称为最小化传输差分信号,是指通过异或及异或非等逻辑算法将原始信号数据转换成10位,前8为数据由原始信号经运算后获得&#xff0c…

TMDS的信号通道

1 TMDS的信号通道: 1个HDMI包括3个TMDS数据通道和1个TMDS时钟通道。 . 每一个TMDS时钟周期内,TMDS数据通道上会发送一个10位的字符信息; . 每个TMDS时钟周期内,编码器将2位的控制数据、4位的报数据或者8位的视频数据采取不同 …

[luoguP2774] 方格取数问题(最大点权独立集)

传送门 引入两个概念: 最小点权覆盖集:满足每一条边的两个端点至少选一个的最小权点集。 最大点权独立集:满足每一条边的两个端点最多选一个的最大权点集。 现在对网格染色,使得相邻两点颜色不同,之后把两个颜色的点分…

光谱分布、光谱辐射通量密度与不同时间段分布光谱(图示)

1、光谱分布图 2 太阳辐射能量图 3、不同时间段的太阳分布光谱图 4、不同波长的光的能量分布主要区域 5、不同波段的使用场景

基于深度学习和传统算法的人体姿态估计,技术细节都讲清楚了

计算机视觉的一大研究热点是人体姿态估计,还有很多问题急需解决,比如遮挡,交互等等。在最近的CVPR2020里边也有很多这方面的工作。本文站长主要是想谈谈基于深度学习的实时多人姿态估计。 人体姿态估计要干嘛? 关于人类活动规律的…

杨浦区阜盛农民工子弟小学见闻

天气有些阴沉,起了个大早,一个小时奔波后来到了这里…… 大门口: 校领导: 有些破旧的校舍和阴沉的天空下祖国的希望: 同上,希望…… 期待的目光: 顽皮的笑脸,排着队也要调皮&#xf…

人体姿态估计算法之open pose

一,openpose是一种自底向上的算法: OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人&am…

抢火车票这个事吧,其实我也能做!(python黑科技)

2019独角兽企业重金招聘Python工程师标准>>> 又是一年,马上就要回家过年了,还没有买到票的小伙伴们是否已经像热锅上的蚂蚁了无脑的开始找黄牛了? 俗话说的好,求人不如求自己,抢票这玩意,其实我觉得我也可…

用 Python+openpose 实现抖音尬舞机

游戏开始后,随着音乐会给出不同的动作提示,用户按照提示摆出正确动作即可得分。援引官方说法,“尬舞机”主要应用了今日头条 AI Lab 自主开发的“人体关键点检测技术”,依靠这项技术,抖音能够检测到图像中所包含人体的…

Create a Service Catalog Request via REST API

http://wiki.servicenow.com/index.php?titleUseful_Catalog_Scripts#Eureka http://wiki.servicenow.com/index.php?titleService_Catalog_Script_API#gsc.tab0 Service Catalog APIhttps://docs.servicenow.com/bundle/istanbul-servicenow-platform/page/integrate/inboun…

解密昇腾AI处理器--Ascend310简介

Ascend310 AI处理器规格 Ascend310 AI处理器逻辑架构 昇腾AI处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像、视频、语音、文字处理相关的应用场景。其主要的架构组成部件包括特制的计算单元、大容量的存储…