00:06
Hello,大家好,我是小斌,今天给大家分享DOS的RDMA接口分层调用讲解,希望大家喜欢。Hello,大家好,我是小斌,今天给大家分享dells的A分层verbs接口调用详情,希望大家喜欢。首先。我们打开。文章。呃,按之前的分享,Dills的阿里分层关系如下图所示,最上层是引擎,再往下是cutt,再往下是mercury,再往下是liveric,最后是A。Vers,那这里Adams的话。
01:00
也就是RDM-Co用户态驱动这个项目,然后这里面会包含RM网卡硬件的驱动,如英伟达的,还有麦罗斯网卡的驱动。今天我们来探讨一下分层verb接口调用的详情。首先我们简单介绍一下DV双边通信API的调用汇总关系如下,呃。一服务端开始的时候创建一个事件通道,也就是event channel,还有创建连接标识。这里增听。呃,包括下面的这些。IBV的post receiver这些。Verbs接口。以及客户端这边的也是类似的,因为是对等的端点,两边做的事情都是类似的。包括的分配。这些。像这里PD,我们要在那个mey项目,还有项目中找到这些IV的调用。
02:03
电站。大概我们简单分析一下这个。流程。呃。这是一个典型的一个双边操作详情服务站这边。先做一主要是做一个listening,然后客户端这边是呃,通过root,还有address root解析路由,然后执行一个connectct建联,触发两边发生那个same事件,Same event connect request。这边当连接建立之后,会触发一个CM事件establish,然后在建立事件之后。服务的人这边就接受。服务端这边在接收请求之前,要往自己的那个接收队列里面,呃,提交一个工作请求。
03:01
用来用于。用来当客户端发送请求过来的时候,会消费服务端这边的接收队里面的工作请求。然后另一个参考示例的话,就是一个DEMO,这个要放大可能才看的清楚。啊,这个先不管。OK,我们主要今天主要讲解就是在那个micro中以及发中的RDM相关的API的一个汇总。你先大概浏览一遍,这个下面是一些读写的主流程的一些调用,这个是bug传输的。OK,最后是参考这个一些项目,然后我们顺着这个从这里开始讲。
04:00
先把这些webs的API给找出来。首先呃,服务端,服端是创建事件通道,也是创建一个通讯标识,启动R监听,大概就是说在这里create channel。也就也就是说他是在那个Fi,呃,EQ open,就打开EQ的时候会掉到这个里面去,我们找一下这个流程。里面应该是没有调用这个接口的。然后我们再往下吧,然后。呃,他创建世界通道,然后。就是通过这个I EQ open。这里面掉下去的。
05:02
调到这个里面会有一个。房间。Open,我们看一下这里。
06:27
我们看到这个里面有这个。这就是,呃。时间通道的创建。然后我们看那个。H7创建端点的时候,看这个create ID的时候,就创建通讯标识的时候,是在呃,这个open的时候。会创建这个点,它通过这个。
07:00
呃,这样掉下来亏得一批,然后会创建那个。锻炼。我们看到是这里。就是他在这个end point open的时候,一个基本的打开这个里面。基本打开里面会去掉那个。然后调到这里来,然后listening的话是在调I listening的时候点listening,它是调到这里来的。它的上面的话是应该是。也是在E的时候,通过I enable,通过那个controller control,然后start调到这边,If I调到这边来。
08:06
然后我们。他这个channel就是这个创建channel之后,有一个它会把这个channel的FD。通过一个E给监听起来,将里面的时间通道FD关联到EQ的这个EE的这个FD,通过这个FD就可以。呃,通过1WAIT就可以拿到这个事件做一个中断模式,但默认我们这里面看它是一个中断和轮旋模式,可以自动切换的,这里面me是有这个机制的。客户端也是类似的。客户只是多了一个是在那个。我看一下啊。的话是在。是在HP trigger里面。
09:02
Trigger的时候,Her的时候去调一个回调,然后查询设置的回调的。地址,然后他转发的时候,然后这边去获取链接。好几连接的时候,创建一批的时候,会去解析这个地址。电信路由。解析路由也是的,解析地址,解析路由通过这这里下去的。分配RDB结构,服务端和客户端对等节点均要执行采用网卡分配,保创建完成通道,还有完成队列通知完成队列和准备好。接收完成事件、创建队列,对注册内存等。这个查询设备的话,主要是在那个get里面会去。查询网卡,然后分配保护域的话,是在doin这里面去打开。然后可以完成通道。是通过这个e open打开这个EQ open的时候。
10:04
走到这边下去,然后CQ的话也是这个EQ open。CQ的话是通过。If,这样下去的。Create通过创建上下文的时候,WiFi context create if iable的时候,创建出差内存的话是通过memory这里。叫IVMR能去完整队列。这个话就是说。呃,这边发送之前会去刷刷新一下这个完成对联flash,然后调到这个IPVCQ。结束当旗甲网放置工作请求的话,是在。
11:02
就t receive的时候。还有这个多。拨消息的时候会调这个。客户端连接的话是。在过去年间。的时候,发数据的时候,获取连接时会通过connect。服务端,然后会触发一个连接事件,对,然后开始走刚才我们说的一些流程,然后这边post。客户端发生非预期的时候,会掉到这个里面去消费资源。的话就走一些呀之类的,就和我们刚才看到的那个,呃。图里面对起来了,下面。消毁资源。degree ML degree SQ啊,SQ啊这些。消费资源危害分配的结构。再切过来。
12:00
特别是消费资源第二以下的部分的接口的一些详情,比如创建时单通道啊。创建时间通道,主要是你上面有个FD。它这里面会。对,他会打开一个FD。这个就是R-Co里面的代码,然后分配,呃,通讯标识,这里是的ID。他这里面会通知内核做一些事情。这个再往下我也就没有去梳理这一块的代码,有需要的话。可以,感兴趣的可以往下说。然后。Listening的话,这边也是网内合发,谢谢。发起建立连接请求,OK,这个就是BS的分层调用的一个。大部分的IB,呃,VB接口的一个调用站,那我们再回头来看一下。
13:06
嗯,这是我们刚才讲过的,然后。一。刚才说的是双边的,然后这边一个单边的读写的主流程,以及部分调用站。一个典型的。BRDM收发文件。比如说。这边的是客户端。传输进去。这里面之前应该有讲过,我就简单提一下就行了。会涉及到一些注册内存的。电站对。这个是服务端的。主要他这个IPV调用是一层一层,最终是调到那个。
14:03
这个IPV,这个MR主要是获取的这个远程件。会做一个交换,交换者。再做一个面面。嗯。这里面有一个。他的一个身体。这里面部分的调用在这里。检查协议啊之类的。那边主要就是有一个呃,获取信息,它会有一个汉汉字的提示信息,会把这些。网卡相关的属性设置上,然后再去调这个game,我们刚才看到的第二个IV current device,查询网卡设备的详情,包括网卡的一些m tu啊,QPL的数量啊那些。属性就是硬件的一些能力值,那就是通过这个这个暴露上来的。
15:03
对,其他的是那个对。发送数据,发送数据的时候先获取连接,然后。没有连接的话会去后期跟连接,没有连接的话去建连接。好,这里装载机。今天在这里。这里面分为一些紧急数据,小数据,还有一些大数据,16K的以内的就走,小数据大于16K的就走。其他方式对。是这是都是一些对战,感兴趣的话可以仔细看一下这个里面的一个对战和对照的理解。这边路人太多了。这边是一个单边的雪。一个po的操作,它主要是一个code。
16:04
我带立即熟悉,为啥也没醉?主要是提交那个。突然之间,巴格拉的时候。是类似的。这面刷发送队列调用。应该就是这个close。主要就是通过main函数进去,然后这里,然后去读那个完成。这是一个对的啊,创建2D时间通道的一个调子,对,是通过那个就比较长初始化的时候。一层一层检查协议,然后获取这个信息,然后。大致下面会去创建一个ID。创建一个通讯ID,然后随便。
17:01
到这里创建时碰到。分配ID这边也是类似的。服务端监听是也是这样下的,就是初始化里面去in able里面CTR了,Start listening start if I listening。调了发送的解析地址就是address,这里也我们trigger,这个是通过出trigger出现。转发的时候。打开链接。POINT1,然后解析地址到这下面来。总的话,这是参考的一些项目,还有项目最后的一个博客。这是一个前的视频Dis的Dis基本这一期的话基本就OK了,基本可能。嗯。
18:01
就这些了,然后呃,下一期的话我会分享从UC他开始,因为UC它也是一个非常大的项目,这里面我想一下,呃,关于这个maker里面我想提的一点就是它有一个。呃,轮和终端模式自动切换的一个逻辑在里面。找一下这块。
19:35
Mercury。对呀。
20:35
OK,我们看这个接口里面。
21:08
我们看一下里面的中端模式和轮模式自动切换的逻辑筛选是在这个Co Co的流程的话。在这里。我们。看一下这个Co progress的流程。
22:04
上面的时候,每人256个,然后掉到这里下面。通过这里面调下来,你看我们看到这个流程还是其实还是挺长的,重点关注这个终端和螺续切换,自动切换。就是他这里有个逻辑,就是说这里有个呃循环。安全等待,默认是force。它首先会一般有螺旋机会从这这里进来。这里面去TRY位,TRY的话,它主要是去呃查完成队列里面是否是,如果完成对部位空表示有网络时间,这个就会返回FOUR20。那么这里面不为空。嗯,就会返,说明有完成事件就会返回,Force就开启了允许模式。也就这里返回force force的话。
23:02
那这个就是force,然后这个下面的话就。这边就是走下面的这个就是轮询模式。呃,当如果说它去TRY里面,这个里面对列为空的时候,那么它会返回处,返回处的话,它会把这个C的安全等待设为处,设为处之后。这边就会进入一个。这就是一个中断模式。中断模式。我们进去看一下。那中转模式的话。这里就会有一个一位就会去等那个FD上面的事件刻读或者可行。这次就是中端好。模式互相切换,就是通过这个一个呃的这个。
24:03
字段来做一个控制。好了。今天的分享。到此结束。希望大家喜欢这个就是de的RDMA分层调用里面的I bv verbs接口的一些。呃,大部分的接口都在这个里面,然后呃,我大概提了一下,然后具体的细节还是要结合这个代码具体,呃。参考这个详细去分析,然后下一期视频我打算开始讲那个UC。有些差的话。呃,先从一个入门开始啊,因为他。对。因为他这边可以先给大家搂一眼。
25:03
东西比较多。因为它主要是有个UCP和UCP的一个分成。对,分别也是主要从他单元测试入手。然后关于差,我打算就是以后就呃给大家做详解。对,大家可以先搂一眼看一下这个概念,这里面会涉及到很多呃。麦斯网卡的一些参数,硬件参数等等,对,主要就这些好,今天节目。今天分享到此结束,希望大家喜欢,谢谢。我是小。再见。
我来说两句