Justin Erenkrantz wrote:
>On Thu, Apr 18, 2002 at 12:08:24AM -0700, Brian Pane wrote:
>
>>httpd listening on one port:
>> Requests/ Mean request CPU CPU
>> MPM second time (ms) load utilization
>>-----------------------------------------------------------
>>Threadpool 854 55.5 4.8 52%
>>Leader/follower 957 39.5 6.8 72%
>>Worker 892 31.4 7.0 70%
>>
>>
>>httpd listening on two ports:
>> Requests/ Mean request CPU CPU
>> MPM second time (ms) load utilization
>>-----------------------------------------------------------
>>Threadpool 848 54.5 4.8 53%
>>Leader/follower 814 58.4 4.5 51%
>>Worker 881 47.7 5.1 59%
>>
>
>(Assuming you ran with AcceptMutex pthread...)
>
Right
>Do you still have no idea why Leader/follower is getting nailed
>when there are two listeners (while worker has a dropoff, it isn't
>quite that severe)?
>
I put some ideas about this in the commit log for the initial check-in
of the threadpool code:
In my initial testing, the
leader/follower MPM performs very well on multiprocessor Solaris 8 when
listening on a single port, but poorly when listening on multiple ports.
(I don't know why this is happening. What I've found so far is that
when you add a poll on the listen socket(s) before the accept in the
leader/follower MPM, all the socket-related syscalls in the httpd get
slower. My hypothesis is that the thread scheduler is making an optimal
decision about where (on what CPU) to run the newly awakened thread if
its first syscall is an accept, and a nonoptimal decision if its first
syscall is a poll.) The threadpool MPM performs better with multiple
listener ports, and in my testing so far it looks competitive with
leader/follower when running with a single listener.
I'm inclined to call this a peculiarity of the Solaris thread scheduler,
but I'd really like to see results from at least one other multiprocessor
Unix platform first.
> So, threadpool is slower on single listeners
>but has almost no noticable difference when having two listeners
>versus one. Is this because threadpool doesn't use S_L_U_A?
>
That's what I thought, but I did a followup test with threadpool
using S_L_U_A and its performance was about the same as the non-S_L_U_A
version.
>With one listener, how does worker have a better mean but a noticably
>worse rps count? Were there some requests that skewed the mean?
>
I think this is what skewed the mean on request time:
MPM mean min max
worker 39.5ms 5.5ms 9s
l/f 55.5ms 5.5ms 21s
>Also, while I'm not terribly sure how valuable this might be to you,
>I think it might be good to see how prefork compares on this same
>test. After all, it is our default MPM and will be until we can
>prove to people (esp. committers) how much better threading can
>be. -- justin
>
I agree. If I have time, I'll run a prefork test tonight.
--Brian