2017-01-25 3 views
0

ich mit folgendem Problem konfrontiert bin:Slurm Zombiejob Bereinigung für MULTIPROG verwendet

mein Modul benötigt eine Anzahl von Arbeitsplätzen auf einem Slurm verwaltet Cluster zu verwalten. Der gesamte Batch wird mit --multiprog gestartet.

Einer von ihnen verwendet rabbitMQ-Verbindungen und kann leider nicht elegant beendet werden (nicht meine Entscheidung zu treffen). Als Folge wird dieser Unterjob einen "Zombie" Job hinterlassen, wenn die ganze Charge durch einen Slurm geschlossen wird. Um die Sache noch schlimmer zu machen, sendet es einen Herzschlag, der die Verbindungen von rabbitMQ am Leben erhält und so weiter.

Im Grunde muss ich nach jedem Job auf eine Zombiejagd gehen. Ich habe versucht, dies mit einem einfachen Epilog (killall -9-f) zu tun, aber anscheinend erhält der Epilog nicht die komplette Nodelist, also kann "turn undead" nicht auf alle Knoten anwenden, die dieser Job benutzt hat.

Ich auch nicht scheinen, die vollständige nodelist für alle multirog-subjobs von den env-Variablen in der Batchdatei zu erhalten.

Ich könnte die Subjobs bekommen, um mir ihre Knoten zu senden ... aber das würde Änderungen im Subjobs-Code erfordern, die ich selbst nicht tun kann, noch immer für die Zukunft garantieren kann. Ich habe auch untersucht, die Jobs aus dem gleichen Batch statt --multiprog auszuführen ... aber diese Option kommt mit einer eigenen Dose Würmer.

Also die beste Lösung wäre eine, die getan werden kann, ohne auf diese beiden Dinge zurückgreifen zu müssen.

Hat jemand Erfahrung mit einer solchen Situation und könnte Haken für eine Lösung vorschlagen?

+0

Sind Sie Administrator des Clusters oder regulären Benutzers? – damienfrancois

+0

Ich bin ein regelmäßiger Benutzer. Ich habe das Problem für jetzt gelöst, indem ich Zombie-Jobs "vermeide" (Hinweis: slurm behandelt Shell-Skripte in der Batchdatei nicht zu gut). Aber da es immer noch das Risiko gibt, dass Zombies ihren Kopf heben, wäre ich an erprobten Lösungen für meinen täglichen "Hausmeisterservice" interessiert. –

Antwort

0

Ich habe das Problem gelöst, indem ich die Lösung des Zombie-Jobs gefunden habe.

Slurm behandelt Shell-Skripts in der Batchdatei nicht zu gut. Wir haben sie benutzt, um die SSH 255-Zeichenbegrenzung zu "umgehen". Leider führten sie Schattenjobs ein, die von Lurm nicht gestoppt werden konnten und hielten so die Zombies in Schach.

Also, wie Multi-Prozessoren mit mehr als 255 Zeichen zu verwenden? Variablen. Sie können Variablen in der Batchdatei exportieren und sie in einem Bash-Skript in der Multirog-Datei verwenden. Dies reduziert die Lesbarkeit (und somit die Wartbarkeit) der Multirog-Dateien erheblich. Aber sobald die Bash gelaufen ist, ist es weg -> keine Zombies.