An open API service indexing awesome lists of open source software.

https://github.com/yanick/catalyst-plugin-memoryusage

Profile memory usage of Catalyst requests
https://github.com/yanick/catalyst-plugin-memoryusage

Last synced: about 2 months ago
JSON representation

Profile memory usage of Catalyst requests

Awesome Lists containing this project

README

        

# NAME

Catalyst::Plugin::MemoryUsage - Profile memory usage of requests

# VERSION

version 0.4.1

# SYNOPSIS

In YourApp.pm:

```perl
package YourApp;

use Catalyst qw/ MemoryUsage /;
```

In a Controller class:

```perl
sub foo :Path( '/foo' ) {
# ...

something_big_and_scary();

$c->memory_usage->record( 'finished running iffy code' );

# ...
}
```

In yourapp.conf:

```

report 1
action_milestones 1

```

# DESCRIPTION

`Catalyst::Plugin::MemoryUsage` adds a memory usage profile to your debugging
log, which looks like this:

```
[debug] [MemoryUsage] memory usage of request "http://localhost/index" from "127.0.0.1"
.--------------------------------------------------+------+------+------+------+------+------+------+------+------+------.
| | 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 | |
'--------------------------------------------------+------+------+------+------+------+------+------+------+------+------'
```

# CONFIGURATION

## report

If true, the memory usage is reported automatically (at debug level)
at the end of the request.

Defaults to true if we are in debugging mode,
false otherwise.

## action\_milestones

If true, automatically adds milestones for each action, as seen in the
DESCRIPTION.

Defaults to true if we are in debugging mode,
false otherwise.

# METHODS

## `memory_usage()`

Returns the [Memory::Usage](https://metacpan.org/pod/Memory::Usage) object available to the context.

To record more measure points for the memory profiling, use the `record()`
method of that object:

```perl
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

[Memory::Usage](https://metacpan.org/pod/Memory::Usage)

# AUTHOR

Yanick Champoux [![endorse](http://api.coderwall.com/yanick/endorsecount.png)](http://coderwall.com/yanick)

# COPYRIGHT AND LICENSE

This software is copyright (c) 2018, 2012, 2011, 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.