diff options
author | Eric Dumazet <dada1@cosmosbay.com> | 2006-11-16 05:30:37 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-03 00:21:44 -0500 |
commit | 72a3effaf633bcae9034b7e176bdbd78d64a71db (patch) | |
tree | b7a331527f1b15335a358f97809134f35587e57a /include/net/tcp.h | |
parent | 3c62f75aac7348ee262b1295cfcfeb3473f76815 (diff) |
[NET]: Size listen hash tables using backlog hint
We currently allocate a fixed size (TCP_SYNQ_HSIZE=512) slots hash table for
each LISTEN socket, regardless of various parameters (listen backlog for
example)
On x86_64, this means order-1 allocations (might fail), even for 'small'
sockets, expecting few connections. On the contrary, a huge server wanting a
backlog of 50000 is slowed down a bit because of this fixed limit.
This patch makes the sizing of listen hash table a dynamic parameter,
depending of :
- net.core.somaxconn tunable (default is 128)
- net.ipv4.tcp_max_syn_backlog tunable (default : 256, 1024 or 128)
- backlog value given by user application (2nd parameter of listen())
For large allocations (bigger than PAGE_SIZE), we use vmalloc() instead of
kmalloc().
We still limit memory allocation with the two existing tunables (somaxconn &
tcp_max_syn_backlog). So for standard setups, this patch actually reduce RAM
usage.
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/tcp.h')
-rw-r--r-- | include/net/tcp.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index 7a093d0aa0fe..246916c2321e 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -138,7 +138,6 @@ extern void tcp_time_wait(struct sock *sk, int state, int timeo); | |||
138 | #define MAX_TCP_SYNCNT 127 | 138 | #define MAX_TCP_SYNCNT 127 |
139 | 139 | ||
140 | #define TCP_SYNQ_INTERVAL (HZ/5) /* Period of SYNACK timer */ | 140 | #define TCP_SYNQ_INTERVAL (HZ/5) /* Period of SYNACK timer */ |
141 | #define TCP_SYNQ_HSIZE 512 /* Size of SYNACK hash table */ | ||
142 | 141 | ||
143 | #define TCP_PAWS_24DAYS (60 * 60 * 24 * 24) | 142 | #define TCP_PAWS_24DAYS (60 * 60 * 24 * 24) |
144 | #define TCP_PAWS_MSL 60 /* Per-host timestamps are invalidated | 143 | #define TCP_PAWS_MSL 60 /* Per-host timestamps are invalidated |