Relevanz von "nofork" ??? - Perl Performance

Begonnen von housekeeper, 19 Mai 2013, 09:26:48

Vorheriges Thema - Nächstes Thema

housekeeper

Es wird zwar häufig darauf hingewiesen, mal mit mal ohne erhobenen Zeigefinger, aber die einzige "Erklärung" dazu findet sich in "commandref.html":

nofork
If set and the logfile is not "-", do not try to background. Needed on some Fritzbox installations.


Das ist nicht wirklich ergiebig.

Bei mir läuft FHEM auf einer Fritz!Box 7390, ohne "nofork" zufriedenstellend. Jetzt habe ich, mehr aus Neugier, mal "nofork 1" gesetzt, aber keine wesentlichenVeränderungen bemerkt, außer, daß, wie nicht anders zu erwarten, nur noch eine Instanz von FHEM läuft. Ohne "nofork" werden schon mal bis zu 11 gleichzeitige Instanzen sichtbar.

Ich frage mich also, gibt es Vor- oder Nachteile die für oder gegen die Verwendung sprechen, wenn ja welche wären das ?

Da es zudem (mindestens auf der Fritz!Box) öfter an großzügigen Ressourcen mangelt, wäre vielleicht für den Einen oder Anderen Perl Spezialisten die Lektüre von "Perl Performance How to make Perl faster" hilfreich.


rudolfkoenig

- nofork ist dazu da, dass fhem sich nicht automatisch in Hintergrund schickt (perl fhem.pl fhem.cfg &). Das passiert mit "logfile -" zwar auch nicht, aber dann hat man die logs im Terminal (so debugge ich fhem).
norfork braucht mann, wenn das system, was fhem startet, den Prozess ueberwacht, und falls dieser nicht mehr existiert, automatisch neu startet.

- ich bezweifle, dass beim gesetzten (oder nicht gesetzten) nofork mehrere "vollwertige" fhem Instanzen laufen: telnet bzw. FHEMWEB verhindert das Starten eines zweiten Prozesses.

Ich vermute die von Dir beobachteten Prozesse sind Modulen geschuldet, die BlockingFn verwenden. Alternativ kann man sowas auch beim gesetzten plotfork sehen.

housekeeper

Zitat von: rudolfkoenig: - nofork ist dazu da, dass fhem sich nicht automatisch in Hintergrund schickt (perl fhem.pl fhem.cfg &).
OK, sollte es dann nicht besser "nobackground" heißen ? Mit fork wird meines Wissens die Erzeugung von identischen Kindprozessen bezeichnet.

Zitat von: rudolfkoenig: - ich bezweifle, dass beim gesetzten (oder nicht gesetzten) nofork mehrere "vollwertige" fhem Instanzen laufen: telnet bzw. FHEMWEB verhindert das Starten eines zweiten Prozesses.
Deine Zweifel trügen Dich nicht :-) Nach genauerer Nachsuche läßt sich kein Unterschied zwischen "nofork 0" und "nofork 1" ausmachen. Siehe angehängte Dateien nofork0.txt und nofork1.txt, die wurden mit


a=$(date +%s); ./startfhem; while [ $(( $(date +%s) - $a )) -lt 60 ]; do echo $(( $(date +%s) - $a )); ps | grep -v grep | grep perl; echo; done > nofork1.txt
erzeugt. Bitte den von der Forum-Software eingefügten Zeilenumbruch beachten! Offensichtlich habe ich mich vom Begriff "fork" in die Irre leiten lassen.

Zitat von: rudolfkoenig: Ich vermute die von Dir beobachteten Prozesse sind Modulen geschuldet, die BlockingFn verwenden. Alternativ kann man sowas auch beim gesetzten plotfork sehen.
Auch hiermit liegst Du richtig. Die Ursache ist 73_PRESENCE.pm, nachdem ich alle 11 PRESENCE - "Geräte" auf "disabled 1" gesetzt habe, taucht für die gesamten 60 Sekunden nach Start nur ein Prozess auf. Siehe angehängte Datei nofork1new,txt

Bleiben zwei Fragen:

- Was sagt uns der Satz aus der commandref.html bezüglich "nofork" ?

Needed on some Fritzbox installations.


- Wozu muß ein einfaches anpingen von Netzwerkteilnehmern soviel Ressourcen verbraten ? Ich werde wohl das Modul wieder entfernen und mit einfachem ping festellen wer online ist.

Noch frohe Restpfingsten wünscht der

housekeeper