perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <>
Subject Re: Amazon
Date Sat, 23 Feb 2008 16:06:28 GMT
J. Peng wrote:
> Apache with prefork mode can share the memory? Sorry I didn't know it.
> Sharing memory between multi-processes need extra programming, I don't
> know apache has done it already.

Both prefork and worker models share memory.  fork() takes all of your
pages and marks them "copy on write".  This means; no-touchie, share nice.
Don't confuse this with shared, writeable pages.

Once you do write to any byte of a common page (even assigning the same
value and not actually anything), the kernel makes you up your own private
copy.  Do that in every fork()ed child, and it hurts.  This is why the
process and conf pools of httpd should never be touched by a sane module
from the child_init hook, onwards.

But you won't notice the sharing as much with worker model, since there
might be only 10 processes sharing memory to support 250 children, instead
of 250 children all sharing that same config.  Although worker starts out
25 times more compact, so the net win from fork()+threading is roughly
equivalent ;-)

View raw message