[OT] finding memory hungry bits of my code
Mark Morgan
makk384 at gmail.com
Thu Apr 9 14:42:02 BST 2009
On Thu, Apr 9, 2009 at 2:08 PM, Edmund von der Burg
<evdb at ecclestoad.co.uk> wrote:
> Perhaps you're right - but our cruising altitude would seem to be very
> high: our biggest processes according to top:
I'll take a guess that you're using Redhat, or some derivative
thereof. The perl included with that includes a lot of things as
shared modules (the big one, if memory serves me correctly is
locale-related). `ldd perl` will show if this is the case. This
amount gets included in the memory info that linux top/ps returns,
which has a tendency to really bloat the figures.
> Do these numbers look reasonable to others? The SHR value seems crazy
> low, but that might be me reading it all wrong.
Yep, that's what we ran into, when trying to do an analysis of memory
usage at a previous company. You can look at /proc/<pid>/mem to get
at the memory map, and see what shared libs are being used, size of
stack/heap/etc (though in spending a few minutes now, I couldn't find
anything that tells what the other values in this file represent
off-hand).
> Almost everything gets preloaded in our startup.pl script so it should
> get shared.
A simple (though very limited) determination of memory usage under
apache would be to start up with x processes, check free memory/swap,
kill it, and start with x+1 processes, and see the difference. Will
give some indication as to the baseline memory usage for each apache
instance. Doing similar with a couple of requests put through each
may show if some modules aren't being preloaded as you thought.
Mark.
More information about the london.pm
mailing list