当前位置:网站首页>DPDK mlx5 驱动使用报错
DPDK mlx5 驱动使用报错
2022-08-03 02:23:00 【choumin】
还是记录一个小点,希望对大家有所帮助。
背景: 最近需要用 DPDK测试 Mellanox的 ConnectX-4 Lx网卡。在 DPDK中,该网卡对应的驱动是 mlx5。使用的 DPDK版本是 20.11和 22.03,结果都出现了类似的报错信息。
问题: 在 testpmd中启动上述网卡出现报错情况,testpmd的命令如下:
$ ./build/app/dpdk-testpmd -l 0-3 -a 0000:06:00.0 -a 0000:06:00.1 -- -i
主要的报错信息如下:
...
Configuring Port 1 (socket 0)
mlx5_pci: Failed to init cache list NIC_ingress_0_matcher_cache entry (nil).
mlx5_pci: port 0 failed to set defaults flows
Fail to start port 1
Please stop the ports first
Done
...
在网上搜索一番发现,上述报错信息之前已经有人在 DPDK的 Bugzilla上贴过,但后来不了了之了,链接如下:
https://bugs.dpdk.org/show_bug.cgi?id=580
解决方案:
其实,在 DPDK 的官方文档中已经有 mlx5 驱动的使用教程了,链接如下:
https://doc.dpdk.org/guides/platform/mlx5.html
建议先认真看一遍。
核心 的一点就是: 想要顺利使用 DPDK mlx5驱动,需要成功安装它所依赖的外部组件,包括外部动态库和内核模块,如下所示:
- 用户态外部库:
libibverbs、libmlx5 - 内核态模块:
mlx5_core、mlx5_ib、ib_uverbs - 还有可能需要升级固件版本,具体要求参照上面的链接
毫无疑问,在安装上述组件的过程中或多或少会遇到一些问题,不然也不值得写这篇博客了。
官网文档说,上述组件可以通过三种方式安装。这三种方式我都花了不少的时间尝试过,结论是直接推荐第二种,因为其他两种方式安装成功后,还是有问题,可能是组件之间的版本不匹配。总之这个驱动很复杂,GDB调试也只能定位到外部组件的问题,但为什么产生那个问题却不知道,还是得踏踏实实的把环境配好。
- 第一种:安装
rdma-core包 + 使用内核自带模块 - 第二种:使用
Mellanox OFED安装 - 第三种:使用
Mellanox EN安装
使用 Mellanox OFED安装需要下载一个软件包,链接如下:
https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
下载时需要选择自己所用 OS和 CPU架构对应的版本,如果没有,则下载一个最为相近的版本(这个问题被我遇到了)。
如果版本完全匹配,按照官网文档所说,只需要执行下面这个命令就可以安装成功了:
$ ./mlnxofedinstall --dpdk
由于我下载的 Debian版本和所用 OS的 Debian版本不匹配,因此需要将 distro文件的内容修改为 skip-distro-check,即如下所示:
$ mv distro distro.bak
$ echo "skip-distro-check" > distro
$ cat distro
skip-distro-check
继续安装时,又提示我内核版本不匹配,因此还需要在命令行加一个参数:--add-kernel-support,最后的安装命令是:
$ ./mlnxofedinstall --add-kernel-support --dpdk
上述命令需要运行十几分钟,如果中间没有报错就安装成功了。有报错的话,按照提示进行修改和配置,比如修改配置文件、修改安装脚本、增加命令行参数、卸载某些有冲突的软件包等等。总之,一定要安装成功才行。
边栏推荐
- lombok 下的@Builder和@EqualsAndHashCode(callSuper = true)注解
- 梅科尔工作室-14天华为培训三
- 能添加任意贴图超级复布局的初级智能文本提示器
- 征集 |《新程序员》专访“Apache之父”Brian Behlendorf,你最想问什么?
- 孩子坐不住就是不专注?猿辅导揭秘专注力的三大误区
- 为什么要使用 playwright 做浏览器自动化测试?
- Interconversion between numpy PIL tensors
- 【静态类型和动态类型 编译检查和运行检查 Objective-C中】
- Summary of some interviews
- 韦东山 数码相框 项目学习(五)libjpeg-turbo的移植
猜你喜欢

如何画一张架构图(内含知识图谱)

JVM internal structure and various modules operation mechanism

Go新项目-编译项目的细节(4)

Incorrect datetime value: '2022-01-01' for function str_to_date

ldap创建公司组织、人员

[Example构造方法增加notNull参数,默认false,允许值为null,值为null的时候不加入到条件中

二叉树的前序遍历、中序遍历、后序遍历和层序遍历

15【背景 渐变色】

【面经】被虐了之后,我翻烂了equals源码,总结如下

vs studio 安装opencv 环境
随机推荐
Spark SQL简介
C语言——结构体(声明、内存对齐、自引用)、位段、联合体、枚举常量合集
FLIR E95 在8层楼看马路上行驶的CAR的热成像形态?
网易数帆陈谔:云原生“牵手”低代码,加速企业数字化转型
Go新项目-编译项目的细节(4)
Linux定时任务脚本执行时mysqldump备份异常的问题
堆的应用:堆排序和TOP-K问题
【每日一题】622. 设计循环队列
【Flink】使用arthas在线诊断flink的那些事
常用工具链和虚拟环境-msys2与mingw
公司代码学习笔记
leetcode:163 缺失的区间
【云原生】灰度发布、蓝绿发布、滚动发布、灰度发布解释
YYGH-BUG-06
思维+启发式合并
C语言实验十二 指针(二)
实现统一账号登录,sonarqube集成ldap
我终于逃离了互联网,却陷入了迷茫
问题记录:jenkins构建时报错The goal you specified requires a project to execute but there is no POM in...
【UE4】搭建局域网内VR直播 UE4.27