
Mellanox专区-OFED&DOCA&RDMA
文章平均质量分 66
OFED&DPU&RDMA&Mellanox
北冥的备忘录
善读者,玩索而有得焉,则终身用之,有不能尽者矣。
本博客是笔者的个人实践记录,文笔随意,严谨度一般,仅供参考,不喜勿喷
展开
-
【微知】linux系统使用NetworkManager服务,如何查看网卡的UUID?(nmcli connect show)
另外NetworkManager的配置在/etc/NetworkManager/system-connections/*下面有先关配置。如果系统使用NetworkManager,可以通过。原创 2025-05-20 00:27:13 · 69 阅读 · 0 评论 -
【微知】Linux系统网络设备名字如何避免enp0s1f1这种而是使用eth0这种?(net.ifname=0、biosdevname=0)
通过修改内核参数可以禁用可预测命名,使网络接口名称恢复为传统的eth0、eth1等逐渐增加的命名方式。具体操作包括使用grubby工具更新内核参数,分别设置net.ifname=0和biosdevname=0。修改后,通过grubby --info=ALL命令可以确认配置是否生效。原创 2025-05-20 00:12:10 · 128 阅读 · 0 评论 -
【微知】RDMA用户态库相关的多个库及其功能分析(一)
本文详细介绍了与RDMA(远程直接内存访问)相关的多个库及其功能,为RDMA应用的开发和调试提供了重要支持。主要库包括: rdma-core-devel:提供开发所需的头文件和库。 libibverbs:RDMA核心库,提供与verbs相关的接口,支持计数器操作(创建、销毁和读取)。 librdmacm:提供RDMA通信管理相关的头文件。 libibumad:属于InfiniBand的用户空间管理数据报工具,非RDMA域。 此外,工具库如librdmacm-utils和libibverbs-utils提供了原创 2025-05-18 14:12:07 · 1364 阅读 · 0 评论 -
【微知】rdma-core中的守护进程rdma-ndd是什么,实现原理是什么?(udev monitor poll & /sys/class/infiniband/mlx5_0/node_desc)
rdma-ndd是rdma-core中的一个系统守护进程,全称是 “RDMA device Node Description update daemon”,即 RDMA 设备节点描述更新守护进程。原创 2025-05-17 21:22:01 · 665 阅读 · 0 评论 -
【微知】modprobe是如何识别模块依赖关系并自动加载依赖的ko的?(/lib/modules/$(uname -r)/modules.dep)
modprobe 是用于加载内核模块的工具,与 insmod 不同,它能够自动处理模块的依赖关系。其原理是通过解析 /lib/modules/$(uname -r)/modules.dep 文件,该文件记录了模块之间的依赖关系。例如,模块 mlx5 依赖于 psample、mlxfw 等模块,同时 mlx5_vdpa 和 mlx5_ib 又依赖于 mlx5。modprobe 会根据这些依赖关系按需加载所有相关模块,并支持通过 /etc/modprobe.d/ 目录下的配置文件进行定制。modules.dep原创 2025-05-17 16:15:04 · 223 阅读 · 0 评论 -
【微知】Mellanox网卡ib设备对应的信息如何快速既查看eth网卡名也查看fw版本也查看网卡型号?(ibdev2netdev -v)
本文介绍了如何快速查看InfiniBand设备的网络接口名称、固件版本信息以及网卡型号。通过使用ibdev2netdev -v命令,可以一步完成以下操作:首先获取IB设备的网络接口名称,接着通过ethtool -i获取固件版本信息,最后通过lspci从ethtool中查看网卡型号。这种方法简化了操作流程,提高了效率。文章还提供了实际操作截图,帮助用户更直观地理解和使用该命令。原创 2025-05-17 14:56:23 · 142 阅读 · 0 评论 -
【微知】Mellanox网卡FW固件文件如何查看该固件支持的PSID等准确信息?(flint -i xxx.bin q)
在烧录FW文件时,文件名可能不准确,错误烧录可能导致设备故障。为了准确识别FW文件,可以使用命令flint -i ./fw-xxx.bin q来查询固件信息。该命令能够帮助用户确认固件的详细信息,确保烧录的准确性,避免因文件名错误而导致的设备问题。通过这种方式,用户可以有效地管理和验证固件文件,确保设备的安全运行。原创 2025-05-17 14:44:30 · 207 阅读 · 0 评论 -
【微知】Mellanox配置工具mlxconfig如何reset配置?(mlxconfig -d bdf reset)
本文介绍了两种使用mlxconfig工具进行配置重置的方式。第一种方式是通过命令mlxconfig -d /dev/mst/mt4099_pciconf0 reset将所有配置重置为默认值,操作完成后需要进行冷重启。第二种方式是通过命令mlxconfig -d /dev/mst/mt4099_pciconf0 reset NV_GLOBAL_PCI_CONF_4重置特定配置项,适用于仅需重置部分配置的场景。帮助信息中进一步解释了这两种重置方式的用途和命令格式,提供了灵活的操作选择。原创 2025-05-17 04:10:59 · 226 阅读 · 0 评论 -
【问题记录】Mellanox PCIe分析工具neohost执行get_device_performance_counters.py报错No JSON object?(安装jsonschema)
可以看到没有其他报错。原创 2025-05-07 23:04:15 · 351 阅读 · 0 评论 -
【微知】关于 Mellanox BF3 DPU 上 rshim 的深入解析(二)?rshim软件和DPU是走什么通道进行通信的?
rshim会根据映射的机制来使用不同的策略,比如vfio会使用vfio的标准策略(比如打开"/dev/vfio/vfio",打开group,获取设备信息,然后mmap,pread pwrite配置,中断使能等。说先rshim开启pcie enable是在启动rshim中期,是rshim初始化后选择PCIe模式,然后PCIe的 probe阶段的初始化前期,用来初始化用户态PCIe操作的相关的准备动作。使用libpci提供的pci_cap_write,指定dev句柄,以及需要读取的cap地址和访问的地址。原创 2025-05-04 00:29:20 · 1039 阅读 · 0 评论 -
【微知】lspci命令显示的厂商信息是如何获取的?( /usr/share/hwdata/pci.ids)
使用lspci命令是如何从PCIe配置空间读取出来厂商字符串信息的?pcie设备的配置空间常规的只有64bytes,而使用lspci可以详细的关于该设备的字符串信息。这些信息并不是存储在配置空间,而是根据系统中配置文件数据库,根据vendor id和device id获取的。本文简单介绍该文件路径,方式。原创 2025-05-02 22:39:23 · 309 阅读 · 0 评论 -
【微知】关于 Mellanox BF3 DPU 上 rshim 的深入解析(一)?以及如果无法创建rshim设备如何处理?
包括要提供boot、misc、console、rshim等多个通道,体现了Mellanox 20多年运维网卡的经验(比如要提供一个tmfifo_net来与网卡通信,这个通道可以简化很多实验环境单机完成HOST和ARM通信,我想新开发DPU的厂商如果设计了这个 应该能省不少事儿;他在硬件上有一个专门的硬件单元。可以看到tmpfifo_net是在rshim进程启动后rshim_main中的work,启动rshim_net_init创建的,如果rshim_no_net为0,表示要开启tmpfifo就会来创建。原创 2025-05-02 22:23:06 · 977 阅读 · 0 评论 -
【微知】如何写一个用户态扫描PCIe设备读取PCIe配置空间的程序?
PCIe设备交互需要基于TLP报文,读取PCIe设备配置空间这些操作在linux内核比较方便,在用户态也有lspci、setpci等工具。如何自己手写一个用户态的PCIe设备,来扫描PCIe设备实现类似lspci的效果,本文是一个简单的实验借助 pciutils 库来扫描并显示系统里 PCI 设备的相关信息。原创 2025-05-02 22:18:50 · 294 阅读 · 0 评论 -
【问题解决】Mellanox驱动加载报错Unknown symbol psample_sample_packet和tls_get_record以及tls_validate_xmit_skb的解决过程
然后搜索:find / -name “*.ko” |grep -i act。咱们没办法,可能需要5.10的内核支持。原创 2025-05-01 20:50:11 · 378 阅读 · 0 评论 -
【问题解决】编译Mellanox OFED各没有安装开发工具如何快速解决?(yum groupinstall “Development Tools“)
新安装的OS,在安装的时候没有选择开发工具,造成编译Mellanox OFED各种问题,如何快速解决?原创 2025-05-01 19:30:34 · 294 阅读 · 0 评论 -
【代码拾遗】linux内核中延时机制之msleep?如何利用msleep实现间歇性确认硬件状态的函数?(不可中断方式睡眠)
如果超时时间到达,进程会被内核调度器唤醒。msleep 函数的核心逻辑是将毫秒数转换为内核的 jiffies 单位,并通过 schedule_timeout_uninterruptible 让当前进程进入不可中断的睡眠状态。下面例子实现一个等待函数,指定一个最长等待时间T1后,就会退出,但是等待期间会被分成多个时间窗口,每个时间窗口检测一次,每个时间窗口间隔T2;这里是网卡的驱动程序定义了一个等待行为,以阻塞方式,间歇性的读取硬件状态是否就绪,但是在等待期间会让出调度器,并且不希望被信号中断。原创 2025-05-01 11:30:08 · 1109 阅读 · 0 评论 -
【微知】Linux如何查看有几个numa节点?(lscpu、numactl --hardware、/sys/devices/system/node/、/proc/cpuinfo)
Linux上 NUMA(Non-Uniform Memory Access)节点的配置和数量以及拓扑会影响到GPU训练的性能。本文记录几个获取numa节点的方法。一般查看物理服务器辅助查看,比如几个cpu socket,但是内存一般看不到。不过按照逻辑来看基本和cpu的socket一致。安装工具:yum install numactl。每个nodeX目录对应一个 NUMA 节点。原创 2025-04-26 20:18:44 · 201 阅读 · 0 评论 -
【问题记录】Mellanox OFED编译报错implicit declaration of function ‘xsk_reuseq_prepare’临时解决办法?
手动编译Mellanox OFED在不同内核,不同环境总是会遇到各种各样的问题。本文记录的是在4.19.91内核编译OFED23.10版本的时候,遇到了关于XDP模块接口的问题,只是临时的解决办法。仅供参考。原创 2025-04-26 12:19:00 · 284 阅读 · 0 评论 -
【代码】Mellanox驱动中rdma_cm建链被拒绝的原因有哪些?
可以看到是OFED通用的转string方法,用边长数组+宏定义结构化初始化。原创 2025-04-24 08:38:23 · 150 阅读 · 0 评论 -
【微知】服务器如何获取服务器的SN序列号信息?(dmidecode -t 1)
通过DMI,系统管理员和用户可以获取有关计算机硬件组件的详细信息,如处理器、内存、硬盘、主板、显卡等的规格、型号、序列号等。dmidecode工具就是利用DMI标准来获取并解码这些信息,以人类可读的格式呈现给用户,方便用户了解计算机硬件的配置情况。各种场景都需要获取服务器的SN(Serial Number),比如问题定位,文件命名,该部分信息在dmi中是标准信息,不同服务器,不同os都能用相同方式获取SN信息。本文记录快速获取SN的方式。原创 2025-04-20 22:34:15 · 462 阅读 · 0 评论 -
【微知】Mellanox驱动报错pdevice‘s health compromised - reached miss count机制分析(timer+check+recover+trigger)
触发机制是:health模块每隔2秒检查一次FW的状态,如果有异常通过print_health_info打印信息。打印的信息内容是硬件寄存器中的信息。本文以一个报错为例子,剖析了网卡的poll health机制,实际是一个2s的timer,到达timer时间检查硬件状态,如果有异常会再触发一个work处理。可以看到是在probe阶段调用到mlx5_load_one流程中的回调function设置专用流程中挂载这个功能,mlx5_start_health_poll启动一个health poll的程序。原创 2025-04-13 22:57:17 · 1047 阅读 · 0 评论 -
【问题记录】Mellanox网卡ib_write_bw设置MTU遇到的一些问题?(-m; ip l s eth mtu x; 打流不能超过active,active不能超过max)
本文简要记录Mellanox网卡mtu修改相关一些问题。原创 2025-04-13 19:50:46 · 253 阅读 · 0 评论 -
【微知】DOCA中DOCA Flow初探?主要原理是什么?四大规则是什么?三级策略是什么?(M3F、Pipe-Entry-Rule
在Mellanox BF系列网卡中通过DOCA Flow让数据包处理从CPU上处理卸载到硬件中。它定义了一系列API来支持。并且通过Flow Pipe的方式来进行。Flow Pipe类似OpenFlow table,定义一个范式:以Flow Pipe(FP)为处理单元,每条FP包含多个条目,多条FP可以进行级联处理。在SDN中使用OpenFlow通信协议来进行定义和管理网络转发规则,让交换机能够被几种控制和管理。在交换机中用OpenFlow table来定义如何处理接收到的数据包。原创 2025-04-13 18:58:03 · 921 阅读 · 0 评论 -
【微知】Mellanox网卡如何查看硬件支持的最大QP数量,最大CQ数量等规格?(ibv_devinfo -v)
有些场景需要查询网卡支持的最大QP数量。原创 2025-04-13 17:37:46 · 267 阅读 · 0 评论 -
【微知】使用neohost持续监控网卡行为的两种方式?(--run-loop方式和watch -n 1 -d 然后输出中sed去掉特殊字符)
neohost检测网卡的重要性能指标,经常需要不停的敲,本文提供2种方式自动刷新。原创 2025-04-13 00:48:35 · 273 阅读 · 1 评论 -
【微知】PCIe网卡如何查看当前pcie是几个lane比如x4 x8还是x16?(lspci -vvv查看LnkCap和LnkSta; /sys/bus/pci/devices/*/*link*)
有些时候知道某个网卡的宣称的物理极限速率,但是实际插入到服务器上由于某些设置、物理接口限制(比如x4 x8)或者其他拓扑带来的变化,造成实际生效的速率并非理论值。此时如何得知实际的PCIe上的实际速率?原创 2025-04-12 23:43:05 · 609 阅读 · 0 评论 -
【微知】Mellanox网卡网线插入后驱动的几个日志?(Cable plugged;IPv6 ... link becomes ready)
本文是一个简单的信息记录。记录的是当服务器网卡的光模块插入后内核的日志打印。通过这种日志打印,可以在定位分析问题的时候,知道进行过一次模块插拔。原创 2025-04-12 21:55:15 · 469 阅读 · 0 评论 -
【问题记录】Mellanox网卡性能调试工具neohost1.5.0安装遇到的问题记录?(python2、get_device_performance_counters.py)
这种新东西,最好用2台服务器,或者两种卡综合配置,这种解决问题的方法在很多场景都用得上,而且有奇效不断分析尝试,目标明确尽量查看报错的日志信息等。原创 2025-04-12 20:19:20 · 1740 阅读 · 0 评论 -
【问题解决】戴尔服务器R720显示屏报错 the NDC is absend?什么是Mezzanine卡?(背板网卡搬迁松动异常、NDC 网络子卡、Mezzanine card夹层卡)
NDC缺失。伴随启动后,往下插入到背板的4个网口不亮灯,路由器上的灯也没亮,说明物理链路没有电信号。确认时网络单元异常。网口在报错 所以用不了。原创 2025-03-23 19:43:35 · 856 阅读 · 0 评论 -
【微知】Intel芯片中的DDIO技术是什么?(Intel Data Direct I/O I/O 设备能够访问 CPU 的最后一级缓存)
从 M2IOSF 的角度来看,入站写入包括两个阶段:所有权和数据回写。在所有权阶段,M2IOSF 使用 ITOM 或 ITOMCacheNear作码向 CHA 发送所有权请求,CHA 通过将目标缓存行的所有权交给 M2IOSF 并相应地更新 snoop 过滤器来做出响应。与非 IO作一样,将缓存行的所有权授予 M2IOSF 需要通过 snoops 通知缓存行的其他所有者,以遵循 MESIF 一致性协议使其副本无效。所有权阶段结束后,M2IOSF 将数据消息 MTOI 发送到同一个 CHA。原创 2025-03-21 02:47:33 · 812 阅读 · 0 评论 -
【微知】BlueField3支持多少个VF?(DPU单口32个,HOST单口126个)
In the BlueField, 每个port最多32个VF。port是指物理口。如果2个port,DPU里面就是64个VFIn the host OS, 每个port最多126个PF。如果2个port,总的就是252个。原创 2025-03-21 01:33:56 · 215 阅读 · 0 评论 -
【问题解决】ib_write_bw报错segfault at 1b1 ip 00007f80f540a137 sp 00007ffc26ac1ae0 error 4 in librdm?
使用支持cuda的ib_write_bw的时候报错。原创 2025-03-18 02:56:15 · 237 阅读 · 0 评论 -
【微知】对于有多个Mellanox网卡并且开了多个VF的环境,如何查看实际的网卡数量?(mst status、lspci |grep nox |grep \\.0\)
服务器上多个网卡,查看ibdev2netdev非常多,lspci也非常多,如何唯一确定实际的网卡数量。本文实操设备只有一张卡仅供参考。原创 2025-03-18 02:27:51 · 220 阅读 · 0 评论 -
【微知】如何用ip命令配置ipv6的地址,以及如何ping?(ip -6 addr add ::1:1:1:2/64 dev enp1s0f0; ip a s)
如题。原创 2025-03-18 01:34:03 · 204 阅读 · 0 评论 -
【微知】如何安装NVIDIA的cuda到centos上?(wget cuda_11.4.0xxx.run; sh cuda_11.4.0_xxx.run --toolkit --driver...)
本文简要记录之前安装cuda的记录,详细记录找不到了,以供参考。已经2个模块需要依赖cuda了,一个是之前提到的nvidia_peermem模块依赖cuda,一个是perftest跑–use_cuda的cuda内存用到。原创 2025-03-18 01:22:31 · 304 阅读 · 0 评论 -
【微知】如何编译perftest支持运行cuda内存? unrecognized option ‘--use_cuda=4‘如何处理?(export CUDA_H_PATH=xxx/cuda.h、)
普通的perftest只能使用主机内存进行rdma,如何让perftest支持使用cuda来跑gpu的rdma?需要在编译阶段支持cuda的版本。本文简要记录编译perftest的过程。原创 2025-03-18 01:16:07 · 1490 阅读 · 0 评论 -
【微知】如何快速查看Mellanox网卡的config中某个config的作用?(mlxconfig -d 01:00.0 show_confs; mlxconfig -d 01:00.0 i)
经常需要使用mlxconfig来配置某个静态参数。这些配置的作用mlxconfig提供了一个命令来查看作用。原创 2025-03-16 19:11:44 · 435 阅读 · 4 评论 -
【微知】ib_write_bw如何指定rdma报文的mtu大小?(--mtu=1024; ibv_devinfo | grep -i mtu)
他这个涉及是合理的,硬件上active了一个最大值mtu,实际指定参数的时候可以软件层修改大小,然后不超过硬件的mtu,就能灵活操作。可以看到最大值是4096,但是active的最大值是1024。并且前面报错3,说明是图中active mtu的index。可设置的最大值是active mtu。active mtu和ifconfig中相同。可以看到ifconfig的mtu修改后,在rdma中只会反应一半,为何?可以在实操图中看到MTU的值是256。原创 2025-03-12 02:46:41 · 348 阅读 · 0 评论 -
【微知】如何使用qemu启动arm版本的Anolis操作系统?(-cpu cortex-a72-drive; file=./xx.qcow2; -bios ./QEMU_EFI.fd)
中途遇到多个问题(包括qemu重新编译、更换编译机、更换系统、更换版本、寻找qemu多个版本原因等)一度放弃最后还是解决。这里指定bios和qcow2的磁盘,并且用cortex-a72的cpu和虚拟的机器 指定8个核,2G内存,bios文件使用uefi,指定串口是stdio。下载操作系统的qcow2的格式,qcow2已经安装好了系统,能够直接使用;如果不是aarch64,x86也可以,只是用qemu x86的。身边如果没有ARM相关实际的硬件,但是希望跑操作系统,可以用qemu来操作。原创 2025-03-11 01:19:55 · 859 阅读 · 0 评论 -
【微知】如何根据内核模块ko查看所依赖其他哪些模块?(modinfo rdma_ucm |grep depends)
有些情况下查看某个模块被哪些模块依赖可以用lsmod看到后面的列表,但是反向查看就要麻烦一些,比如某个模块依赖哪些其他模块?通过modinfo xxx.ko获取里面的depends相关信息。原创 2025-03-11 00:04:11 · 353 阅读 · 0 评论