-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
XDP support #63
XDP support #63
Conversation
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
Co-authored-by: Alexandru Gabriel Bradatan <[email protected]> Co-authored-by: marcomole00 <[email protected]>
* idea: dma sync for cpu in napi_poll * save dma address in onic_rx_buffer
Hi @marcomole00 . Sorry for the delay, the past couple of weeks have been especially busy. I still need to try this out, but I have a newer kernel version on my 22.04 at the moment. I need to set up a test environment but this will take at least a few more days. Right now it won't fully compile for me. The following is what I have on one of my test machines.
|
Hi @cneely-amd, I'm preparing a patch for 6.8 support. It should be ready in a couple of days. |
@cneely-amd i added 3 commits that fixed compilation issues, now it should compile correctly. |
Hi @marcomole00, thanks! I did a quick test on 22.04. I'll go ahead and merge in the changes. |
Key Improvements
ethtool -S
ethtool
functionality:ethtool -S
Kernel Compatibility
Currently tested and supported on:
For now the only kernel tested/supported is v5.15 (Ubuntu 22.04 LTS). Porting it to other versions is not hard but it's a tedious process. Could we agree on some specific kernel version to support? Maybe the kernel versions of the last 2-3 Ubuntu LTS?
For now there is no way to "opt out" from XDP support, neither at compile or load time.
But by not inserting any XDP program the execution path is mostly unchanged, apart from the page pool code.
Performance analysis
In the following tables i show that there significant performance improvements, thanks to the page pooling.
In the first table we analyze the performance of a single flow UDP.
The setup was composed of two machines:
Tx side: DPDK packet generator that produced packets at 100Gbps, except for the 64B and the 250B in which it produced packets at ~25Gbps and ~75Gbps due to hw limitations.
Rx side: A server with frequency scaling disabled and a simple C program that reads from a UDP socket. The numbers in the table are computed at the receiving socket.
The
xdp-support pass
case is a XDP program that passes all the packets up to the stack.This setup is not meant to showcase the maximum performance case, but it just shows how the page pooling improves baseline performances.
In the second table there the results of a TCP single flow test done with iperf3.
In the third table there are the results of the test where all packets were dropped with no further processing.
The TX setup was identical to the first experiment.
The interesting conclusion here is that the opennic driver can drop packet a line rate for big enough packets.