If I created some of my static hashes and objects during the
PerlPostConfigHandler phase
and added them to either the configuration or log pools would that
help me keep
some of my memory shared, assuming I could get at either pool during
the PerlResponseHandler?

Am I confusing lifetime scope with shared memory? Are the two entwined?

I have classes that create singleton objects with lots of static
parts. Should I build these "constructs"
on server post config so they're already built in the child processes
as shared memory rather than
building them in each child, increasing the non-shared memory use?

Would it allow me to reduce what I have set for
$Apache2::SizeLimit::MAX_UNSHARED_SIZE?

Thanks for all of the help,
-bop



On Nov 7, 2007, at 2:16 PM, Boysenberry Payne wrote:

> Other than for callbacks on destruction of memory pools what is
> APR::Pool useful for?
>
> -bop
>
> On Nov 7, 2007, at 1:56 PM, Perrin Harkins wrote:
>
>> Don't use Apache::SharedMem. It uses IPC::ShareLite, which is slow.
>>
>>> Does memcached or Cache::FastMap work with apache's shared memory
>>> pool?

>>
>> No, I don't think anyone has ever gotten that to work.
>>
>>> In this situation if its possible (which it should be for my own
>>> modules) I would like
>>> the package symbol table and contents to be loaded into the shared
>>> server wide memory.

>>
>> It's not possible. Perl allocates its own memory. You can't tell it
>> where it to put things. As discussed many times on the list,
>> copy-on-write helps with this on prefork systems. On threaded
>> systems, Perl shares the parsed code, but the symbol table is
>> duplicated for each thread, so it ends up using more memory than
>> prefork.
>>
>> You can read more about copy-on-write in the mod_perl docs or at
>> modperlbook.org and there is more discussion about threads and how
>> they affect memory in the list archives.
>>
>> - Perrin

>