00:09
Hello,大家好,我是小斌,今天给大家分享ucx统一通信框架的传输层中的连接建立和数据发送的流程,包括客户端和服务端。嗯,这是我的第九个视频,希望大家喜欢。好,我是小斌,今天给大家分享ucx,呃,UCT统一通信传输乘二。的深入这块主要是讲解,呃,主流程。就是服务端或客户端的主流程。嗯,首先我们看一下大纲。
01:00
这里面有术语,主流程,还有一个初始化。嗯,接下来是服务端的火焰图,还有客户端的火焰图,包括我们三种主要的消息发送类型,短消息拷贝缓冲器b copy。还有我们的零拷贝。以及一些重要的数据结构,还有一些基础数据结构,API,呃,接口配置,CPU的一些情况。嗯。纯纯的爱描述等。接下来是内存域资源描述服务。还有接口属性,接口信息,IB的内存与配置,呃,MAS5内存域的类型。IB传输层的通用网卡查询的一些命令位。以及重要的函数open和那个folk in。嗯,MB的配置文件。还有一些常用的命令。
02:01
比如说显示U叉所有的配置及说明,查看U叉默认配置。打印配置文档。嗯,还有其他的一些信息吧,然后大概就这些。OK,我们从这开始。首先我们这个里面的术语涉及的术语就是这个LA,那个就link aggregation group,也是链路汇聚。The band。可以将两个或多个网络口组成一个接口,它可以提高网络吞吐量和带宽。在其中一个接口发生故障时提供冗余。所以UC差的项目中会出现这个那个。具体的详详解的话,可以参考这个链接。然后主要的流程是在这里。呃,服务端或客户端在主函数中解析命令行的参数,它是CMD设置服务端的。
03:05
端口,然后初始化上下文。你调这个系统调调这个。UCS的调用。异步事件上下文用于管理定时器和FD通知。还有初始化、多生产者、多消费者对列,也就是multipro multi consumer。还有化非阻塞的异步轮行器。有是ETH poing in it。包括还有初始化可重入的自选所上线文档,这是第二,第三步就是创建工人worker的create,工人代表着progress的引擎,也是驱动,驱动这个呃,消息的收发。可以在应用程序中创建多个进度引擎。
04:01
例如供多线程使用。第四一点是根据入程查找期望的传输层,这个函数比较长。待会我会在那个代码中简单过一下。DV transport layer lookup TEL lookup由最小延迟决定要使用的设备和传输。第五步是设置回调。Interface set am handle服务端收到客户端数据后的回调。就是客户端给服务端发送消息后。呃,触发的回调。第六步是建立so的连接。这个RTV它首先是通过so,嗯交换。地址信息。复旦鉴定端口,然后等在客户端发起so连接。第七步是客户端建立连接后,两边交换地址send。Receive,先通过发送和接收长度,然后发送。
05:02
我接受地址交换,就是交换通讯地址,然后通过地址来。建立compare的连接。第八步是创建端点endpoint create。或几张连接一直get address连接对等端点。内部通过这个ivv modify这个VB的接口设置QP的状态机来建立QP连接。嗯。连接接听后,客户端调用短消息。或者说是缓冲区。您拷未发送数据,然后第十步是显示驱动功能的进度是work progress,这个跟那个dells的progress比较类似。基本都有这种progress trigger机制。然后。主要是Pony网卡的完成事件,SPDK里面也会有这这种类似的。
06:04
Progress。第11,不是发送完了,然后自愿的销毁。我们看一下那个初始化构造器。这个是在买还是之前执行的。嗯,它会检查批的特性,还有初始化的日志进程ID的。全局的配置。选项初始化填充配置文件,然后添加全局的VF节点资质等级的。这里面接下来是那个全局配置表,内存对齐的,然后填充配置文件,说实化ucs库以些这卡表慢慢的说。还有他一个打开的动态库。然后是全局的复制所的一个初始化。复制所的初始化呃,优化版本的内copy然提供CPU提供者还是日志初始化还状态统计初始化列表数据库等初始化standard,然后是memorytra,内存跟踪的初始化第八个in调试和信号对战single初始化in初始化现成的私有上下文有数据,然后是异步事件和七的初始化a global in。
07:28
流ma距离哈希表的,说实话ma in top,用总线ID查找设备,你就是一个总线top的组装,还有那个re seed随机种植。呃的一个初始化,嗯。启动ID啊,它。获取当前那不得。透露一下查查库,这是d open动态打开那个。So动态库用的,然后打印当前CMD,然后。
08:01
呃,监控进程的虚拟化文件初始化加载所有模块,它就是摸。咱们开服务端的一个。黄图。当我们启动的时候。这种服务单的时候。这边有一个传输绳的查找。你看它的调用是比较多,它应a process顺着这这线往上走,这里面是在一个有一个内存池的增长逻辑group。Memory group的逻辑也是在当我们内存池中的元素不够的时候,他通过grow,然后呃,扩充内存池中的那个元素,然后。把内存是什么元素用来调那个。IBVRIMR来注册。OK,主要能看到的就是这些。然后包括一些初始化的TCP的查找设备啊,M的呃,MA5的。
09:01
开发DV差的一个元数据的一个。查找,然后客户端的火短消息,这这这都是对应短消息,短消息的话,呃,客户他那也是类似的,也是有一个操作准。嗯,它主要里面也是这是类型注册,然后调用站的话是我看m short,然后这里是。的,然后通过这里。MSG。填充这个。狙击表。然后调用web的。IV position的。唐总。考核的b copy be copy也是,首先这一块是类似的,然后这里有一个pro这里,Be copy通这里。啊,接下来是比啊,这是一个特写卡。也是grow,那这边也是注册内存的一些流程。
10:02
基本上是类似的。然后再往下是。就是。Progress我们看一下。OK。重要的数据结构。组建。Usity comment下头所说的只是传输组件,我们去搜说它的知识。这些。嗯。通过点内空格,空格空格等于,然后可以知道值的传输层,比如说这里有什么。嗯,科大。苦胆。库大接口那个NCCL可以完成那个GPU间或者跨机通信,或者机本机类通信也是走的2D面,NCCL是因为打的另外一个项目,GPU的一个项目,它里面是简单的把webs给封装了一下。
11:00
性能是比较高的,他因为没有太多的管通信管理,其次不像UC他做的这么复杂。然后。APC,比如说做GDR。I be的。Sam。年级管理的。看他这边的IPC的。谁买的?OK。TP的。也是我们的统一组件大概就包含只传输人组件大概就包含下面这些。他文件是在这里面。这是一些其他的杂项,看一下。这是一个配置。嗯,传输成IB接口的配置集成,它这里面用到很多面向对象的那个有点像类。就他里面。我装的class super。面对象的语音。CUV。缓虫类型。
12:00
所以我们的二呃1234缓存都在这里,包括数据缓存,指令缓存。但这个CPU开启没体现。然后从L的描述,L描述就是LV。打分儿就是。内存块的地址,内存块的长度,还有这个内存的handler。看。接口的信息,这里内存域的一个配置。And you s。脉络15内存域的类型在这里有什么flag?The power Miss her。下面。Cud就是通信的类型。HCA命位。徐文英件的,他有些控制命令。
13:08
DV差对象表示一些底层的固定对象创建它的输入命令是用户应用程序给出一些元数据。OK,重要的函数open。打开内存一。IB初始化进程的分差控制内存的核心原理就是通过对所所有已注册的内存与内所在的内存也打上这个。标记创建纸巾才有所有在的内存,不会触发cow。就是copy right显示复制避免了前面所说的带的网卡D内存地址不一致的问题。它会引入额外的。内存记录和查找的开箱,这个会有一定的降低性能。我们看C项目里面会有有用这个,有些叉里面也会有用的,也有人要这个。
14:02
配置文件设置里。嗯,一些常用的命,比如查看所有的配置及说明,就是U-F,查看默认配置在这里UC in-C,比如日志级别。八看一下这里面最大的事件。有很多。宝宝一起买65的特性相关的。这个是和那个网卡麦斯网卡紧密结合在一起的。具体用到的时候,可以再去详细去了解每一个参数。然后是打印配置文档,就是杠F。然后PPT每个节点的进程这里面。一个概念没激励。带宽的规范,它是等于专用的加共享的,然后再除以这个PP。
15:09
Okay。贷款的计算公司,然后这边日志级别也有这些。Morning dialogue info debug tree。所有共享库模块是在这里。C may I be a。叉P。数据传输的一个梳理。以太网。是IP的一个。规范下面。它是一个枚举类里面有。晃动速度。比如说每一种类型,它对应是怎么计算出来它的那个,呃,Latency延迟。然后。他的呃,单路带单路rate,然后编码。
16:04
对。也对应这些SDDDQD啊这些。India next generation。随便。对,相机的确。重要的概念在这里面。所有设备的。有个用户访问区的一个概念在里面,可以看一下,那有用的话具体可以再来。再细化一下。IB的事件设置了IB type。Q,发啊这些。内存类型。主机内存默认还有DA内存。ROOCM。
17:00
I。其他的参考就是这些笔记。然后我们在。去了刚才那个流程,主要是看一下那个流程。主流程里面我们去找一下对应的细化一下。比如我们服务端启动的时候。末端启动的时候,这边对应这里是上pass在这里。解析完之后,这边是在创建一部的上下文。多生成消息队列,这个下面对齐的往下就是分配那个内部分配,内存分配。内存,然后。
18:01
就是一个上下文的网络,上下文的一个初始化。跟踪方法,然后这边有。初始化生产者多。消费者嘴里。紫萱说在这里出事。然后。再往下是一个异步的方法。执行一个一不方法第事了一不论行不出声。接着是创建那个功能,也是对应这里。创建功能。商业功能的话里面主要是创建一个工作对象。然后再往下的话,它是。也需分配。当前类的传输。的一个列表。
19:02
Q。Progress。这边是一个对象的一个记录,就VFS虚拟文件系统,它比较主要的一个函数来了,就是说这个操作期望的传输层。通过这里它就用的是动态加载的。但是去找最小延迟决定要用的表传输。这里面首先会去查找那个组件,查与组件,会去当前就可用的组件,八个组件,那些组件都是在他那个。之前初始化好的。上面主要重点的是那模加载所有模块的话,他会把这些模块都加载一遍,然后我们配的肯定是IB的话,启动的时候我们这上面应该是有参数的。不像这个参数。杠D、杠t type z RC。
20:00
启动的,然后所以他会根据这个类型去找。不要加载UC。嗯,模块。下载一个,然后它会去动态去open它,然后通过一些符号表把它的地址找到,然后下载进来。这个。查查动态库,动态库的函数地址。调这个系统调用。搜索IP里边看一下这个对下来这里还没完。下面还有。那个主机,然后去便利,然后找到。查询。读取内存的资源,这里会,然后再往下。呃,他会打,打开来阵雨。调我们的IV的接口去查看设备列表。IPV get device list,然后去打开open的话就掉了这个,它这个open是一个接口,有很多实现,最终比如说我们配置的就调了这个MALO15的这个低位差的。
21:11
内存一的一个打开,然后他这边打开设备去,他们去创,创建那个CPU完成队列,然后又把它销毁了来。来确认这个设备是可以打开的。然后。时间通道也会创建,在这里创建。但我们现在是七个UAR,就是我们刚才说的那个用户于。OK,有一个初始化的过程,Ru。这边。去查询设备能力。去查看东莞。找到这个PCI地址。有效带宽是在这里,然后这边是get这个。PCI的一个带宽。
22:01
这边是那个计,计算有效带宽,我刚才提到的是通过一种编码的方式来计算。OK,然后再往下是。嗯,那个就是我说的那个链路聚合。然后就是在这里,他连路集合。Mode的话是在这里选择类型。To cralu。呃,Link aggreg,链路聚合,然后是端口的选择模式。那下面我们看到有很多大量的关于脉络15的一些特性的一些查询,还有一些mini。原是没得输出啊。这边会去初始化一个那个AI好像会用这个内存。
23:02
DNA buff,然后这边。内存池的一个住处啊。OK,这边是在做那个。发现马是在做那个注册内存对。最后把那个V出错了。然后是这边我们看。然后是。查询。查询传输层资源,然后这边往下建成端口,然后是初始化。Interface读那个配置文件,然后来填充打开。填充。销毁这个嗝屁,然后这边把那个progress给。这下面是在。
24:01
有一个G内存的增长。真长的话。就会去注册内存I。然后这边是驱动接口的运转progress这边又是。查询。这样我们看到它有。查看那个网卡的配置,网卡的速率。还有编码找到匹配的。这边计算一个延迟,Overhead,还有什么那个。Andp point这些。设置一个这里就到这里就截止了,就是说我们说的那个,呃,查到期望的传输层由最小延迟决定的,所以就完了,然后接下来是设置那个。服务端介绍客户端数据的这个回调函数。比如说word。然后再往下连接。这边就是说开头开始监听。
25:00
因为这个时候Q还没建立连接,所以说只能通过搜建立连接,然后获取到那个通讯地址。然后通过send receive把那个通讯地址交换,交换之后这边在创建端点,端点类似于里面那个end point的一个。一个抽象里面有个单立。嗯。这边也用到一些核心的数据结构,K哈表可以参考这个。然后这边的话是会去连接断点的。端其实就设置Q币的状态机,我们在很多项目中都会看到这种,比如像是CNCCL。还有lip fabric中都会有这些。Modify这个QP,把这个QP连接建立起来。许多网略变自信。去弄那个。Worker progress。
26:02
这边就开始po CQ。这里面会有一些仲裁的机制,这一块的话还没有细看,后面有机会给大家细看一下,然后这边再往下是更新那个。温心读。这个这这边是一个分法,中则期的一个分法。构成死亡资源。Okay。总的来说这个服务端这边就启动了。邻居建立了,然后这边的话,通过这种发消息。发消息的话。OK,我们。下次来讲那个发消息吧。今天就讲到这里。OK,看一下其他还有什么。那眼在里面的。
27:02
一样。这两片大糕。简介,然后一个。够了。但是你。我之前说到的那个传输层,就是在这个man之前就已经初始化好了,打开动态库,所以在那个查到传输层的时候,就已经可以找到那那八个传送神。OK。今天的。技术分享到此结束。希望大家喜欢。谢谢。再见。
我来说两句