The worker MPM currently creates and destroys a
ptrans pool for each connection.  This is somewhat
of a performance bottleneck due to the mutex locking
in apr_pool_destroy().

We could avoid this problem by creating a persistent
pool per worker thread and doing apr_pool_clear() instead
of apr_pool_destroy.  But I'm guessing that there's a
reason why the code doesn't do that already.  Can
anyone comment on the rationale for the current design?

If we created a persistent pool in each worker thread,
we might also be able to eliminate the locking in
new_block() by enhancing the pool code to use a
thread-private free block list.  This would eliminate
essentially all the mutex operations during request
processing.

--Brian


Reply via email to