Parallelisierten Workload sinnvoll in Cloud auslagern
Hallo zusammen,
ich lese hier schon lange immer wieder gespannt mit und habe widme mich gerade einer Problemlösung, vor der eventuell noch mehrere Personen stehen. Da man ja oft den Wald vor lauter Bäumen nicht mehr sieht, würde ich gern einfach mal hier mit euch diskutieren, wie ihr dies lösen würdet.
Also folgendes: Es gibt ein Programm (Eigenentwicklung, Windows-Anwendung), welches Plausibilitätsprüfungen auf eine Datei durchführt. Diese Datei wird immer wieder in abgewandelter Form hergestellt. Nach Herstellung muss die Datei auf durch diese Prüfung. Allerdings ist die Prüfung sehr umfangreich und Laufzeitintensiv. Deswegen kann man die Datei aufteilen und auf beispielsweise 10 Rechner verteilen. Die Frequenz des Herstellens einer neuen Datei ist unterschiedlich.
Heute wird das gelöst, indem auf einem Virtualisierungshost diese 10 Rechner eingerichtet werden und dann nach herstellen der Datei benutzt werden. Im Laufe der Zeit wurde eine hergestellte Datei immer umfangreicher, was bedeutet, dass auch die Laufzeit immer größer wurde. Deswegen wird der Wunsch immer Größer, dass man hier entgegensteuert. Gleichzeitig ist es nun so, dass diese Rechner aber nur ca. 25% der Zeit im Jahr benutzt werden.
Das einfachste wäre es jetzt einen weitere Virtualisierungshost mit weiteren 10 Rechnern (oder mehr) anzuschaffen. Im Umkehrschluss würden dann die Dateien in kürzerer Zeit geprüft werden können aber die Rechner auch nur noch 12,5% der Zeit genutzt werden.
Daher hatte ich angedacht diesen Workload in die Cloud auszulagern. Dies hätte den Vorteil, dass Rechenzeit nur bezahlt werden müssten wenn sie auch genutzt wird. Dadurch, dass die Eigenentwicklung nur auf Windows lauffähig ist und einige Abhängigkeiten installiert werden müssen, ist auf jeden Fall erforderlich, dass die Rechner entweder gespeichert werden oder aus einem vordefinierten Image gestartet werden.
Mein Ansatz wäre gewesen, einfach 30 Rechner in Azure o.Ä. einzurichten und diese bei Bedarf zu starten. Dem Endbenutzer hätte ich dann einen Zugang zum Azure-Portal eingerichtet, wo er diese selbstständig starten und beenden kann und per RDP benutzen kann. Da allerdings wohl dann eine Volumenlizenz für Windows fällig wird (oder kann man die versteckt auch irgendwo mitmieten?) habe ich erstmal auf die bremse gedrückt und möchte über alternativen nachdenken.
Wenn ich eine Lösung zaubern könnte dann würde die so aussehen: Der Endanwender loggt sich in ein Portal ein. Hier hat er die Möglichkeit Rechner zu erstellen/starten. Er gibt seine gewünschte Anzahl ein und nachdem er sich einen Kaffee geholt hat kann er diese benutzen. Die Rechner sind bereits mit der Eigenentwicklung sowie allen Abhängigkeiten ausgestattet und über eine Tabwahl wechselt er zwischen den Sitzungen. Idealerweise hat er nun die Möglichkeit die zu testende Datei auf alle Rechner zu übertragen. Dann startet er seine Tests. Nach der Auswertung fährt er die Rechner runter und diese werden gelöscht. Monatlich wird dann eine Rechnung erstellt über die Rechenzeit sowie Windowslizenz. Ein Rechner sollte übrigens über zwei performante vCPUS verfügen sowie mindestens 4GB Ram. Also eigentlich überschaubar.
Ich hoffe das war einigermaßen verständlich und freue mich auf Fragen oder Diskussionen dazu.
Bin gespannt ob ich am Ende dann doch einfach die 30 Rechner in Azure einrichten werde...
Gruß
ich lese hier schon lange immer wieder gespannt mit und habe widme mich gerade einer Problemlösung, vor der eventuell noch mehrere Personen stehen. Da man ja oft den Wald vor lauter Bäumen nicht mehr sieht, würde ich gern einfach mal hier mit euch diskutieren, wie ihr dies lösen würdet.
Also folgendes: Es gibt ein Programm (Eigenentwicklung, Windows-Anwendung), welches Plausibilitätsprüfungen auf eine Datei durchführt. Diese Datei wird immer wieder in abgewandelter Form hergestellt. Nach Herstellung muss die Datei auf durch diese Prüfung. Allerdings ist die Prüfung sehr umfangreich und Laufzeitintensiv. Deswegen kann man die Datei aufteilen und auf beispielsweise 10 Rechner verteilen. Die Frequenz des Herstellens einer neuen Datei ist unterschiedlich.
Heute wird das gelöst, indem auf einem Virtualisierungshost diese 10 Rechner eingerichtet werden und dann nach herstellen der Datei benutzt werden. Im Laufe der Zeit wurde eine hergestellte Datei immer umfangreicher, was bedeutet, dass auch die Laufzeit immer größer wurde. Deswegen wird der Wunsch immer Größer, dass man hier entgegensteuert. Gleichzeitig ist es nun so, dass diese Rechner aber nur ca. 25% der Zeit im Jahr benutzt werden.
Das einfachste wäre es jetzt einen weitere Virtualisierungshost mit weiteren 10 Rechnern (oder mehr) anzuschaffen. Im Umkehrschluss würden dann die Dateien in kürzerer Zeit geprüft werden können aber die Rechner auch nur noch 12,5% der Zeit genutzt werden.
Daher hatte ich angedacht diesen Workload in die Cloud auszulagern. Dies hätte den Vorteil, dass Rechenzeit nur bezahlt werden müssten wenn sie auch genutzt wird. Dadurch, dass die Eigenentwicklung nur auf Windows lauffähig ist und einige Abhängigkeiten installiert werden müssen, ist auf jeden Fall erforderlich, dass die Rechner entweder gespeichert werden oder aus einem vordefinierten Image gestartet werden.
Mein Ansatz wäre gewesen, einfach 30 Rechner in Azure o.Ä. einzurichten und diese bei Bedarf zu starten. Dem Endbenutzer hätte ich dann einen Zugang zum Azure-Portal eingerichtet, wo er diese selbstständig starten und beenden kann und per RDP benutzen kann. Da allerdings wohl dann eine Volumenlizenz für Windows fällig wird (oder kann man die versteckt auch irgendwo mitmieten?) habe ich erstmal auf die bremse gedrückt und möchte über alternativen nachdenken.
Wenn ich eine Lösung zaubern könnte dann würde die so aussehen: Der Endanwender loggt sich in ein Portal ein. Hier hat er die Möglichkeit Rechner zu erstellen/starten. Er gibt seine gewünschte Anzahl ein und nachdem er sich einen Kaffee geholt hat kann er diese benutzen. Die Rechner sind bereits mit der Eigenentwicklung sowie allen Abhängigkeiten ausgestattet und über eine Tabwahl wechselt er zwischen den Sitzungen. Idealerweise hat er nun die Möglichkeit die zu testende Datei auf alle Rechner zu übertragen. Dann startet er seine Tests. Nach der Auswertung fährt er die Rechner runter und diese werden gelöscht. Monatlich wird dann eine Rechnung erstellt über die Rechenzeit sowie Windowslizenz. Ein Rechner sollte übrigens über zwei performante vCPUS verfügen sowie mindestens 4GB Ram. Also eigentlich überschaubar.
Ich hoffe das war einigermaßen verständlich und freue mich auf Fragen oder Diskussionen dazu.
Bin gespannt ob ich am Ende dann doch einfach die 30 Rechner in Azure einrichten werde...
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2044581071
Url: https://administrator.de/forum/parallelisierten-workload-sinnvoll-in-cloud-auslagern-2044581071.html
Ausgedruckt am: 15.05.2025 um 10:05 Uhr
7 Kommentare
Neuester Kommentar
Welchen Festspeicher nutzt dein VHost?
HDD / SSD?
SATA / SAS?
NVMe/PCIe SSD?
Meine Erfahrungen bei solch intensiven Aufgaben iat, das dort das Nadelöhr zu finden ist - daher nutzt ein Host mit solch einer Aifgabe bei uns 2x NVMe/PCIe SSD im Raid0 - das ergibt einen Durchsatz von knapp 6GByte schreiben/lesen.
Den Host zu Virtualisieren macht dafür m. E. keinen Sinn
Bei uns steht auch die Leistung im Vordergrund, ein Ausfall wäre erstmal 2t-rangig
Nachtrag: Wir haben das übrigens auch mal mit einer RAM-Disk auf dem Host getestet - hier lag der Durchsatz sogar bei knapp 12.GByte/s schreiben/lesen.
Das ganze läuft jetzt schon 2 Jahre Störungsfrei - heute gibt es natürlich schon noch deutlich schnellere Hardware für diese Lösungen ...
HDD / SSD?
SATA / SAS?
NVMe/PCIe SSD?
Meine Erfahrungen bei solch intensiven Aufgaben iat, das dort das Nadelöhr zu finden ist - daher nutzt ein Host mit solch einer Aifgabe bei uns 2x NVMe/PCIe SSD im Raid0 - das ergibt einen Durchsatz von knapp 6GByte schreiben/lesen.
Den Host zu Virtualisieren macht dafür m. E. keinen Sinn
Bei uns steht auch die Leistung im Vordergrund, ein Ausfall wäre erstmal 2t-rangig
Nachtrag: Wir haben das übrigens auch mal mit einer RAM-Disk auf dem Host getestet - hier lag der Durchsatz sogar bei knapp 12.GByte/s schreiben/lesen.
Das ganze läuft jetzt schon 2 Jahre Störungsfrei - heute gibt es natürlich schon noch deutlich schnellere Hardware für diese Lösungen ...
Einfach nur VMs in der Cloud nehmen... ist 5-10x so teuer wie on premise. Glaubs mir. Ich hab sowas schon dutzendfach durchkalkuliert.
Blades oder ganze Server für 10 VMs kostet vielleicht 2000-3000 Euro in der Anschaffung, aber 10 EC2 Instanzen kommen auf AWS längerfristig betrachtet immer teurer weg. Macht man nur wenn man keine eigene Hardware mehr hat.
Und einen Workflow auf 10 VMs aufzuteilen ist immer noch ineffektiver wie 10 Threads in einer VM laufen zu lassen... falls das der Workflow zuläßt. Und wenn nicht weil ein "Task", also eine VM mit 100% auf 4 CPU kernen ausgelastet ist, dann ist das auch zu rechenintensiv für Docker oder richtige "serverless" Techniken. Die machen nur dann Sinn, wenn die Berechnung an sich einfach und singlethreaded ist, und auch Fleetfähig ist. Sprich wenn man das Prüfen der DAtei auf 10000 Lamdas aufteilen könnte dann wäre AWS Lambda wohl die günstigste Variante... oder 1000 Docker.
Edit je nach Workflow gibts natürlich CPUs mit vielen Cores und wenig Takt, oder mit wenigen Cores und viel Takt... davon aber eventuell zwei oder vier in einem Board. Und noch was... sollte es hier um Chia Mining gehen, wer sowas in azure oder AWs macht dem canceln das Konto ganz schnell.
Blades oder ganze Server für 10 VMs kostet vielleicht 2000-3000 Euro in der Anschaffung, aber 10 EC2 Instanzen kommen auf AWS längerfristig betrachtet immer teurer weg. Macht man nur wenn man keine eigene Hardware mehr hat.
Und einen Workflow auf 10 VMs aufzuteilen ist immer noch ineffektiver wie 10 Threads in einer VM laufen zu lassen... falls das der Workflow zuläßt. Und wenn nicht weil ein "Task", also eine VM mit 100% auf 4 CPU kernen ausgelastet ist, dann ist das auch zu rechenintensiv für Docker oder richtige "serverless" Techniken. Die machen nur dann Sinn, wenn die Berechnung an sich einfach und singlethreaded ist, und auch Fleetfähig ist. Sprich wenn man das Prüfen der DAtei auf 10000 Lamdas aufteilen könnte dann wäre AWS Lambda wohl die günstigste Variante... oder 1000 Docker.
Edit je nach Workflow gibts natürlich CPUs mit vielen Cores und wenig Takt, oder mit wenigen Cores und viel Takt... davon aber eventuell zwei oder vier in einem Board. Und noch was... sollte es hier um Chia Mining gehen, wer sowas in azure oder AWs macht dem canceln das Konto ganz schnell.
Zitat von @GrueneSosseMitSpeck:
sollte es hier um Chia Mining gehen, wer sowas in azure oder AWs macht dem canceln das Konto ganz schnell.
sollte es hier um Chia Mining gehen, wer sowas in azure oder AWs macht dem canceln das Konto ganz schnell.
Stimmt - soweit hatte ich noch gar nicht gedacht ;-P
... wenn man den ganzen Text des TO betrachtet - " nur 4GB RAM" - könnte man sowas schlussfolgern ... :-$
.
.