Wenn es einen besseren Stapel gibt, auf dem Sie dies fragen können, lassen Sie es mich bitte wissen.
Ich habe eine Simulation, deren Ausführung 3-4 Tage dauert . Ich möchte viele davon mit verschiedenen Parametern ausführen, die in Textdateien auf entfernten Linux-Rechnern über ssh definiert sind (höchstwahrscheinlich). Ich habe dies bereits über eine Kombination aus bash, python, ssh und screen gemacht. Meine Skripte senden (oder übertragen viele Sätze davon) die Eingabedateien an ein Verzeichnis auf einem Remote-Computer und starten die Simulation in einem separaten Bildschirm. Ich habe ein Skript, das überprüft, ob die Simulation abgeschlossen ist, und wenn dies der Fall ist, habe ich ein weiteres Skript, das die Ergebnisse remote nachbearbeitet und sie dann sammelt.
Aktuell habe ich ein paar Probleme. Einige der Remote-Maschinen sind Laborcomputer, was bedeutet, dass sie, obwohl sie nicht ausgeschaltet werden sollten, von Zeit zu Zeit zwangsläufig ausgeschaltet werden. Die Simulation schreibt die Ausgänge alle 10 Zeitschritte , so dass kein großer Arbeitsverlust entsteht, aber die Simulation muss neu gestartet werden, sobald der Computer wieder eingeschaltet wird. Manchmal stürzt die Simulation ab, der letzte aufgezeichnete Zeitschritt muss gelöscht und die Simulation manuell neu gestartet werden. In einem ähnlichen Zusammenhang kann ich die Remote-Computer mit einem Skript abfragen, um zu sehen, ob die Simulation erfolgreich beendet wurde, aber ich weiß nicht, wie ich überprüfen kann, ob die Simulation läuft oder darauf wartet, neu gestartet zu werden, ohne ssh und top zu verwenden.
Ich möchte diesen Prozess ausgefeilter und rationalisierter gestalten. Das Modell selbst wurde von jemand anderem entwickelt (es ist ein OpenFoam CFD-Modell, falls das einen Unterschied macht) und ich habe es geerbt, um es für Metamodellierungs- und Optimierungsarbeiten zu verwenden, und es liegt nicht in meinem Fachgebiet, wirklich darauf einzugehen model viel selbst.
Idealerweise möchte ich ein Dashboard oder eine CLI erstellen , mit der ich diese Simulationen robust, remote und einfach verwalten kann. Wenn möglich, würde ich gerne Python verwenden , weil ich mich damit am wohlsten fühle, und ich bin auch ziemlich zufrieden mit Bash , obwohl meine Arbeit in Bash viel hackiger ist.
Ich suche nach Entwurfsmustern oder Werkzeugen , die es mir ermöglichen würden, den Maschinenpool, den ich habe, programmgesteuert abzufragen , den Zustand meiner Simulationen programmgesteuert zu überprüfen und dann das Verhalten basierend auf diesen Zuständen zu programmieren.
Zum Beispiel: Wenn ein Computer ausgeschaltet wird, während eine meiner Simulationen läuft, merke ich das normalerweise erst, wenn ich nach Ergebnissen suche, sonst ist der Prozess ziemlich zeitaufwändig, also geht viel Rechenzeit verloren. Gibt es ein Bash-Tool oder erlauben mir Fabric oder Paramiko, benachrichtigt zu werden, wenn eine Maschine ausgeschaltet wird? Ist es dumm, eine Aufgabe auf einer Maschine einzurichten, von der ich weiß, dass sie nicht ausgeschaltet wird, die ständig jede meiner Maschinen abfragt, um zu überprüfen, ob sie noch eingeschaltet sind?
Wenn dies nicht machbar erscheint, lohnt es sich, in die Cloud zu wechseln? Meine Sorge ist zuerst, dass mich das etwas kosten wird (ich glaube nicht, dass ich dafür ein Budget habe) und dass es eine Menge Ärger geben wird, die richtige Umgebung einzurichten, aber liege ich falsch? Es ist etwas, mit dem ich nicht vertraut bin.
TL:DR Ich möchte in der Lage sein, den Status von Simulationen auf Remote-Computern über ssh programmgesteuert abzufragen und neu zu starten.
Ich schlage vor, sich das anzuschauen. Ich habe es selbst nicht benutzt, aber ich werde es das nächste Mal tun, wenn ich Dinge wie diese tun muss:
RQ (Redis Queue) ist eine einfache Python-Bibliothek, um Jobs in eine Warteschlange zu stellen und sie im Hintergrund mit Arbeitern zu verarbeiten. Es wird von Redis unterstützt und ist so konzipiert, dass es eine niedrige Eintrittsbarriere hat. Es kann einfach in Ihren Webstack integriert werden.
Ein Hinweis: Sie sagen, dass Simulationen 3-4 Tage dauern. Ich würde versuchen, diese in kleine Stücke zu schneiden. Gibt es eine Möglichkeit zur Parallelverarbeitung? Das hat viele Vorteile:
Ich bin kein Experte auf diesem Gebiet, aber ich vermute, Grid Computing ist der Fachbegriff für Ihre Bedürfnisse.
Eines der ersten Tools dieser Art war Xgrid von Apple, basierend auf Zilla von Next, Inc. Jetzt eingestellt.
HTCondor scheint eine Lösung zu sein, die für Sie funktionieren könnte. Es ist ein Open-Source-Langzeitprojekt an einer Universität. Es läuft auf Linux und anderen Betriebssystemen.
Oracle Grid Engine ist ein weiteres solches Projekt. Fork in verschiedene verwandte Projekte.
Wikipedia hat diese Liste von Grid-Computing-Projekten .
MagunRa
Guten Tag
ps
ein nützliches Befehlszeilenprogramm. Dieser Link sieht sehr nützlich aus, um darauf aufzubauen: anyexample.com/linux_bsd/bash/…Rückgängig machen
Guten Tag
Guten Tag
Rückgängig machen
Steve Barnes
Guten Tag