In article <Pine.LNX.4.04.9908120915360.5057-100000@chosondo.raleigh.ibm.com> you wrote:
> Not to sound pushy or anything, but any chance you'll run the same test
> for either apache-apr or the pthread-mpm. They are basically the same
> code, so there is really no need to run the test on both servers. I would
> be interested to see if the static number of processes/ dynamic threads
> is really a big win though.
When I run Apache/pthread with GNU Pth and the default config in
apache-apr/pthread/conf/httpd.conf-dist I get:
| $ ab -n 5000 -c 1 en1:8080/index.html
| This is ApacheBench, Version 1.3
| Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
| Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/
|
| Server Software: Apache/pthreads-dev
| Server Hostname: en1
| Server Port: 8080
|
| Document Path: /index.html
| Document Length: 1622 bytes
|
| Concurrency Level: 1
| Time taken for tests: 15.526 seconds
| Complete requests: 5000
| Failed requests: 0
| Total transferred: 9365000 bytes
| HTML transferred: 8110000 bytes
| Requests per second: 322.04
| Transfer rate: 603.18 kb/s received
|
| Connnection Times (ms)
| min avg max
| Connect: 0 0 4
| Processing: 0 2 14
| Total: 0 2 18
But I get similar results (around 400 req/s) with dexter, if I use lots of
processes. The reason seems to be the non-serialized accept (keep in mind that
I use plain user-space threading with both GNU Pth and FreeBSD uthread!).
When I change Apache/pthread to run with
MinSpareServers 1
MaxSpareServers 1
MaxClients 1
ThreadsPerChild 32
MaxRequestsPerChild 0
(which is then similar to what I use with dexter) I get:
| $ ab -n 5000 -c 1 en1:8080/index.html
| This is ApacheBench, Version 1.3
| Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
| Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/
|
| Server Software: Apache/pthreads-dev
| Server Hostname: en1
| Server Port: 8080
|
| Document Path: /index.html
| Document Length: 1622 bytes
|
| Concurrency Level: 1
| Time taken for tests: 6.347 seconds
| Complete requests: 5000
| Failed requests: 0
| Total transferred: 9365000 bytes
| HTML transferred: 8110000 bytes
| Requests per second: 787.77
| Transfer rate: 1475.50 kb/s received
|
| Connnection Times (ms)
| min avg max
| Connect: 0 0 10
| Processing: 0 0 2
| Total: 0 0 12
This is still 300 req/sec slower than Apache/mpm/dexter on the same PII/400
under FreeBSD 3.1 with the same GNU Pth. So dexter's approach seem to be
faster - AT LEAST FOR MY PARTICULAR SITUATION. Under Linux or Solaris (where
threads are tried to kernel-space) the figures can be totally different.
What I'm now really interesting is how much more one could squeeze out of
Apache/mpm/dexter after I've implemented shared memory aware pthread_mutex_t's
and then the accept serialization can be enabled again....
Ralf S. Engelschall
rse@engelschall.com
www.engelschall.com
|