You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by Doug MacEachern <do...@opengroup.org> on 1998/06/12 21:00:48 UTC
Re: cvs commit: modperl/lib/Apache Resource.pm
Excellent, thanks Vivek!!! One problem though, you forgot to give
yourself some credit in the AUTHORS section :-)
-Doug
khera@hyperreal.org wrote:
> khera 98/06/12 11:51:23
>
> Modified: lib/Apache Resource.pm
> Log:
> Cleaned up documentation to match reality: CPU limit is in seconds,
> not milliseconds.
>
> Set the status report to show megabyte values as megabytes in addition
> to bytes.
>
> Defined MEMLOCK and CORE limits as being megabyte values.
>
> Revision Changes Path
> 1.7 +39 -27 modperl/lib/Apache/Resource.pm
>
> Index: Resource.pm
> ===================================================================
> RCS file: /home/cvs/modperl/lib/Apache/Resource.pm,v
> retrieving revision 1.6
> retrieving revision 1.7
> diff -u -r1.6 -r1.7
> --- Resource.pm 1998/03/19 23:08:46 1.6
> +++ Resource.pm 1998/06/12 18:51:22 1.7
> @@ -1,3 +1,4 @@
> +#! /usr/local/bin/perl
> package Apache::Resource;
>
> use strict;
> @@ -5,24 +6,26 @@
> use BSD::Resource qw(setrlimit getrlimit get_rlimits);
>
> $Debug ||= 0;
> -$Apache::Resource::VERSION = (qw$Revision: 1.6 $)[1];
> +$Apache::Resource::VERSION = (qw$Revision: 1.7 $)[1];
>
> sub MB ($) {
> my $num = shift;
> - if($num < (1024 * 1024)) {
> - return $num*1024*1024;
> - }
> - $num;
> + return ($num < (1024 * 1024)) ? $num*1024*1024 : $num;
> +}
> +
> +sub BM ($) {
> + my $num = shift;
> + return ($num > (1024 * 1024)) ? '(' . ($num>>20) . 'Mb)' : '';
> }
>
> -sub DEFAULT_RLIMIT_DATA () { 64 } #data (memory) size
> -sub DEFAULT_RLIMIT_CPU () { 60*6 } #cpu time in milliseconds
> -sub DEFAULT_RLIMIT_CORE () { 0 } #core file size
> -sub DEFAULT_RLIMIT_RSS () { 16 } #resident set size
> -sub DEFAULT_RLIMIT_FSIZE () { 10 } #file size
> -sub DEFAULT_RLIMIT_STACK () { 20 } #stack size
> +sub DEFAULT_RLIMIT_DATA () { 64 } #data (memory) size in MB
> +sub DEFAULT_RLIMIT_CPU () { 60*6 } #cpu time in seconds
> +sub DEFAULT_RLIMIT_CORE () { 0 } #core file size (MB)
> +sub DEFAULT_RLIMIT_RSS () { 16 } #resident set size (MB)
> +sub DEFAULT_RLIMIT_FSIZE () { 10 } #file size (MB)
> +sub DEFAULT_RLIMIT_STACK () { 20 } #stack size (MB)
>
> -my %is_mb = map {$_,1} qw{DATA RSS STACK FSIZE};
> +my %is_mb = map {$_,1} qw{DATA RSS STACK FSIZE CORE MEMLOCK};
>
> sub debug { print STDERR @_ if $Debug }
>
> @@ -47,7 +50,7 @@
>
> $hard ||= $soft;
>
> - debug "Apache::Resource: attempting to set `$name'=$soft:$hard ...";
> + debug "Apache::Resource: PID $$ attempting to set `$name'=$soft:$hard ...";
>
> ($soft, $hard) = (MB $soft, MB $hard) if $is_mb{$name};
>
> @@ -82,18 +85,23 @@
> sub status_rlimit {
> my $lim = get_rlimits();
> my @retval = ("<table border=1><tr>",
> - (map "<td><b>$_</b></td>", qw(Resource Soft Hard)),
> + (map "<th>$_</th>", qw(Resource Soft Hard)),
> "</tr>");
>
> for my $res (keys %$lim) {
> my $val = eval "&BSD::Resource::${res}()";
> + my ($soft,$hard) = getrlimit $val;
> + (my $limit = $res) =~ s/^RLIMIT_//;
> + ($soft, $hard) = ("$soft " . BM($soft),"$hard ". BM($hard))
> + if $is_mb{$limit};
> push @retval,
> "<tr>",
> - (map { "<td>$_</td>" } $res, getrlimit $val),
> + (map { "<td>$_</td>" } $res, $soft, $hard),
> "</tr>";
> }
>
> - push @retval, "</table>";
> + push @retval, "</table><P>";
> + push @retval, "<SMALL>Apache::Resource $Apache::Resource::VERSION</SMALL>";
>
> return \@retval;
> }
> @@ -121,12 +129,13 @@
>
> =head1 SYNOPSIS
>
> - #set memory limit in megabytes
> + PerlModule Apache::Resource
> + #set child memory limit in megabytes
> #default is 64 Meg
> - PerlSetEnv PERL_DATA_LIMIT 35
> + PerlSetEnv PERL_RLIMIT_DATA 32:48
>
> - #set cpu limit in milliseconds
> - #default is 60 milliseconds
> + #set child cpu limit in seconds
> + #default is 360 seconds
> PerlSetEnv PERL_RLIMIT_CPU 120
>
> PerlChildInitHandler Apache::Resource
> @@ -138,13 +147,16 @@
> system resources such as memory and cpu usage.
>
> Any B<RLIMIT> operation available to limit on your system can be set
> -by defining that operation as an envrionment variable with a B<PERL_>
> -prefix. If no value is set a reasonable default is used if defined.
> -See your system C<setrlimit> manpage for available resources which
> -can be limited.
> -
> -By default, C<PERL_RLIMIT_DATA> is set to 64 megabytes if it does
> -not exist in the current environment.
> +by defining that operation as an environment variable with a C<PERL_>
> +prefix. See your system C<setrlimit> manpage for available resources
> +which can be limited.
> +
> +The following limit values are in megabytes: C<DATA>, C<RSS>, C<STACK>,
> +C<FSIZE>, C<CORE>, C<MEMLOCK>; all others are treated as their natural unit.
> +
> +If the value of the variable is of the form C<S:H>, C<S> is treated as
> +the soft limit, and C<H> is the hard limit. If it is just a single
> +number, it is used for both soft and hard limits.
>
> =head1 DEFAULTS
>
>
>
>
>