Search the FirstSpirit Knowledge Base
Hallo Community.
Im Zuge der Migration auf FS5 kam ein schonmal angedachtes Thema wieder hoch.
Parallele Ausführung mehrerer Generierungen in jeweils einer Sprache bei einem mehrsprachigen Projekt.
Ziel: Performancesteigerung durch stärkere Auslastung des recht potenten Redaktionssystems (32 Cores)
Leider sind wir hier über eine Testphase nicht hinausgekommen, da sich einige Probleme ergaben:
1. gelegentliche Lockups der Generierungsaktionen
2. teilweise längere Ausführungszeiten bei paralleler Generierung als bei linearer Abfolge
Zu Punkt1: Wir konnten hier keinerlei Fehlerquelle in unseren Templates lokalisieren. Das Problem trat sporadisch auf.
Zu Punkt2: Ein Bottleneck im I/O des Servers kann ausgeschlossen werden, es gab keinerlei io-wait.
Neben der Parallelisierung der Sprachen haben wir auch mehrere Teilgenerierungen von Projektsegmenten versucht, mit gleichem Ergebnis.
Wie sind hier die Erfahrungen von anderen großen Projekten? Wurde/Wird das irgendwo praktiziert?
Bin für jeden Tipp dankbar.
MfG
Zu Punkt 1: Die Lockups wären eher ein Thema für den Helpdesk. Am besten Threaddumps erstellen, die lassen vielleicht auf die Ursache schließen.
Zu Punkt 2: Generell hat der Cache des Repositories viel Einfluss auf die Generierungszeit. Führt man zwei gleiche Generierungen hintereinander aus, so ist die zweite meist deutlich schneller als die erste Generierung. Hast du das beim Vergleich berücksichtigt? Zudem ist zu beachten, dass bei mehreren Generierungen auch die Medien mehrfach ins Dateisystem geschrieben werden. Gerade bei vielen bzw. großen Medien ist das oft ein erheblicher Faktor.
Das Caching innerhalb der Generierung ein Faktor ist, war bekannt. Schliesslich generiert die zweite Sprache bei einer linearen Generierung ja immer wesentlich schneller.
Viel wichtiger ist aber eine Antwort auf die Frage, ob es sich überhaupt lohnt, da Zeit und Arbeit reinzustecken. Wird parallele Generierung irgendwo produktiv eingesetzt? Haben sie das in-house mal getestet?
Natürlich testen wir das. Der Zeitgewinn hängt stark vom Projekt und der Projektgröße ab, d.h. ob sich ein produktiver Einsatz lohnt, muss man testen. Wenn bei der Generierung die IO der limitierende Faktor ist, lohnt es sich tatsächlich nicht. Eine Pauschal-Aussage ist aber tatsächlich nicht möglich.
Zu dem Punkt:
Zudem ist zu beachten, dass bei mehreren Generierungen auch die Medien mehrfach ins Dateisystem geschrieben werden. Gerade bei vielen bzw. großen Medien ist das oft ein erheblicher Faktor.
Das trifft natürlich zu, wenn einzelne Aufträge parallel laufen. Ich gehe aber davon aus, das Hagen von parallelen Tasks innerhalb eines Auftrags spricht.
Zu den Deadlocks: An den Traces habe ich auch starkes Interesse. "Fehler in Vorlagen" können nicht zu einem Deadlock führen. Eventuell wird irgendwo noch eine falsche Datenstruktur verwendet, entweder im FirstSpirit-Code oder in einer Fremdkomponente.
Ich kenne mehrere Projekte die parallel Generierung. Meist entweder nach Sprache oder Ausgabekanal. Ob es schneller ist hängt aber von vielen Faktoren ab, das muss man leider ausprobieren.
Wenn es primär um die Beschleunigung des Prozesses geht, gibt es noch ein paar andere Stellschrauben: