使用带分叉驱动程序或 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。
我了解到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。