From: Brian Vazquez <bria...@google.com> Date: Tue, 23 Jun 2020 09:42:32 -0700
> It was reported that a considerable amount of cycles were spent on the > expensive indirect calls on fib6_rule_lookup. This patch introduces an > inline helper called pol_route_func that uses the indirect_call_wrappers > to avoid the indirect calls. > > This patch saves around 50ns per call. > > Performance was measured on the receiver by checking the amount of > syncookies that server was able to generate under a synflood load. > > Traffic was generated using trafgen[1] which was pushing around 1Mpps on > a single queue. Receiver was using only one rx queue which help to > create a bottle neck and make the experiment rx-bounded. > > These are the syncookies generated over 10s from the different runs: > > Whithout the patch: ... > With the patch: ... > Without the patch the average is 354263 pkt/s or 2822 ns/pkt and with > the patch the average is 360738 pkt/s or 2772 ns/pkt which gives an > estimate of 50 ns per packet. > > [1] http://netsniff-ng.org/ > > Changelog since v1: > - Change ordering in the ICW (Paolo Abeni) > > Cc: Luigi Rizzo <lri...@google.com> > Cc: Paolo Abeni <pab...@redhat.com> > Reported-by: Eric Dumazet <eduma...@google.com> > Signed-off-by: Brian Vazquez <bria...@google.com> Applied.