Tels <[EMAIL PROTECTED]> writes:
> -----BEGIN PGP SIGNED MESSAGE-----
>
> Moin,
>
> On 05-Oct-02 [EMAIL PROTECTED] carved into stone:
> > En op 5 oktober 2002 sprak Ann Barcomb:
> >> I hadn't looked in to how I could solve my question, and because
> >> it was given to me as a low priority task, I wasn't sure I was going
> >> to have a chance to either. But you can count me as someone who will
> >> be very happy about the module :)
> >
> > I noticed CPAN Proc::ProcessTable, which is worth a look, if only
> > to peer at the code and note the portability, er, challenges.
> > If the module that reports memory usage itself consumes significant
> > memory, that is a pest when trying to figure out how much memory
>
> > a Perl data structure is using. That is the nice thing about
> > Merijn's original sbrk() -- it is lightweight in the extreme.
>
> Yes, but more or less useless, since:
>
> * your system might not have it, so you either get nothing, or something
> incompatible (depending on how it is implemented, or not) in Devel::MemUses
> * it doesn't reflect the true usage of a perl structure anyway, it just
> reports a change in the heap, which might or might not be related.
With "usage of a perl structure", do you mean the size of an SV, plus
the size of an XPV, plus the malloced area for the string, etc.? I
think the heap usage is more important, because these is the memory
taken from the system and not useable for other processes.
> sbrk *might* be usefull to someone, but I wouldn't use it to find out how
> much memory a perl structure consumes - the numbers may well be totally
> wrong. So, I wouldn't use it (part of that is that I didn't understand the
> man page of sbrk() - which means I would likely interepret the results
> wrong)
>
> (I mean, come on:
>
> Calling sbrk with an increment of 0 can be used
> to find the current location of the program break.
>
> Thats gibberish to the average perl programmer like me. It's probably not
> meaning that the program had a KitKat break and we are trying to locate
> it via it's breadcrumb trail...)
>
> As for ProcessTable, that sounds like a good idea, since looking at top's
> output is cumbersome.
>
> Also, you could (probably) do something like:
>
> #!/usr/bin/perl -w
>
> use Proc::Memory 'report';
>
> report(); # baseline
> require Math::BigInt; Math::BigInt->import();
> report(); # and now?
>
> So you get it in one go (assuming the (nonyetexistant?) Proc::Memory is
> lightwight :)
>
I assume we need both --- a raw, lightweight interface with sbrk() and
some more user-friendly interface (probably using my currmem()
function and/or Proc::ProcessTable), but which is probably more
inaccurate (because of Heisenberg).
Regards,
Slaven
--
Slaven Rezic - [EMAIL PROTECTED]
tkrevdiff - graphical display of diffs between revisions (RCS or CVS)
http://ptktools.sourceforge.net/#tkrevdiff