Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8572[/thread]

dauerprogramm - speicherauslastung nimmt zu (Seite 2)



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
sid burn
 2006-12-11 18:36
#72473 #72473
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=opi,11.Dec..2006, 17:26][quote=renee,11.12.2006, 16:59]Wieso nicht? Wenn eine Variable aus dem Scope fällt, wird der Speicherplatz "frei" und Perl nimmt diesen Speicherplatz nochmal...[/quote]
Hmmm... ich denke mal, dass das nicht die Frage des Threaderstellers war.

Es soll der Speicher ans Betriebssystem zurück gegeben werden, was nicht
der Fall ist. Ich habe mal zum Test eine 100 MB Datei eingelesen, in einem
eigenen Scope, sogar ein undef() durchgeführt und die Programm-
groesse wird danach nicht geringer.[/quote]
Wenn du jetzt aber eine neue 100MB Datei einliest dann sollte nicht neue 100MB Speicher genutzt werden, sondern es wird der "alte" Speicher genutzt. Die Speicherauslastung deines Prozesses steugt also nicht mehr an, und er bleibt konstant.

Und das wollte der Threadersteller doch Wissen. Wie der Speichre konstant bleibt, und sich für die Dauer der Laufzeit nicht immer weiter erhöht, bis irgendwann nichts mehr frei ist.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
bloonix
 2006-12-11 18:43
#72474 #72474
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=sid burn,11.12.2006, 17:36]Und das wollte der Threadersteller doch Wissen. Wie der Speichre konstant bleibt, und sich für die Dauer der Laufzeit nicht immer weiter erhöht, bis irgendwann nichts mehr frei ist.[/quote]
noe, sehe ich nicht so...

Quote
dass es wieder zur alten speicherauslastung zurückkehrt.


Oder ich verstehe diesen Satz so richtig falsch. Das kann natürlich auch
sein! ;)
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-12-11 18:47
#72475 #72475
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn der Speicherverbrauch erst gar nicht so sehr ansteigt, braucht man auch zu nichts zurückkehren...

Ist so als ob ich sagen würde, wenn ich in Rom bin, möchte ich aber wieder nach Hessen zurück. Wenn ich aber nie nach Rom gehe, brauche ich mir keine Gedanken über den Weg von Rom nach Hessen machen :p

Vielleicht kann man aber beide Lösungsansätze verbinden. Das mit forken bekämpft Symptome, geringe Scopes bekämpfen die Ursache. Vielleicht reicht es nicht aus, die Ursachen zu bekämpfen, sondern man muss auch die Symptome bekämpfen. ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2006-12-11 18:58
#72476 #72476
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,11.12.2006, 17:47]Ist so als ob ich sagen würde, wenn ich in Rom bin, möchte ich aber wieder nach Hessen zurück. Wenn ich aber nie nach Rom gehe, brauche ich mir keine Gedanken über den Weg von Rom nach Hessen machen :p[/quote]
Joah, so sollte es sein. Aus diesem Grund gibt es zum Beispiel beim
Apache MaxRequestsPerChild... hauptsächlich, um Memoryleaking zu
verhindern.

Man erhofft sich doch immer wieder, dass du oder einer deiner Kinder nicht
permanent nach Rom und wieder zurück nach Hessen fahren.

Dein armer Geldbeutel. :)
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
ptk
 2006-12-11 22:41
#72477 #72477
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Speicher, der über mmap() angefordert wurde, kann komplett an das Betriebssystem zurückgegeben werden. Eine andere Frage ist es, wie man mmap() mit Perl verwenden kann. Ich bin mir nicht sicher, ob die verschiedenen CPAN:MMap-Module, die es auf CPAN gibt, dabei tatsächlich helfen...
docsnyder
 2006-12-12 10:32
#72478 #72478
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Soweit ich weiss, hängt es von dem jeweiligen Betriebssystem ab, wie Prozesse mit frei gewordenem Speicher umgehen. Der wird nämlich in der Regel "nicht" ans Betriebssystem zurückgegeben.

@renee

Deine "100MB - 40MB + 100MB = 160MB"-Rechnung geht so nicht unbedingt auf, denn allokierter Speicher muss "am Stück" vorhanden sein, und wenn der Speicher nach den freien 40MB bereits andersweitig vergeben ist, kann er nicht mehr für einen 100MB-Block verwendet werden (Stichwort "Fragmentierung").

-----------

Um Speicher wirklich minimal zu halten, würde Opi's Ansatz fahren und jeweils Sub-Prozesse abforken. Das ist wohl die sicherste und effizienteste Methode.

Gruß, Doc
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-12-11 16:45.