问题标签 [mellanox]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - DPDK可以选择性地初始化网卡端口吗
我使用的是双端口网卡 Mellanox ConnectX-5,DPDK 版本是 dpdk-stable-19.11.3。配置完成后,调用 rte_eth_dev_count_avail()
返回2
。但是我的 ConnectX-5 网卡只有一个端口连接到另一台机器。我能找到的就是像这样初始化所有可用的端口。
dpdk 可以选择性地初始化端口吗?或者有什么办法可以rte_eth_dev_count_avail()
退货1
?
c++ - XDP 和 eBPF 性能与 AMD EPYC CPU
我总是在配备 Intel Xeon Gold CPU 的服务器上运行 XDP 应用程序,性能一直很好而且不是问题 - 使用 100 GbE MCX515A-CCAT 网卡和 2 个 CPU 在 1U 服务器内最高可达 125Mpps。
今天我试图让它在 AMD EPYC 7371 上工作,但由于某种原因,性能结果非常低——我得到的最大值是 13Mpps,使用相同的网卡和 1 个 AMD EPYC 7371。所有内核都被推到最大值(100 %)。
在 ubuntu 18.04(以及之后的 20.04)上进行了测试。我已经安装了与英特尔 (OFED) 相同的 Mellanox 驱动程序,并像往常一样进行了其他配置。
我在驱动程序模式下运行 XDP,启用了 JIT。其他调优如下:
我还应该做些什么才能在 AMD CPU 上运行它?因为性能不能这么低,而且我想我在整个过程中都错误地配置了一些东西?
有关我们配置的更多信息:20.04 的内核 5.4 和 18.04 的 4.5,我们从我们的第二台机器 (TRex) 生成流量,该机器也有 MCX515A-CCAT 网卡并使用 Mellanox 100 GbE 电缆连接到第一台机器(AMD 一台)
dpdk - DPDK:MPLS数据包处理
我正在尝试构建一个多 RX 队列 dpdk 程序,使用 RSS 将传入流量拆分为单个端口上的 RX 队列。Mellanox ConnectX-5 和 DPDK 版本 19.11 用于此目的。当我使用 IP over Ethernet 数据包作为输入时,它工作正常。但是,当数据包包含基于以太网的 MPLS 上的 IP 时,RSS 似乎不起作用。因此,所有属于MPLS 上的各种流(具有不同的 IP、端口)的数据包都被发送到同一个 RX 队列中src
。dst
我的查询是
- DPDK 中是否有任何参数/技术将 MPLS 数据包分发到多个 RX 队列?
- 有没有办法在硬件中剥离 MPLS 标签(在 Eth 和 IP 之间),比如
hw_vlan_strip
?
我的端口配置是
xdp-bpf - 有没有办法让 RSS 对 SRv6 数据包起作用?
我正在使用github 我的项目,它使用 eBPF 基于 SRv6 路由过滤/查找/重定向/丢弃数据包。eBPF 代码在 mellanox Connect5X 上运行以实现 SRv6 功能。
我的期望是mellanox Connect5X 将查看 SRv6 Destination 外部 IPv6 地址标头并在 RX 队列上进行 RSS 数据包传播。这将允许我在多个内核上运行 XDP 进行处理。
我目前的结果是,当 SRv6 数据包是多流数据包(与单流相同的负载效率)时,只使用一个 cpu 内核。
问题是即使对于 SRv6 数据包,我如何才能对 CPU 进行负载平衡?
我期待的答案的一个例子是要知道如何为 IPv6 src、dst addr 等启用 RSS。
谢谢。
performance - Mellanox ConnectX-5 和 DPDK 在 rxonly 模式下的特殊行为
最近,我观察到 Mellanox ConnectX-5 100 Gbps NIC 的一种特殊行为。在使用 DPDK rxonly 模式处理 100 Gbps rxonly 时。据观察,我能够使用 12 个队列接收 142 Mpps。然而,11 个队列只有 96 Mpps,10 个队列 94 Mpps,9 个队列 92 Mpps。谁能解释为什么从 11 个队列到 12 个队列的捕获性能突然/突然跳跃?
设置的详细信息如下所述。
我已经背靠背连接了两台服务器。其中一个(server-1)用于流量生成,另一个(server-2)用于流量接收。在两台服务器中,我都使用 Mellanox ConnectX-5 NIC。 已遵循https://fast.dpdk.org/doc/perf/DPDK_19_08_Mellanox_NIC_performance_report.pdf [pg no.:11,12] 第3 节中提到的性能调整参数
两台服务器的配置相同。
服务器配置
- 处理器:Intel Xeon 可扩展处理器,6148 系列,20 Core HT,2.4 GHz,27.5 L3 Cache
- 处理器数量:4 个
- 内存:256 GB,2666 MHz 速度
使用的 DPDK 版本是 dpdk-19.11,操作系统是 RHEL-8.0
使用 --forward=txonly 和 --txonly-multi-flow 的流量生成 testpmd。使用的命令如下。
server-1 中的数据包生成 testpmd 命令
./testpmd -l 4,5,6,7,8,9,10,11,12,13,14,15,16 -n 6 -w 17:00.0,mprq_en=1,rxq_pkt_pad_en=1 --socket- mem=4096,0,0,0 -- --socket-num=0 --burst=64 --txd=4096 --rxd=4096--mbcache=512 --rxq=12 --txq=12 -- nb-cores=12 -i -a --rss-ip --no-numa --forward=txonly --txonly-multi-flow
它能够以 142.2 Mpps 的持续速率生成 64 字节数据包。这被用作在 rxonly 模式下工作的第二个服务器的输入。接收命令如下
server-2 中具有 12 个核心的数据包接收命令
./testpmd -l 4,5,6,7,8,9,10,11,12,13,14,15,16 -n 6 -w 17:00.0,mprq_en=1,rxq_pkt_pad_en=1 --socket- mem=4096,0,0,0 -- --socket-num=0 --burst=64 --txd=4096 --rxd=4096--mbcache=512 --rxq=12 --txq=12 -- nb-cores=12 -i -a --rss-ip --no-numa
server-2 中具有 11 个核心的数据包接收命令
./testpmd -l 4,5,6,7,8,9,10,11,12,13,14,15 -n 6 -w 17:00.0,mprq_en=1,rxq_pkt_pad_en=1 --socket-mem= 4096,0,0,0 -- --socket-num=0 --burst=64 --txd=4096 --rxd=4096--mbcache=512 --rxq=11 --txq=11 --nb-核心=11 -i -a --rss-ip --no-numa
如果您看到 Rx-pps 从 11 核突然跃升至 12 核。这种变化在其他地方没有观察到,例如 8 到 9、9 到 10 或 10 到 11 等等。
谁能解释一下性能突然飙升的原因。
进行了相同的实验,这次使用 11 个内核来生成流量。
./testpmd -l 4,5,6,7,8,9,10,11,12,13,14,15 -n 6 -w 17:00.0,mprq_en=1,rxq_pkt_pad_en=1 --socket-mem= 4096,0,0,0 -- --socket-num=0 --burst=64 --txd=4096 --rxd=4096--mbcache=512 --rxq=11 --txq=11 --nb- cores=11 -i -a --rss-ip --no-numa --forward=txonly --txonly-multi-flow
在具有 11 个核心的捕获端
./testpmd -l 1,2,3,4,5,6,10,11,12,13,14,15 -n 6 -w 17:00.0,mprq_en=1,rxq_pkt_pad_en=1 --socket-mem= 4096,0,0,0 -- --socket-num=0 --burst=64 --txd=1024 --rxd=1024--mbcache=512 --rxq=11 --txq=11 --nb-核心=11 -i -a --rss-ip --no-numa
在具有 12 个核心的捕获端
./testpmd -l 1,2,3,4,5,6,10,11,12,13,14,15,16 -n 6 -w 17:00.0,mprq_en=1,rxq_pkt_pad_en=1 --socket- mem=4096,0,0,0 -- --socket-num=0 --burst=64 --txd=1024 --rxd=1024--mbcache=512 --rxq=12 --txq=12 -- nb-cores=12 -i -a --rss-ip --no-numa
从 11 核到 12 核的性能突然跃升仍然保持不变。
pci-e - 如果 PCIe 读/写带宽溢出给定的 PCIe 规范怎么办
我正在测试 Mellanox 100G NIC,对于 PCIe Gen3、32lane,这些 NIC 与 4slot 连接。每个 Rx、Tx 端口有 2 个插槽,我将数据包从生成器发送到 100G NIC
我认为每个通道都有 1000MB 带宽,将其转换为 Gb 为 8Gb,因此 NIC 可以获得的总带宽为 32*8Gb = 256Gb,
但我对 pcm-pcie.x 进行了测试,它给出了带宽读/写结果似乎很奇怪。它溢出给定的 PCIe 限制(256Gb)
这是测试结果
所以我的问题是
1.如 64 字节结果所示,PCIe Rd Byte 为 37G,PCIe Wr Byte 为 14G 将其转换为 Gb(*8) 37GB -> 296Gb / 14Gb -> 232Gb 296Gb 溢出给定 PCIe Gen3 规范。它可能吗?或者我错过了什么?
2.随着数据包大小的减少(1512 > 512 > 64)总 PCIe 带宽增加,对吗?我认为如果 pakcet 大小更大,数据包会突发发送,因此会增加带宽,但结果相反
3.除此之外, PCI Express 参数摘要 “总带宽”术语似乎是有线的。数据速率是 PCIeGen3 1000MB/s x16 是 16Gbs 但总意味着 32Gb?什么是总的意思?它结合了读/写?如果是,PCI 是否可以同时处理读/写,因此它可以读取 16Gb*2、32Gb?
infiniband - 从 UD 切换到 RC 连接时,ibverbs 中的哪些变化
我正在查看 Mellanox 的 ibverbs 代码。
通过 ibverbs 进行发送/接收操作。
该代码正在使用 UD 连接。
但是当我将
qp_type = IBV_QPT_UD更改为 IBV_QPT_RC 时它不起作用
在这种情况下,除了 qp_type 之外,我还需要更改什么?
代码可以在 repo
https://github.com/alokprasad/books-src/tree/master/rdma-src-mellanox
的 basic_send 和 basic_recv 下找到
dpdk - 无法识别多个 IB 设备上的主/代表
我遇到了 DPDK MLX5 探测问题。
- 我已经安装了 mlx5/ofed 驱动程序
- 我已经加载了内核模块。
至于“未能加载 mlx5_pci”驱动程序,我可以看到 mlx5_core 驱动程序已加载。
我假设他们两个是一样的?无法识别多个 IB 设备上的主/代表是什么意思?
我的配置是:CentOS 7.9、Linux Kernel 5.12、OFED 4.9 (LTS)、DPDK 21.02
mellanox - Mellanox 的性能问题
尝试使用 IXIA 生成的流量对 Mellanox NIC 进行性能测试。10G 电缆连接流量生成器和 DUT 系统。使用 IXIA 流量生成器工具以 10 G 发送流量,但在 IXIA 接收的反向流量吞吐量仅为 2G。遵循性能https://fast.dpdk.org/doc/perf/DPDK_20_11_Mellanox_NIC_performance_report.pdf中描述的优化步骤。请提供解决问题的建议。
centos7 - 如何安装 mellanox 驱动程序?
我有安装了 Infiniband 连接和 centos 7.9 的节点。
当我执行以下
#lspci | grep 梅拉诺克斯
01:00.0 网络控制器:Mellanox Technologies MT27500 系列 [ConnectX-3]
# lspci -vv -s 01:00.0 | grep "零件号" -A 3
[PN] 零件编号:MCX353A-FCB
我将系统重装到rockylinux。
我的问题是:如何安装 Mellanox 硬件
使用发行版中提供的软件包(yum group install Infiniband)是否足够,或者我是否也应该使用以下链接中制造商提供的软件包:
https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed