NAME
Catalyst::Plugin::MemoryUsage - Profile memory usage of requests
VERSION
version 0.2.0
SYNOPSIS
In YourApp.pm:
package YourApp;
use Catalyst qw/
MemoryUsage
/;
In a Controller class:
sub foo :Path( '/foo' ) {
# ...
something_big_and_scary();
$c->memory_usage->record( 'finished running iffy code' );
# ...
}
DESCRIPTION
Catalyst::Plugin::MemoryUsage
adds a memory usage profile to your debugging log, which looks like this:
[debug] memory usage of request
.--------------------------------------------------+------+------+------+------+------+------+------+------+------+------.
| | vsz | del- | rss | del- | sha- | del- | code | del- | data | del- |
| | | ta | | ta | red | ta | | ta | | ta |
+--------------------------------------------------+------+------+------+------+------+------+------+------+------+------+
| preparing for the request | 28M | | 22M | | 2.2M | | 1.1M | | 20M | |
| after TestApp::Controller::Root : root/_BEGIN | 28M | | 22M | | 2.2M | | 1.1M | | 20M | |
| after TestApp::Controller::Root : root/_AUTO | 28M | | 22M | | 2.2M | | 1.1M | | 20M | |
| in the middle of index | 28M | | 22M | | 2.2M | | 1.1M | | 20M | |
| after TestApp::Controller::Root : root/index | 28M | | 22M | | 2.2M | | 1.1M | | 20M | |
| after TestApp::Controller::Root : root/_ACTION | 28M | | 22M | | 2.2M | | 1.1M | | 20M | |
| after TestApp::Controller::Root : root/_END | 28M | | 22M | | 2.2M | | 1.1M | | 20M | |
| after TestApp::Controller::Root : root/_DISPATCH | 28M | | 22M | | 2.2M | | 1.1M | | 20M | |
'--------------------------------------------------+------+------+------+------+------+------+------+------+------+------'
METHODS
memory_usage()
Returns the Memory::Usage object available to the context.
To record more measure points for the memory profiling, use the record()
method of that object:
sub foo :Path {
my ( $self, $c) = @_;
...
big_stuff();
$c->memory_usage->record( "done with big_stuff()" );
...
}
reset_memory_usage()
Discards the current Memory::Usage
object, along with its recorded data, and replaces it by a shiny new one.
BUGS AND LIMITATIONS
Memory::Usage
, which is the module Catalyst::Plugin::MemoryUsage
relies on to get its statistics, only work for Linux-based platforms. Consequently, for the time being Catalyst::Plugin::MemoryUsage
only work on Linux and NetBSD. This being said, patches are most welcome. :-)
SEE ALSO
AUTHOR
Yanick Champoux <yanick@babyl.dyndns.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Yanick Champoux.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.