#!/usr/bin/perl use strict; for my $arg (@ARGV) { open 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"; }