我正在尝试将 Azure 加速网络支持添加到自定义的 Linux 内核。我启用了所有 mellanox 驱动程序、VFIO 支持、infiniband 驱动程序、vsock 支持和所有 hyperv 驱动程序。
当我使用 azure cli 在我的 NIC 上启用加速网络时,lspci 输出显示该 NIC 是 Mellanox NIC。但是当我运行“ethtool -S | grep vf_”时,我得到以下输出
vf_rx_packets:0 vf_rx_bytes:0 vf_tx_packets:0 vf_tx_bytes:0 vf_tx_dropped:0
这让我觉得加速网络并没有真正发挥作用。我正在使用的 Linux 是 Debian 9.5 的自定义最小版本。我尝试构建的内核是 4.19.56。我们构建了自己的内核,因此请不要要求使用来自反向移植的 Azure Linux 内核。
我需要的是以下内容。假设我做了以下操作:1) 从 Kernel.org 下载 4.19.56 内核 2) 运行“make defconfig” 3) 运行 make 4) 运行 make modules
现在我需要的是为加速网络启用的内核选项列表。就像您执行“make defconfig”,将配置保存在某处,然后运行“make menuconfig”并选择加速网络所需的选项。现在我需要通过运行 scripts/diffconfig 脚本获得的这两个配置的差异,或者进入 menuconfig 后必须启用的选项列表。
如果您需要更多信息,请随时发表评论。
附言:我已经浏览了微软关于加速网络的所有文档,也查看了加速网络 git 存储库。但我没有找到任何地方所需的最小选项列表。
添加 lspci 的输出:
root@localhost:/var/www# lspci
0000:00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) (rev 03)
0000:00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 01)
0000:00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
0000:00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02)
0000:00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual VGA
8d87:00:02.0 Ethernet controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
ip link show 的输出:
root@localhost:/var/www# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32
link/ether 3a:1c:d6:ba:bd:a1 brd ff:ff:ff:ff:ff:ff
3: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32
link/ether b6:5b:61:57:61:73 brd ff:ff:ff:ff:ff:ff
4: teql0: <NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 100
link/void
5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
link/ether 00:0d:3a:54:ed:da brd ff:ff:ff:ff:ff:ff
6: eth1: <BROADCAST,MULTICAST,SLAVE> mtu 1500 qdisc mq master eth0 state DOWN mode DEFAULT qlen 1000
link/ether 00:0d:3a:54:ed:da brd ff:ff:ff:ff:ff:ff
“ethtool -S eth0 | grep vf_”的输出:
root@localhost:/var/www# ethtool -S eth0 | grep vf_
vf_rx_packets: 0
vf_rx_bytes: 0
vf_tx_packets: 0
vf_tx_bytes: 0
vf_tx_dropped: 0
cpu0_vf_rx_packets: 0
cpu0_vf_rx_bytes: 0
cpu0_vf_tx_packets: 0
cpu0_vf_tx_bytes: 0
cpu1_vf_rx_packets: 0
cpu1_vf_rx_bytes: 0
cpu1_vf_tx_packets: 0
cpu1_vf_tx_bytes: 0
cpu2_vf_rx_packets: 0
cpu2_vf_rx_bytes: 0
cpu2_vf_tx_packets: 0
cpu2_vf_tx_bytes: 0
cpu3_vf_rx_packets: 0
cpu3_vf_rx_bytes: 0
cpu3_vf_tx_packets: 0
cpu3_vf_tx_bytes: 0
dmesg 的输出 | grep “数据路径已切换”
root@localhost:/var/www# dmesg | grep "Data path switched"
hv_netvsc 000d3a54-edda-000d-3a54-edda000d3a54 eth0: Data path switched to VF: eth1
hv_netvsc 000d3a54-edda-000d-3a54-edda000d3a54 eth0: Data path switched from VF: eth1
感谢和问候