Die Job-Klassen werden unterschiedlichen Job-Schedulern zugeordnet (mit dem Dienstprogramm JMU, siehe Handbuch „Dienstprogramme“ [15]).
Jeder Job-Scheduler läuft in einem eigenen Job ab, genannt „Job-Stream“.
Gemäß den vereinbarten Job-Scheduling-Strategien entscheiden die Job-Scheduler, welcher der Jobs zum Start freigegeben wird.
Job-Streams – und damit implizit die Job-Scheduler – steuern die Auswahl der Benutzer-Jobs, indem jedem Job-Stream ein passender Job-Scheduling-Algorithmus zur Verfügung steht.
Beispiel
In der Regel hat jedes Data Center verschiedene Produktionsschwerpunkte:
Die Programmierung benötigt für ihre Jobs zum Übersetzen, Binden und Laden von Programmen keine speziellen Betriebsmittel.
Die Jobs der Fachabteilungen sind mit wenigen Ausnahmen langlaufende Jobs mit hoher Priorität und hohen Betriebsmittelanforderungen.
Das Data Center erstellt für administrative Zwecke eine Reihe von Jobs, die zu bestimmten Zeiten ablaufen und wiederholt werden müssen.
Es bietet sich an, für diese drei Produktionsgebiete drei Job-Streams (Job-Scheduler) mit den folgenden Job-Scheduling-Strategien zu installieren:
zu 1) | Für die Jobs der Programmierung kommt ein auf dem FIFO-Prinzip basierender Job-Scheduler in Frage (FIFO = First In First Out). |
zu 2) | Für die Jobs der Fachabteilungen eignet sich ein auf Priorität und Betriebsmittelverbrauch basierender Job-Scheduler. |
zu 3) | Für die Jobs des Data Centers bietet sich ein Scheduling-Algorithmus an, der die Termin-Jobs berücksichtigt. |
Die Systembetreuung bestimmt mit der JMU-Anweisung DEFINE-JOB-STREAM die Kriterien, die dem Job-Stream zu Grunde liegen sollen und gemäß denen der Job-Scheduler die Jobs dann steuert. So kann z.B. die Auftragspriorität oder die benötigte CPU-Zeit als Kriterium über den Operanden S-PAR angegeben werden.
Neben dem Scheduling-Algorithmus gibt es noch weitere Eigenschaften, die einen Job-Stream kennzeichnen:
Ein Job-Stream muss nicht immer aktiv sein. Die Systembetreuung entscheidet, ob der Stream z.B. bereits nach dem Laden von BS2000 oder erst in der Nacht aktiv sein soll. Jobs, die für einen inaktiven Stream eingelesen wurden, werden solange in einer speziellen Warteschlange (TYPE1/DO) gesammelt, bis der Stream aktiv ist und der Job-Scheduler die Verwaltung übernimmt.
Bei der Definition des Job-Streams wird für den Stream eine Task-Scheduling-Priorität vereinbart, mit der der Stream ab dem Startzeitpunkt geführt wird. Da jeder Job-Stream in einem eigenen Job läuft, ist auf diese Weise die Rangfolge eindeutig. Mit dem Kommando MODIFY-JOB-STREAM kann diese Rangfolge verändert werden.
Ein Job-Stream verwaltet nur Batch-Jobs. Dialog-Jobs unterliegen keinem Job-Scheduling und werden gestartet, wenn der Benutzer das Recht hat, in der jeweiligen Job-Klasse Dialog-Jobs zu starten und wenn die Job-Klasse ihr festgelegtes Limit noch nicht erreicht hat.
Zur Definition der Job-Streams und damit implizit der Job-Scheduler stehen zwei Möglichkeiten zur Verfügung:
Die statische Definition, die in der Datei $TSOS.SJMSFILE hinterlegt ist, ist die Basis für jeden Systemlauf. Sie wird mit dem Dienstprogramm JMU erzeugt und verwaltet.
Die dazu notwendigen JMU-Anweisungen lauten:
DEFINE-JOB-STREAM DELETE-JOB-STREAM MODIFY-JOB-STREAM
Änderungen in dieser Datei wirken sich erst beim nächsten Systemlauf aus.
Die dynamische Definition bezieht sich nur auf den aktuellen Systemlauf. Sie wird ebenfalls mit dem Dienstprogramm JMU verwaltet, wobei der Bearbeitungsmodus
SET-MODIFICATION-MODE=*SYSTEM
eingestellt sein muss. Es stehen die selben JMU-Anweisungen wie oben zur Verfügung. BeiSET-MODIFICATION-MODE=*ALL
werden die Änderungen auch in die Datei $TSOS.SJMSFILE übernommen.Darüber hinaus gibt es Eingriffsmöglichkeiten über die Kommandoschnittstelle.
Mit folgenden Kommandos reagiert die Systembetreuung kurzfristig und schnell auf Überlastsituationen, ohne die in der Datei $TSOS.SJMSFILE hinterlegten Definitionen ändern zu müssen:
HOLD-JOB-STREAM MODIFY-JOB-STREAM RESUME-JOB-STREAM START-JOB-STREAM STOP-JOB-STREAM
Der Name der ENTER-Datei, die den Job-Stream definiert, ist in der Datei $TSOS.SJMSFILE hinterlegt. Der Name ist prinzipiell frei wählbar, aus Konsistenzgründen wird SYSENT.JOBSCHED.nnn empfohlen („nnn“ ist das Kennzeichen der Betriebssystemversion).
Der Job-Scheduler wird aus dieser Datei mit START-EXECUTABLE-PROGRAM aufgerufen, womit sein Name festgelegt wird.
Auch der Name des Job-Schedulers ist somit prinzipiell frei wählbar; aus Gründen der Konsistenz, für die die Systembetreuung verantwortlich ist, wird der Name SYSPRG.JOB-SCHED.nnn empfohlen („nnn“ ist das Kennzeichen der Betriebssystemversion).
Für den Stream-ENTER werden vereinbarte Logon- bzw. Logoff-Prozeduren nicht ausgeführt (zu Logon-/Logoff-Prozeduren siehe Handbuch „Dialogschnittstelle SDF“ [43]).
Von ihrer Bedeutung und Funktion sind zu unterscheiden:
der System-Job-Scheduler oder Emergency-Job-Scheduler $SYSJS
die Standard-Job-Scheduler
der Klassen-Scheduler