Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

mod_perl: sharing data across httpd childs ?

0 views
Skip to first unread message

howa

unread,
Oct 15, 2008, 4:36:01 AM10/15/08
to
I am refering to the tutorial (http://modperlbook.org/html/4-2-3-
PerlModule-and-PerlRequire.html),
about setting up Perl module memory sharing across http childs:


==================================

1. in httpd.conf

Added PerlRequire /home/www/cgi-bin/startup.pl

the its contents is:

use strict;

use lib "/home/www/cgi-bin/";

use TestPM ();

1;

==================================

2. The TestPM's content

use strict;

package TestPM;

my $data;

sub new {

my ($class) = @_;

my $self = {};

bless $self, $class;

return $self;
}

sub init {
$data = "1234567890" x 1000000; # 10M of data
}


==================================

3. test.cgi


#!/usr/bin/perl

print "Content-type:text/html\n\n";

use strict;

use TestPM;

TestPM::init();

==================================


By stress testing the test.cgi, I found memory is not shared at all,
using the top command, e.g.

>> top -bc -n 1 | grep httpd

11290 web 25 0 100m 23m 1620 R 47 0.3 0:00.29 /usr/
local/apache_1.3.41/bin/httpd
11247 web 20 0 101m 23m 1628 R 41 0.3 0:05.15 /usr/
local/apache_1.3.41/bin/httpd


As you can see, each httpd is using 23m, and 1620bytes shared, which I
belive the much data is shared....


Any idea?

Thanks.


Joost Diepenmaat

unread,
Oct 15, 2008, 6:48:04 AM10/15/08
to
howa <howa...@gmail.com> writes:

> By stress testing the test.cgi, I found memory is not shared at all,
> using the top command, e.g.

The only data that might be shared is data that is already initialized at
the startup phase. Data that's copied / assigned during at later stages
will not be shared. The manual and the book both mention this.


--
Joost Diepenmaat | blog: http://joost.zeekat.nl/ | work: http://zeekat.nl/

howa

unread,
Oct 15, 2008, 7:23:27 AM10/15/08
to
Hello,

On Oct 15, 6:48 pm, Joost Diepenmaat <jo...@zeekat.nl> wrote:


> howa <howac...@gmail.com> writes:
> The only data that might be shared is data that is already initialized at
> the startup phase. Data that's copied / assigned during at later stages
> will not be shared. The manual and the book both mention this.
>


Thanks for reply.

Even I put the line:

>> TestPM::init();

inside the startup.pl, still the same


xho...@gmail.com

unread,
Oct 15, 2008, 2:07:35 PM10/15/08
to
howa <howa...@gmail.com> wrote:
>
> By stress testing the test.cgi, I found memory is not shared at all,
> using the top command, e.g.
>
> >> top -bc -n 1 | grep httpd
>
> 11290 web 25 0 100m 23m 1620 R 47 0.3 0:00.29 /usr/
> local/apache_1.3.41/bin/httpd
> 11247 web 20 0 101m 23m 1628 R 41 0.3 0:05.15 /usr/
> local/apache_1.3.41/bin/httpd
>
> As you can see, each httpd is using 23m, and 1620bytes shared, which I
> belive the much data is shared....
>
> Any idea?

In addition to what the other post said, it should be pointed out that
the SHR column of the "top" command does not reflect all modes of memory
sharing. For example, Copy-On-Write sharing does not seem to accounted
for as shared. I think it reflects only shared libraries (*.so files) and
not any kind of data sharing. It would be nice if the "man top" did a
better job of explaining this. You need a better way of diagnosing how
much memory is actually being used.

Xho

--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.

0 new messages