Почему мой скрипт использует намного больше памяти при запуске с mod_perl? - PullRequest
4 голосов
/ 22 октября 2009

Я пытаюсь научиться профилировать память Perl.

У меня очень простой сценарий Perl hello-world, и я хочу узнать его размер в памяти.

Я использую утилиту GTop для измерения памяти ( рекомендуется в книге mod_perl Стаса Бекмана). GTop предоставляет результаты, которые меня смущают.

Когда я запускаю скрипт из командной строки, GTop говорит: 7M.

Когда я запускаю его под mod_perl, GTop говорит: 54M.

Почему так много?!

Почему память скриптов так сильно увеличивается под mod_perl? Или, может быть, я неправильно измеряю память? Как вы профилируете память скрипта Perl?

Вот сценарий и его вывод (я добавил запятые вручную, чтобы легко прочитать цифры)

  1. Запуск из командной строки

    > perl simple.pl 
    
    size: 7,282688
    share: 2,027520
    diff: 5,255168
    
  2. Запустить под mod_perl

    size: 54,878208
    share: 4,661248
    diff: 50,216960
    

Скрипт simple.pl

#!/usr/bin/perl

use strict;
use warnings;
use CGI ();

my $cgi = CGI->new;

print $cgi->header('text/plain');

use GTop;

print "Hello, world!\n";
my $m = GTop->new->proc_mem($$);
print "size: ".$m->size."\n";
print "share: ".$m->share."\n";
my $diff = $m->size - $m->share;
print "diff: $diff\n";

1 Ответ

7 голосов
/ 22 октября 2009

Полагаю, что когда вы запускаете свой скрипт под mod_perl, вы получаете использование памяти вашим скриптом, плюс mod_perl, плюс apache.

Смотрите также ответы на эти вопросы:

...