netdev
[Top] [All Lists]

Strange accept() behaviour in 2.2

To: "netdev@xxxxxxxxxxx" <netdev@xxxxxxxxxxx>
Subject: Strange accept() behaviour in 2.2
From: Andrew Morton <andrewm@xxxxxxxxxx>
Date: Tue, 07 Nov 2000 01:50:58 +1100
Cc: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx>
Sender: owner-netdev@xxxxxxxxxxx
I wrote a silly little server and client.  They're at

        http://www.uow.edu.au/~andrewm/wsws.tar.gz

The server just forks a bunch of children which wait in accept().
The client hammers the socket with connections to give all the
servers a fright.

The strange thing is the throughput:

Servers                 conn/sec
  1                     1666
  2                     666
  3                     476
  4                     476
  5                     476
  6                     1666
  7                     1666
  8                     1428
  9                     1428
  10                    1428
  50                    588
  100                   40

This is with 2.2.18-pre19-SMP on UP.  x86.  Does the same thing
with a uniprocessor build.

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 5
model name      : Celeron (Covington)
stepping        : 1
cpu MHz         : 400.000920
cache size      : 0 KB                          /* huh? */
fdiv_bug        : no
hlt_bug         : no
sep_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat 
pse36 mmx fxsr
bogomips        : 799.54


Why is the accept() rate 3-4 times lower at 2, 3, 4 and 5 servers?

Can anyone else reproduce this?

Just run

        ./wsws 2224 <nServers> &
        time ./wswc 0 2224 10000

<Prev in Thread] Current Thread [Next in Thread>