一:对于真实的有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目录下找就可以了。

rdma软件架构的理解。相关推荐

  1. 关于QGroundControl的软件架构的理解

    首先QGC是基于QT平台开发,个人理解软件架构即为项目前后端结构,以及前后端数据交互的逻辑.下面是对QGroundControl源码的一些个人理解,写这个博客只是为了记录下来,防止时间久了忘记,过程中 ...

  2. 『互联网架构』软件架构-深入理解Ribbon

    在国内dubbo还是使用比较多的,毕竟是阿里很早之前都开源的框架,但是dubbo的生态相对来说已经赶不上springclud了,springclud在国外应用的比较多,大家基本都是dubbo的,spr ...

  3. ios软件架构的理解

    http://www.open-open.com/doc/view/afe3090d6d1540c1840bab53b48ba481

  4. 运用RUP 4+1视图方法进行软件架构设计

    要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求.权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足.本文从 理解需求种类的复杂性谈起,通过具体案例的分析,展示了如 ...

  5. 软件架构视图—4+1模式

    前言 本文参考IBM官方的软件架构模式,并参考UML视图建模,将软件架构视图-4+1模式进行了小结.关于每种视图的参考实例,会在随后继续补充进去. 架构模型 一.软件架构 软件架构概念:将若干结构元素 ...

  6. 运用RUP4+1视图方法进行软件架构设计

    第一页 要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求.权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足.本文从理解需求种类的复杂性谈起,通过具体案例的分析,展 ...

  7. 软件工程学习(二)软件架构4+1视图

    一.为什么要软件架构的多视图 需要架构设计的多重视图方法,从根本上来说是因为需求种类的复杂性所致.以工程领域的例子开道吧.比如设计一座跨江大桥:我们会考虑"连接南北的公路交通"这个 ...

  8. 《软件架构设计.第二版解析软件架构概念》阅读笔记——到底什么是软件架构?...

    2019独角兽企业重金招聘Python工程师标准>>> 我的经历及对软件架构的理解 我个人从事软件开发8年,大大小小软件做过不计其数,做过企业应用的架构设计,也做过全新的互联网在线S ...

  9. 什么是软件架构视图 4+1视图

    什么是软件架构视图 那么,什么是软件架构视图呢?Philippe Kruchten在其著作<Rational统一过程引论>中写道: 一个架构视图是对于从某一视角或某一点上看到的系统所做的简 ...

最新文章

  1. if for switch语句
  2. 网络摄像机ip修改工具_网络监控怎么连接网络
  3. 不会英语计算机开车和,驾校学车的那些事儿——技术篇
  4. java模拟登陆_java-模拟登陆练习(示例代码)
  5. QEMU模拟Cortex-A9,运行kernel、rootfs
  6. 暑假周进度总结报告6
  7. 02_行销(Marketing)里用逻辑回归来找寻顾客参与度后面的原因
  8. 邮件服务器软件选择,3款windows下的免费邮件服务器软件
  9. 与君初相识之Linux与Java SE
  10. 淘宝搜索展现原理,店铺商品排名较低怎么办
  11. matplotlib的Text、FontProperties对象、字体(font)属性|中文字体的设置|图像标题、label字体的设置
  12. openshift书籍推荐
  13. Variational graph auto-encoders (VGAE)
  14. C++ 如何保留两位小数
  15. win10非系统盘的数据迁移
  16. 三十天学会绘画pdf_三十天学会实用画法
  17. 十大图像数据标注工具大合集
  18. java获取字符串占用的字节大小,以及不同编码下一个汉字占用的字节数
  19. 【Flask】学习笔记 #3 —— jsonify与重定向
  20. 如何在开发者生态系统的各类资源中修改您的主邮箱(Primary Email Address)?

热门文章

  1. vsftpd服务----配置
  2. shell 判断网线插拔_linux检测网线插拔状态
  3. 2021美赛D题思路
  4. 用于夜视和监控的图像增强方法
  5. 解决:RecyclerView 滑动后布局错乱
  6. 2022年Redis最新面试题 - Redis缓存问题
  7. 电商数仓zabbix
  8. 解决:小米手机设置全屏后屏幕上方有黑条问题
  9. 行业竞争分析及发展动向
  10. 刘德华--3无线五年之约