direkt zum Inhalt springen

direkt zum Hauptnavigationsmenü

Sie sind hier

TU Berlin

Inhalt des Dokuments

Warum starten meine Jobs nicht?

Das Batchsystem startet einen Job, wenn die im Job angeforderten Resourcen verfügbar sind, der Benutzer des Jobs nicht schon zu viele andere Jobs laufen hat (Joblimit), und kein anderer wartender Job eine höhere Priorität hat. Im Umkehrschluss bedeutet das, dass ein Job nicht startet, wenn eine dieser drei Bedingungen nicht erfüllt ist. Außerdem kann es sein, dass der Job in einem Fehlerzustand ist.

Unzureichende Ressourcen

Angeforderte Resourcen können vorübergehend oder dauerhaft nicht verfügbar sein. Der häufigste Grund für eine vorübergehende Nichtverfügbarkeit ist eine starke Auslastung des Clusters, insbesondere bei ohnehin schon knappen Resourcen wie Knoten mit viel RAM [1] oder GPUs [2]. Das Batchsystem warnt in solchen Fällen nicht automatisch, auch wenn es schon beim qsub erkennbar ist. Es bietet aber die Möglichkeit, solche Situationen mit Hilfe der Option -w zu identifizieren:

qsub -w p jobscript.job

Bei schon in der Queue befindlichen Jobs geht auch

qalter -w p <jobid>.

Dabei ist <jobid> die ID des wartenden Jobs. Falls genügend Resourcen verfügbar sind, dann sieht die Ausgabe in beiden Fällen so aus:

verification: found suitable queue(s)

Anderenfalls wird eine sehr lange Liste mit allen Queues auf allen Knoten ausgegeben und warum sie gerade ungeeignet für diesen Job sind.

Solche Situationen sind nicht von Dauer und enden, sobald die momentan darauf zugreifenden Jobs beendet werden. In seltenen Fällen kann es vorkommen, dass Jobs niemals enden [3] und damit auch die Resourcen nie freigeben. Helfen kann bei so etwas die Systembetreuung [4].

Einige Resourcenanforderungen sind unabhängig von der Auslastung des Clusters grundsätzlich nicht erfüllbar, z.B. ein Petabyte RAM oder 32 GPUs auf einem Knoten. Diese Situationen sind kann man mit

qsub -w v jobscript.job

beziehungsweise

qalter -w v <jobid>

erkennen. Falls der Job mit der aktuellen Clusterkonfiguration zumindest prinzipiell starten kann, dann sieht die Ausgabe genau wie bei -w p so aus:

verification: found suitable queue(s)

Ansonsten gibt es wieder eine sehr ausführliche Fehlermeldung.

Solche Situationen sind grundsätzlich nur durch die Inbetriebnahme zusätzlicher Hardware zu lösen, ansonsten warten die Jobs ewig. Das Problem ist aber glücklicherweise meistens mit Geld behebbar, wenden Sie sich dafür bitte an die Systembetreuuung [5].

Joblimits

Unabhängig von den verfügbaren Resourcen unterliegen alle Benutzer Einschränkungen hinsichtlich der Anzahl der Job, die sie gleichzeitig laufen lassen können. Dieses Limit beträgt momentan 85 Jobs pro User und wird in unregelmäßigen Abständen an die aktuellen Gegebenheiten angepasst. Das betrifft nur die laufenden Jobs. Prinzipiell kann jeder Benutzer beliebig viele Jobs in der Warteschlange haben. Bei zu vielen wartenden Jobs (ca. 100 oder mehr) führt das aber zu einer starken Belastung des Schedulers. In solchen Fällen können Array-Jobs [6] helfen.

Zusätzlich zu den Joblimits kann es noch weitere Einschränkungen für bestimmte Resourcen geben, wie z.B. für die Anzahl der insgesamt verwendeten Cores. Diese kommen vor allem bei Wartungarbeiten zum Einsatz und sind stark situationsabhängig.

Prioritäten

Der Scheduler weist jedem Job mit Status 'w' (waiting) eine Priorität zu. Die genaue Berechnung ist komplex, intransparent und fehlerhaft. Falls nicht genügend Resourcen für alle wartenden Jobs zur Verfügung stehen, dann werden Jobs mit höherer Priorität bevorzugt gestartet. Die Priorität eines Jobs wird unter anderem durch die Dauer der Wartezeit und die Anzahl der in der jüngeren Vergangenheit gestarteten Jobs des Benutzers beeinflusst.

Job im Fehlerzustand

Ob ein Job im Fehlerzustand ist, erkennt man an dem Präfix 'E' im Feld 'state' der Ausgabe von qstat, meistens in der Form 'Eqw'. Mit

qstat -j <jobid>

erhält man oft weitere Hinweise auf die Fehlerursache. Falls diese nicht mehr vorliegt, so kann der Job mit

cqmod -cj <jobid>

wieder freigegeben werden. Ansonsten hilft nur

qdel <jobid>

um den Job zu löschen und spätet mit qsub noch einmal abzuschicken.

------ Links: ------

Zusatzinformationen / Extras

Direktzugang

Schnellnavigation zur Seite über Nummerneingabe

Diese Seite verwendet Matomo für anonymisierte Webanalysen. Mehr Informationen und Opt-Out-Möglichkeiten unter Datenschutz.
Copyright TU Berlin 2008