There's some good general advice from our friend Brian D Foy here:

https://stackoverflow.com/questions/9733146/tips-for-keeping-perl-memory-usage-low

To bring this more closely focussed on Mojolicious, my daemon is loading a 
ew dozen other Mojolicious::Lite applications using the Mount plugin. And 
all of those are using a common plugin. I'm wondering how much duplication 
there is within the sandboxing of each mounted application, and what might 
be possible to optimize the sharing of data/compiled code between the 
instances.

On Thu, 20 Sep 2018, Charlie Brady wrote:

> 
> Hi Stefan, thanks for trying to help.
> 
> I know the perl executable will make some contribution to the memory 
> footprint, but not much.
> 
> I can measure that separately by running a minimum perl program and 
> looking at its resource usage. If I run 'perl -e "<>"', I see this in 
> /proc/$pid/status:
> 
> ...
> VmPeak:     5476 kB
> VmSize:     5476 kB
> VmLck:         0 kB
> VmPin:         0 kB
> VmHWM:      3184 kB
> VmRSS:      3184 kB
> VmData:      468 kB
> VmStk:       132 kB
> VmExe:         4 kB
> VmLib:      4232 kB
> VmPTE:        24 kB
> VmPMD:         0 kB
> VmSwap:        0 kB
> Threads:        1
> ...
> 
> The same data from my M::L daemon is:
> 
> ...
> VmPeak:   135548 kB
> VmSize:   133540 kB
> VmLck:         0 kB
> VmPin:         0 kB
> VmHWM:     67016 kB
> VmRSS:     65988 kB
> VmData:    86940 kB
> VmStk:       176 kB
> VmExe:         4 kB
> VmLib:     31664 kB
> VmPTE:       132 kB
> VmPMD:         0 kB
> VmSwap:        0 kB
> Threads:        6
> ...
> 
> CPAN has a few modules which might help gather some stats 
> (Memory::Process, Memory::Stats, Memory::Usage). '-Dm' flag to perl might 
> help too, if perl is compiled with DEBUG enabled.
> 
> I notice that I can disable Mojolicious response cacheing; it'll be 
> interesting to see what difference that makes.
> 
> On Wed, 19 Sep 2018, Stefan Adams wrote:
> 
> > I shouldn't involve myself in this topic because I haven't the knowledge,
> > but it sounds fascinating. Wouldn't the majority of the 50MB memory
> > footprint be from the Perl interpreter itself? Wouldn't the question be,
> > how to reduce the size of the Perl interpreter? Different compile options?
> > e.g. I remember once compiling a "minimal" perl that was 2MB. I imagine
> > that would probably be insufficient to run Mojolicious, though I really
> > haven't a clue, but it suggests to me that it's possible to reduce the size
> > of the perl interpreter and, therefore it seems, the size of the
> > Mojolicious daemon?
> > 
> > On Wed, Sep 19, 2018, 8:19 PM Charlie Brady <
> > charlieb-m...@budge.apana.org.au> wrote:
> > 
> > >
> > > Some Mojolicious::Lite code I've written has been adapted by another group
> > > in my company to run on their embedded controller (limited CPU and limited
> > > memory). They are now asking for my advice on how to reduce the memory
> > > footprint of their daemon. It's consuming about 50MB at the moment.
> > >
> > > Does anyone have some advice on where to start looking at where memory is
> > > being used and how to minimise it?
> > >
> > > Thanks
> > >
> > 
> > 
> 

Reply via email to