mlnx
MLX4 和 MLX5 的区别
CONFIG_MLX4_EN=m
https://enterprise-support.nvidia.com/s/article/mellanox-dpdk
mlx4 is the DPDK PMD for Mellanox ConnectX-3 Pro adapters. mlx4 is included starting from DPDK 2.0.
mlx5 is the DPDK PMD for Mellanox ConnectX-4/ConnectX-4 Lx/ConnectX-5 adapters. mlx5 is included starting from DPDK 2.2.
看看几个基本的工具
https://stackoverflow.com/questions/58622347/what-is-the-difference-between-ofed-mlnx-ofed-and-the-inbox-driver
采用这个吧:
🤒 ag -l depmod -g "*.spec"
knem.git/knem.spec
mlnx-nvme.git/mlnx-nvme.spec
kernel-mft/mft_kernel.spec
00-mlnx-ofa-kernel.git/mlnx-ofa_kernel.spec
为什么 nvme 是 mlnx-ofa_kernel 的
mlnx-nvme 依赖一个 mlx_compat 的 kernel package
[ 9160.502221] nvme_core: Unknown symbol backport_dependency_symbol (err -2)
mlx_compat 在 mlnx-ofa_kernel-modules 中:
[root@bogon 16:15:24 ~]$ rpm -qf /lib/modules/5.10.0-202.0.0.oe1.v10000.x86_64/extra/mlnx-ofa_kernel/compat/mlx_compat.ko
mlnx-ofa_kernel-modules-5.8-OFED.5.8.5.1.1.1.kver.5.10.0_202.0.0.oe1.v10000.x86_64.x86_64
mlnx-ofa_kernel-modules 提供的驱动和 mlnx-nvme 不知道为什么是有重复的:
[root@arm-server a]# rpm -qpl mlnx-ofa_kernel-modules-5.8.x86_64.x86_64.rpm
// ...
extra/mlnx-ofa_kernel/drivers/nvme
extra/mlnx-ofa_kernel/drivers/nvme/host
extra/mlnx-ofa_kernel/drivers/nvme/host/nvme-rdma.ko
extra/mlnx-ofa_kernel/drivers/nvme/target
extra/mlnx-ofa_kernel/drivers/nvme/target/nvmet-rdma.ko
// ...
如果都安装,就是这个场景:
[root@bogon 16:20:30 5.10.0-202.0.0.oe1.v10000.x86_64]$ find . -name "nvme*"
./kernel/drivers/nvme
./kernel/drivers/nvme/target/nvmet-fc.ko.xz
./kernel/drivers/nvme/target/nvme-loop.ko.xz
./kernel/drivers/nvme/target/nvmet-tcp.ko.xz
./kernel/drivers/nvme/target/nvmet-rdma.ko.xz
./kernel/drivers/nvme/target/nvmet.ko.xz
./kernel/drivers/nvme/target/nvme-fcloop.ko.xz
./kernel/drivers/nvme/host/nvme-fc.ko.xz
./kernel/drivers/nvme/host/nvme-rdma.ko.xz
./kernel/drivers/nvme/host/nvme.ko.xz
./kernel/drivers/nvme/host/nvme-core.ko.xz
./kernel/drivers/nvme/host/nvme-tcp.ko.xz
./kernel/drivers/nvme/host/nvme-fabrics.ko.xz
./extra/mlnx-nvme/target/nvme-fcloop.ko
./extra/mlnx-nvme/target/nvme-loop.ko
./extra/mlnx-nvme/target/nvmet-fc.ko
./extra/mlnx-nvme/target/nvmet.ko
./extra/mlnx-nvme/target/nvmet-tcp.ko
./extra/mlnx-nvme/target/nvmet-rdma.ko
./extra/mlnx-nvme/host/nvme-rdma.ko
./extra/mlnx-nvme/host/nvme-core.ko
./extra/mlnx-nvme/host/nvme.ko
./extra/mlnx-nvme/host/nvme-tcp.ko
./extra/mlnx-nvme/host/nvme-fabrics.ko
./extra/mlnx-nvme/host/nvme-fc.ko
./extra/mlnx-ofa_kernel/drivers/nvme
./extra/mlnx-ofa_kernel/drivers/nvme/target/nvmet-rdma.ko
./extra/mlnx-ofa_kernel/drivers/nvme/host/nvme-rdma.ko
安装参考: https://docs.daocloud.io/network/modules/spiderpool/install/ofed_driver/
这几个驱动什么关系? https://stacoverflow.com/questions/58622347/what-is-the-difference-between-ofed-mlnx-ofed-and-the-inbox-driver
常见的 mft 工具使用
mlxconfig -d 0000:81:00.1 q NUM_OF_VFS
mlxconfig -d /dev/mst/mt4119_pciconf0 set NUM_OF_VFS=16
二分内核的时候遇到内核无法启动的情况,最后发现是由于 mlnx 驱动的问题
猜测是固件和驱动版本不匹配导致的,之后讲该驱动禁用掉即可。
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=1/256 refcnt=2
pending: hub_init_func2 [usbcore]
workqueue mm_percpu_wq: flags=0x8
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=1/256 refcnt=2
pending: vmstat_update
workqueue pm: flags=0x4
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=4/256 refcnt=5
pending: pm_runtime_work, pm_runtime_work, pm_runtime_work, pm_runtime_work
pool 0: cpus=0 node=0 flags=0x0 nice=0 hung=58s workers=7 idle: 16 5 574 256 606 581
BUG: workqueue lockup - pool cpus=0 node=0 flags=0x0 nice=0 stuck for 92s!
Showing busy workqueues and worker pools:
workqueue events: flags=0x0
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=46/256 refcnt=49
in-flight: 576:work_for_cpu_fn BAR(518)
pending: mlx5_timestamp_overflow [mlx5_core], irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, vmstat_shepherd, linkwatch_event, work_for_cpu_fn BAR(511), psi_avgs_work
workqueue events_power_efficient: flags=0x80
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=1/256 refcnt=2
pending: hub_init_func2 [usbcore]
workqueue mm_percpu_wq: flags=0x8
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=1/256 refcnt=2
pending: vmstat_update
workqueue pm: flags=0x4
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=4/256 refcnt=5
pending: pm_runtime_work, pm_runtime_work, pm_runtime_work, pm_runtime_work
pool 0: cpus=0 node=0 flags=0x0 nice=0 hung=92s workers=7 idle: 16 5 574 256 606 581
EXT4-fs (sdc3): mounted filesystem with ordered data mode. Opts: (null). Quota mode: disabled.
BUG: workqueue lockup - pool cpus=0 node=0 flags=0x0 nice=0 stuck for 123s!
Showing busy workqueues and worker pools:
workqueue events: flags=0x0
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=47/256 refcnt=50
in-flight: 576:work_for_cpu_fn BAR(518)
pending: mlx5_timestamp_overflow [mlx5_core], irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, irq_affinity_notify, vmstat_shepherd, linkwatch_event, work_for_cpu_fn BAR(511), psi_avgs_work, free_work
workqueue events_power_efficient: flags=0x80
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=1/256 refcnt=2
pending: hub_init_func2 [usbcore]
workqueue mm_percpu_wq: flags=0x8
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=1/256 refcnt=2
pending: vmstat_update
workqueue pm: flags=0x4
pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=4/256 refcnt=5
pending: pm_runtime_work, pm_runtime_work, pm_runtime_work, pm_runtime_work
ofed 相关的打包都包含了什么东西
这么看,这个问题是相当简单的了:
内核中的包:
• mlnx-ofa_kernel-25.07.tgz 是 Mellanox/NVIDIA OFED (OpenFabrics Enterprise Distribution) 的核心驱动源代
码包,共包含 1889 个文件。以下是详细内容结构:
主要目录结构
目录 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
drivers/infiniband/ InfiniBand/RDMA 核心驱动和硬件驱动
drivers/net/ethernet/mellanox/ Mellanox 以太网驱动 (mlx5, mlxfw, mlxsw)
drivers/nvme/ NVMe-oF (NVMe over Fabrics) 支持
drivers/scsi/ SCSI RDMA 协议 (SRP) 支持
drivers/vdpa/ vDPA (virtio Data Path Acceleration) 驱动
drivers/vfio/ VFIO 支持 (用于设备直通)
drivers/fwctl/ 固件控制接口
backports/ 内版本兼容性补丁 (大量 BACKPORT 补丁)
ofed_scripts/ 脚本和配置文件
compat/ 内核兼容性层代码
include/ 头文件
net/ 网络协议相关代码
debian/ Debian/Ubuntu 打包文件
Documentation/ 文档
kernel-mft-4.33.0.tgz 是 NVIDIA/Mellanox 固件工具 (MFT) 的内核驱动,共 69 个文件:
目录 内容
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
nnt_driver/ NNT 主驱动(PCI 内存/配置空间访问、DMA、IOCTL 接口)
mst_backward_compatibility/ 向后兼容驱动(mst_pci, mst_pciconf, mst_ppc_pci_reset)
mstflint/ MSTFlint 固件烧录工具支持
misc_drivers/bf3_livefish/ BlueField-3 Livefish 调试模式驱动
用途:固件管理、设备调试、寄存器访问(非网络数据通路)
用户态的包:
1. mlnx-iproute2 (Mellanox 定制版 iproute2)
功能概述:高级 IP 路由和网络设备配置工具,基于标准 iproute2 添加 Mellanox 定制功能。
主要工具:
工具 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ip IP 路由和网络设备配置
tc 流量控制(Traffic Control)
bridge 以太网桥管理
rdma RDMA 设备管理
mlxdevm Mellanox 设备管理
devlink 设备链路管理
ss 套接字统计
nstat / rtacct 网络统计
arpd ARP 守护进程
ifstat / lnstat 网络接口统计
vdpa vDPA 设备管理
dcb 数据中心桥接配置
tipc / genl TIPC/Generic Netlink 工具
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2. mlnx-tools (Mellanox 用户空间工具)
功能概述:Mellanox 用户态工具和脚本,用于网卡配置、调优和管理。
主要工具:
工具 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
mlnxofedctl MLNX_OFED 驱动控制工具
mlnx-sf 子功能(Sub-Function)管理
mlnx_bf_configure BlueField 配置工具
mlnx_affinity CPU 亲和性配置
doca-hugepages 大页内存配置
sysctl_perf_tuning 性能调优 sysctl 配置
show_gids 显示 GID(全局标识符)表
show_counters 显示网卡计数器
cma_roce_mode 配置 RoCE 模式
cma_roce_tos 配置 RoCE TOS
set_irq_affinity.sh / set_irq_affinity_cpulist.sh / set_irq_affinity_bynode.sh IRQ 亲和性设置脚本
show_irq_affinity.sh / show_irq_affinity_hints.sh 显示 IRQ 亲和性
compat_gid_gen 兼容 GID 生成
ib2ib_setup IB-to-IB 配置
mlnx_dump_parser 转储解析器
mlnx_qos QoS 配置
mlnx_perf 性能监控
mlnx_tune 自动调优工具
mlx_fs_dump 流表转储
tc_wrap.py TC 包装脚本
mlnx_bf_udev BlueField udev 规则
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
3. ofed-scripts (OFED 脚本)
功能概述:OpenFabrics Enterprise Distribution (OFED) 安装和管理脚本。
主要工具:
工具 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
mlnxofedinstall MLNX_OFED 安装脚本
mlnxofedinstall_deb.pl / install_deb.pl Debian 包安装脚本
install.pl 通用安装脚本
uninstall.sh / ofed_uninstall.sh 卸载脚本
uninstall_deb.sh Debian 卸载脚本
vendor_pre_uninstall.sh / vendor_post_uninstall.sh 供应商卸载钩子
ofed_info 显示 OFED 版本信息
ofed_rpm_info 显示 OFED RPM 信息
hca_self_test.ofed HCA 自检脚本
sysinfo-snapshot.py 系统信息快照收集
mlnx_add_kernel_support.sh 添加内核支持
is_kmp_compat.sh 检查 KMP 兼容性
check_syntax 语法检查
common.pl / tests/rpm_dist.pl 公共 Perl 函数
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
4. perftest (IB 性能测试)
功能概述:InfiniBand/RDMA 性能测试工具集,用于测试带宽和延迟。
主要测试工具:
工具 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
send_bw 发送带宽测试
send_lat 发送延迟测试
write_bw / read_bw RDMA 写/读带宽测试
write_lat / read_lat RDMA 写/读延迟测试
atomic_bw 原子操作带宽测试
atomic_lat 原子操作延迟测试
raw_ethernet_send_bw 原始以太网发送带宽测试
raw_ethernet_send_lat 原始以太网发送延迟测试
raw_ethernet_send_burst_lat 原始以太网突发延迟测试
raw_ethernet_fs_rate 原始以太网帧速率测试
runme 自动化测试脚本
run_perftest_loopback 回环测试脚本
run_perftest_multi_devices 多设备测试脚本
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
5. rdma-core (RDMA 核心库和工具)
功能概述:RDMA 核心用户空间基础设施,包含库、诊断工具和守护进程。
库(Libraries)
库名 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
libibverbs RDMA Verbs 库(用户态直接访问硬件)
libibumad 用户态管理数据报库
librdmacm RDMA 连接管理库
libibmad 管理数据报库
libibnetdisc 子网发现库
诊断工具 (infiniband-diags)
工具 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ibstat / ibstatus 显示 IB 设备状态
ibnetdiscover 发现 IB 子网拓扑
ibping IB 网络 ping
ibportstate 端口状态管理
ibroute 路由查询
ibsysstat 系统状态
ibtracert IB 路由跟踪
perfquery 性能计数器查询
sminfo / smpdump / smpquery 子网管理器查询
saquery SA 查询
vendstat 供应商特定状态
iblinkinfo 链路信息
ibqueryerrors 错误查询
ibaddr 地址查询
ibccquery / ibccconfig CC(拥塞控制)查询/配置
dump_fts / dump_lfts.sh / dump_mfts.sh 转发表转储
ibhosts / ibswitches / ibnodes / ibrouters 拓扑显示
ibclearerrors / ibclearcounters 清除错误/计数器
ibchecknet / ibchecknode / ibcheckport / ibcheckerrors 等 检查脚本
libibverbs 示例工具
工具 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ibv_devinfo / ibv_devices 设备信息
ibv_asyncwatch 异步事件监控
ibv_rc_pingpong / ibv_uc_pingpong / ibv_ud_pingpong 各种传输类型的 ping-pong 测试
ibv_srq_pingpong / ibv_xsrq_pingpong SRQ/XSRQ ping-pong 测试
librdmacm 示例工具
工具 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
rping RDMA ping
rdma_server / rdma_client RDMA 连接测试
rdma_xserver / rdma_xclient 扩展 RDMA 连接测试
ucmatose CM 测试
udaddy / udpong 不可靠数据报测试
mckey 组播测试
rcopy RDMA 文件拷贝
riostream / rstream 流测试
cmtime 连接管理时间测试
守护进程
守护进程 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ibacm IB 通信管理助手(类似 ARP 缓存)
srp_daemon / ibsrpdm SCSI RDMA 协议守护进程
rdma-ndd RDMA 节点描述守护进程
Python 绑定
模块 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pyverbs Python API 封装 libibverbs
rdma-core 中包含了多个 rpm
[ ] 那么这些工具是什么作用的
kudo dnf install -y rdma-core libibverbs-utils perftest infiniband-diags
sudo systemctl enable --now rdma
本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。