rdma软件架构的理解。

一:对于真实的有rdma功能的网卡
首先是应用程序了,比如perftest。
1:https://github.com/linux-rdma/perftest.git
下载以后,依次执行

cd perftest/
./autogen.sh
./configure
make
make install

可以看到许多的测试命令。这些测试命令又对应代码里面的某个c文件,
比如,ib_send_bw对应send_bw.c。
在这里插入图片描述
这里面的代码追一下,它会调用到
https://github.com/linux-rdma/rdma-core里面的libibverbs里面的代码,里面的代码会编译为一个so文件。

对于许多的应用程序,在编程时,需要包含<infiniband/verbs.h>头文件
如果找不到相应的头文件,需要安装
在这里插入图片描述
安装完以后,在系统的默认头文件路径下会多了infiniband这个目录。
在这里插入图片描述
对于
#include <rdma/rdma_cma.h> // RDMA_CM CMA 头文件 用于CM建链
#include <rdma/rdma_verbs.h> // RDMA_CM VERBS 头文件 用于使用基于CM的Verbs接口
需要安装:
在这里插入图片描述
在这里插入图片描述
然后是
2:https://github.com/linux-rdma/rdma-core
下载以后,依次执行

git clone https://github.com/linux-rdma/rdma-core
sudo apt install libsystemd-dev -y
bash build.sh
cmake .
make
sudo make install

可以看到lib目录里面包含了许多是so
在这里插入图片描述
然后到providers里面的各个厂商的用户态驱动,比如bnxt_re
,它会编译为libbnxt_re-rdmaxxx.so

然后就到了内核态,
代码位置。drivers\infiniband\core
在这里插入图片描述
这里面有许多的ko,比较重要的是ib_core.ko和ib_uverbs.ko
通过了内核的ko以后就代码厂商的内核态驱动了,最后到硬件。

至于ib_core.ko和ib_uverbs.ko有兴趣的同学可以看一下源码,不过,我们一般比较关心的是
厂商的用户态驱动和内核态驱动,其他的一般不太关心。

所以顺序就是。
app->libibverbs.so->用户态驱动->ib_uverbs.ko->ib_core.ko->内核态驱动->硬件。
ib_uverbs.ko->ib_core.ko这两步可以先看成是一步吧。
细节要自己看了。

有些应用程序到用户态以后就直接返回了,有些则需要通过那两个ko陷入到内核态去获取信息,然后返回。
在这里插入图片描述

在不同的系统上,比如ubuntu上,使用

dpkg -l | grep "rdma" 

命令先找到内核版本对应的rdma-core版本,然后找到相对应的用户态驱动代码,比如rxe的。
在这里插入图片描述
而内核态驱动对应的版本下载对应的内核源码,然后去driver/infiniband/hw目录下找就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值