Jobplanungssoftware

Ich suche nach Software, um meinen Arbeitsablauf zu verbessern, wenn ich rechnerische (numerische) Experimente durchführe.

Nachdem ich gesehen habe, wie die Dinge in der Welt der Supercomputer mit PBS gemacht werden , möchte ich einige der Vorteile für mich selbst nutzen.

Ich möchte Job-Skripte erstellen und sie dann verlassen. (Statt meiner jetzigen, führe einen Job aus und sieh zu, wie er arbeitet, wie eine Glucke, was Zeitverschwendung ist.). Ich möchte mehrere Jobs planen und sie ausführen lassen, wenn die Computerkapazität frei ist.

Grundsätzlich habe ich sagen wir 8 Berechnungsexperimente, ich kann sie nicht alle auf einmal ausführen, da 2 davon 24 GB RAM belegen und der Rest jeweils 10 GB verwendet (und mein System hat nur 32 GB RAM). Meine aktuelle Arbeit ist speicherbegrenzt, aber ich würde erwarten, dass jede Auftragsplanungssoftware auch Aufgaben mit CPU-Beschränkung (/Thread) unterstützt.

Ich habe nur einen Server, aber es ist sehr grunty. Ich bin nicht der einzige Benutzer, aber alle anderen Benutzer machen die meiste Zeit nur einfache Dinge wie das Ausführen von Befehlszeilen-Chat-Clients und Texteditoren.

  • Das Betriebssystem läuft auf (Wheezy) Debian Linux
  • Preis: Kostenlos wie beim Bier. (Gratis). Ich bin gut, wenn es für gemeinnützige Zwecke oder für Forschungszwecke kostenlos ist.
  • Darf nicht: Es muss (/seine Jobs) das Einzige sein, was auf dem Server vor sich geht
  • Sollte: Python-Jobscripts unterstützen
  • Sollte: Senden Sie mir die Ergebnisse per E-Mail. (Einschließlich Standardausgang usw.)
  • Sollte: über einen Debain-Paketmanager installierbar sein. Ob das apt-get oder pip oder rubygems ist. (Dies ist kein Deal Breaker, aber es wäre sehr schön, es zu haben)
  • Nicht: Erfordert jede Art von Unterstützung für das Clustering
  • Nicht: Benötigt irgendeine Art von GUI

Das einzige, wovon ich gehört habe, ist TORQUE , und ich kenne niemanden, der es verwendet hat oder viel darüber weiß.

Irgendetwas falsch mit Cron und at , die mit allen Linux-Distributionen ausgeliefert werden? Wenn es das "Fehlen einer GUI" ist, dann ist es ein Mangel in Ihrer Anforderungsliste :)
@Izzy: Meines Wissens Cronund atsind zeitbasierte Werkzeuge. Das heißt, Sie können einen Job so planen, dass er zu bestimmten Zeiten ausgeführt wird. Ich weiß nicht, wie lange meine Jobs laufen werden oder welche gleichzeitig ausgeführt werden können (weil sie nicht für Ressourcen abgeschlossen werden). Ich könnte (vielleicht) eine Schätzung machen, aber ich kenne Tools Ausgänge. Ich habe die Frage bearbeitet, um hoffentlich klarer zu sein.
Wenn das einzige, was dagegen spricht, ist, dass Sie sicherstellen müssen, dass sie sich nicht überlappen, sollten Sie sich vielleicht mit Semaphoren befassen (einfach ausgedrückt: Legen Sie eine "Flag-Datei" am Skriptstart an, löschen Sie sie am Skriptende und überprüfen Sie sie dafür, bevor der Job verarbeitet wird; optional eine Warnung ausgeben, wenn "alte Semaphore" gefunden werden, die darauf hinweisen, dass ein Job hängt/abstürzt). Abgesehen davon, während wir auf Antworten warten: Tante Google sagt, dass Linux-Job-Scheduler-Parallelität vielleicht :)
Izzy: Wenn ich so weit gehe, könnte ich genauso gut ein bisschen weiter gehen und einfach ein Job-Scheduling als Python-Programm implementieren. Ehrlich gesagt wäre es wahrscheinlich 1 Stunde Arbeit. Aber TORQUE existiert und es ist die Open-Source-Version des Tools, in dem ich ein paar Stunden trainiert habe. (Ich vermute, es ist überlastet, da es in Clustern denkt.) Es gibt hier einen Thread über Drehmoment auf einem einzelnen Computer [ ubuntuforums .org/showthread.php?t=1512061] . Wenn ich es am Ende benutze, beantworte ich meine eigene Frage.

Antworten (2)

Schauen Sie sich SLURM an .

  • OS hat ein Debian-Paket ( Quelle )
  • Preis: Auch hier gibt es ein Debian-Paket
  • andere Dinge könnten auf dem Server laufen
  • Sie können alles (mit beliebig vielen Parametern) einreichen, solange es ausführbar ist
  • E-Mail : Ich weiß nicht, ob es dafür direkte Unterstützung gibt. Aber ich denke, das könnte eher Teil des Skripts sein, das Sie einreichen. Schließlich können Sie ein Wrapper-Skript schreiben, das an SLURM übermittelt wird und nichts anderes tut, als das eigentliche Skript aufzurufen, die Ergebnisse zu erhalten, wenn dieses fertig ist, und eine E-Mail zu senden.
  • GUI : Ich glaube, es gibt GUIs, aber ich habe noch nie eine verwendet, da ich SLURM an der Universität über SSH verwende.
  • Clustering wird unterstützt (ich führe die Spracherkennung über einen HPC-Cluster aus)

Wichtige Befehle sind:

Schauen Sie sich Hudson oder seine (vielleicht aktivere) Jenkins- Gabel an. Es handelt sich um "Continuous Integration"-Server, die zur Steuerung automatischer Software-Builds gedacht sind, aber auch zum Starten automatischer Tests usw. verwendet werden können. Ich bin mit der Software nicht genau vertraut, aber hier ist eine Übersicht:

  • Betriebssystem : Java/Tomcat-basiert; läuft unter Linux; Debian-Paket verfügbar
  • Preis : kostenlos (wie in Freiheit und in Bier)
  • E-Mail : unterstützt
  • GUI : Webinterface für Konfiguration etc.; Konfigurierte Jobs können dann gestartet werden, indem auf ihre URLs mit wget/curl zugegriffen wird
  • führt einen beliebigen Shell-Befehl aus
  • für jeden Host kann die Anzahl der erlaubten gleichzeitigen Jobs angegeben werden; Aufträge werden in die Warteschlange gestellt, bis ein Slot verfügbar ist
  • stört es nicht, wenn andere Dinge auf den Hosts laufen
    • AFAIK gibt es jedoch keine "globale" Systemlastprüfung
Das ist Denken über den Tellerrand hinaus.