-
- Downloads
[INET]: Remove per bucket rwlock in tcp/dccp ehash table.
As done two years ago on IP route cache table (commit 22c047cc) , 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>
Showing
- include/net/inet_hashtables.h 65 additions, 6 deletionsinclude/net/inet_hashtables.h
- net/dccp/proto.c 7 additions, 2 deletionsnet/dccp/proto.c
- net/ipv4/inet_diag.c 5 additions, 4 deletionsnet/ipv4/inet_diag.c
- net/ipv4/inet_hashtables.c 4 additions, 3 deletionsnet/ipv4/inet_hashtables.c
- net/ipv4/inet_timewait_sock.c 7 additions, 6 deletionsnet/ipv4/inet_timewait_sock.c
- net/ipv4/tcp.c 2 additions, 2 deletionsnet/ipv4/tcp.c
- net/ipv4/tcp_ipv4.c 6 additions, 5 deletionsnet/ipv4/tcp_ipv4.c
- net/ipv6/inet6_hashtables.c 10 additions, 9 deletionsnet/ipv6/inet6_hashtables.c
Loading
Please register or sign in to comment