Warum verwendet mein Skript so viel mehr Speicher, wenn Sie mit mod_perl ausgeführt werden?
-
05-07-2019 - |
Frage
Ich versuche zu lernen, wie man das Perl -Speicher profiliert.
Ich habe ein sehr einfaches Perl Hello-World-Skript und möchte seine Größe im Speicher wissen.
Ich verwende das GTOP -Dienstprogramm, um den Speicher zu messen (Empfohlen in mod_perl -Buch von Stas Beckman). GTOP liefert die Ergebnisse, die mich verwirren.
Wenn ich das Skript aus der Befehlszeile ausführe, sagt GTOP: 7m.
Wenn ich es unterlegt mod_perl
, GTOP sagt: 54 m.
Warum so viel?!
Warum das Skriptgedächtnis so stark wächst mod_perl
? Oder messen ich das Gedächtnis falsch? Wie profilieren Sie das Perl -Skriptspeicher?
Hier sind das Skript und seine Ausgabe (ich habe Kommas manuell hinzugefügt, um die Zahlen leicht zu lesen)
Ausführen von Befehlszeile
> perl simple.pl size: 7,282688 share: 2,027520 diff: 5,255168
Ausführen unter mod_perl
size: 54,878208 share: 4,661248 diff: 50,216960
Skript einfach.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";
Lösung
Ich denke, wenn Sie Ihr Skript unter mod_perl ausführen, erhalten Sie die Speicherverwendung Ihres Skripts sowie mod_perl sowie Apache.
Siehe auch die Antworten auf diese Fragen: