使用带分叉驱动程序或 VFIO 的 DPDK 时性能是否会下降?

Does the performance decrease when using DPDK with bifurcated driver or VFIO?

我了解到DPDK可以使用分叉驱动和VFIO的RDMA,但我想知道性能是否和不使用分叉驱动和VFIO的DPDK一样好。

由于 OFED rdma_* API 也绕过内核并且与 DPDK API 处于相似的低级别,因此 DPDK 的可能性并不大用它来浪费性能的PMD(比如分叉的MLX5 PMD)。

Nvidia 发布了一些看起来不错的 performance test results for DPDK 20.05。例如,2 个 Mlx5 25 GBit 端口之间的 l3fwd(Table 6,第 14 页):

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Frame Size (Bytes)   Frame Rate (Mpps)   Line Rate [50G] (Mpps)   % Line Rate
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
  64                 74.40               74.40                    100.00
 128                 42.23               42.23                    100.00
 256                 22.64               22.64                    100.00
 512                 11.75               11.75                    100.00
1024                  5.99                5.99                    100.00
1280                  4.81                4.81                    100.00
1518                  4.06                4.06                    100.00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

所以这很好地表明 Mellanox 分叉 driver/PMD 具有与其他 'full' 驱动程序相似的良好性能,一般来说。


注意:也许令人惊讶的是,OFED rdma_* API 的要点是内核旁路而不是 RDMA - 尽管它的名字。这意味着您可以使用其中的大部分 API 而无需执行 RDMA。


对于位于 Solarflare 的 ef_vi 内核旁路库之上的 Solarflare SFC PMD 也可以得出类似的观点。这意味着它还使用了 'virtual interface' (vi).


接管整个 NIC 的 PMD(例如 Intel 的,例如 ixgbe)与 VFIO 一起工作以获得 IOMMU 保护。事实上,DPDK 指南 recommends 将 VFIO 与此类 NIC(如果可用)一起使用,而没有提及性能警告。

从技术上讲,IOMMU 可能会增加一些开销 - 但 implementation doesn't have to - modulo bugs