Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ts_dptbl(4) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

priocntl(1)

dispadmin(1M)

idbuild(1M)

mpcntl(1M)

priocntl(2)

mpcntl(3X)

ts_dptbl(4)                                                     ts_dptbl(4)

NAME
     tsdptbl - Parametertabelle für Time-Sharing-Scheduler

BESCHREIBUNG
     Der Prozeß-Scheduler ist der Teil des Systemkerns, der die Aufteilung
     der CPU unter den Prozessen steuert. Es wird zwischen verschiedenen
     Scheduling-Klassen unterschieden, wobei jede Klasse eine Scheduling-
     Strategie definiert, die die Zuteilung der Zeitscheiben für die CPU an
     die Prozesse innerhalb dieser Klasse steuert. Jeder Scheduling-Klasse
     sind verschiedene Prioritäts-Warteschlangen zugeordnet, auf die von
     den ablaufbereiten Prozessen Verweise hergestellt werden. Diese
     Prioritäts-Warteschlangen werden durch die Systemkonfiguration auf
     eine Reihe von globalen Scheduling-Prioritäten abgebildet, die den
     Prozessen innerhalb der Klasse zugeteilt sind. (Der Scheduler wählt
     zur Ausführung in jedem Fall den Prozeß mit der höchsten globalen
     Scheduling-Priorität, der auf einer bestimmten CPU ablaufen darf
     (siehe PROZESSOR-AFFINITÄT UND BINDUNGS-BETRACHTUNGEN, unten). Die
     jeder Klasse zugeordneten Prioritäts-Warteschlangen werden von der
     jeweiligen Klasse als unmittelbar aufeinanderfolgende Gruppen von
     Prioritätsstufen betrachtet; die Prioritätsstufen sind von 0 (niedrig-
     ste Priorität) bis n (höchste Priorität) durchnumeriert, wobei n
     abhängig von der Konfiguration ist. Die globalen Scheduling-Prioritä-
     ten, auf die die Warteschlangen für eine bestimmte Klasse abgebildet
     werden, müssen nicht unbedingt bei Null beginnen und durchgängig nume-
     riert sein (dies hängt von der jeweiligen Konfiguration ab).

     Das Scheduling der Prozesse in der Time-Sharing-Klasse, die im
     Benutzer-Modus (bzw. im Kern-Modus, bevor sie in den Wartezustand
     übergehen) ablaufen, erfolgt anhand der Parametertabelle für Time-
     Sharing-Scheduler (tsdptbl). (Die Prozesse der Time-Sharing-Klasse,
     die nach dem Verlassen des Wartezustands im Kern-Modus ablaufen, lau-
     fen mit Prioritäten in einem bestimmten Bereich ab, die speziell für
     derartige Prozesse reserviert wurden; auf derartige Prozesse wirken
     sich die Parameter in tsdptbl erst nach ihrer Rückkehr in den
     Benutzer-Modus aus. tsdptbl besteht aus einem Array von Parameter-
     Strukturen (struct tsdpent), wobei jeder der n Prioritätsstufen der
     im Benutzer-Modus ablaufenden Time-Sharing-Prozesse eine Parameter-
     Struktur zugeordnet ist. Die Eigenschaften einer bestimmten Priori-
     tätsstufe i werden durch die ite Parameter-Struktur in diesem Array
     (tsdptbl[i]) definiert.

     Eine Parameter-Struktur besteht aus den nachfolgend aufgeführten Ele-
     menten. Diese Elemente werden auch in der Include-Datei
     /usr/include/sys/ts.h beschrieben.

     tsglobpri     Die globale Scheduling-Priorität, die dieser Priori-
                    tätsstufe zugeordnet ist. Die Zuordnung zwischen den
                    Time-Sharing-Prioritätsstufen und den globalen
                    Scheduling-Prioritäten wird beim Laden des Systems
                    durch die Systemkonfiguration festgelegt. tsglobpri
                    kann als einziges Element von tsdptbl nicht mit
                    dispadmin(1M) geändert werden.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

ts_dptbl(4)                                                     ts_dptbl(4)

     tsquantum     Die Zeitdauer in CPU-Takten (HZ), die den Prozessen auf
                    dieser Stufe zugeordnet ist.

     tstqexp       Die Prioritätsstufe der neuen Warteschlange, in die ein
                    Prozeß auf der aktuellen Stufe gesetzt werden soll,
                    wenn er die ihm zugeteilte Zeitdauer überschritten hat.
                    Im Normalfall wird von diesem Feld ein Verweis auf eine
                    niedrigere Prioritätsstufe der Klasse Time-Sharing mit
                    einer längeren Zeitdauer hergestellt.

     tsslpret      Die Prioritätsstufe der neuen Warteschlange, in die der
                    Prozeß, der zuvor auf dieser Stufe im Benutzer-Modus
                    abgelaufen ist, nach seiner Rückkehr aus dem Wartezu-
                    stand in den Benutzermodus gesetzt werden soll. Im Nor-
                    malfall wird von diesem Feld aus ein Verweis auf eine
                    höhere Prioritätsstufe mit einer kürzeren Zeitdauer
                    hergestellt.

     tsmaxwait     Der prozeßbezogene Zähler tsdispwait wird jedesmal mit
                    dem Wert Null initialisiert, wenn ein Time-Sharing-
                    Prozeß wieder in die Scheduling-Warteschlange gesetzt
                    wird, nachdem seine Zeitdauer abgelaufen ist oder er
                    aus dem Wartezustand zurückgekehrt ist (tsdispwait
                    wird nicht auf Null zurückgesetzt, wenn ein Prozeß
                    durch einen Prozeß höherer Priorität verdrängt wird).
                    Der Zähler wird für jeden in der Scheduler-
                    Warteschlange enthaltenen Prozeß einmal pro Sekunde
                    hochgezählt. Wenn der tsdispwait-Wert eines Prozesses
                    den Maximalwert (tsmaxwait) für seine Stufe über-
                    steigt, wird die Priorität des Prozesses auf den Wert
                    von tslwait zurückgesetzt. Mit diesem Feld soll ein
                    Prozeßstillstand verhindert werden.

     tslwait       Ein Prozeß soll auf diese neue Prioritätsstufe gesetzt
                    werden, wenn tsdispwait größer ist als tsmaxwait.

     Der Systemverwalter kann das Verhalten des Time-Sharing-Anteils des
     Schedulers durch eine Neukonfiguration von tsdptbl ändern. Hierzu
     gibt es zwei Möglichkeiten, die nachfolgend beschrieben werden.

KONFIGURATION BEIM BINDEN DES SYSTEMKERNS
     Die Tabelle tsdptbl kann beim Binden des Systemkerns neu konfiguriert
     werden, indem die gewünschten Werte in der Datei
     /etc/conf/pack.d/ts/space.c angegeben werden, und dann das System mit
     der automatischen Konfigurationsprozedur neu konfiguriert wird [siehe
     idbuild(1M)]. Dies stellt die einzige Möglichkeit zum ändern der
     Anzahl der Time-Sharing-Prioritätsstufen bzw. der globalen, von der
     Time-Sharing-Klasse benutzten Scheduling-Prioritäten dar.






Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

ts_dptbl(4)                                                     ts_dptbl(4)

DIE DISPADMIN-KONFIGURATIONSDATEI
     Mit Ausnahme von tsglobpri können alle Elemente der Tabelle tsdptbl
     auf einem laufenden System mit dem Kommando dispadmin(1M) überprüft
     und geändert werden. Wenn dispadmin für die Time-Sharing-Klasse aufge-
     rufen wird, kann der Systemverwalter die aktuelle tsdptbl-
     Konfiguration aus der kern-internen Tabelle laden oder die kern-
     interne Tabelle mit Werten aus einer Konfigurationsdatei überschrei-
     ben. Die Konfigurationsdatei, die als Eingabe für dispadmin benutzt
     wird, muß das unten beschriebene Format haben.

     Leerzeilen werden ignoriert. Alle Zeichen zur Rechten eines Nummern-
     Zeichens (#) werden als Kommentar betrachtet. In der ersten Zeile, bei
     der es sich weder um eine Leer- noch um eine Kommentarzeile handelt,
     muß die Auflösung enthalten sein. Die Auflösung gibt die Einheit an,
     in der die bei tsquantum angegebenen Werte interpretiert werden sol-
     len. Die Auflösung wird im Format

          RES=res

     angegeben. res ist eine positive Ganzzahl im Bereich 1 bis 1000000000
     einschließlich; als Einheit wird dann der Kehrwert von res in Sekunden
     benutzt. So steht beispielsweise RES=1000 für die Zeiteinheit Millise-
     kunden. Es kann mit sehr hohen Auflösungen (Nanosekunden) gearbeitet
     werden; allerdings werden die für die Zeitdauer angegebenen Werte auf
     das nächste ganzzahlige Vielfache der Auflösung der Systemuhr aufge-
     rundet.

     In den übrigen Zeilen der Datei werden die Parameterwerte für jede der
     Time-Sharing-Prioritätsstufen angegeben. In der ersten Zeile steht die
     Zeitdauer für die Time-Sharing-Stufe 0, in der zweiten Zeile die Zeit-
     dauer für die Time-Sharing-Stufe 1 usw. Für jede konfigurierte Time-
     Sharing-Prioritätsstufe muß exakt eine Zeile enthalten sein.

BEISPIEL
     Das folgende Beispiel zeigt einen Auszug aus einer dispadmin-
     Konfigurationsdatei. In jeder Zeile mit Parametern gibt es einen Kom-
     mentar zur Angabe der entsprechenden Prioritätsstufe. Die Stufennum-
     mern geben die Prioritäten innerhalb der Time-Sharing-Klasse an; die
     Zuordnung dieser Time-Sharing-Prioritäten zu den zugehörigen globalen
     Scheduling-Prioritäten wird anhand der Konfigurationsdatei ts/space.c
     festgelegt. Die Stufennummern werden lediglich zur einfacheren Lesbar-
     keit der Datei angegeben und werden wie jeder Kommentar von dispadmin
     ignoriert. dispadmin geht davon aus, daß die Zeilen innerhalb der
     Datei in aufsteigender Folge ihrer Prioritätsstufen (von Null bis zur
     konfigurationsspezifischen maximalen Time-Sharing-Priorität) angeord-
     net sind. Die Stufennummern in den Kommentaren sollten diese Reihen-
     folge im Normalfall ebenfalls einhalten; eine andere Reihenfolge hat
     allerdings keinerlei Auswirkungen auf die Funktionsweise von dispad-
     min.





Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

ts_dptbl(4)                                                     ts_dptbl(4)

     # Konfiguration des Time-Sharing-Schedulers
     RES=1000

     # tsquantum  tstqexp  tsslpret  tsmaxwait tslwait  PRIORITÄTSSTUFE
           1000         0        10           5        10        #     0
           1000         0        11           5        11        #     1
           1000         1        12           5        12        #     2
           1000         1        13           5        13        #     3
           1000         2        14           5        14        #     4
           1000         2        15           5        15        #     5
           1000         3        16           5        16        #     6
           1000         3        17           5        17        #     7
           1000         4        18           5        18        #     8
           1000         4        19           5        19        #     9
            800         5        20           5        20        #    10
            800         5        21           5        21        #    11
              .         .         .           .         .        .     .
            100        48        59           5        59        #    58
            100        49        59           5        59        #    59

PROZESSOR-AFFINITÄT UND BINDUNGS-BETRACHTUNGEN
     Um die Trefferquoten eines Multiprozessor-Systems im Cache-Speicher zu
     erhöhen, sollte ein Prozeß im Normalfall auf einem bestimmten Prozes-
     sor ablaufen. Diese Affinität zu einem bestimmten Prozessor kann die
     erforderliche Speicherbandbreite des Prozesses (und für das System als
     Ganzes) verringern. Wenn ein Prozeß nicht erst "vor kurzem" abgelaufen
     ist, befinden sich für jeden der Prozessoren mit hoher Wahrscheinlich-
     keit nur noch wenige Daten im Cache-Speicher - und dadurch sollte er
     seine Affinität für einen bestimmten Prozessor verlieren.

     Dieser Affinitäts-Mechanismus kann vom Systemverwalter prozeßweise
     aktiviert und deaktiviert werden [siehe mpcntl(1M), mpcntl(3X)]. Der
     Affinitäts-Mechanismus ist für die TS-Klasse standardmäßig auf on
     gestellt.

     Ein Prozeß kann auch an zwei oder mehr Prozessoren gebunden werden.
     Dies bewirkt, daß der Prozeß ausschließlich auf einem Prozessor aus
     dieser Gruppe abläuft. Wenn es einen aktuell verfügbaren Prozessor
     gibt, an den der Prozeß jedoch nicht gebunden ist, wartet der Prozeß
     so lange, bis auf keinem Prozessor aus seiner Gruppe mehr ein Prozeß
     mit höherer Priorität läuft.

     Die Bindung an einen bestimmten Prozessor bzw. eine bestimmte
     Prozessor-Gruppe kann vom Prozeß [siehe mpcntl(3X)] oder vorübergehend
     vom Systemkern hergestellt werden (im letzteren Fall muß der System-
     kern gerade einen Treiber-Code ausführen, der auf einer bestimmten CPU
     ablaufen muß).







Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

ts_dptbl(4)                                                     ts_dptbl(4)

HINWEISE
     dispadmin überprüft die in der Konfigurationsdatei enthaltenen Werte
     im begrenzten Umfang auf Plausibilität. Durch die Plausibilitätsprü-
     fung soll sichergestellt werden, daß die neuen tsdptbl-Werte nicht zu
     Panic-Meldungen des Systems führen. Es ist nicht das Ziel der Plausi-
     bilitätsprüfung, die Auswirkungen der neuen Werte auf die Systemlei-
     stung zu überprüfen. Durch ungewöhnliche tsdptbl-Konfigurationen kann
     die Systemleistung drastisch verringert werden.

     Die Plausiblität der tsdptbl-Werte in der Datei ts/space.c wird nicht
     überprüft. Wenn die Werte in der Datei ts/space.c inkonsistent sind
     oder keinen Sinn machen, kann dies zu einer drastischen Verringerng
     der Systemleistung und/oder zu Panic-Meldungen des Systems führen.

DATEIEN
     /usr/include/sys/ts.h

     /etc/conf/pack.d/ts/space.c

SIEHE AUCH
     priocntl(1), dispadmin(1M), idbuild(1M), mpcntl(1M), priocntl(2),
     mpcntl(3X).
































Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026