Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ priocntl(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

nice(1)

ps(1)

priocntl(2)

priocntl(1)                                                     priocntl(1)

NAME
     priocntl - Zeitscheibenverteilung und Prioritäten einstellen (priority
     control)

SYNTAX
     priocntl -l                                                   Format 1

     priocntl -d [-i typ] [liste]                                  Format 2

     priocntl -s [-c klasse] [option ...] [-i typ] [liste]         Format 3

     priocntl -e [-c klasse] [option ...] kommando [argumente]     Format 4

BESCHREIBUNG
     Mit priocntl können Sie

     -  Parameter für die Zeitscheibenverteilung (also die Zuweisung von
        Rechenzeit) der angegebenen Prozesse anzeigen oder einstellen,

     -  Informationen über die augenblickliche Konfiguration des Scheduler
        anzeigen. Der Scheduler ist der Prozeß, der die Zeitscheibenvertei-
        lung für alle Prozesse regelt.

     -  ein Kommando mit bestimmten Parametern für die Zeitscheibenvertei-
        lung ausführen.

     Es gibt verschiedene Klassen von Prozessen mit jeweils unterschiedli-
     chen Zielen und Strategien zur Zeitscheibenverteilung, wobei jeder
     Prozeß genau einer Klasse angehört. Zur Zeit werden die drei Klassen
     Echtzeit (Realtime), Time-Sharing und Fixed-Priority unterstützt. Die
     Eigenschaften dieser Klassen sowie die jeweils zulässigen Optionen
     werden in den Abschnitten Die Klasse "Echtzeit" (Realtime), Die Klasse
     "Time-Sharing" und Die Klasse "Fixed-Priority" erläutert. Vorausge-
     setzt, Sie haben ausreichende Berechtigung, können Sie mit priocntl
     die Klasse eines laufenden Prozesses sowie andere Parameter zur Zeit-
     scheibenverteilung ändern.

     Vorsicht:  Einem ablauffähigen Prozeß der Klasse Echtzeit wird vor
                allen anderen Prozessen Rechenzeit zugeteilt. Unsachgemäßer
                Einsatz von Echtzeit-Prozessen kann das Laufzeitverhalten
                des Systems daher dramatisch verschlechtern!














Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

   Format 1: Informationen über alle Klassen ausgeben

     priocntl -l

     -l   (l - list) Es werden alle augenblicklich im System konfigurierten
          Klassen sowie Informationen über die einzelnen Klassen ausgege-
          ben. Format und Bedeutung dieser Informationen werden unten bei
          den jeweiligen Klassen erläutert.

   Format 2: Klasse und Parameter für Prozesse ausgeben

     priocntl -d [-i typ] [liste]

     -d   (d - display) Es werden die Klasse und klassenabhängige Parameter
          zur Zeitscheibenverteilung für die angegebenen Prozesse ange-
          zeigt.

     -i typ
          (i - identifier) Mit -i typ und einer eventuell angegebenen liste
          können ein oder mehrere Prozesse spezifiziert werden, auf die
          priocntl angewandt werden soll. Die Interpretation der liste
          hängt vom angegebenen typ ab. Im folgenden sind die zulässigen
          Werte für typ sowie die zugehörige Interpretation der liste ange-
          geben:

          -i pid    liste ist eine Liste von Prozeßnummern. priocntl wird
                    auf alle Prozesse angewandt, deren Prozeßnummer in der
                    Liste steht.

          -i ppid   liste ist eine Liste von Vaterprozeßnummern. priocntl
                    wird auf alle Prozesse angewandt, deren Vaterprozeßnum-
                    mer in der Liste steht.

          -i pgid   liste ist eine Liste von Prozeßgruppennummern. priocntl
                    wird auf alle Prozesse angewandt, die zu einer Prozeß-
                    gruppe in der Liste gehören.

          -i sid    liste ist eine Liste von Sitzungsnummern. priocntl wird
                    auf alle Prozesse angewandt, die zu einer der Sitzungen
                    in der Liste gehören.

          -i class  liste ist der Name einer einzelnen Klasse. Sie können
                    entweder RT für die Klasse Echtzeit, TS für die Klasse
                    Time-Sharing oder FP für die Klasse Fixed-Priority
                    angeben. priocntl wird auf alle Prozesse der angegebe-
                    nen Klasse angewandt.








Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

          -i uid    liste ist eine Liste von Benutzernummern. priocntl wird
                    auf alle Prozesse angewandt, deren effektive Benutzer-
                    nummer in der Liste steht.

          -i gid    liste ist eine Liste von Gruppennummern. priocntl wird
                    auf alle Prozesse angewandt, deren effektive Gruppen-
                    nummer in der Liste steht.

          -i all    priocntl wird auf alle existierenden Prozesse ange-
                    wandt. In diesem Fall wird liste ignoriert. Die Liste
                    der Prozesse kann jedoch eingeschränkt werden, wenn Sie
                    nicht über ausreichende Berechtigung verfügen.

          -i typ nicht angegeben:

          Als Identifikationstyp wird pid verwendet.

     liste
          liste spezifiziert die Prozesse, auf die priocntl angewandt wer-
          den soll. Die Bedeutung der Listenelemente ist bei der Option -i
          beschrieben. Wenn eine liste angegeben wird, muß sie am Ende der
          Kommandozeile stehen. Die einzelnen Listenelemente müssen durch
          Leerzeichen oder Tabulatorzeichen voneinander getrennt werden.

          liste nicht angegeben:

          Wurde bei der Option -i für das Argument typ der Wert pid, ppid,
          pgid, sid, class, uid oder gid angegeben, so wird jeweils die
          eigene Prozeßnummer, Vaterprozeßnummer, Prozeßgruppennummer, Sit-
          zungsnummer, Klasse, Benutzernummer oder Gruppennummer des Kom-
          mandos priocntl verwendet.

   Format 3: Klasse und Parameter für Prozesse einstellen

     priocntl -s [-c klasse] [option ...] [-i typ] [liste]

     -s   (s - set) Die Klasse und klassenspezifische Parameter werden für
          die angegebenen Prozesse auf die in der Kommandozeile angegebenen
          Werte eingestellt.

     -c klasse
          (c - class) klasse gibt an, welche Klasse für die Zeitscheiben-
          verteilung eingestellt werden soll. Zulässige Werte für klasse
          sind RT für Echtzeit, TS für Time-Sharing und FP für Fixed-
          Priority.









Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

          -c klasse nicht angegeben:

          typ und liste müssen Prozesse bezeichnen, die alle zur selben
          Klasse gehören. Andernfalls beendet sich priocntl mit einer Feh-
          lermeldung.

     option
          Hier geben Sie klassenspezifische Optionen an. Mögliche Optionen
          für die einzelnen Klassen werden in den Abschnitten Die Klasse
          "Echtzeit" (Realtime), Die Klasse "Time-Sharing" und Die Klasse
          "Fixed-Priority" beschrieben.

          Keine Optionen angegeben:

          Die klassenabhängigen Parameter werden auf die Standardwerte für
          die bei -c klasse angegebene Klasse gesetzt. Falls die Option -c
          klasse auch nicht angegeben wurde, werden die Standardwerte für
          die augenblickliche Klasse des Prozesses eingestellt.

     -i typ
          Mit dieser Option können die Prozesse spezifiziert werden, deren
          Parameter eingestellt werden sollen. Die möglichen Werte sind
          unter Format 2 beschrieben.

     liste
          Zusammen mit -i typ spezifiziert liste die Prozesse, deren Para-
          meter eingestellt werden sollen. Einzelheiten sind unter Format 2
          beschrieben.

     Damit Sie für einen bestimmten Prozeß die Parameter für die Zeitschei-
     benverteilung mit priocntl ändern können, muß Ihre reale oder effek-
     tive Benutzernummer gleich der realen oder effektiven Benutzernummer
     dieses Prozesses sein, es sei denn, Sie haben als effektive Benutzer-
     nummer die des Systemverwalters. Dies sind die Mindestvoraussetzungen,
     die für alle Klassen gelten. Für einzelne Klassen können zusätzliche
     Beschränkungen gelten, wenn ein Prozeß diese Klasse erhalten soll oder
     spezielle Parameter für diese Klasse eingestellt werden sollen.

     Wenn mit -i typ und liste eine Liste von Prozessen angegeben wurde,
     behandelt priocntl die Prozesse in einer implementierungsabhängigen
     Reihenfolge. Falls bei einem oder mehreren der angegebenen Prozessen
     ein Fehler auftritt, fährt priocntl je nach Art des Fehlers mit den
     anderen Prozessen in der Liste fort oder beendet sich. Wenn der Fehler
     auf mangelnde Berechtigung zurückzuführen ist, gibt priocntl eine Feh-
     lermeldung aus und behandelt dann die anderen Prozesse in der Liste.
     Die angegebenen Parameter werden dann für alle Prozesse eingestellt,
     für die Sie ausreichende Berechtigung haben. Wenn der Fehler eine
     andere Ursache hat, werden die anderen Prozesse in der Liste nicht
     mehr behandelt. priocntl gibt in diesem Fall eine Fehlermeldung aus
     und beendet sich dann sofort.




Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     Für die Zeitscheibenverteilung bei der Ausführung gewisser Systempro-
     zesse gibt es die besondere Klasse sys (der swapper-Prozeß zur Ein-
     und Auslagerung auf Platte gehört zum Beispiel dieser Klasse an). Ein
     Prozeß kann niemals nachträglich die Klasse sys erhalten. Außerdem
     werden Prozesse der Klasse sys ignoriert, wenn sie mit -i typ und
     liste angegeben werden.

     Beispiel:
          Für typ wurde der Wert uid angegeben und liste besteht nur aus
          dem Wert 0. Dann werden die Prozesse mit der Benutzernummer 0
          spezifiziert. Hiervon ausgenommen sind allerdings die Prozesse
          der Klasse sys und (falls die Parameter mit der Option -s geän-
          dert werden sollen) der Prozeß init.

     Der Prozeß init mit der Prozeßnummer 1 stellt einen Sonderfall dar.
     Wenn Sie mit priocntl die Klasse oder andere Parameter für die Zeit-
     scheibenverteilung ändern wollen, müssen Sie für typ den Wert pid
     angeben und liste darf nur den Wert 1 enthalten. Sie können dem Prozeß
     init zwar jede beliebige Klasse zuweisen, die auf dem System konfigu-
     riert ist, die Klasse Time-Sharing ist jedoch fast immer angemessen.
     Andere Klassen können sich sehr nachteilig auswirken.

   Format 4: Ein Kommando mit bestimmten Parametern ausführen

     priocntl -e [-c klasse] [option ...] kommando [argumente]

     -e   (e - execute) Das kommando wird in der angegebenen Klasse mit den
          angegebenen Optionen für die Zeitscheibenverteilung ausgeführt.

     -c klasse
          klasse gibt an, welche Klasse das auszuführende Kommando erhalten
          soll. Zulässige Werte für klasse sind RT für Echtzeit, TS für
          Time-Sharing und FP für Fixed-Priority.

          -c klasse nicht angegeben:

          Das Kommando wird mit Ihrer augenblicklichen Klasse ausgeführt.

     option
          Hier geben Sie klassenspezifische Optionen an. Mögliche Optionen
          für die einzelnen Klassen werden in den Abschnitten Die Klasse
          "Echtzeit" (Realtime), Die Klasse "Time-Sharing" und Die Klasse
          "Fixed-Priority" beschrieben.

          Keine Optionen angegeben:

          Das Kommando wird mit den Standardwerten für die bei -c klasse
          angegebene Klasse ausgeführt. Falls die Option -c klasse auch
          nicht angegeben wurde, wird das Kommando mit den Standardwerten
          für Ihre augenblickliche Klasse ausgeführt.




Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     kommando
          Das Kommando, das in der angegebenen Klasse mit den angegebenen
          Parametern ausgeführt werden soll.

     argumente
          Argumente für das auszuführende Kommando.

   Die Klasse "Echtzeit" (Realtime)

     In der Klasse Echtzeit erfolgt die Verteilung der Zeitscheiben für die
     Zentraleinheit (CPU) nach festen Prioritäten und unter der Maßgabe,
     daß ein Prozeß einen anderen von der CPU "verdrängen" kann (preemptive
     scheduling). Dies ist für solche Prozesse sinnvoll, die kurze und vor-
     hersehbare Antwortzeiten sowie die vollständige Steuerung der Priori-
     täten durch den Benutzer benötigen. Falls die Klasse Echtzeit auf dem
     System konfiguriert ist, sollte sie vollständige Kontrolle über den
     höchsten Bereich der Prioritäten für die Zeitscheibenverteilung haben.
     Damit wird gewährleistet, daß ein ablauffähiger Prozeß der Klasse
     Echtzeit vor jedem anderen Prozeß jeder anderen Klasse Rechenzeit
     erhält.

     Einem Prozeß der Klasse Echtzeit kann eine Echtzeit-Priorität (real-
     time priority, rtpri) zugeordnet werden. Dieser Wert liegt zwischen 0
     und einem Maximalwert x, wobei der Wert von x konfiguriert werden
     kann. Er kann für eine spezielle Konfiguration mit dem Kommando
     priocntl -l angezeigt werden.

     Die Verteilung der Zeitscheiben für Prozesse der Klasse Echtzeit
     erfolgt nach festen Prioritäten. Die Priorität eines Echtzeit-Prozes-
     ses wird niemals verändert, es sei denn, der Benutzer oder ein Anwen-
     dungsprogramm wollen die Priorität explizit verändern.

     Für einen Prozeß der Klasse Echtzeit ist der Wert rtpri praktisch
     gleich der internen Priorität für die Zuteilung von Rechenzeit an die-
     sen Prozeß. Dieser Wert bestimmt die Priorität eines Echtzeit-Prozes-
     ses im Verhältnis zu anderen Prozessen dieser Klasse. Ein höherer Wert
     von rtpri steht für eine höhere Priorität. Da die Klasse Echtzeit den
     höchsten Bereich der Prioritäten für die Zuteilung von Rechenzeit
     steuert, ist gewährleistet, daß ein ablauffähiger Prozeß mit dem höch-
     sten Wert von rtpri vor jedem anderen Prozeß im System Rechenzeit
     erhält.

     Zusätzlich zur Steuerung der Prioritäten können Sie mit priocntl die
     Länge der Zeitscheiben beeinflussen, die einem Prozeß der Klasse Echt-
     zeit zugeteilt werden. Die Länge der Zeitscheibe gibt an, wie lange
     ein Prozeß höchstens Rechenzeit erhält, vorausgesetzt, er wartet nicht
     auf ein externes Ereignis (sleep) wie z. B. Durchführung eines Fest-
     plattenzugriffs. Ein Prozeß kann jedoch vor Ablauf seiner Zeitscheibe
     unterbrochen werden, wenn ein anderer Prozeß mit höherer Priorität
     ablauffähig wird.




Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     Sie können die Priorität und die Länge der Zeitscheibe für einen Pro-
     zeß der Klasse Echtzeit mit dem Kommando

     priocntl -d[ -i typ] [liste]

     anzeigen lassen. Die Länge der Zeitscheibe wird dabei in Millisekunden
     ausgegeben. Die Werte werden für jeden spezifizierten Prozeß der
     Klasse Echtzeit ausgegeben.

     Zulässige Optionen für das Setzen von Echtzeit-Parametern (Optionen -s
     und -e):

     -p rtpri
          Die Echtzeit-Priorität des angegebenen Prozesses bzw. der angege-
          benen Prozesse wird auf rtpri gesetzt.

          Option -p nicht angegeben:

          Wenn der Prozeß bereits der Klasse Echtzeit angehört, bleibt die
          Priorität unverändert. Wenn ein Prozeß einer anderen Klasse die
          Klasse Echtzeit erhält, wird die Priorität auf den Standardwert 0
          gesetzt.

     -t zeitdauer
          Die Länge der Zeitscheibe für den angegebenen Prozeß bzw. die
          angegebenen Prozesse wird auf zeitdauer gesetzt. Wird als Zeit-
          dauer 0 angegeben oder ein Wert, der über dem Maximalwert für die
          Dauer von Zeitscheiben liegt, wird mit einer Fehlermeldung abge-
          brochen. Der Maximalwert hängt von der Implementierung ab.

          Option -t nicht angegeben:

          Wenn der Prozeß bereits der Klasse Echtzeit angehört, bleibt die
          Länge der Zeitscheibe unverändert. Wenn ein Prozeß einer anderen
          Klasse die Klasse Echtzeit erhält, wird die Länge der Zeitscheibe
          auf einen Standardwert gesetzt, der von der Priorität und der
          Konfiguration des Systems abhängt [siehe rtdptbl(4)].

     -r auflösung
          (r - resolution) auflösung gibt an, in welcher Einheit bei der
          Option -t die Länge der Zeitscheibe angegeben wird. auflösung ist
          eine positive ganze Zahl zwischen 1 und 1.000.000.000 (ein-
          schließlich). Der reziproke Wert von auflösung gibt die benutzte
          Einheit in Sekunden an.

          Beispiel:
               -t 10 -r 100 gibt als Zeiteinheit 1/100 Sekunde an und die
               Zeitdauer wird auf 10/100 Sekunden, also 1/10 Sekunde
               gesetzt.





Seite 7                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

          Obwohl eine sehr hohe Auflösung angegeben werden kann (nämlich
          eine Nanosekunde), wird die angegebene Zeitdauer immer auf das
          nächste ganzzahlige Vielfache der Auflösung der Systemuhr aufge-
          rundet.

          Beispiel:
               Die höchste Auflösung auf einem System beträgt 10 Millise-
               kunden. Wird mit den Optionen -t und -r eine Zeitdauer von
               34 Millisekunden angegeben, so wird bei diesem System auf 40
               Millisekunden aufgerundet.

          Die Option -r kann nur zusammen mit der Option -t angegeben wer-
          den.

          Option -r nicht angegeben:

          Es wird 1 Millisekunde als Einheit für die Länge der Zeitscheiben
          bei -t verwendet.

     Jede Kombination der Optionen -p und -t (und eventuell -r) kann mit -s
     oder -e verwendet werden.

     Nur der Systemverwalter kann einem Prozeß einer anderen Klasse die
     Klasse Echtzeit geben. Wenn Sie die Priorität oder die Länge der Zeit-
     scheibe für einen Echtzeit-Prozeß ändern wollen, müssen Sie entweder
     Systemverwalterberechtigung haben oder bereits in der Klasse Echtzeit
     sein (Ihr Kommandointerpreter läuft als Echtzeit-Prozeß) und die glei-
     che reale oder effektive Benutzernummer haben wie der Prozeß, dessen
     Parameter geändert werden sollen.

     Die Echtzeit-Priorität und die Länge der Zeitscheibe werden bei den
     Systemaufrufen fork(2) und exec(2) unverändert weitergegeben.

   Die Klasse "Time-Sharing"

     Die Strategie für die Verteilung der Zeitscheiben in der Klasse Time-
     Sharing ist auf eine gleichmäßige und effektive Zuteilung der CPU-
     Rechenzeit für Prozesse mit unterschiedlicher CPU-Ausnutzung ausge-
     legt. Die Ziele dieser Strategie sind gute Antwortzeiten bei interak-
     tiven Prozessen und guter Durchsatz bei rechenintensiven Anwendungen.
     Die Verteilung der Zeitscheiben soll zu einem gewissen Maß vom Benut-
     zer beeinflußbar sein.

     Einem Prozeß der Klasse Time-Sharing kann eine Time-Sharing-Priorität
     (time-sharing user priority, tsupri) zugeordnet werden. Dieser Wert
     liegt zwischen -x und +x, wobei der Wert von x konfiguriert werden
     kann. Er kann für eine spezielle Konfiguration mit dem Kommando
     priocntl -l angezeigt werden.






Seite 8                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     Mit der vom Benutzer einstellbaren Time-Sharing-Priorität kann die
     Zuteilung von Rechenzeit an Prozesse der Klasse Time-Sharing zu einem
     gewissen Maß beeinflußt werden. Wird der Wert tsupri für einen Prozeß
     der Klasse Time-Sharing erhöht oder vermindert, so wird auch die
     interne Priorität dieses Prozesses bei der Zeitscheibenverteilung
     erhöht oder vermindert. Es ist jedoch nicht gewährleistet, daß ein
     Prozeß der Klasse Time-Sharing mit einem höheren tsupri-Wert vor einem
     Prozeß mit niedrigerem tsupri-Wert Rechenzeit erhält. Der Wert tsupri
     ist nämlich nur eine Komponente bei der Bestimmung der internen Prio-
     rität für die Verteilung der Zeitscheiben. Das System kann die interne
     Priorität eines Time-Sharing-Prozesses dynamisch anpassen, wobei
     andere Faktoren eine Rolle spielen (z. B. bisherige CPU-Ausnutzung).

     Zusätzlich zu den systemspezifischen Grenzwerten für die Benutzer-
     Priorität, die mit priocntl -l angezeigt werden können, gibt es für
     jeden Prozeß einen Grenzwert für die Benutzer-Priorität, die dieser
     Prozeß erhalten kann (time-sharing user priority limit, tsuprilim).

     Sie können die Benutzer-Priorität und den Grenzwert für die Benutzer-
     Priorität für einen Prozeß der Klasse Time-Sharing mit dem Kommando

     priocntl -d [-i typ] [liste]

     anzeigen lassen. Die Werte werden für jeden spezifizierten Prozeß der
     Klasse Time-Sharing ausgegeben.

     Zulässige Optionen für das Setzen von Time-Sharing-Parametern (Optio-
     nen -s und -e):

     -m tsuprilim
          Darf nur gemeinsam mit -e oder -s gesetzt werden. Der Grenzwert
          für die Benutzer-Priorität wird für den angegebenen Prozeß bzw.
          die angegebenen Prozesse auf den Wert tsuprilim gesetzt.

          Jeder Prozeß der Klasse Time-Sharing kann den Grenzwert für die
          Benutzer-Priorität für sich selbst und für jeden anderen Prozeß
          mit der selben Benutzernummer vermindern. Der Grenzwert darf
          jedoch nur von einem Prozeß mit Systemverwalterberechtigung
          erhöht werden. Wenn ein Prozeß einer anderen Klasse die Klasse
          Time-Sharing erhält, darf ebenfalls nur der Systemverwalter einen
          Grenzwert einstellen, der größer als Null ist.

          Option -m nicht angegeben:

          Wenn der Prozess der Klasse Time-Sharing angehört, bleibt der
          Grenzwert unverändert. Wenn ein Prozeß einer anderen Klasse die
          Klasse Time-Sharing erhält, wird der Grenzwert auf den Standard-
          wert 0 gesetzt.






Seite 9                      Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     -p tsupri
          Darf nur gemeinsam mit -e oder -s gesetzt werden. Die Benutzer-
          Priorität des angegebenen Prozesses bzw. der angegebenen Prozesse
          wird auf den Wert tsupri gesetzt.

          Jeder Prozeß der Klasse Time-Sharing kann seine eigene Benutzer-
          Priorität oder die eines anderen Prozesses mit der selben Benut-
          zernummer auf einen Wert einstellen, der kleiner oder gleich dem
          Grenzwert für diesen Prozeß ist. Wenn Sie einen größeren Wert
          einstellen wollen oder den Grenzwert unter die aktuelle Benut-
          zer-Priorität senken, wird als Benutzer-Priorität der Grenzwert
          eingestellt.

          Option -p nicht angegeben:

          Wenn der Prozeß der Klasse Time-Sharing angehört, bleibt die
          Benutzer-Priorität normalerweise unverändert. Wenn ein Prozeß
          einer anderen Klasse die Klasse Time-Sharing erhält, wird die
          Benutzer-Priorität auf den eingestellten Grenzwert für die
          Benutzer-Priorität gesetzt.

          Ausnahme:

          Die Option -p wurde nicht angegeben und mit -m wurde ein Grenz-
          wert eingestellt, der unter der augenblicklichen Benutzer-Priori-
          tät tsupri liegt. In diesem Fall wird die Benutzer-Priorität auf
          den eingestellten Grenzwert gesetzt.

     Jede Kombination der Optionen -m und -p kann mit -s oder -e verwendet
     werden.

     Die Benutzer-Priorität und der Grenzwert für die Benutzer-Priorität
     werden bei den Systemaufrufen fork(2) und exec(2) unverändert weiter-
     gegeben.

   Die Klasse "Fixed-Priority"

     In der Klasse Fixed-Priority erfolgt die Verteilung der Zeitscheiben
     nach festen Prioritäten und unter der Maßgabe, daß ein Prozeß einen
     anderen von der Zentraleinheit (CPU) "verdrängen" kann (preemptive
     scheduling). Dies ist für solche Prozesse sinnvoll, die kurze und vor-
     hersehbare Antwortzeiten sowie die vollständige Steuerung der Priori-
     täten durch den Benutzer bzw. die Anwendung benötigen.

     Einem Prozeß der Klasse Fixed-Priority kann eine Fixed-Priority-Prio-
     rität (fppri) zugeordnet werden. Dieser Wert liegt zwischen 0 und x,
     wobei der Wert von x konfiguriert werden kann. Er kann für eine spe-
     zielle Konfiguration mit dem Kommando priocntl -l angezeigt werden.






Seite 10                     Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     Wie der Name Fixed-Priority bereits sagt, erfolgt die Verteilung von
     Zeitscheiben nach festen Prioritäten. Die Priorität eines Fixed-
     Priority-Prozesses wird niemals verändert, es sei denn, ein Benutzer
     oder eine Anwendung wollen die Priorität explizit ändern.

     Für einen Prozeß der Klasse Fixed-Priority ist der Wert fppri prak-
     tisch gleich der internen Priorität für die Zuteilung von Rechenzeit
     an diesen Prozeß. Dieser Wert bestimmt die Priorität eines Fixed-
     Priority-Prozesses im Verhältnis zu anderen Prozessen dieser Klasse.
     Ein höherer Wert von fppri steht für eine höhere Priorität.

     Zusätzlich zur Steuerung der Prioritäten können Sie mit priocntl die
     Länge der Zeitscheiben beeinflussen, die einem Prozeß der Klasse
     Fixed-Priority zugeteilt werden. Der Wert für die Zeitscheibe gibt an,
     wie lange ein Prozeß höchstens Rechenzeit erhält, vorausgesetzt, er
     wird nicht beendet, oder er wartet nicht auf ein externes Ereignis
     (sleep). Ein Prozeß kann jedoch vor Ablauf seiner Zeitscheibe unter-
     brochen werden, wenn ein anderer Prozeß mit höherer Priorität ablauf-
     fähig wird.

     Sie können die Priorität und die Länge der Zeitscheibe für einen Pro-
     zeß der Klasse Fixed-Priority mit dem Kommando

     priocntl -d [-i typ] [liste]

     anzeigen lassen. Die Länge der Zeitscheibe wird dabei in Millisekunden
     ausgegeben. Die Werte werden für jeden, über typ und liste angegebenen
     Prozeß der Klasse Fixed-Priority ausgegeben.

     Zulässige Optionen für das Setzen von Fixed-Priority-Parametern:

     -p fppri
          Die Fixed-Priority-Priorität des angegebenen Prozesses bzw. der
          angegebenen Prozesse wird auf fppri gesetzt.

     -t zeitdauer [-r auflösung]
          Die Länge der Zeitscheibe für den angegebenen Prozeß bzw. die
          angegebenen Prozesse wird auf zeitdauer gesetzt. Wahlweise können
          Sie auch eine Auflösung wie unten beschrieben angeben.

     Mit priocntl -s oder priocntl -e für die Klasse Fixed-Priority kann
     jede Kombination der Optionen -p und -t angegeben werden. Wird eine
     Option nicht angegeben, und gehört der Prozeß bereits der Klasse
     Fixed-Priority an, bleibt der zugehörige Parameter unverändert. Wird
     eine Option nicht angegeben, und erhält ein Prozeß einer anderen
     Klasse die Klasse Fixed-Priority, wird der zugehörige Parameter auf
     einen Standardwert gesetzt. Der Standardwert für rtpri ist 0. Der
     Standardwert für die Zeitdauer hängt von der Priorität (fppri) und der
     Konfiguration des Systems ab [siehe fpdptbl(4)].





Seite 11                     Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     Wird die Option -t zeitdauer verwendet, können Sie wahlweise eine Auf-
     lösung mit der Option -r auflösung angeben. (Ohne Angabe der Auflösung
     wird als Einheit Millisekunden angenommen.) Wird auflösung angegeben,
     muß es sich um eine positive ganze Zahl zwischen 1 und 1.000.000.000
     einschließlich handeln. Der reziproke Wert von auflösung gibt die
     benutzte Einheit in Sekunden an. Bei Angabe von -t 10 -r 100 würde die
     Auflösung beispielsweise auf 1/100 Sekunde und die Zeitdauer auf
     10/100 Sekunden (ein Zehntel einer Sekunde) gesetzt. Obwohl eine sehr
     hohe Auflösung angegeben werden kann (nämlich eine Nanosekunde), wird
     die angegebene Zeitdauer immer auf das nächste ganzzahlige Vielfache
     der Auflösung der Systemuhr aufgerundet. Wird als Zeitdauer 0 angege-
     ben oder ein Wert, der über dem Maximalwert für die Dauer von Zeit-
     scheiben liegt, wird mit einer Fehlermeldung abgebrochen. Der Maximal-
     wert hängt von der Implementierung ab.

     Um eine unendliche Zeitscheibe einzustellen, kann anstelle eines Wer-
     tes für zeitdauer der String INFINITE angegeben werden. Falls zeit-
     dauer den Wert DEFAULT besitzt, wird der Zeitscheibenwert der Parame-
     tertabelle des Fixed-Priority-Schedulers [siehe fpdptbl(4)] einge-
     setzt.

     Nur ein Benutzer mit Systemverwalterberechtigung kann mit priocntl
     einem Prozeß einer anderen Klasse die Klasse Fixed-Priority geben.
     Wenn Sie die Priorität oder die Länge der Zeitscheibe für einen
     Fixed-Priority-Prozeß ändern wollen, müssen Sie entweder Systemverwal-
     terberechtigung haben oder bereits in der Klasse Fixed-Priority sein
     (Ihr Kommandointerpreter läuft als Fixed-Priority-Prozeß) und die
     gleiche reale oder effektive Benutzernummer haben wie der Prozeß, des-
     sen Parameter geändert werden sollen.

     Die Fixed-Priority-Priorität und die Länge der Zeitscheibe werden bei
     den Systemaufrufen fork(2) und exec(2) unverändert weitergegeben.

PROZESSOR-AFFINITÄT UND BINDUNGSBETRACHTUNGEN
     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 Time-Sharing- und Fixed-Priority-
     Klasse standardmäßig auf on, für die Echtzeit-Klasse auf off gestellt.







Seite 12                     Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     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 Prozes-
     sorgruppe kann vom Prozeß [siehe mpcntl(3X)] oder vorübergehend vom
     Systemkern hergestellt werden (im letzteren Fall muß der Systemkern
     gerade einen Treiber-Code ausführen, der auf einer bestimmten CPU
     ablaufen muß).

FEHLERMELDUNGEN

     Process(es) not found
          Keiner der angegebenen Prozesse existiert in den unterstützten
          Scheduler-Klassen.

     Specified processes from different classes
          Die Option -s zum Einstellen von Parametern wurde angegeben, die
          Option -c klasse wurde nicht angegeben, und die spezifizierten
          Prozesse gehören verschiedenen Klassen an.

     Invalid option or argument
          Eine Option oder ein Argument für eine Option ist unbekannt oder
          ungültig.

     Permissions error encountered on pid x
          Sie haben keine Berechtigung, die Einstellungen für den Prozeß
          mit der Prozeßnummer x zu ändern.

BEISPIELE
     Beispiel 1

     Durch die folgende Eingabe erhalten die Prozesse mit den angegebenen
     Prozeßnummern die Klasse Echtzeit, sofern sie noch nicht zu dieser
     Klasse gehören. Ihre Echtzeit-Priorität wird auf den Standardwert 0
     gesetzt. Die Echtzeit-Parameter anderer Echtzeit-Prozesse bleiben
     unverändert. Die Länge der Zeitscheibe wird für alle angegebenen Pro-
     zesse auf 1/10 Sekunde gestellt (eine Einheit bei einer Auflösung von
     1/10 Sekunde).

     $ priocntl -s -c RT -t 1 -r 10 -i pid 1234 2345 3456

     Beispiel 2

     Die folgende Aufrufzeile startet das angegebene Kommando als Echt-
     zeit-Prozeß mit einer Echtzeit-Priorität von 15 und einer Zeitscheibe
     von 20 Millisekunden.

     $ priocntl -e -c RT -p 15 -t 20 kommando


Seite 13                     Reliant UNIX 5.44               Gedruckt 11/98

priocntl(1)                                                     priocntl(1)

     Beispiel 3

     Mit folgendem Kommando erhalten alle Prozesse mit der Benutzernummer
     17 die Klasse Time-Sharing, sofern sie noch nicht zu dieser Klasse
     gehören. Der Grenzwert für die Benutzer-Priorität und die Benutzer-
     Priorität werden auf den Standardwert 0 gesetzt. Die Time-Sharing-
     Parameter von Prozessen, die bereits der Klasse Time-Sharing angehö-
     ren, bleiben unverändert.

     $ priocntl -s -c TS -i uid 17

     Beispiel 4

     Die folgende Aufrufzeile startet das angegebene Kommando in der Klasse
     Time-Sharing mit dem Grenzwert 0 für die Benutzer-Priorität und der
     Benutzer-Priorität -15.

     $ priocntl -e -c TS -m 0 -p -15 kommando argumente

     Beispiel 5

     priocntl setzt die Klasse aller durch typ und liste angegebenen Pro-
     zesse, die nicht der Klasse Fixed-Priority angehören, auf Fixed-
     Priority und setzt die Fixed-Priority-Priorität auf den Standardwert
     0. Die Echtzeit-Prioritäten aller derzeit der Echtzeit-Klasse angehö-
     rigen Prozesse bleiben unverändert. Die Länge der Zeitscheibe wird für
     alle angegebenen Prozesse auf 1/10 Sekunde gesetzt:

     priocntl -s -c FP -t 1 -r 10 -i typ liste

     Beispiel 6

     priocntl führt das kommando in der Fixed-Priority-Klasse mit einer
     Priorität von 15 und einer Zeitscheibe von 20 Millisekunden aus:

     priocntl -e -c FP -p 15 -t 20 kommando

SIEHE AUCH
     nice(1), ps(1), priocntl(2), fpdptbl(4), rtdptbl(4), tsdptbl(4).















Seite 14                     Reliant UNIX 5.44               Gedruckt 11/98

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