From: Nikolay Aleksandrov <[email protected]>
Date: Thu, 12 Jan 2017 15:53:33 +0100

> Recently we started using ipmr with thousands of entries and easily hit
> soft lockups on smaller devices. The reason is that the hash function
> uses the high order bits from the src and dst, but those don't change in
> many common cases, also the hash table  is only 64 elements so with
> thousands it doesn't scale at all.
> This patch migrates the hash table to rhashtable, and in particular the
> rhl interface which allows for duplicate elements to be chained because
> of the MFC_PROXY support (*,G; *,*,oif cases) which allows for multiple
> duplicate entries to be added with different interfaces (IMO wrong, but
> it's been in for a long time).
> 
> And here are some results from tests I've run in a VM:
>  mr_table size (default, allocated for all namespaces):
>   Before                    After
>    49304 bytes               2400 bytes
> 
>  Add 65000 routes (the diff is much larger on smaller devices):
>   Before                    After
>    1m42s                     58s
> 
>  Forwarding 256 byte packets with 65000 routes (test done in a VM):
>   Before                    After
>    3 Mbps / ~1465 pps        122 Mbps / ~59000 pps
> 
> As a bonus we no longer see the soft lockups on smaller devices which
> showed up even with 2000 entries before.
> 
> Signed-off-by: Nikolay Aleksandrov <[email protected]>

Looks really nice, applied, thanks!

Reply via email to