Dolfin 发表于 2025-4-5 13:58

【网卡卸载】有搞通过vDPA的大佬吗?

想在PVE8上给CX6 DX(OCP)搞通vDPA来实现半虚拟化。



有搞通过的大佬吗?或者说这玩意是必须要DPDK,不能搞in kernel吗?

ksong 发表于 2025-4-7 10:49

用ovs offload就够了

Dolfin 发表于 2025-4-7 18:18

ksong 发表于 2025-4-7 10:49
用ovs offload就够了

用的是 OVS bridge + virtio 网卡 给虚拟机接入;
        •        虚拟机内是 标准的 virtio 网卡驱动(paravirtualized);
        •        虽然物理网卡(Mellanox CX6)+ OVS 支持 eswitch 硬件卸载,但:

virtio 本身是用户态 TAP 接口,OVS 无法将这种流量 offload 到硬件。

是这个情况吗?

ksong 发表于 2025-4-7 19:23

Dolfin 发表于 2025-4-7 18:18
用的是 OVS bridge + virtio 网卡 给虚拟机接入;
        •        虚拟机内是 标准的 virtio 网卡驱动(paravirtuali ...

不用网卡sr-iov的?

Dolfin 发表于 2025-4-7 20:22

ksong 发表于 2025-4-7 19:23
不用网卡sr-iov的?

VM是Qutscloud,没mellanox驱动

ksong 发表于 2025-4-8 09:29

Dolfin 发表于 2025-4-7 20:22
VM是Qutscloud,没mellanox驱动

qnap不是有cx6网卡的吗,黑q没玩过

Dolfin 发表于 2025-4-8 09:34

ksong 发表于 2025-4-8 09:29
qnap不是有cx6网卡的吗,黑q没玩过

不是黑的,是给云上和虚拟化准备的系统。看能不能把QTS的驱动挪过来

summerq 发表于 2025-4-9 10:21

有两个办法:1. 自己编译mellanox qnap驱动。2. 找一台qnap nas,把驱动copy出来

Dolfin 发表于 2025-4-9 14:24

summerq 发表于 2025-4-9 10:21
有两个办法:1. 自己编译mellanox qnap驱动。2. 找一台qnap nas,把驱动copy出来

可能2有希望,1的话内核头文件,依赖工具,编译环境都没有,完全不知从何下手

summerq 发表于 2025-4-9 21:40

Dolfin 发表于 2025-4-9 14:24
可能2有希望,1的话内核头文件,依赖工具,编译环境都没有,完全不知从何下手 ...

我编译过。qnap开源的toolchain和kernel source都可以下载。但是mellanox不必这样,因为qts就自带了。只要找一台qnap的机器用ssh登陆了就能把ko文件提取出来。然后启动的时候做一个脚本自动modprobe就行

Dolfin 发表于 2025-4-10 03:24

summerq 发表于 2025-4-9 21:40
我编译过。qnap开源的toolchain和kernel source都可以下载。但是mellanox不必这样,因为qts就自带了。只 ...

有尝试从一台Intel的小物理机把mlx_compat.ko/mlx5_core.ko都挪过去并insmod了,但是绑定驱动可能出问题了,从CX3(mlx4_core.ko)到CX6都识别不了。
日志是这样:
mlx4_core: Mellanox ConnectX core driver v4.0-0
mlx4_core: Initializing 0000:00:10.0
mlx4_core 0000:00:10.0: DMFS high rate steer mode is: default performance
mlx4_core 0000:00:10.0: 63.008 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x8 link)
mlx4_core 0000:00:10.0: command 0x23 timed out (go bit not cleared)
mlx4_core 0000:00:10.0: device is going to be reset
mlx4_core 0000:00:10.0: crdump: FW doesn't support health buffer access, skipping
mlx4_core 0000:00:10.0: device was reset successfully
mlx4_core 0000:00:10.0: Failed to initialize queue pair table, aborting
mlx4_core: probe of 0000:00:10.0 failed with error -5
flush_memory.sh (2010): drop_caches: 3
flush_memory.sh (2674): drop_caches: 3
mlx4_core: Initializing 0000:00:10.0
mlx4_core 0000:00:10.0: DMFS high rate steer mode is: default performance
mlx4_core 0000:00:10.0: 63.008 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x8 link)
mlx4_core 0000:00:10.0: command 0x23 timed out (go bit not cleared)
mlx4_core 0000:00:10.0: device is going to be reset
mlx4_core 0000:00:10.0: crdump: FW doesn't support health buffer access, skipping
mlx4_core 0000:00:10.0: device was reset successfully
mlx4_core 0000:00:10.0: Failed to initialize queue pair table, aborting
mlx4_core: probe of 0000:00:10.0 failed with error -5


是必须要开机时候加载吗,还有也不知道这有没有版本差异,或者要求特定的Firmware,或者Qutscloud有硬性限制。。。

summerq 发表于 2025-4-10 09:57

你等会 我给你抓一下log。我这边是mlx5的驱动,对应网卡是cx4/5/6。cx3你别用,问题很多(mlx4驱动)

Dolfin 发表于 2025-4-10 10:16

summerq 发表于 2025-4-10 09:57
你等会 我给你抓一下log。我这边是mlx5的驱动,对应网卡是cx4/5/6。cx3你别用,问题很多(mlx4驱动) ...

是物理威还是VM威?

summerq 发表于 2025-4-10 10:52

本帖最后由 summerq 于 2025-4-10 10:56 编辑

Dolfin 发表于 2025-4-10 10:16
是物理威还是VM威?

我是物理機器,型號h1288x

1. 内核5.10.60
# uname -a
Linux tvs-h1288x 5.10.60-qnap #1 SMP Fri Mar 21 00:14:44 CST 2025 x86_64 GNU/Linux

2. 啓動信息包含mlx5,沒有mlx4
# dmesg | grep mlx5
[   26.577751] mlx5_core 0000:02:00.0: firmware version: 14.30.1004
[   26.583824] mlx5_core 0000:02:00.0: 15.752 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x2 link at 0000:00:01.1 (capable of 63.008 Gb/s with 8.0 GT/s PCIe x8 link)
[   26.844911] mlx5_core 0000:02:00.0: E-Switch: Total vports 66, per vport: max uc(1024) max mc(16384)
[   26.860271] mlx5_core 0000:02:00.0: Port module event: module 0, Cable plugged
[   26.872230] mlx5_core 0000:02:00.0: mlx5_fw_tracer_start:815:(pid 3478): FWTracer: Ownership granted and active
[   26.892349] mlx5_core 0000:02:00.1: firmware version: 14.30.1004
[   26.903634] mlx5_core 0000:02:00.1: 15.752 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x2 link at 0000:00:01.1 (capable of 63.008 Gb/s with 8.0 GT/s PCIe x8 link)
[   27.170359] mlx5_core 0000:02:00.1: E-Switch: Total vports 66, per vport: max uc(1024) max mc(16384)
[   27.187202] mlx5_core 0000:02:00.1: Port module event: module 1, Cable plugged
[   27.214237] mlx5_core 0000:02:00.0: MLX5E: StrdRq(0) RqSz(1024) StrdSz(256) RxCqeCmprss(0)
[   27.491718] mlx5_core 0000:02:00.0: Supported tc offload range - chains: 4294967294, prios: 4294967295
[   27.510403] mlx5_core 0000:02:00.1: MLX5E: StrdRq(0) RqSz(1024) StrdSz(256) RxCqeCmprss(0)
[   27.793892] mlx5_core 0000:02:00.1: Supported tc offload range - chains: 4294967294, prios: 4294967295
mlx5_core 0000:02:00.1 eth5: Link down
mlx5_core 0000:02:00.0 eth4: Link up

3. 查看loaded modules,包含以下幾個驅動模塊
# lsmod | grep mlx5
mlx5_ib               3809280
ib_uverbs             1269761 mlx5_ib
ib_core               2990089 isert_scst,ib_iser,rdma_cm,ib_cm,iw_cm,bnxt_re,mlx5_ib,ib_uverbs,mlx4_ib
mlx5_core            13230081 mlx5_ib
mlx_compat             16384 12 ib_iser,rdma_cm,ib_cm,iw_cm,bnxt_re,mlx5_ib,ib_uverbs,mlx4_ib,ib_core,mlx5_core,mlx4_en,mlx4_core

4. 查看驅動位置
# ls -l /lib/modules/5.10.60-qnap/mlx*
-rw-r--r-- 1 admin administrators644112 2025-03-21 03:34 /lib/modules/5.10.60-qnap/mlx4_core.ko
-rw-r--r-- 1 admin administrators234144 2025-03-21 03:34 /lib/modules/5.10.60-qnap/mlx4_en.ko
lrwxrwxrwx 1 admin administrators      58 2025-04-10 10:34 /lib/modules/5.10.60-qnap/mlx4_ib.ko -> /share/ZFS2_DATA/.qpkg/AdvancedNetDriver/driver/mlx4_ib.ko
-rw-r--r-- 1 admin administrators 2463208 2025-03-21 03:34 /lib/modules/5.10.60-qnap/mlx5_core.ko
lrwxrwxrwx 1 admin administrators      58 2025-04-10 10:34 /lib/modules/5.10.60-qnap/mlx5_ib.ko -> /share/ZFS2_DATA/.qpkg/AdvancedNetDriver/driver/mlx5_ib.ko
-rw-r--r-- 1 admin administrators   22608 2025-03-21 03:34 /lib/modules/5.10.60-qnap/mlx_compat.ko

5. 把驅動copy到pc上,查看信息,發現依賴於mlx_compat
modinfo ./mlx5_core.ko
filename:       /root/./mlx5_core.ko
version:      5.3-1.0.0
license:      Dual BSD/GPL
description:    Mellanox 5th generation network adapters (ConnectX series) core driver
author:         Eli Cohen <eli@mellanox.com>
srcversion:   EE17538ED0C8BBC10B43015
alias:          pci:v000015B3d0000A2DCsv*sd*bc*sc*i*
alias:          pci:v000015B3d0000A2D6sv*sd*bc*sc*i*
alias:          pci:v000015B3d0000A2D3sv*sd*bc*sc*i*
alias:          pci:v000015B3d0000A2D2sv*sd*bc*sc*i*
alias:          pci:v000015B3d00001021sv*sd*bc*sc*i*
alias:          pci:v000015B3d0000101Fsv*sd*bc*sc*i*
alias:          pci:v000015B3d0000101Esv*sd*bc*sc*i*
alias:          pci:v000015B3d0000101Dsv*sd*bc*sc*i*
alias:          pci:v000015B3d0000101Csv*sd*bc*sc*i*
alias:          pci:v000015B3d0000101Bsv*sd*bc*sc*i*
alias:          pci:v000015B3d0000101Asv*sd*bc*sc*i*
alias:          pci:v000015B3d00001019sv*sd*bc*sc*i*
alias:          pci:v000015B3d00001018sv*sd*bc*sc*i*
alias:          pci:v000015B3d00001017sv*sd*bc*sc*i*
alias:          pci:v000015B3d00001016sv*sd*bc*sc*i*
alias:          pci:v000015B3d00001015sv*sd*bc*sc*i*
alias:          pci:v000015B3d00001014sv*sd*bc*sc*i*
alias:          pci:v000015B3d00001013sv*sd*bc*sc*i*
depends:      mlx_compat
name:         mlx5_core
vermagic:       5.10.60-qnap SMP mod_unload
parm:         guids:charp
parm:         node_guid:guids configuration. This module parameter will be obsolete!
parm:         num_of_groups:Eswitch offloads number of big groups in FDB table. Valid range 1 - 1024. Default 15 (uint)
parm:         debug_mask:debug mask: 1 = dump cmd data, 2 = dump cmd exec time, 3 = both. Default=0 (uint)
parm:         prof_sel:profile selector. Valid range 0 - 3 (uint)
parm:         probe_vf:probe VFs or not, 0 = not probe, 1 = probe. Default = 1 (bool)

6. 我自己試過,此驅動可以兼容原廠connectx-4 LX,connectx-6 LX,connectx-6 DX

Dolfin 发表于 2025-4-10 13:25

$ dmesg | grep -i mlx
[   91.182692] mlx5_core 0000:00:10.0: firmware version: 14.32.1900
[   91.183120] mlx5_core 0000:00:10.0: 63.008 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x8 link)
[   91.190514] mlx5_core 0000:00:10.0: handle_hca_cap:701:(pid 0): log_max_qp value in current profile is 18, changing it to HCA capability limit (17)
[   91.486051]mlx5_init_clock+0x1e4/0x6c0
[   91.486379]mlx5_load_one+0x6c8/0x1640
[   91.486699]init_one+0x1ee/0x560
[   91.489599]__init_backport+0x11a/0x1000
[   91.499181] Modules linked in: mlx5_core(O+) mlx_compat(O) dummy br_netfilter bridge stp xt_connmark ip6table_filter ip6_tables xt_conntrack xt_TCPMSS xt_LOG xt_set ip_set_hash_netiface ip_set_hash_net ip_set xt_MASQUERADE xt_REDIRECT iptable_nat nf_nat xt_policy xt_mark qelf(PO) 8021q uvcvideo videobuf2_v4l2 videobuf2_vmalloc videobuf2_memops videobuf2_common snd_usb_caiaq snd_usb_audio snd_usbmidi_lib snd_seq_midi snd_rawmidi fnotify(O) nfsd nfsd_qlog udf isofs iTCO_wdt vfio_pci irqbypass vfio_virqfd vfio exfat ufsd(PO) jnl(O) cdc_acm pl2303 usbserial ipv6 rndis_host cdc_ether qm2_i2c(O) virtio_net net_failover failover virtio_scsi virtio_blk cirrusfb cirrus intel_ips drbd lru_cache flashcache(O) dm_tier_hro_algo dm_thin_pool dm_bio_prison dm_persistent_data hal_netlink(O) hailo_pci(O) apex(C) gasket(C) r8152(O) usbnet mii igb e1000e mv14xx(O) mpt3sas(O) raid_class k10temp uas usb_storage xhci_pci xhci_hcd usblp uhci_hcd ehci_pci ehci_hcd

换了CX4 LX,Dmesg看起来没啥问题



$ls -l /sys/bus/pci/drivers/mlx5_core/
total 0
lrwxrwxrwx 1 admin administrators 0 2025-04-10 13:06 0000:00:10.0 -> ../../../../devices/pci0000:00/0000:00:10.0/

驱动绑定,也没啥问题



就是看不到网口。。。固件也更新了。驱动就启动了mlx5_core 和mlx_compat


summerq 发表于 2025-4-11 02:39

Dolfin 发表于 2025-4-10 13:25
换了CX4 LX,Dmesg看起来没啥问题




udev更新一把试试:
网卡驱动加载完后等个3-5秒,然后
udevadm control --reload-rules && udevadm trigger

幻想国度 发表于 2025-4-11 03:13

本帖最后由 幻想国度 于 2025-4-11 06:12 编辑

我发现好几次了,别人回答完你的问题,你是不是又要把主楼删除成“问题已解决,感谢chh”了?

别人花费时间帮助你解决完问题,就把问题删掉,不让后来者搜索到帮助下一个人,这么干疑似有点吃独食了。

幸好这种人只有一个,都这么干这个论坛不如关门得了。

Dolfin 发表于 2025-4-13 00:58

幻想国度 发表于 2025-4-11 03:13
我发现好几次了,别人回答完你的问题,你是不是又要把主楼删除成“问题已解决,感谢chh”了?

别人花费时 ...

呦,你都发现好几次了,可真是大聪明,
动动手指看看我分享过多少东西。
你一毛线主题没有的人,可真是只吃食,不产食啊

Juzi丶 发表于 2025-4-13 10:23

想要模拟virtio直接上bf2方便又便宜

再说把储存跑vm上内存性能稀烂,根本没法用

Dolfin 发表于 2025-4-17 11:04

本帖最后由 Dolfin 于 2025-4-17 11:05 编辑

summerq 发表于 2025-4-11 02:39
udev更新一把试试:
网卡驱动加载完后等个3-5秒,然后
udevadm control --reload-rules && udevadm trigg ...

QutsCloud 直通网卡


你说的调优我也尝试了几次,QutsCloud还是无法识别设备,包括CX4 LX / CX6 DX,我不知道是不是我拷贝的mlx5_core.ko相关的驱动包有问题,或者还有什么别的依赖。

现在就是QutsCloud无法识别直通过来的ConnectX 网卡,只能识别出PVE桥接过来的VirtIO网卡,DPDK+VDPA 可能带来更好的性能,同时还能热迁移VM。


VDPA尝试


最好能在PVE上可以解决掉VDPA的情况,然后把VDPA VirtIO网卡给到威联通虚拟机。PVE 8.2 装上OFED驱动后一通操作,创建出来的SF也不能被VDPA mgmtdev识别,果断放弃。

后面做了个套娃,PVE - Rocky 9.5(直通了CX6) - Ubuntu 22,由Rocky做VDPA VirtIO网卡给 Ubuntu。

在Ubuntu下使用FIO对磁盘性能做测试,对比项是来自桥接的VirIO网卡和VDPA VirtIO网卡(in kernel VDPA / OVS 硬件卸载)。


SMB 挂载来自Windows Server的远程磁盘,VDPA性能惨不忍睹,只有常规的一半,就不放出来了,

后面挂载 NVMe-OF-TCP,顺序大文件读取有7%,4k随机读取有15%左右的性能提升。




页: [1]
查看完整版本: 【网卡卸载】有搞通过vDPA的大佬吗?