[EMAIL PROTECTED] writes: > En op 4 oktober 2002 sprak Michael G Schwern: > > The problem is when you put those two next to each other, one > > promising a friendly interface, one a bare-metal interface, > > it confuses the intent of the module. Is it for Joe End User > > or is it for Joe Core Hacker? > > A module to report memory usage of any process (not just yourself), > is do-able: on some Unices you might trample thru /proc file system; > on Windows, the Performance Registry, and so on. But has it been done? > I searched CPAN and could not find such a module.
Not a module, but a function which should work on FreeBSD and Linux: =item currmem([$pid]) =for category System Return ($mem, $realmem) of the current process or process $pid, if $pid is given. =cut sub currmem { my $pid = shift || $$; if (open(MAP, "/proc/$pid/map")) { # FreeBSD my $mem = 0; my $realmem = 0; while(<MAP>) { my(@l) = split /\s+/; my $delta = (hex($l[1])-hex($l[0])); $mem += $delta; if ($l[11] ne 'vnode') { $realmem += $delta; } } close MAP; ($mem, $realmem); } elsif (open(MAP, "/proc/$pid/maps")) { # Linux my $mem = 0; my $realmem = 0; while(<MAP>) { my(@l) = split /\s+/; my($start,$end) = split /-/, $l[0]; my $delta = (hex($end)-hex($start)); $mem += $delta; if (!defined $l[5] || $l[5] eq '') { $realmem += $delta; } } close MAP; ($mem, $realmem); } else { undef; } } __END__ > And, if you were to > write such a module, what should you call it? > > I would find such a module generally useful in that it gives a sysadmin > view of a Perl process (is it a memory pig compared to a Java process, > say). Admittedly, such a module may not be very useful in figuring out > how much memory a perl data structure is using, but I don't see how > sbrk is any better in that regard. For a more fine-grained view, you > need hooks into Perl internals (such as the Perl malloc). > Regards, Slaven -- Slaven Rezic - [EMAIL PROTECTED] BBBike - route planner for cyclists in Berlin WWW version: http://www.bbbike.de Perl/Tk version: http://bbbike.sourceforge.net