Subject: Re: TCP connection stops after high load.

From: John Heffner <[email-masked]>
Date: Sun, 15 Apr 2007 11:31:45 -0400

Robert Iakobashvili wrote:
> Vanilla 2.6.18.3 works for me perfectly, whereas 2.6.19.5 and
> 2.6.20.6 do not.
> 
> Looking into the tcp /proc entries of 2.6.18.3 versus 2.6.19.5
> tcp_rmem and tcp_wmem are the same, whereas tcp_mem are
> much different:
> 
> kernel                  tcp_mem
> ---------------------------------------
> 2.6.18.3    12288 16384 24576
> 2.6.19.5      3072    4096   6144
> 
> 
> Is not it done deliberately by the below patch:
> 
> commit 9e950efa20dc8037c27509666cba6999da9368e8
> Author: John Heffner <[email-masked]>
> Date:   Mon Nov 6 23:10:51 2006 -0800
> 
>    [TCP]: Don't use highmem in tcp hash size calculation.
> 
>    This patch removes consideration of high memory when determining TCP
>    hash table sizes.  Taking into account high memory results in tcp_mem
>    values that are too large.
> 
> Is it a feature?
> 
> My machine has:
> MemTotal:       484368 kB
> and
> for all kernel configurations are actually the same with
> CONFIG_HIGHMEM4G=y
> 
> Thanks,
> 

Another patch that went in right around that time:

commit 52bf376c63eebe72e862a1a6e713976b038c3f50
Author: John Heffner <[email-masked]>
Date:   Tue Nov 14 20:25:17 2006 -0800

     [TCP]: Fix up sysctl_tcp_mem initialization.

     Fix up tcp_mem initial settings to take into account the size of the
     hash entries (different on SMP and non-SMP systems).

     Signed-off-by: John Heffner <[email-masked]>
     Signed-off-by: David S. Miller <[email-masked]>

(This has been changed again for 2.6.21.)

In the dmesg, there should be some messages like this:

IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
TCP: Hash tables configured (established 131072 bind 65536)

What do yours say?

Thanks,
   -John