David Held 2dc41cff75 udp: Use hash2 for long hash1 chains in __udp*_lib_mcast_deliver.
Many multicast sources can have the same port which can result in a very
large list when hashing by port only. Hash by address and port instead
if this is the case. This makes multicast more similar to unicast.

On a 24-core machine receiving from 500 multicast sockets on the same
port, before this patch 80% of system CPU was used up by spin locking
and only ~25% of packets were successfully delivered.

With this patch, all packets are delivered and kernel overhead is ~8%
system CPU on spinlocks.

Signed-off-by: David Held <drheld@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-07-16 23:29:52 -07:00
..
2013-12-28 17:02:46 -05:00
2014-04-30 13:31:25 -04:00
2012-07-19 10:43:03 -07:00
2013-11-07 19:28:58 -05:00
2014-06-04 22:46:38 -07:00
2013-01-27 22:46:33 -05:00
2014-06-27 15:53:35 -07:00
2014-04-18 14:20:48 +02:00
2014-01-03 20:56:48 -05:00
2014-03-24 12:45:01 -04:00
2014-06-02 11:00:41 -07:00
2014-05-07 16:06:05 -04:00
2014-05-22 14:57:15 -04:00
2014-07-07 21:14:21 -07:00
2014-04-23 08:21:04 +02:00