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
-------------------------------------------------------------------------------