Hangbin Liu <liuhangbin@xxxxxxxxx> writes: > On Mon, Jun 08, 2020 at 05:32:54PM +0200, Toke Høiland-Jørgensen wrote: >> Hangbin Liu <liuhangbin@xxxxxxxxx> writes: >> >> > On Thu, Jun 04, 2020 at 06:02:54PM +0200, Toke Høiland-Jørgensen wrote: >> >> Hangbin Liu <liuhangbin@xxxxxxxxx> writes: >> >> >> >> > On Thu, Jun 04, 2020 at 02:37:23PM +0200, Toke Høiland-Jørgensen wrote: >> >> >> > Now I use the ethtool_stats.pl to count forwarding speed and here is the result: >> >> >> > >> >> >> > With kernel 5.7(ingress i40e, egress i40e) >> >> >> > XDP: >> >> >> > bridge: 1.8M PPS >> >> >> > xdp_redirect_map: >> >> >> > generic mode: 1.9M PPS >> >> >> > driver mode: 10.4M PPS >> >> >> >> >> >> Ah, now we're getting somewhere! :) >> >> >> >> >> >> > Kernel 5.7 + my patch(ingress i40e, egress i40e) >> >> >> > bridge: 1.8M >> >> >> > xdp_redirect_map: >> >> >> > generic mode: 1.86M PPS >> >> >> > driver mode: 10.17M PPS >> >> >> >> >> >> Right, so this corresponds to a ~2ns overhead (10**9/10400000 - >> >> >> 10**9/10170000). This is not too far from being in the noise, I suppose; >> >> >> is the difference consistent? >> >> > >> >> > Sorry, I didn't get, what different consistent do you mean? >> >> >> >> I meant, how much do the numbers vary between each test run? >> > >> > Oh, when run it at the same period, the number is stable, the range is about >> > ~0.05M PPS. But after a long time or reboot, the speed may changed a little. >> > Here is the new test result after I reboot the system: >> > >> > Kernel 5.7 + my patch(ingress i40e, egress i40e) >> > xdp_redirect_map: >> > generic mode: 1.9M PPS >> > driver mode: 10.2M PPS >> > >> > xdp_redirect_map_multi: >> > generic mode: 1.58M PPS >> > driver mode: 7.16M PPS >> > >> > Kernel 5.7 + my patch(ingress i40e, egress i40e + veth(No XDP on peer)) >> > xdp_redirect_map: >> > generic mode: 2.2M PPS >> > driver mode: 14.2M PPS >> >> This looks wrong - why is performance increasing when adding another >> target? How are you even adding another target to regular >> xdp_redirect_map? >> > Oh, sorry for the typo, the numbers make me crazy, it should be only > ingress i40e, egress veth. Here is the right description: > > Kernel 5.7 + my patch(ingress i40e, egress i40e) > xdp_redirect_map: > generic mode: 1.9M PPS > driver mode: 10.2M PPS > > xdp_redirect_map_multi: > generic mode: 1.58M PPS > driver mode: 7.16M PPS > > Kernel 5.7 + my patch(ingress i40e, egress veth(No XDP on peer)) > xdp_redirect_map: > generic mode: 2.2M PPS > driver mode: 14.2M PPS A few messages up-thread you were getting 4.15M PPS in this case - what changed? It's inconsistencies like these that make me suspicious of the whole set of results :/ Are you getting these numbers from ethtool_stats.pl or from the XDP program? What counter are you looking at, exactly? -Toke