perl-embperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ed Grimm>
Subject RE: AW: Embperl and threaded mpm?
Date Tue, 27 Jun 2017 16:27:30 GMT
Preload isn't pre-execute.  Conceptually, it's only doing roughly the work done with perl -cw.
 How many megabytes of pages are you actually loading that you think it would take a noticeable
amount of time doing this?

The savings from preloading is a combination of being able to use more shared memory and not
having to load things while the system is distracted with all the other things that need doing
on starting up a new thread.  And, even so, the performance gain for a single thread would
be minimal, it's just notable over thousands of new thread creations.  (That said, would be
more noticeable for a new thread creation than a new fork creation, since forking is a more
significant task.)

Ed Grimm
Identity Services

-----Original Message-----
From: Neil Gunton [] 
Sent: Tuesday, June 27, 2017 02:21
Subject: Re: AW: Embperl and threaded mpm?

Ruben Safir wrote:
> On 06/26/2017 07:51 PM, Neil Gunton wrote:
>> wrote:
>>> Hi Neil,
>>> Embperl is not working with threaded mpm.
>>> Preloading all your perl code saves a lot of memory due to code sharing.
>>> The main issue is, that you have to make sure, not to open any file or
>>> database connection or similar in the preload code, because that will
>>> be shared too, which does not work
>> Thanks, Gerald. So, just to be clear, what my preload routine in
>> does is the following. Maybe you can confirm that I'm doing
>> it right.
>> if (Apache2::ServerUtil::restart_count() == 1)
>> {
>>     preload_dirs();
>>     $Embperl::initparam{preloadfiles} = \@preload_files;
>> }
>> The preload_dirs() simply traverses my code tree and calls this for each
>> file:
>> push (@preload_files, {inputfile => $filename, path => $path, import =>
>> 0, input_escmode => 0, options => 16, debug => 0x7fffffff});
>> Does that look about right? If as you say it's worthwhile in terms of
>> memory then I might look at re-enabling it again. I think I disabled it
>> originally because it made restarting the server quite slow, but it
>> would be useful to have it as an option should I need it.
> looks right to me although I never did this.  You are just setting up
> the global parameters

Ok, but I'm wondering if there is something else I should be doing to 
execute the actual preload. It seems that all I do here is give Embperl 
an array, but when I enable the preload, it just goes through everything 
suspiciously quickly. I don't think it's actually executing anything at 
preload time, though I could be wrong. I'm thinking there's something 
else I need to do to tell Embperl "ok, now actually load all those files"...


To unsubscribe, e-mail:
For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message