Aaron Bannert wrote:

>After working with my two proposed worker MPM models, I've become more
>confident in the simple model. I'll continue benchmarking both designs,
>but I wanted to get this one out to fix what's in CVS right now, and
>so I can provide some more tweaks I've been working on (turn the LIFO
>queue to a FIFO, fix the scoreboard states, setconcurrency, etc...).
>
>Again, I've tested this patch extensively on solaris and linux with
>favorable results.
>
>Patch description:
>- Don't reuse transaction pools, instead create one for each new
>  connection request. This seems to incur less overhead than trying
>  to shuffle the pools around for reuse.
>- Get rid of one of the fd_queue condition variables. We don't need
>  to wait on the queue if it's full, that means the caller didn't
>  allocate enough entries in the queue. This relieves some overhead
>  from signal/condition management.
>
Looks reasonable to me.  I liked the more complicated "time-space tradeoff"
design better because it's theoretically more scalable, but if the "short
and sweet" design can outperform prefork in multiprocessor tests (e.g.,
Ian's 8-CPU mstone benchmark) then I'm in favor of going with the simple
approach.

--Brian



Reply via email to