best way to discover this process's current memory usage, cross-platform?
Neal Norwitz
nnorwitz at gmail.com
Wed Nov 16 01:10:42 EST 2005
Alex Martelli wrote:
> matt <matthewharrison at gmail.com> wrote:
>
> > Perhaps you could extend Valgrind (http://www.valgrind.org) so it works
> > with python C extensions? (x86 only)
>
> Alas, if it's x86 only I won't even look into the task (which does sound
> quite daunting as the way to solve the apparently-elementary question
> "how much virtual memory is this process using right now?"...!), since I
> definitely cannot drop support for all PPC-based Macs (nor would I WANT
> to, since they're my favourite platform anyway).
Valgrind actually runs on PPC (32 only?) and amd64, but I don't think
that's the way to go for this problem.
Here's a really screwy thought that I think should be portable to all
Unixes which have dynamic linking. LD_PRELOAD.
You can create your own version of malloc (and friends) and free. You
intercept each call to malloc and free (by making use of LD_PRELOAD),
keep track of the info (pointers and size) and pass the call along to
the real malloc/free. You then have all information you should need.
It increases the scope of the problem, but I think it makes it soluble
and somewhat cross-platform. Using LD_PRELOAD, requires the app be
dynamically linked which shouldn't be too big of a deal. If you are
using C++, you can hook into new/delete directly.
n
More information about the Python-list
mailing list