[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <491C2873.60004@cosmosbay.com>
Date: Thu, 13 Nov 2008 14:15:31 +0100
From: Eric Dumazet <dada1@...mosbay.com>
To: David Miller <davem@...emloft.net>
CC: "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>,
Corey Minyard <minyard@....org>,
Stephen Hemminger <shemminger@...tta.com>,
benny+usenet@...rsen.dk,
Linux Netdev List <netdev@...r.kernel.org>,
Christoph Lameter <cl@...ux-foundation.org>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Evgeniy Polyakov <zbr@...emap.net>,
Christian Bell <christian@...i.com>
Subject: [PATCH 3/3] net: Convert TCP & DCCP hash tables to use RCU / hlist_nulls
RCU was added to UDP lookups, using a fast infrastructure :
- sockets kmem_cache use SLAB_DESTROY_BY_RCU and dont pay the
price of call_rcu() at freeing time.
- hlist_nulls permits to use few memory barriers.
This patch uses same infrastructure for TCP/DCCP established
and timewait sockets.
Thanks to SLAB_DESTROY_BY_RCU, no slowdown for applications
using short lived TCP connections. A followup patch, converting
rwlocks to spinlocks will even speedup this case.
__inet_lookup_established() is pretty fast now we dont have to
dirty a contended cache line (read_lock/read_unlock)
Only established and timewait hashtable are converted to RCU
(bind table and listen table are still using traditional locking)
Signed-off-by: Eric Dumazet <dada1@...mosbay.com>
---
include/net/inet_hashtables.h | 4 -
include/net/inet_timewait_sock.h | 10 +--
net/core/sock.c | 4 +
net/dccp/ipv4.c | 1
net/dccp/ipv6.c | 1
net/dccp/proto.c | 4 -
net/ipv4/inet_diag.c | 6 +-
net/ipv4/inet_hashtables.c | 78 ++++++++++++++++++++---------
net/ipv4/inet_timewait_sock.c | 26 +++++----
net/ipv4/tcp.c | 4 -
net/ipv4/tcp_ipv4.c | 25 ++++-----
net/ipv6/inet6_hashtables.c | 70 +++++++++++++++++---------
net/ipv6/tcp_ipv6.c | 1
13 files changed, 150 insertions(+), 84 deletions(-)
View attachment "TCP_RCU.patch" of type "text/plain" (20051 bytes)
Powered by blists - more mailing lists