Evo und Fortschrittsanzeige + Checkpoints
Evo und Fortschrittsanzeige + Checkpoints
Ich habe das inzwischen mal etwas laenger beobachtet und gerade ist auch was interessantes und unerwartetes in dem Zusammenhang passiert :
Evo zeigt anfangs (nach dem Starten von BOINC) immer sauber den Fortschritt an.
Nachdem etliche Results fertig gerechnet wurden, bleibt ploetzlich die Prozentanzeige stehen, die aktuell berechneten da, wo sie gerade stehen, neue bleiben bei 0%.
Gerade hat BOINC wieder mal aus unerfindlichen Gruenden einen Heartbeatfehler getriggert (seltsamerweise verursachen die Mini-WUs von Chess sowas gelegentlich) und seitdem laeuft die Fortschrittsanzeige, die vorher auf dem Rechner nicht funktionierte, wieder. Allerdings hat das Result bei 0% angefangen, da die Checkpoints ebenfalls nicht funktionieren, wenn die Fortschrittsanzeige klemmt. Der Ausstieg ueber den Heartbeat-Fehler bereinigt also irgend etwas, was das normale Programmende "vergisst".
Das Klemmen der Fortschrittsanzeige ist (nach Tagen gerechnet) ziemlich direkt von der Rechnergeschwindigkeit abhaengig, daher gehe ich davon aus, dass es genau nach einer bestimmten Anzahl von Results eintritt. Es passiert auf allen meinen Rechnern (WinXP und Win2k) und es tritt ausschliesslich bei Evo auf, bei keinem anderen Projekt.
Klar ist dadurch wohl, dass Evo irgend eine limitierte Ressource nicht wieder freigibt, da das Problem aber erst nach etlichen Tagen auftritt, ist es etwas schwierig, die genaue Ursache 'rauszubekommen. Der Hauptverdacht liegt m.E. auf Filehandles bzw. FILE *.
Vielleicht wuerde es helfen, vor dem Programm-Ende mal ein fcloseall() einzubauen. Interessant waere auch, ob das main() vom Evo-Hauptprogramm im Erfolgsfall mit return() oder mit exit() verlassen wird. Falls es derzeit ein return() ist, sollte das auf exit() umgestellt werden.
p.s.: return() und exit() - natuerlich jeweils aus dem main() - sind bei Programmen, die direkt von Kommandozeile aufgerufen werden, ziemlich gleichwertig. return() ist bei den meisten Compilern etwas "schlanker" und bereinigt einiges nicht, was aber meist wurscht ist, wenn die Task komplett beendet wird. exit() hat zwar etwas mehr Overhead, hinterlaesst aber eine besser aufgeraeumte Task. Bestimmte Fehler im Zusammenhang mit FILEs und dynamischem Speicher werden gelegentlich von return() uebergangen, waehrend exit() sie "bemerkt" und das Programm ganz am Ende abstuerzen laesst. Leider wird in solchen Faellen gelegentlich auf exit() verzichtet, weil das einfacher ist, als den Fehler zu suchen.
Evo zeigt anfangs (nach dem Starten von BOINC) immer sauber den Fortschritt an.
Nachdem etliche Results fertig gerechnet wurden, bleibt ploetzlich die Prozentanzeige stehen, die aktuell berechneten da, wo sie gerade stehen, neue bleiben bei 0%.
Gerade hat BOINC wieder mal aus unerfindlichen Gruenden einen Heartbeatfehler getriggert (seltsamerweise verursachen die Mini-WUs von Chess sowas gelegentlich) und seitdem laeuft die Fortschrittsanzeige, die vorher auf dem Rechner nicht funktionierte, wieder. Allerdings hat das Result bei 0% angefangen, da die Checkpoints ebenfalls nicht funktionieren, wenn die Fortschrittsanzeige klemmt. Der Ausstieg ueber den Heartbeat-Fehler bereinigt also irgend etwas, was das normale Programmende "vergisst".
Das Klemmen der Fortschrittsanzeige ist (nach Tagen gerechnet) ziemlich direkt von der Rechnergeschwindigkeit abhaengig, daher gehe ich davon aus, dass es genau nach einer bestimmten Anzahl von Results eintritt. Es passiert auf allen meinen Rechnern (WinXP und Win2k) und es tritt ausschliesslich bei Evo auf, bei keinem anderen Projekt.
Klar ist dadurch wohl, dass Evo irgend eine limitierte Ressource nicht wieder freigibt, da das Problem aber erst nach etlichen Tagen auftritt, ist es etwas schwierig, die genaue Ursache 'rauszubekommen. Der Hauptverdacht liegt m.E. auf Filehandles bzw. FILE *.
Vielleicht wuerde es helfen, vor dem Programm-Ende mal ein fcloseall() einzubauen. Interessant waere auch, ob das main() vom Evo-Hauptprogramm im Erfolgsfall mit return() oder mit exit() verlassen wird. Falls es derzeit ein return() ist, sollte das auf exit() umgestellt werden.
p.s.: return() und exit() - natuerlich jeweils aus dem main() - sind bei Programmen, die direkt von Kommandozeile aufgerufen werden, ziemlich gleichwertig. return() ist bei den meisten Compilern etwas "schlanker" und bereinigt einiges nicht, was aber meist wurscht ist, wenn die Task komplett beendet wird. exit() hat zwar etwas mehr Overhead, hinterlaesst aber eine besser aufgeraeumte Task. Bestimmte Fehler im Zusammenhang mit FILEs und dynamischem Speicher werden gelegentlich von return() uebergangen, waehrend exit() sie "bemerkt" und das Programm ganz am Ende abstuerzen laesst. Leider wird in solchen Faellen gelegentlich auf exit() verzichtet, weil das einfacher ist, als den Fehler zu suchen.
vi BOINC/checkin_notes
:1,$s/bug/feature/g
:wq!
Erzaehlen sich Biologen eigentlich Klein-RNA-Witze?
:1,$s/bug/feature/g
:wq!
Erzaehlen sich Biologen eigentlich Klein-RNA-Witze?
- Michael H.W. Weber
- Vereinsvorstand
- Beiträge: 22431
- Registriert: 07.01.2002 01:00
- Wohnort: Marpurk
- Kontaktdaten:
Re: Evo und Fortschrittsanzeige + Checkpoints
Danke, Volker - ich leite das mal an Laurence weiter. Er hat mir gerade erst mitgeteilt, dass EAH aktuell ganz ordentlich weiterentwickelt wird.
Michael.
Michael.
Fördern, kooperieren und konstruieren statt fordern, konkurrieren und konsumieren.
http://signature.statseb.fr I: Kaputte Seite A
http://signature.statseb.fr II: Kaputte Seite B
http://signature.statseb.fr I: Kaputte Seite A
http://signature.statseb.fr II: Kaputte Seite B
Re: Evo und Fortschrittsanzeige + Checkpoints
Ich glaub irgendwie nicht, dass das an der evo App liegt. Am Ende der WU wird ja die App (also der Wrapper) und das evo Binary beendet. Damit dürfte dann ja aller Speicher und alle Filedescriptoren ja wieder freigegeben sein.
yoyo
yoyo
Re: Evo und Fortschrittsanzeige + Checkpoints
Evo ist zwar ein separater Prozess, unter Windows werden aber - sofern das Sample verwendet wird - die Handles des Wrappers weiterverwendet (CreateProcess mit bInheritHandles=TRUE). Damit sind zumindest Wrapper und Evo-Anwendung gekoppelt.
Das kann z.B. zu einem Problem fuehren, wenn Evo ein Handle schliesst und der Wrapper dann nochmal.
Wie BOINC (bzw. meine BOINC-Version) die Anwendung aufruft, muesste ich mal nachsehen, ich habe momentan eine neuere Quelle hier.
Das kann z.B. zu einem Problem fuehren, wenn Evo ein Handle schliesst und der Wrapper dann nochmal.
Wie BOINC (bzw. meine BOINC-Version) die Anwendung aufruft, muesste ich mal nachsehen, ich habe momentan eine neuere Quelle hier.
vi BOINC/checkin_notes
:1,$s/bug/feature/g
:wq!
Erzaehlen sich Biologen eigentlich Klein-RNA-Witze?
:1,$s/bug/feature/g
:wq!
Erzaehlen sich Biologen eigentlich Klein-RNA-Witze?
Re: Evo und Fortschrittsanzeige + Checkpoints
Aber auch der Wrapper wird am Endo der evo wu beendet.
yoyo
yoyo
Re: Evo und Fortschrittsanzeige + Checkpoints
Waere es nicht Windows, dann wuerde ich Dir zustimmen.
Wenn man z.B. die Windows-SDK-Funktionen anstelle der C-Funktionen zur Speicherverwaltung verwendet, wird absolut nicht automatisch beim Programmende bereinigt. Ich nehme an, dass das auch fuer das Dateihandling gilt und es gibt auch noch weitere Scherze im Windows, auf die man selbst achten muss, um das Betriebssystem nicht instabil zu machen (z.B. Hooks). Bei C++ sieht das meines Wissens wieder etwas anders aus, muesste das compilerseitig etwas besser abgesichert sein - aber auch da ist es eben nicht Windows, das die Umgebung sauber haelt.
Evo scheint ja auch gar nicht zu pruefen, ob das Erstellen der Dateien funktioniert hat, sonst muesste ja zumindest mal eine Warnung kommen, evtl. mit dem Fehlercode aus der Open-Funktion. Ich wuerde daher fast wetten, dass die Ausgaberoutinen lustig in die ungueltigen Filehandles schreibt und sie am Ende auch wieder zumacht (bzw. es versucht).
Theoretisch kann es natuerlich auch sein, dass das Programm den falschen Slot erwischt und zwei Evos in die gleiche Checkpointdatei schreiben. Das wuerde grundsaetzlich nicht auffallen, solange das Programm ununterbrochen laeuft. Edit : Korrektur, das kann doch nicht sein, sonst muesste ja zumindest eine existieren, es existiert aber in keinem Slot eine passende Datei.
p.s.: Vom Wrapper bekomme ich uebrigens die korrekte Fehlermeldung im richtigen Slot :
Dass es am Wrapper liegt, kann ich mir aber ohnehin kaum vorstellen, der laeuft ja bei allen anderen Anwendungen problemlos.
Wenn man z.B. die Windows-SDK-Funktionen anstelle der C-Funktionen zur Speicherverwaltung verwendet, wird absolut nicht automatisch beim Programmende bereinigt. Ich nehme an, dass das auch fuer das Dateihandling gilt und es gibt auch noch weitere Scherze im Windows, auf die man selbst achten muss, um das Betriebssystem nicht instabil zu machen (z.B. Hooks). Bei C++ sieht das meines Wissens wieder etwas anders aus, muesste das compilerseitig etwas besser abgesichert sein - aber auch da ist es eben nicht Windows, das die Umgebung sauber haelt.
Evo scheint ja auch gar nicht zu pruefen, ob das Erstellen der Dateien funktioniert hat, sonst muesste ja zumindest mal eine Warnung kommen, evtl. mit dem Fehlercode aus der Open-Funktion. Ich wuerde daher fast wetten, dass die Ausgaberoutinen lustig in die ungueltigen Filehandles schreibt und sie am Ende auch wieder zumacht (bzw. es versucht).
p.s.: Vom Wrapper bekomme ich uebrigens die korrekte Fehlermeldung im richtigen Slot :
Code: Alles auswählen
wrapper: starting
running S005r6gSimulatorWin32.exe
can't open eProgress.txt file
can't open eProgress.txt file
...
vi BOINC/checkin_notes
:1,$s/bug/feature/g
:wq!
Erzaehlen sich Biologen eigentlich Klein-RNA-Witze?
:1,$s/bug/feature/g
:wq!
Erzaehlen sich Biologen eigentlich Klein-RNA-Witze?
- Michael H.W. Weber
- Vereinsvorstand
- Beiträge: 22431
- Registriert: 07.01.2002 01:00
- Wohnort: Marpurk
- Kontaktdaten:
Re: Evo und Fortschrittsanzeige + Checkpoints
...Laurence wird sich das hier anschauen.
Michael.
Michael.
Fördern, kooperieren und konstruieren statt fordern, konkurrieren und konsumieren.
http://signature.statseb.fr I: Kaputte Seite A
http://signature.statseb.fr II: Kaputte Seite B
http://signature.statseb.fr I: Kaputte Seite A
http://signature.statseb.fr II: Kaputte Seite B
Re: Evo und Fortschrittsanzeige + Checkpoints
Es gibt uebrigens noch einen moeglichen Ansatz :
Da Evo eine Standalone-Anwendung ist, schreibt sie vermutlich die eProgress- und IntermediateResult-Dateien nur, wenn sie erkennt, dass sie ueber den Wrapper gesteuert wird.
Wenn das Flag, das dieses Feature steuert, nicht oder nicht korrekt initialisiert (Problem beim Parsen von S005_Preferences.txt?) oder z.B. von einem zu kurz dimensionierten Array ueberschrieben wird, haette das wohl den gleichen Effekt.
edit : hmmmm, das scheint's auch nicht zu sein, die Angaben in minimal_log_file.txt stimmen soweit ich das beurteilen kann
Da Evo eine Standalone-Anwendung ist, schreibt sie vermutlich die eProgress- und IntermediateResult-Dateien nur, wenn sie erkennt, dass sie ueber den Wrapper gesteuert wird.
Wenn das Flag, das dieses Feature steuert, nicht oder nicht korrekt initialisiert (Problem beim Parsen von S005_Preferences.txt?) oder z.B. von einem zu kurz dimensionierten Array ueberschrieben wird, haette das wohl den gleichen Effekt.
edit : hmmmm, das scheint's auch nicht zu sein, die Angaben in minimal_log_file.txt stimmen soweit ich das beurteilen kann
vi BOINC/checkin_notes
:1,$s/bug/feature/g
:wq!
Erzaehlen sich Biologen eigentlich Klein-RNA-Witze?
:1,$s/bug/feature/g
:wq!
Erzaehlen sich Biologen eigentlich Klein-RNA-Witze?
Re: Evo und Fortschrittsanzeige + Checkpoints
Nein, diese Dateien werden immer geschrieben. Laurence hatte die evo app nicht extra für den Wrapper angepasst.
yoyo
yoyo
Re: Evo und Fortschrittsanzeige + Checkpoints
[OT]Ich will kein neues Thema aufmachen, daher poste ich hier rein.
Gibt es irgendwo eine Seite mit aktuellen Infos zu Evolution@home? Die alte/ofizielle Seite ist nicht mehr wirklich aktuell.[/OT]
Gibt es irgendwo eine Seite mit aktuellen Infos zu Evolution@home? Die alte/ofizielle Seite ist nicht mehr wirklich aktuell.[/OT]
- Michael H.W. Weber
- Vereinsvorstand
- Beiträge: 22431
- Registriert: 07.01.2002 01:00
- Wohnort: Marpurk
- Kontaktdaten:
Re: Evo und Fortschrittsanzeige + Checkpoints
Laurence Loewe sitzt inzwischen in Madison/USA. Dort vielleicht mal recherchieren, ob er eine neue Seite hat?
Michael.
Michael.
Fördern, kooperieren und konstruieren statt fordern, konkurrieren und konsumieren.
http://signature.statseb.fr I: Kaputte Seite A
http://signature.statseb.fr II: Kaputte Seite B
http://signature.statseb.fr I: Kaputte Seite A
http://signature.statseb.fr II: Kaputte Seite B
Re: Evo und Fortschrittsanzeige + Checkpoints
Danke für den Hinweis.
Aber Neues zu dem DC-Projekt gibt es anscheinend nicht. Schade wo Yoyo doch sicher einiges an Leistung für Ihn organisiert hat.
Aber Neues zu dem DC-Projekt gibt es anscheinend nicht. Schade wo Yoyo doch sicher einiges an Leistung für Ihn organisiert hat.