Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fp_dptbl(4) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

priocntl(1)

dispadmin(1M)

idbuild(1M)

priocntl(2)

mpcntl(3X)

fp_dptbl(4)                                                     fp_dptbl(4)

NAME
     fpdptbl - Parametertabelle für Fixed-Priority-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
     betreffenden 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 durch-
     gängig numeriert sein (dies hängt von der jeweiligen Konfiguration
     ab).

     In der Fixed-Priority-Klasse gibt es eine kern-interne Tabelle, in der
     für jede Prioritätsstufe ein Eintrag mit den Prioritäten dieser Stufe
     enthalten ist. Diese Tabelle wird als Parametertabelle des Fixed-
     Priority-Schedulers (fpdptbl) bezeichnet. Die Tabelle fpdptbl
     besteht aus einem Array von Parameter-Strukturen (struct fpdpent),
     wobei jeder der n Prioritätsstufen eine Parameter-Struktur zugeordnet
     ist. Die Eigenschaften einer bestimmten Prioritätsstufe i werden durch
     die ite Parameter-Struktur in diesem Array (fpdptbl[i]) definiert.

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

     fpglobpri     Die globale Scheduling-Priorität, die dieser Priori-
                    tätsstufe zugeordnet ist. Die Zuordnung zwischen den
                    Fixed-Priority-Prioritätsstufen und den globalen
                    Scheduling-Prioritäten wird beim Laden des Systems
                    durch die Systemkonfiguration festgelegt. Die Werte von
                    fpglobpri können nicht mit dispadmin(1M) geändert wer-
                    den.








Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

fp_dptbl(4)                                                     fp_dptbl(4)

     fpquantum     Die Zeitdauer in CPU-Takten (HZ), die den Prozessen auf
                    dieser Stufe zugeordnet ist. Der Wert für die Zeitdauer
                    stellt lediglich einen Standard- bzw. Anfangswert für
                    die Prozesse auf einer bestimmten Stufe dar (die einem
                    Fixed-Priority-Prozeß zugeteilte Zeitdauer kann durch
                    den Benutzer mit dem Kommando priocntl(1) oder mit dem
                    Systemaufruf priocntl(2) geändert werden).

     Der Systemverwalter kann das Verhalten des Fixed-Priority-Teils des
     Schedulers durch eine Neukonfiguration von fpdptbl ändern. Hierzu
     gibt es zwei Möglichkeiten, die nachfolgend beschrieben werden.

KONFIGURATION BEIM BINDEN DES SYSTEMKERNS
     Die Tabelle fpdptbl kann beim Binden des Systemkerns neu konfiguriert
     werden, indem die gewünschten Werte in der Datei
     /etc/conf/pack.d/fp/space.c angegeben 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 Fixed-Priority-Prioritätsstufen bzw. der globalen, von der
     Fixed-Priority-Klasse benutzten Scheduling-Prioritäten dar.

DIE DISPADMIN-KONFIGURATIONSDATEI
     Die fpquantum-Werte in der Tabelle fpdptbl können auf einem laufen-
     den System mit dem Kommando dispadmin(1M) überprüft und geändert wer-
     den. Wenn dispadmin für die Fixed-Priority-Klasse aufgerufen wird,
     kann der Systemverwalter die aktuelle fpdptbl-Konfiguration aus der
     kern-internen Tabelle laden oder die kern-interne Tabelle mit Werten
     aus einer Konfigurationsdatei überschreiben. 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 für die Zeitdauer angegebenen Werte interpretiert werden
     sollen. Die Auflösung wird im Format

          RES=res

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







Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

fp_dptbl(4)                                                     fp_dptbl(4)

     In den übrigen Zeilen der Datei werden die fpquantum-Werte für jede
     der Fixed-Priority-Prioritätsstufen angegeben. In der ersten Zeile
     steht die Zeitdauer für die Fixed-Priority-Stufe 0, in der zweiten
     Zeile die Zeitdauer für die Fixed-Priority-Stufe 1 usw. Für jede kon-
     figurierte Fixed-Priority-Prioritätsstufe muß exakt eine Zeile enthal-
     ten sein. Jeder fpquantum-Eintrag muß eine positive Ganzzahl zur
     Angabe der gewünschten Zeitdauer (in der durch res angegebenen Auflö-
     sung) enthalten.

BEISPIEL
     Das folgende Beispiel zeigt einen Auszug aus einer dispadmin-
     Konfigurationsdatei. In jeder Zeile, in der eine Zeitdauer angegeben
     wird, gibt es einen Kommentar zur Angabe der zugehörigen Prioritäts-
     stufe. Die Stufennummern geben die Prioritäten innerhalb der Fixed-
     Priority-Klasse an; die Zuordnung dieser Fixed-Priority-Prioritäten zu
     den entsprechenden globalen Scheduling-Prioritäten wird anhand der
     Konfigurationsdatei fp/space.c festgelegt. Die Stufennummern werden
     lediglich zur einfacheren Lesbarkeit 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 Prio-
     ritätsstufen (von Null bis zur konfigurations-spezifischen maximalen
     Fixed-Priority-Priorität) angeordnet sind. Die Stufennummern in den
     Kommentaren sollten diese Reihenfolge im Normalfall ebenfalls einhal-
     ten; eine andere Reihenfolge hat allerdings keinerlei Auswirkungen auf
     die Funktionsweise von dispadmin.

     # Konfiguration des Fixed-Priority-Schedulers
     RES=1000

     # ZEITDAUER                     PRIORITÄTS-
     # (fpquantum)                      STUFE
           50                      #        0
           50                      #        1
           50                      #        2
           50                      #        3
           50                      #        4
           50                      #        5
           50                      #        6
           50                      #        7
           50                      #        8
           50                      #        9
           50                      #       10
           50                      #       11
            .                      .        .
            .                      .        .
            .                      .        .
           50                      #       73
           50                      #       74






Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

fp_dptbl(4)                                                     fp_dptbl(4)

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 Fixed-Priority-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 einem Prozessor aus seiner Gruppe kein Prozeß mit
     höherer Priorität mehr 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ß).

DATEIEN
     /usr/include/sys/fixpri.h

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

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



















Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

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