----- Original Message -----
From: "Lionel MARTIN"
To: "Perrin Harkins"
Sent: Wednesday, April 26, 2006 4:10 PM
Subject: Re: How many people use the Windows combo of Apache2 + mod_perl2 ?

> Hi,
> I'm replying below.
>> On Wed, 2006-04-26 at 17:20 +0200, Lionel MARTIN wrote:
>>> I'm preloading this module, using "PerlModule MyLoadingModule" in
>>> httpd.conf.

>> Does that change if you load them via "use MyLoadingModule" in a
>> startup.pl?

> I can't understand how it could change using a startup.pl file? After all,
> doing a PerlRequire startup.pl is just a way to incoporate code in the
> main flow, isn't it?
> Anyway, I gave it a try, and it gave exactly the same results:
> Module Loaded: restart_count: 1 # Perl Interpreter:0x26ebbc
> Module Loaded: restart_count: 2 # Perl Interpreter:0x150f29c
> Module Loaded: restart_count: 1 # Perl Interpreter:0x26ec54
> Module Loaded: restart_count: 2 # Perl Interpreter:0x1ac6014
>>> I really would like to understand how the WinNT MPM is working, how
>>> memory
>>> is shared, in order to make our coding more efficient.
>>> The problem is that most docs about memory management under MP is abou
>>> LAMP,
>>> and I'm not sure the same rules apply...

>> With Perl threads, no memory is shared. There is no advantage to
>> preloading when using threads. It just makes the threads take longer to
>> spawn.

> I'm really sceptical (and probably lost) with what you're saying here.
> First of all, from the MP docs itself
> (http://perl.apache.org/docs/2.0/user...hreads_Support),
> I can read that:
> ****************
> Rather than create a PerlInterperter per-thread by default, mod_perl
> creates a pool of interpreters. The pool mechanism helps cut down memory
> usage a great deal. As already mentioned, the syntax tree is shared
> between all cloned interpreters.
> ****************
> And concerning me, I couldn't believe there's no difference between
> preloading components, and loading them at runtime, in term of memory
> consumption.
> So, I made extensive tests, creating a simple component (a
> PerlResponseHandler). I ma deocmparisons between preloading the handler,
> and loading it at runtime, and then, using 8 concurrent accesses (with 8
> Perl Interpreters enabled by default), and I could see some difference in
> terms of memory consumption.
> I have got a lot of different results, but for example:
> When preloading my compoennts, and asking Apache to start 8 Perl
> Interpreters and then, making 8 concurtrent requests, this was taking
> 27968 kb of RAM for the main process and 29596 kb of RAM for the child
> process.
> On the other hand, without preloading the handler, and then, making 8
> concurrent requests (=> handler loaded on the fly), this was taking
> 11740kb for the main process and 35252kb for the child process...
> I don't know how to exactly interpret that, but that shows there are some
> differences.
> I really would love to understand how sharing is working, and what's
> exactly shared (or perhaps have the confirmation that nothing is shared
> under winnt MPMs...?)
> I think that I should better try with LAMP as well, but to be honest, I
> have never tried to install Linux.
> Have you got any resources where I could read about how things are managed
> under Windows?
>> - Perrin