All pastes #756843 Raw Edit

Unnamed

public text v1 · immutable
#756843 ·published 2007-10-31 19:45 UTC
rendered paste body
#!/usr/bin/perl
use strict;

for my $arg (@ARGV) {
    open DATA, "</proc/$arg/smaps" or die("Cannot open smaps file for PID $arg");
    my %lines;
    while (<DATA>) {
        /(\w+):\s*(\d+) kB/ or next;
        $lines{$1} += $2;
    }
    close DATA;

    my $prefix = "$arg:  " if (scalar @ARGV > 1);
    printf "${prefix}Total mapped memory:     %d kB\n", $lines{'Size'};
    printf "${prefix}  of which are resident: %d kB\n", $lines{'Rss'};
    printf "${prefix}                 Shared: %d kB clean (%.1f%%), %d kB dirty (%.1f%%)\n",
          $lines{'Shared_Clean'},
          $lines{'Shared_Clean'} * 100 / ($lines{'Shared_Clean'} + $lines{'Shared_Dirty'}),
          $lines{'Shared_Dirty'},
          $lines{'Shared_Dirty'} * 100 / ($lines{'Shared_Clean'} + $lines{'Shared_Dirty'}), "%)\n";
    printf "${prefix}                Private: %d kB clean (%.1f%%), %d kB dirty (%.1f%%)\n",
          $lines{'Private_Clean'},
          $lines{'Private_Clean'} * 100 / ($lines{'Private_Clean'} + $lines{'Private_Dirty'}),
          $lines{'Private_Dirty'},
          $lines{'Private_Dirty'} * 100 / ($lines{'Private_Clean'} + $lines{'Private_Dirty'}), "%)\n";
}