[RDMA] 高性能异步的消息传递和RPC :Accelio

1. Introduce

Accelio是一个高性能异步的可靠消息传递和RPC库,能优化硬件加速。 RDMA和TCP / IP传输被实现,并且其他的传输也能被实现,如共享存储器可以利用这个高效和方便的API的优点。Accelio 是 Mellanox 公司的RDMA中间件,用于高性能异步的可靠消息传递和RPC库。

2. Accelio 设计目标

Accelio提供了一个易于使用的,可靠的,可扩展和高性能的数据/消息传递中间件,最大限度地提高现代CPU和网卡硬件的效率,减少将新的扩展应用程序产品推向市场的的时间。

3. Accelio Key Features

  1. 专注于高性能异步的API
  2. 可靠的消息传递(端对端)
  3. 请求/响应(交易)或发送/接收模式
  4. 提供连接和资源抽象到最大的可扩展性和可用性
  5. 最大限度地发挥每个线程专用的硬件资源,多线程应用程序的性能
  6. 旨在最大限度地利用RDMA,硬件卸载和多核CPU的优势
  7. 支持多种传输选项(RDMA,TCP,..)
  8. 服务和存储集群/向外扩展的原生支持
  9. 小消息合并
  10. 简单和抽象的API

4. Who can take advantage of it?

对那些高效的,高性能的,可靠消息传递实现的应用,如集群,横向扩展块/文件/对象存储,BigData和NoSQL应用程序,快速消息总线等,感兴趣的开发商可以使用。

5. Accelio 的结构示意图

Accelio的主层分别是:
应用程序接口 - 提供易于使用的原语进行快速,可靠的异步消息队列或RPC
连接和会话管理 - 提供可靠的终端到终端的连接等端点,动态连接建立,池,故障恢复和迁移/重定向
可插拔传输层 - 使映射到不同的硬件或软件传输实现

6. Accelio Integration With Other Applications/Projects

Accelio被用作高性能,低延迟,可靠消息/ RPC库的各种开源和商业产品,客户项目
支持多种绑定(Kernel C, User Space C/C++, Java, Python (future))。

7. 一个会话/连接建立流程

在建立连接到远程端点,客户指定远程统一资源标识符(URI)。URI包含首选传输方式,强制领先的IP地址和可选端口数目,以及可选的资源ID或名称。

/服务器端响应会话请求,下列选项之一:
•接受可选属性的连接
•拒绝连接
•无缝地将连接重定向到一个不同的进程或实体
/成功或重定向响应,客户端建立一个或多个并联连接到对端,将试图重用现有的连接,以减少开销。
/*会话和连接初始化流程
(1)打开一个会话到远程资源
--例如“remote-ip:port/resource-name”
(2)服务器端回应,接受,拒绝或重定向
--用“重定向”负载平衡或迁移资源穿过整个集群(多个节点或进程)
--服务器提供一个portals列表(IPs+Ports)
--每个portal识别port(IP),然后CPU/Thread去访问
--服务器基于round/robin,Hash或者custom logic,可以加载平衡通信通过多个ports/cores
--建立连接(S)和发送/接收邮消息
--可以有多个连接(例如每个客户端线程1个)
--如果连接已经提供给远程进程,可重用
--故障/变化上的重建或迁移连接

8. 高级别传输流程 - 异步请求/响应模型(Transaction Delivery API Model)

Accelio提供一个RPC-like的请求/回应事务模式,或可靠消息发送/接收模式。

在事务模式中,发起方发送一个请求,它包含专用应用程序的头和指向输入与输出数据缓冲区的指针,允许零拷贝操作和RDMA。

当请求到达接收端时,它触发一个回调通知,基于该接收的应用程序处理该事务。当在接收端完成该处理时,它以返回的状态和数据来发送响应。服务器端可以异步操作,并发出响应在其方便的时候,也就是,当所返回的数据是可用的。
发起方可以请求消息到达确认。在这样的情况下,接收方接受该消息之后,一个确认消息返回到发起方。该确认消息可用于阻挡/同步操作和消息跟踪。

响应到达时,发起方被通知。在这个时候,发起方的数据缓冲区包含返回的数据,并且回叫应答指向原始请求。
如果传输失败,同样的传输被重新传输到已恢复或备用的连接上。

发起方可以要求中止/取消某范围内的消息(例如,请求超时)。接收方试图中止操作(如果不执行他们),并以成功或失败来反应。无论哪种方式,相关的响应不返回到发起方。注意,请求可以通过客户端(无源)或服务器(有源)端发出。

发送/接收操作遵循相似的流程去请求/响应,唯独没有响应消息。消息从发起方发送,引发回调到接收端,使用可选的确认通知。

9. 本地多线程(多进程)支持

对于客户端和服务器端,Accelio支持全并行和多线程操作
--应用程序使用单个CPU核心/线程的时候的性能可以被限制
--当多个线程在使用同一个网络资源,需要复杂的状态管理和锁定,这样会增加应用程序的开销,并限制其性能和可伸缩性
--Accelio支持全并行为客户端和服务器
**每个线程可以被相关联有独立的硬件资源(QP的&个CQ)和事件循环,从而无需锁定,并允许最大的并行
**每个会话可以由多个并联连接(每个关联使用不同的CPU线程)组成
**服务器端可以公开多个portal(IP:port)为相同的资源/服务,每个port可以由不同的CPU线程和事件循环提供服务。

如下图所示可以直观Accelio的多线程支持

10. 内存管理

--Accelio管理2种类型缓冲区
**发送/接收缓冲环的头和小数据(通常4-8KB每个)
**大的缓冲区为大型的IOs和RDMA

--大缓冲区被应用程序的库来分配和控制
--应用控制缓冲区:
**需要预注册内存缓冲区(使用reg_mr),并保证零拷贝
--库控制缓冲区
**可能会在客户端上有一个copy
**接收端零拷贝(应用程序将得到一个指向接收缓冲区)
**当做完时,请求应用程序来释放缓冲区(用release_msg)

11. Accelio中的一些主要函数调用

Functionn Description
ctx_create/destroy Open thread context helping accelio to partition data without locks

ctx_run/stop Run the event loop in the context
ctx_get_poll_params Return Accelio’s single file descriptor to add to external loop
session_create/destroy Create/destroy a session to a remote peer
connect/disconnect Open/Close a connection with a remote server/portal
bind/unbind Bind/unbind a server portal with a URL (protocol:ip:port)
accept Accept incoming connection (server side)
reject Reject incoming connection (server side)
redirect Redirect a connection to a different node or portals or process
send_request/response Send a request/response message
send/recv_msg Send/receive memory buffer (like sockets send/recv)
release_msg Release message buffers
reg_mr/dereg_mr Register/deregister application buffers for app controlled RDMA

12. 异步事件处理

高性能的应用程序使用异步API来进行多个操作,并利用多种资源并行。
•Accelio以下面的方式处理异步事件:
1,放置一个回调在事件循环,该事件循环结合来自多个资源的事件。
2,当一个事件,发出的一组操作,诸如从网络接收的消息和写入到磁盘。
•Accelio内置了epoll的支持。应用程序提供的事件循环是可用的。
•对于最低的消息延迟,Accelio提供了优化事件处理,当一个事件循环处于空闲状态(一个预定义的时间)时,其会结合忙等待池。

13. Accelio概述与总结

Accelio是一个开源的高性能,异步,可靠消息传递和远程过程调用(RPC)的库。对于远程直接内存访问(RDMA),TCP / IP和共享内存, Accelio优化硬件加速。 Accelio最大化消息和CPU并行性,同时最大限度地降低CPU的争用和锁定。并行和异步体系结构,无锁定设计和零数据复制机制,提供每秒无与伦比的传输和带宽性能,以及更低的延迟和CPU开销。 Accelio保证终端到终端的事务传递和执行力,它支持事务请求 - 应答的通信模型。

Accelio通过提供内置的多路径,实时会话重定向/迁移和集群服务或存储,解决了扩展性和虚拟化环境的挑战。管理作为一种模块化的开源项目,Accelio无缝地延伸到新的功能,实现传输和服务。
libxio(又名库accelio)是一个位于RDMA之上的轻量级消息传递库。该库为零拷贝消息传递和无锁定可扩展性,提供了异步消息传递设计。

Accelio是一种创新的API,它解决了一些现代计算机,网络和存储系统主要挑战,如:
有效地利用多内核
强大的横向扩展
降低硬件和软件堆栈开销
减少通信开销和延迟

Accelio提供了一个强大的,灵活的通信和消息传递层,从而使得应用程序扩展和中间件快速发展。它能够整合性能,可用性,管理和安全功能于一体的实现,可用于多种应用。工作促进了Accelio开源社区,供应商可以专注于自己的应用程序的核心附加价值,与开发者在一个更大的社区分享他们的实现和体验。

这个库已经停止开发了,在github主页的issue 部分开发者说由于公司中心转移,这个库不开发了,建议用别的库。

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

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

相关文章

Visual Studio 2022 你必须知道的实用调试技巧

目录 1、什么是bug? 2.调试是什么?有多重要? 2.1我们是如何写代码的? 2.2又是如何排查出现的问题的呢? ​编辑 2.3 调试是什么? 2.4调试的基本步骤 2.5Debug和Release的介绍 3.Windows环境调试介绍…

基于Java+SpringBoot的房源出租信息管理系统【源码+论文+演示视频+包运行成功】

博主介绍:✌csdn特邀作者、博客专家、java领域优质创作者、博客之星,擅长Java、微信小程序、Python、Android等技术,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推…

【腾讯云Cloud Studio实战训练营】用Vue+Vite快速构建完成交互式3D小故事

👀前置了解:(官网 https://cloudstudio.net/) 什么是Cloud Studio? Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装&#…

FPGA_学习_16_IP核_ROM(延迟一拍输出)

在寻找APD最合适的偏压的过程中,一般会用到厂商提供一条曲线,横坐标是温度的变化,纵坐标表示击穿偏压的变化,但每个产品真正的击穿偏压是有差异的。 为了能够快速的找到当前温度下真实的击穿偏压,我们可以这样做&#…

5.5.webrtc的线程管理

今天呢,我们来介绍一下线程的管理与绑定,首先我们来看一下web rtc中的线程管理类,也就是thread manager。对于这个类来说呢,其实实现非常简单,对吧? 包括了几个重要的成员,第一个成员呢就是ins…

小研究 - Android 字节码动态分析分布式框架(三)

安卓平台是个多进程同时运行的系统,它还缺少合适的动态分析接口。因此,在安卓平台上进行全面的动态分析具有高难度和挑战性。已有的研究大多是针对一些安全问题的分析方法或者框架,无法为实现更加灵活、通用的动态分析工具的开发提供支持。此…

五款拿来就能用的炫酷表白代码

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 五款炫酷表白代码 1、无限弹窗表白2、做我女朋友好吗,不同意就关机3、…

无涯教程-PHP - XML GET

XML Get已用于从xml文件获取节点值。以下示例显示了如何从xml获取数据。 Note.xml 是xml文件&#xff0c;可以通过php文件访问。 <SUBJECT><COURSE>Android</COURSE><COUNTRY>India</COUNTRY><COMPANY>LearnFk</COMPANY><PRICE…

c#设计模式-结构型模式 之 桥接模式

前言 桥接模式是一种设计模式&#xff0c;它将抽象与实现分离&#xff0c;使它们可以独立变化。这种模式涉及到一个接口作为桥梁&#xff0c;使实体类的功能独立于接口实现类。这两种类型的类可以结构化改变而互不影响。 桥接模式的主要目的是通过将实现和抽象分离&#xff0c;…

excel 核心快捷键用法

1、wps怎样只复制公示计算出来的数据 1.1、按下快捷键“CtrlC”&#xff0c;复制该单元格。 1.2、按下快捷键“ShiftCtrlV”&#xff0c;即“粘贴为数值”&#xff0c;即可只复制数字而不复制该单元格的公式 1.3、wps怎样只复制公示计算出来的数据_百度知道https://zhidao.baid…

数据结构之并查集

并查集 1. 并查集原理2. 并查集实现3. 并查集应用3.1 省份数量3.2 等式方程的可满足性 4. 并查集的优缺点及时间复杂度 1. 并查集原理 并查表原理是一种树型的数据结构&#xff0c;用于处理一些不相交集合的合并及查询问题。并查集的思想是用一个数组表示了整片森林&#xff0…

如何将图片应用于所有的PPT页面?

问题&#xff1a;如何快速将图片应用到所有PPT页面&#xff1f; 解答&#xff1a;有两种方法可以解决这个问题。第一种用母板。第二种用PPT背景功能。 解决有时候汇报的时候&#xff0c;ppt中背景图片修改不了以及不知道如何查找&#xff0c;今天按照逆向过程进行操作 方法1…

尚硅谷css3笔记

目录 一、新增长度单位 二、新增盒子属性 1.border-box 怪异盒模型 2.resize 调整盒子大小 3.box-shadow 盒子阴影 案例&#xff1a;鼠标悬浮盒子上时&#xff0c;盒子有一个过度的阴影效果 三、新增背景属性 1.background-origin 设置背景图的原点 2.background-clip 设置背…

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的连接

更多有关博主写的往期Elasticsearch文章 标题地址【ElasticSearch 集群】Linux安装ElasticSearch集群&#xff08;图文解说详细版&#xff09;https://masiyi.blog.csdn.net/article/details/131109454基于SpringBootElasticSearch 的Java底层框架的实现https://masiyi.blog.c…

STM32 定时器复习

12MHz晶振的机器周期是1us&#xff0c;因为单片机的一个机器周期由6个状态周期组成&#xff0c;1个机器周期6个状态周期12个时钟周期&#xff0c;因此机器周期为1us。 51单片机常用 for(){__nop(); //执行一个机器周期&#xff0c;若想循环n us&#xff0c;则循环n次。 }软件…

Streamlit项目:基于讯飞星火认知大模型开发Web智能对话应用

文章目录 1 前言2 API获取3 官方文档的调用代码4 Streamlit 网页的搭建4.1 代码及效果展示4.2 Streamlit相关知识点 5 结语 1 前言 科大讯飞公司于2023年8月15日发布了讯飞认知大模型V2.0&#xff0c;这是一款集跨领域知识和语言理解能力于一体的新一代认知智能大模型。前日&a…

Stable Diffusion原理详解

Stable Diffusion原理详解 最近AI图像生成异常火爆&#xff0c;听说鹅厂都开始用AI图像生成做前期设定了&#xff0c;小厂更是直接用AI替代了原画师的岗位。这一张张丰富细腻、风格各异、以假乱真的AI生成图像&#xff0c;背后离不开Stable Diffusion算法。 Stable Diffusion…

java 微信小程序授权获取用户手机号码 (完整demo)

1. 前端获取动态令牌 code https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html 2. 后端接收令牌code, 调用微信获取手机号接口 POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_tokenACCESS_TOKEN 3. con…

[附源码]计算机毕业设计-JAVA火车票订票管理系统-springboot-论-文-ppt

PPT论文 文章目录 前言一、主要技术javaMysql数据库JSP技术 二、系统设计三、功能截图总结 前言 本论文主要论述了如何使用JAVA语言开发一个火车订票管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想…

ORB-SLAM2学习笔记7之System主类和多线程

文章目录 0 引言1 整体框架1.1 整体流程 2 System主类2.1 成员函数2.2 成员变量 3 多线程3.1 ORB-SLAM2中的多线程3.2 加锁 0 引言 ORB-SLAM2是一种基于特征的视觉SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;系统&#xff0c;它能够从单个、双目或RBG…