Hi Ben,

How are you detecting that a process is growing by a couple megs?  Are
you looking at the VSS (virtual segment size) because if you are, on
most un*x-es this figure should remain roughly the same despite shared
segments.

Also, you mention that the processes grow by a couple megs.  By this do
you mean that each subsequent fork is a few megs larger than the
parents?

One more question, what mpm are you using?  If you are using a threaded
mpm, the perl interpreters are cloned and all variables are cloned
between interpreters, that is unless you explicitly share them.  I don't
know what effect this behavior has on copy-on-write pages (aka shared),
but I wouldn't be surprised if this defeats this type of sharing.

Richard F. Rebel


On Thu, 2005-02-10 at 16:27 -0600, ben syverson wrote:
> I don't think I'm getting mod_perl's shared memory scheme yet. I have a 
> package that gets loaded in my startup.pl, and it basically does this:
> 
> use vars qw(%words);
> open FILE ...
> while <FILE> {
>       $words{$_} = 1;
> }
> close FILE;
> 
> ...creating a hash of words from a CR-delimited list of words. The hash 
> winds up taking up a few megabytes of RAM, but it's absolutely never 
> written to, so I figured it would be shared between the mod_perl 
> processes. However, each process grows by a few megs...
> 
> What's the best way to get around this?
> 
> - ben
> 
-- 
Richard F. Rebel

cat /dev/null > `tty`

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to