You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Tsuyoshi SASAMOTO <na...@super.win.ne.jp> on 2002/08/20 04:07:37 UTC
Perchild on Solaris (was: Perchild works again.... kind of)
On Solaris, this macro definition is required to build successfully:
-D_XOPEN_SOURCE=500 -D__EXTENSIONS__
By the way, with the perchild MPM, httpd performance is
"T2 (alternate) thread lib < T1 (default) thread lib".
http://groups.google.com/groups?selm=3c7681a8.0207152237.2b9a4ec4@posting.google.com
By contrast, with the worker MPM, "T2 thread lib > T1 thread lib"
(But the difference is smaller than the perchild MPM).
With the perchild MPM and the T2 thread lib, mutex contention
may cause performance penalty, I guess...
Tsuyoshi SASAMOTO
nazonazo@super.win.ne.jp
Re: Perchild on Solaris
Posted by Tsuyoshi SASAMOTO <na...@super.win.ne.jp>.
>It looks like the changes doubled your performance.. not bad for 2 lines
> :-)
Yes :-)
>Also.. if you want to get a bit faster try preloading the
>/usr/lib/libmtmalloc.so library.
>also.. have you compared perchild to worker ? (yes I know perchild isn't
>finished..I'm just curious)
Linked with libmtmalloc, and tested again (as below).
Tsuyoshi SASAMOTO
nazonazo@super.win.ne.jp
----------------------------------------------------------------------
Result of
ab -c128 -n8192 127.0.0.1:3080/
----[T1 perchild]-----------------------------------------------------
This is ApacheBench, Version 2.0.37-dev <$Revision: 1.105 $> apache-2.0
:
:
Server Software: Apache/2.0.39
Server Hostname: 127.0.0.1
Server Port: 3080
Document Path: /
Document Length: 1630 bytes
Concurrency Level: 128
Time taken for tests: 16.129322 seconds
Complete requests: 8192
Failed requests: 0
Write errors: 0
Total transferred: 15851520 bytes
HTML transferred: 13352960 bytes
Requests per second: 507.89 [#/sec] (mean)
Time per request: 252.021 [ms] (mean)
Time per request: 1.969 [ms] (mean, across all concurrent requests)
Transfer rate: 959.74 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 2.6 0 175
Processing: 28 249 46.2 247 741
Waiting: 1 130 71.7 129 537
Total: 28 249 46.3 247 741
Percentage of the requests served within a certain time (ms)
50% 247
66% 248
75% 249
80% 249
90% 264
95% 311
98% 408
99% 444
100% 741 (longest request)
----[T2 perchild]-----------------------------------------------------
This is ApacheBench, Version 2.0.37-dev <$Revision: 1.105 $> apache-2.0
:
:
Server Software: Apache/2.0.39
Server Hostname: 127.0.0.1
Server Port: 3080
Document Path: /
Document Length: 1630 bytes
Concurrency Level: 128
Time taken for tests: 22.792954 seconds
Complete requests: 8192
Failed requests: 0
Write errors: 0
Total transferred: 15851520 bytes
HTML transferred: 13352960 bytes
Requests per second: 359.41 [#/sec] (mean)
Time per request: 356.140 [ms] (mean)
Time per request: 2.782 [ms] (mean, across all concurrent requests)
Transfer rate: 679.16 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.9 1 117
Processing: 57 351 84.0 349 1277
Waiting: 3 185 102.9 188 1174
Total: 57 352 84.0 350 1278
Percentage of the requests served within a certain time (ms)
50% 350
66% 394
75% 401
80% 403
90% 413
95% 459
98% 555
99% 609
100% 1278 (longest request)
----[T1 worker]-------------------------------------------------------
This is ApacheBench, Version 2.0.37-dev <$Revision: 1.105 $> apache-2.0
:
:
Server Software: Apache/2.0.39
Server Hostname: 127.0.0.1
Server Port: 3080
Document Path: /
Document Length: 1630 bytes
Concurrency Level: 128
Time taken for tests: 18.109316 seconds
Complete requests: 8192
Failed requests: 0
Write errors: 0
Total transferred: 15851520 bytes
HTML transferred: 13352960 bytes
Requests per second: 452.36 [#/sec] (mean)
Time per request: 282.958 [ms] (mean)
Time per request: 2.211 [ms] (mean, across all concurrent requests)
Transfer rate: 854.81 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.9 0 50
Processing: 25 280 42.6 275 747
Waiting: 3 144 83.8 143 676
Total: 26 280 42.7 275 747
Percentage of the requests served within a certain time (ms)
50% 275
66% 280
75% 281
80% 282
90% 308
95% 370
98% 407
99% 466
100% 747 (longest request)
----[T2 worker]-------------------------------------------------------
This is ApacheBench, Version 2.0.37-dev <$Revision: 1.105 $> apache-2.0
:
:
Server Software: Apache/2.0.39
Server Hostname: 127.0.0.1
Server Port: 3080
Document Path: /
Document Length: 1630 bytes
Concurrency Level: 128
Time taken for tests: 14.78003 seconds
Complete requests: 8192
Failed requests: 0
Write errors: 0
Total transferred: 15851520 bytes
HTML transferred: 13352960 bytes
Requests per second: 581.90 [#/sec] (mean)
Time per request: 219.969 [ms] (mean)
Time per request: 1.719 [ms] (mean, across all concurrent requests)
Transfer rate: 1099.59 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.8 0 67
Processing: 24 217 21.0 221 295
Waiting: 3 116 61.8 121 291
Total: 24 217 20.9 221 295
Percentage of the requests served within a certain time (ms)
50% 221
66% 221
75% 221
80% 222
90% 223
95% 242
98% 263
99% 294
100% 295 (longest request)
----------------------------------------------------------------------
Result of
truss -cf -p (pids of the httpd processes) & \
ab -c128 -n768 127.0.0.1:3080/ >&/dev/null; \
pkill -u $user -x truss
----[T1 perchild]-----------------------------------------------------
syscall seconds calls errors
read .32 1535
write .16 768
close .29 1534
times .19 768
fcntl .29 1536
sendfilev64 .30 768
poll .40 1546
waitid .00 11
mmap .00 12
mprotect .00 96
lwp_sema_wait .13 443
lwp_sema_post .13 443
gettimeofday .85 4811
lwp_self .03 102
lwp_mutex_wakeup .09 653
lwp_mutex_lock .26 1368
lwp_cond_wait .04 152
lwp_cond_signal .04 152
stat64 .46 1536
fstat64 .29 1536
open64 .29 1536 768
accept .25 768
shutdown .29 767
getsockname .20 768
getsockopt .28 1536
setsockopt .12 768
lwp_mutex_unlock .13 768
------- ------ ----
sys totals: 5.83 26681 768
usr time: .67
elapsed: 11.11
----[T2 perchild]-----------------------------------------------------
syscall seconds calls errors
read .30 1534
write .10 768
close .24 1532
times .16 768
fcntl .28 1536
lwp_park .03 437
lwp_unpark .09 437
sendfilev64 .21 768
poll .27 1544
sigprocmask .01 158
waitid .00 9
mmap .02 90
munmap .02 89
yield .00 62
gettimeofday .82 4924
lwp_create .06 318
lwp_exit .01 158
lwp_continue .05 159
lwp_kill .05 158 158
lwp_mutex_lock .11 768
lwp_schedctl .10 159
stat64 .32 1536
fstat64 .20 1536
open64 .35 1536 768
accept .30 768
shutdown .17 767
getsockname .14 768
getsockopt .29 1536
setsockopt .16 768
lwp_mutex_unlock .12 768
------- ------ ----
sys totals: 4.98 26359 926
usr time: .73
elapsed: 9.17
----[T1 worker]-------------------------------------------------------
signals ------------
SIGHUP 1
SIGTERM 1
total: 2
syscall seconds calls errors
_exit .00 1
read .24 1536
write .18 769
close .18 1538
time .00 4
brk .03 96
getpid .00 13
getuid .00 8
kill .00 1
times .11 768
sysi86 .03 131
fcntl .19 1536
sendfilev64 .20 768
poll .16 1543 1
sigprocmask .00 7
sigaction .00 48
setcontext .00 2
waitid .00 6
mmap .02 143
mprotect .05 255
munmap .00 54
fork1 .00 4
lwp_sema_wait .11 760
lwp_sema_post .13 760
gettimeofday .76 4932
lwp_create .03 262
lwp_continue .00 127
lwp_kill .00 1
lwp_self .02 112
lwp_mutex_wakeup .06 1124
lwp_mutex_lock .28 1804
lwp_cond_wait .00 25
lwp_cond_signal .00 19
llseek .00 2
door_create .00 4
door_info .00 4
lwp_schedctl .04 135 4
signotifywait .02 134
lwp_sigredirect .05 134
stat64 .33 1536
fstat64 .16 1536
open64 .34 1536 768
accept .17 768
shutdown .14 767
getsockname .10 768
getsockopt .25 1536
setsockopt .13 768
lwp_mutex_unlock .03 769
------- ------ ----
sys totals: 4.54 29554 773
usr time: .64
elapsed: 7.97
----[T2 worker]-------------------------------------------------------
signals ------------
SIGHUP 3
SIGTERM 2
total: 5
syscall seconds calls errors
_exit .00 2
read .32 1537
write .24 770
close .47 1534
time .00 4
brk .04 94
getpid .00 12
getuid .00 8
kill .00 2
times .16 768
sysi86 .01 108
fcntl .29 1536
lwp_park .24 814
lwp_unpark .09 819
sendfilev64 .42 769 1
poll .29 1548 3
sigprocmask .02 90
sigaction .01 12
getcontext .00 4
setcontext .00 5
waitid .00 10
mmap .04 118
munmap .01 34
sysconfig .00 4
fork1 .00 4
yield .00 6
gettimeofday 1.34 4982
lwp_create .02 216
lwp_exit .00 56
lwp_continue .02 108
lwp_kill .00 44 38
lwp_wait .00 54
lwp_mutex_lock .19 773 1
llseek .00 4
lwp_schedctl .01 116
stat64 .47 1536
fstat64 .31 1536
open64 .52 1536 768
accept .33 768
shutdown .21 767
getsockname .11 768
getsockopt .48 1536
setsockopt .18 768
lwp_mutex_unlock .15 770
------- ------ ----
sys totals: 6.99 26950 811
usr time: .64
elapsed: 11.28
----------------------------------------------------------------------
Re: Perchild on Solaris
Posted by Ian Holsman <ia...@apache.org>.
Tsuyoshi SASAMOTO wrote:
>>some comments..
>>the stats seems high.. make sure you have the:
>> Options FollowSymLinks
>> AllowOverrides none
>>specified
>>also try 'AcceptMutex pthread' this worked better for my tests.
>>there may be some other things, but I would need to see your config file.
>
>
> Thanks... The previous config was:
> Options All MultiViews
> AllowOverride All
> I was interested in the "relative" comparison between T1 and T2 threads,
> so httpd.conf itself was not tuned well...
the problem is that with all the other things going on you don't get
a fair comparision of the threading systems, as you were spending all
your time in the file system.
>
> Under config you suggested above and so on, the result is as below.
It looks like the changes doubled your performance.. not bad for 2 lines
:-)
Also.. if you want to get a bit faster try preloading the
/usr/lib/libmtmalloc.so library.
also.. have you compared perchild to worker ? (yes I know perchild isn't
finished..I'm just curious)
>
>
> Tsuyoshi SASAMOTO
> nazonazo@super.win.ne.jp
> ----------------------------------------------------------------------
>
> Result of
> ab -c128 -n8192 127.0.0.1:3080/
> ----[T1 thread lib]---------------------------------------------------
> This is ApacheBench, Version 2.0.37-dev <$Revision: 1.105 $> apache-2.0
> :
> :
> Server Software: Apache/2.0.39
> Server Hostname: 127.0.0.1
> Server Port: 3080
>
> Document Path: /
> Document Length: 1630 bytes
>
> Concurrency Level: 128
> Time taken for tests: 14.586689 seconds
> Complete requests: 8192
> Failed requests: 0
> Write errors: 0
> Total transferred: 15810560 bytes
> HTML transferred: 13352960 bytes
> Requests per second: 561.61 [#/sec] (mean)
> Time per request: 227.917 [ms] (mean)
> Time per request: 1.781 [ms] (mean, across all concurrent requests)
> Transfer rate: 1058.50 [Kbytes/sec] received
>
> Connection Times (ms)
> min mean[+/-sd] median max
> Connect: 0 0 1.3 0 84
> Processing: 29 224 24.9 222 442
> Waiting: 3 112 65.8 112 360
> Total: 29 224 25.0 222 444
>
> Percentage of the requests served within a certain time (ms)
> 50% 222
> 66% 223
> 75% 223
> 80% 223
> 90% 225
> 95% 240
> 98% 306
> 99% 310
> 100% 444 (longest request)
> ----[T2 thread lib]---------------------------------------------------
> This is ApacheBench, Version 2.0.37-dev <$Revision: 1.105 $> apache-2.0
> :
> :
> Server Software: Apache/2.0.39
> Server Hostname: 127.0.0.1
> Server Port: 3080
>
> Document Path: /
> Document Length: 1630 bytes
>
> Concurrency Level: 128
> Time taken for tests: 15.981754 seconds
> Complete requests: 8192
> Failed requests: 0
> Write errors: 0
> Total transferred: 15810560 bytes
> HTML transferred: 13352960 bytes
> Requests per second: 512.58 [#/sec] (mean)
> Time per request: 249.715 [ms] (mean)
> Time per request: 1.951 [ms] (mean, across all concurrent requests)
> Transfer rate: 966.10 [Kbytes/sec] received
>
> Connection Times (ms)
> min mean[+/-sd] median max
> Connect: 0 0 0.7 0 58
> Processing: 56 245 29.3 266 398
> Waiting: 3 123 71.0 123 307
> Total: 56 246 29.3 266 398
>
> Percentage of the requests served within a certain time (ms)
> 50% 266
> 66% 267
> 75% 268
> 80% 268
> 90% 270
> 95% 271
> 98% 284
> 99% 285
> 100% 398 (longest request)
> ----------------------------------------------------------------------
>
> Result of
> truss -c -p (pid of the working httpd process) & \
> ab -c128 -n768 127.0.0.1:3080/ >&/dev/null; \
> pkill -u $user -x truss
> ----[T1 thread lib]---------------------------------------------------
> syscall seconds calls errors
> read .20 1540 5
> write .12 768
> close .20 1534
> brk .31 774
> times .05 768
> sysi86 .02 40
> fcntl .34 1536
> sendfilev64 .28 768
> poll .15 1540
> sigaction .00 14
> mmap .02 58
> mprotect .07 184
> lwp_sema_wait .02 283
> lwp_sema_post .04 283
> gettimeofday .70 4889
> lwp_create .02 80
> lwp_continue .01 40
> lwp_self .04 141
> lwp_mutex_wakeup .06 205
> lwp_mutex_lock .15 971
> lwp_cond_wait .05 157
> lwp_cond_signal .04 157
> lwp_schedctl .00 40
> signotifywait .00 43
> lwp_sigredirect .00 43
> stat64 .25 1536
> fstat64 .27 1536
> open64 .30 1536 768
> accept .32 768
> shutdown .17 767
> getsockname .17 768
> getsockopt .20 1536
> setsockopt .11 768
> lwp_mutex_unlock .12 768
> ------- ------ ----
> sys totals: 4.80 26839 773
> usr time: .58
> elapsed: 8.54
> ----[T2 thread lib]---------------------------------------------------
> syscall seconds calls errors
> read .45 1542 7
> write .31 768
> close .66 1534
> brk 1.12 1676
> times .25 768
> sysi86 .08 92
> fcntl .49 1536
> lwp_park .63 1298
> lwp_unpark .59 1298
> sendfilev64 .39 768
> poll .50 1542
> sigprocmask .07 221
> mmap .10 173
> munmap .08 146
> yield .00 123
> gettimeofday 1.99 5071
> lwp_create .15 468
> lwp_exit .10 220
> lwp_continue .07 234
> lwp_kill .09 242 210
> lwp_mutex_lock .30 768
> lwp_schedctl .08 234
> stat64 .61 1536
> fstat64 .53 1536
> open64 .65 1536 768
> accept .25 768
> shutdown .40 767
> getsockname .20 768
> getsockopt .64 1536
> setsockopt .26 768
> lwp_mutex_unlock .25 768
> ------- ------ ----
> sys totals: 12.29 30705 985
> usr time: .88
> elapsed: 19.24
> ----------------------------------------------------------------------
>
Re: Perchild on Solaris
Posted by Tsuyoshi SASAMOTO <na...@super.win.ne.jp>.
>some comments..
>the stats seems high.. make sure you have the:
> Options FollowSymLinks
> AllowOverrides none
>specified
>also try 'AcceptMutex pthread' this worked better for my tests.
>there may be some other things, but I would need to see your config file.
Thanks... The previous config was:
Options All MultiViews
AllowOverride All
I was interested in the "relative" comparison between T1 and T2 threads,
so httpd.conf itself was not tuned well...
Under config you suggested above and so on, the result is as below.
Tsuyoshi SASAMOTO
nazonazo@super.win.ne.jp
----------------------------------------------------------------------
Result of
ab -c128 -n8192 127.0.0.1:3080/
----[T1 thread lib]---------------------------------------------------
This is ApacheBench, Version 2.0.37-dev <$Revision: 1.105 $> apache-2.0
:
:
Server Software: Apache/2.0.39
Server Hostname: 127.0.0.1
Server Port: 3080
Document Path: /
Document Length: 1630 bytes
Concurrency Level: 128
Time taken for tests: 14.586689 seconds
Complete requests: 8192
Failed requests: 0
Write errors: 0
Total transferred: 15810560 bytes
HTML transferred: 13352960 bytes
Requests per second: 561.61 [#/sec] (mean)
Time per request: 227.917 [ms] (mean)
Time per request: 1.781 [ms] (mean, across all concurrent requests)
Transfer rate: 1058.50 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.3 0 84
Processing: 29 224 24.9 222 442
Waiting: 3 112 65.8 112 360
Total: 29 224 25.0 222 444
Percentage of the requests served within a certain time (ms)
50% 222
66% 223
75% 223
80% 223
90% 225
95% 240
98% 306
99% 310
100% 444 (longest request)
----[T2 thread lib]---------------------------------------------------
This is ApacheBench, Version 2.0.37-dev <$Revision: 1.105 $> apache-2.0
:
:
Server Software: Apache/2.0.39
Server Hostname: 127.0.0.1
Server Port: 3080
Document Path: /
Document Length: 1630 bytes
Concurrency Level: 128
Time taken for tests: 15.981754 seconds
Complete requests: 8192
Failed requests: 0
Write errors: 0
Total transferred: 15810560 bytes
HTML transferred: 13352960 bytes
Requests per second: 512.58 [#/sec] (mean)
Time per request: 249.715 [ms] (mean)
Time per request: 1.951 [ms] (mean, across all concurrent requests)
Transfer rate: 966.10 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 58
Processing: 56 245 29.3 266 398
Waiting: 3 123 71.0 123 307
Total: 56 246 29.3 266 398
Percentage of the requests served within a certain time (ms)
50% 266
66% 267
75% 268
80% 268
90% 270
95% 271
98% 284
99% 285
100% 398 (longest request)
----------------------------------------------------------------------
Result of
truss -c -p (pid of the working httpd process) & \
ab -c128 -n768 127.0.0.1:3080/ >&/dev/null; \
pkill -u $user -x truss
----[T1 thread lib]---------------------------------------------------
syscall seconds calls errors
read .20 1540 5
write .12 768
close .20 1534
brk .31 774
times .05 768
sysi86 .02 40
fcntl .34 1536
sendfilev64 .28 768
poll .15 1540
sigaction .00 14
mmap .02 58
mprotect .07 184
lwp_sema_wait .02 283
lwp_sema_post .04 283
gettimeofday .70 4889
lwp_create .02 80
lwp_continue .01 40
lwp_self .04 141
lwp_mutex_wakeup .06 205
lwp_mutex_lock .15 971
lwp_cond_wait .05 157
lwp_cond_signal .04 157
lwp_schedctl .00 40
signotifywait .00 43
lwp_sigredirect .00 43
stat64 .25 1536
fstat64 .27 1536
open64 .30 1536 768
accept .32 768
shutdown .17 767
getsockname .17 768
getsockopt .20 1536
setsockopt .11 768
lwp_mutex_unlock .12 768
------- ------ ----
sys totals: 4.80 26839 773
usr time: .58
elapsed: 8.54
----[T2 thread lib]---------------------------------------------------
syscall seconds calls errors
read .45 1542 7
write .31 768
close .66 1534
brk 1.12 1676
times .25 768
sysi86 .08 92
fcntl .49 1536
lwp_park .63 1298
lwp_unpark .59 1298
sendfilev64 .39 768
poll .50 1542
sigprocmask .07 221
mmap .10 173
munmap .08 146
yield .00 123
gettimeofday 1.99 5071
lwp_create .15 468
lwp_exit .10 220
lwp_continue .07 234
lwp_kill .09 242 210
lwp_mutex_lock .30 768
lwp_schedctl .08 234
stat64 .61 1536
fstat64 .53 1536
open64 .65 1536 768
accept .25 768
shutdown .40 767
getsockname .20 768
getsockopt .64 1536
setsockopt .26 768
lwp_mutex_unlock .25 768
------- ------ ----
sys totals: 12.29 30705 985
usr time: .88
elapsed: 19.24
----------------------------------------------------------------------
Re: Perchild on Solaris (was: Perchild works again.... kind of)
Posted by Ian Holsman <ia...@apache.org>.
Tsuyoshi SASAMOTO wrote:
> On Solaris, this macro definition is required to build successfully:
> -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
>
> By the way, with the perchild MPM, httpd performance is
> "T2 (alternate) thread lib < T1 (default) thread lib".
when I was speaking to the sun people they said that in order to get
better performance with the Solaris9(t2) threading we need to bind the
processes to individual CPU's.
>
> http://groups.google.com/groups?selm=3c7681a8.0207152237.2b9a4ec4@posting.google.com
>
> By contrast, with the worker MPM, "T2 thread lib > T1 thread lib"
> (But the difference is smaller than the perchild MPM).
>
some comments..
the stats seems high.. make sure you have the:
Options FollowSymLinks
AllowOverrides none
specified
also try 'AcceptMutex pthread' this worked better for my tests.
there may be some other things, but I would need to see your config file.
> With the perchild MPM and the T2 thread lib, mutex contention
> may cause performance penalty, I guess...
>
>
> Tsuyoshi SASAMOTO
> nazonazo@super.win.ne.jp
>
Re: Perchild on Solaris
Posted by Tsuyoshi SASAMOTO <na...@super.win.ne.jp>.
>Having just first seen your original post a few seconds ago, I
>wanted to point out a couple problems with the test you performed.
>The first problem is you had the client and the server on the
>same machine, which means that they were fighting each other
>for timeslices, which is bad. The second problem is AB isn't
>the greatest tool for measuring performance and concurrency. It
>is useful for a quick test, and for single-threaded performance,
>but terrible at testing the various threaded MPMs.
Thanks... I agree your suggestion, but currently,
I don't have good 2 machines (one for server, other for client)
that are suitable for load test.
So, absolute values of those result are not so meaningful,
and I want those result to be treated as a relative comparison
between T1 and T2 thread lib.
Tsuyoshi SASAMOTO
nazonazo@super.win.ne.jp
Re: Perchild on Solaris (was: Perchild works again.... kind of)
Posted by rb...@apache.org.
On Mon, 19 Aug 2002, Aaron Bannert wrote:
> On Tue, Aug 20, 2002 at 11:07:37AM +0900, Tsuyoshi SASAMOTO wrote:
> > On Solaris, this macro definition is required to build successfully:
> > -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
> >
> > By the way, with the perchild MPM, httpd performance is
> > "T2 (alternate) thread lib < T1 (default) thread lib".
> >
> > http://groups.google.com/groups?selm=3c7681a8.0207152237.2b9a4ec4@posting.google.com
> >
> > By contrast, with the worker MPM, "T2 thread lib > T1 thread lib"
> > (But the difference is smaller than the perchild MPM).
> >
> > With the perchild MPM and the T2 thread lib, mutex contention
> > may cause performance penalty, I guess...
>
> Having just first seen your original post a few seconds ago, I
> wanted to point out a couple problems with the test you performed.
> The first problem is you had the client and the server on the
> same machine, which means that they were fighting each other
> for timeslices, which is bad. The second problem is AB isn't
> the greatest tool for measuring performance and concurrency. It
> is useful for a quick test, and for single-threaded performance,
> but terrible at testing the various threaded MPMs.
The third problem with this measurement, is that the Perchild MPM is in
no way ready to be benchmarked. :-) This MPM just barely works, let
alone optimized.
Ryan
_______________________________________________________________________________
Ryan Bloom rbb@apache.org
550 Jean St
Oakland CA 94610
-------------------------------------------------------------------------------
Re: Perchild on Solaris (was: Perchild works again.... kind of)
Posted by Aaron Bannert <aa...@clove.org>.
On Tue, Aug 20, 2002 at 11:07:37AM +0900, Tsuyoshi SASAMOTO wrote:
> On Solaris, this macro definition is required to build successfully:
> -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
>
> By the way, with the perchild MPM, httpd performance is
> "T2 (alternate) thread lib < T1 (default) thread lib".
>
> http://groups.google.com/groups?selm=3c7681a8.0207152237.2b9a4ec4@posting.google.com
>
> By contrast, with the worker MPM, "T2 thread lib > T1 thread lib"
> (But the difference is smaller than the perchild MPM).
>
> With the perchild MPM and the T2 thread lib, mutex contention
> may cause performance penalty, I guess...
Having just first seen your original post a few seconds ago, I
wanted to point out a couple problems with the test you performed.
The first problem is you had the client and the server on the
same machine, which means that they were fighting each other
for timeslices, which is bad. The second problem is AB isn't
the greatest tool for measuring performance and concurrency. It
is useful for a quick test, and for single-threaded performance,
but terrible at testing the various threaded MPMs.
-aaron
Re: Perchild on Solaris (was: Perchild works again.... kind of)
Posted by rb...@apache.org.
On Tue, 20 Aug 2002, Tsuyoshi SASAMOTO wrote:
> On Solaris, this macro definition is required to build successfully:
> -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
This is because APR doesn't understand file descriptor passing, which
means that I hard-coded that logic into Perchild. I used the logic that
Linux understands. I will abstract that logic out at some point, but it
will take some time.
Ryan
_______________________________________________________________________________
Ryan Bloom rbb@apache.org
550 Jean St
Oakland CA 94610
-------------------------------------------------------------------------------