NAME
Linux::Smaps::Tiny - A minimal and fast alternative to Linux::Smaps
SYNOPSIS
use Linux::Smaps::Tiny qw(get_smaps_summary);
my $summary = get_smaps_summary();
my $size = $summary->{Size};
my $shared_clean = $summary->{Shared_Clean};
my $shared_dirty = $summary->{Shared_Dirty};
print "Size / Clean / Dirty = $size / $shared_clean / $shared_dirty\n";
DESCRIPTION
This module is a tiny interface to /proc/PID/smaps files. It was written
because when we rolled out Linux::Smaps in some critical code at a Big
Internet Company we experienced slowdowns that were solved by writing a
more minimal version.
This module will try to use XS code to parse the smaps file, and if that
doesn't work it'll fall back on a pure-Perl version. You can also use
only the pure-perl version by using Linux::Smaps::Tiny::PP directly, it
has the same API and exports.
We'll warn on compile-time if we can't load the XS version.
If speed isn't a concern you should probably use Linux::Smaps instead.
Also note that Linux::Smaps itself has been optimized
<http://mail-archives.apache.org/mod_mbox/perl-modperl/201103.mbox/brows
er> since this module was initially written.
SPEED
The distribution comes with a contrib/benchmark.pl script. As of writing
this is the speed of Linux::Smaps 0.13 v.s. "Linux::Smaps::Tiny 0.11",
both the XS and PP versions:
Rate Linux::Smaps Linux::Smaps::Tiny::PP Linux::Smaps::Tiny
Linux::Smaps 672/s -- -37% -74%
Linux::Smaps::Tiny::PP 1067/s 59% -- -59%
Linux::Smaps::Tiny 2618/s 290% 145% --
FUNCTIONS
get_smaps_summary
Takes an optional process id (defaults to "self") returns a summary of
the smaps data for the given process. Dies if the process does not
exist.
Returns a hashref like this:
{
'MMUPageSize' => '184',
'Private_Clean' => '976',
'Swap' => '0',
'KernelPageSize' => '184',
'Pss' => '1755',
'Private_Dirty' => '772',
'Referenced' => '2492',
'Size' => '5456',
'Shared_Clean' => '744',
'Shared_Dirty' => '0',
'Rss' => '2492'
};
Values are in kB.
LICENSE AND COPYRIGHT
Copyright 2011-2016 Yves Orton <yves@cpan.org> and �var Arnfj�r�
Bjarmason <avar@cpan.org>
This program is free software, you can redistribute it and/or modify it
under the same terms as Perl itself.