Topics

Performance of veth XDP

forrest0579@...
 

In https://lists.iovisor.org/g/iovisor-dev/topic/how_to_make_redirect_map/31867035 I have built up an environment to make veth+XDP work.
There're some question when I do some performance test

1. 
When I do a performance test using iperf, I found that the test result with xdp is nearly the same as without xdp. I guess maybe it is because in xdp I have to turn off de tx offload. So my question is why the xdp would affect the veth tx offload?

2. 
When I test using netperf with TCP_CRR type, I find that after some connection test, the test will be blocked. After debug with tcpdump & netstat, I find that the last connection in client-side enter into FIN_WAIT2 state, the tcpdump result for normal and abnormal connection show in gist. Every normal connection has 10 records but the blocked abnormal connection has only 8 records. And the sequence of the first 8 records is different. I have no idea why this would happen since what I do is just redirect packets. DO anyone have any ideas? 

Toshiaki Makita
 

On 2019/06/12 17:38, forrest0579@... wrote:
In https://lists.iovisor.org/g/iovisor-dev/topic/how_to_make_redirect_map/31867035 I have built up an environment to make veth+XDP work.
There're some question when I do some performance test
1.
When I do a performance test using iperf, I found that the test result with xdp is nearly the same as without xdp. I guess maybe it is because in xdp I have to turn off de tx offload. So my question is why the xdp would affect the veth tx offload?
Because XDP core does not support checksum (or any other) offload. Any of necessary
information for offloading will be discarded when converting skb into xdp_frame.
Basically veth XDP is not so fast when you only use XDP_PASS in containers.

2.
When I test using netperf with TCP_CRR type, I find that after some connection test, the test will be blocked. After debug with tcpdump & netstat, I find that the last connection in client-side enter into FIN_WAIT2 state, the tcpdump result for normal and abnormal connection show in gist <https://gist.github.com/ChenLingPeng/50f02a1c6f6e4e5a195206f60baece14>. Every normal connection has 10 records but the blocked abnormal connection has only 8 records. And the sequence of the first 8 records is different. I have no idea why this would happen since what I do is just redirect packets. DO anyone have any ideas?
I cannot reproduce it.
Is it an XDP-related problem? What happens if you use bridge in place of XDP_REDIRECT?
Did you collect tcpdump result in server-side?
Also how about checking "ethtool -S" and "nstat" (not netstat) periodically?

Toshiaki Makita

forrest0579@...
 

On Wed, Jun 12, 2019 at 09:31 PM, Toshiaki Makita wrote:
I cannot reproduce it.
Is it an XDP-related problem? What happens if you use bridge in place of XDP_REDIRECT?
Did you collect tcpdump result in server-side?
Also how about checking "ethtool -S" and "nstat" (not netstat) periodically?
Thanks. I have tested in non-XDP mode and the problem also happen. It maybe a netperf bug...