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