Re: XDP and AF_XDP performance comparison

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Federico Parola <federico.parola@xxxxxxxxx> writes:

> Dear all,
> I would like to share with this community a draft I recently wrote [1] 
> on the performance comparison of XDP and AF_XDP packet processing.
> In the paper we found some interesting and unexpected results 
> (especially related to the impact of addressed memory on the performance 
> of the two technologies) and tried to envision a combined use of the two 
> technologies, especially to tackle the poor performance of re-injecting 
> packets into the kernel from user space to leverage the TCP/IP stack.
> Any comment and suggestion from this community or any type of joint 
> work/collaboration would be very appreciated.

Hi Federico

Thank you for the link! All in all I thought it was a nicely done
performance comparison.

One thing that might be interesting would be to do the same comparison
on a different driver. A lot of the performance details you're
discovering in this paper boils down to details about how the driver
data path is implemented. For instance, it's an Intel-specific thing
that there's a whole separate path for zero-copy AF_XDP. Any plans to
replicate the study using, say, an mlx5-based NIC?

Also, a couple of comments on details:

- The performance delta you show in Figure 9 where AF_XDP is faster at
  hair-pin forwarding than XDP was a bit puzzling; the two applications
  should basically be doing the same thing. It seems to be because the
  i40e driver converts the xdp_buff struct to an xdp_frame before
  transmitting it out the interface again:

  https://elixir.bootlin.com/linux/latest/source/drivers/net/ethernet/intel/i40e/i40e_txrx.c#L2280

- It's interesting that userspace seems to handle scattered memory
  accesses over a large range better than kernel-space. It would be
  interesting to know why; you mention you're leaving this to future
  studies, any plans of following up and trying to figure this out? :)


Finally, since you seem to have your tests packaged up nicely, do you
think it would be possible to take (some of) them and turn them into a
kind of "performance CI" test suite, that can be run automatically, or
semi-automatically to catch future performance regressions in the XDP
stack? Such a test suite would be pretty great to have so we can avoid
the "death by a thousand paper cuts" type of gradual performance
degradation as we add new features...

-Toke




[Index of Archives]     [Linux Networking Development]     [Fedora Linux Users]     [Linux SCTP]     [DCCP]     [Gimp]     [Yosemite Campsites]

  Powered by Linux