[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4ACC1C73.1010506@gmail.com>
Date: Wed, 07 Oct 2009 06:43:31 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: "David S. Miller" <davem@...emloft.net>
CC: Rick Jones <rick.jones2@...com>,
Linux Netdev List <netdev@...r.kernel.org>
Subject: [PATCH] udp: extend hash tables to 256 slots
Eric Dumazet a écrit :
> I was going to setup a bench lab, with a typical RTP mediaserver, with say
> 4000 UDP sockets, 2000 sockets exchanging 50 G.711 Alaw/ulaw
> messages per second tx and rx. (Total : 100.000 packets per second each way)
>
Hmm, it seems we'll have too many sockets per udp hash chain unfortunatly for this
workload to show any improvement.
(~32 sockets per chain : average of 16 misses to lookup the target socket.)
David, I believe UDP_HTABLE_SIZE never changed from its initial value of 128,
defined 15 years ago. Could we bump it to 256 ?
(back in 1995, SOCK_ARRAY_SIZE was 256)
(I'll probably use 1024 value for my tests)
[PATCH] udp: extend hash tables to 256 slots
UDP_HTABLE_SIZE was initialy defined to 128, which is a bit small for several setups.
4000 active sockets -> 32 sockets per chain in average.
Doubling hash table size has a memory cost of 128 (pointers + spinlocks) for UDP,
same for UDPLite, this should be OK.
It reduces the size of bitmap used in udp_lib_get_port() and speedup port allocation.
#define PORTS_PER_CHAIN (65536 / UDP_HTABLE_SIZE) -> 256 bits instead of 512 bits
Use CONFIG_BASE_SMALL to keep hash tables small for small machines.
Signed-off-by: Eric Dumazet <eric.dumazet@...il.com>
---
diff --git a/include/linux/udp.h b/include/linux/udp.h
index 0cf5c4c..8aaa151 100644
--- a/include/linux/udp.h
+++ b/include/linux/udp.h
@@ -45,7 +45,7 @@ static inline struct udphdr *udp_hdr(const struct sk_buff *skb)
return (struct udphdr *)skb_transport_header(skb);
}
-#define UDP_HTABLE_SIZE 128
+#define UDP_HTABLE_SIZE (CONFIG_BASE_SMALL ? 128 : 256)
static inline int udp_hashfn(struct net *net, const unsigned num)
{
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists