linux/net/ipv6
Eric Dumazet 230140cffa [INET]: Remove per bucket rwlock in tcp/dccp ehash table.
As done two years ago on IP route cache table (commit
22c047ccbc) , we can avoid using one
lock per hash bucket for the huge TCP/DCCP hash tables.

On a typical x86_64 platform, this saves about 2MB or 4MB of ram, for
litle performance differences. (we hit a different cache line for the
rwlock, but then the bucket cache line have a better sharing factor
among cpus, since we dirty it less often). For netstat or ss commands
that want a full scan of hash table, we perform fewer memory accesses.

Using a 'small' table of hashed rwlocks should be more than enough to
provide correct SMP concurrency between different buckets, without
using too much memory. Sizing of this table depends on
num_possible_cpus() and various CONFIG settings.

This patch provides some locking abstraction that may ease a future
work using a different model for TCP/DCCP table.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-11-07 04:15:11 -08:00
..
netfilter [NETFILTER]: Clean up Makefile 2007-11-07 04:08:22 -08:00
addrconf_core.c
addrconf.c
af_inet6.c [NET]: Forget the zero_it argument of sk_alloc() 2007-11-01 00:39:31 -07:00
ah6.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
anycast.c
datagram.c
esp6.c
exthdrs_core.c
exthdrs.c
fib6_rules.c
icmp.c
inet6_connection_sock.c
inet6_hashtables.c [INET]: Remove per bucket rwlock in tcp/dccp ehash table. 2007-11-07 04:15:11 -08:00
ip6_fib.c
ip6_flowlabel.c
ip6_input.c
ip6_output.c [IPV6]: Consolidate the ip cork destruction in ip6_output.c 2007-11-07 04:08:26 -08:00
ip6_tunnel.c
ipcomp6.c [IPSEC]: Fix crypto_alloc_comp error checking 2007-11-07 04:15:03 -08:00
ipv6_sockglue.c
Kconfig
Makefile
mcast.c
mip6.c
ndisc.c
netfilter.c
proc.c [NET]: Define infrastructure to keep 'inuse' changes in an efficent SMP/NUMA way. 2007-11-07 04:08:57 -08:00
protocol.c
raw.c [IPV6]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure 2007-11-07 04:08:59 -08:00
reassembly.c
route.c [IPV6]: Convert /proc/net/ipv6_route to seq_file interface 2007-11-07 04:09:18 -08:00
sit.c
sysctl_net_ipv6.c
tcp_ipv6.c [IPV6]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure 2007-11-07 04:08:59 -08:00
tunnel6.c
udp_impl.h
udp.c [IPV6]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure 2007-11-07 04:08:59 -08:00
udplite.c [IPV6]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure 2007-11-07 04:08:59 -08:00
xfrm6_input.c
xfrm6_mode_beet.c
xfrm6_mode_ro.c
xfrm6_mode_transport.c
xfrm6_mode_tunnel.c
xfrm6_output.c
xfrm6_policy.c
xfrm6_state.c
xfrm6_tunnel.c