Prozess-und Threadpriorität
Die Prioritätsmanagementtools bearbeiten die Prozesspriorität.
In AIX® Version 4 ist die Prozesspriorität ein Vorläufer der Threadpriorität. Wenn die Subroutine fork () aufgerufen wird, werden ein Prozess und ein in ihr auszuführender Thread erstellt. Der Thread hat die Priorität, die dem Prozess zugeordnet worden wäre.
Der Kernel verwaltet für jeden Thread einen Prioritätswert (manchmal auch als Ausführungsprioritätbezeichnet). Der Prioritätswert ist eine positive ganze Zahl und variiert umgekehrt mit der Bedeutung des zugeordneten Threads. Das heißt, ein kleinerer Prioritätswert weist auf einen wichtigeren Thread hin. Wenn der Scheduler nach einem zuzuteilenden Thread sucht, wählt er den zuteilbaren Thread mit dem kleinsten Prioritätswert aus.
Ein Thread kann eine feste Priorität oder eine nicht feste Priorität haben. Der Prioritätswert eines Threads mit fester Priorität ist konstant, während der Prioritätswert eines Threads mit nicht fester Priorität basierend auf der Mindestprioritätsstufe für Benutzerthreads (eine Konstante 40), dem Prioritätswert des Threads (standardmäßig 20, optional mit dem Befehl nice oder renice festgelegt) und der Aussperrung der Prozessorauslastung variiert.
Die Priorität eines Threads kann auf einen bestimmten Wert festgelegt werden, der einen Prioritätswert kleiner als 40 haben kann, wenn ihre Priorität über die Subroutine setpri () festgelegt (festgelegt) wird. Diese Threads sind immun gegen die Algorithmen für die Neuberechnung des Schedulers. Wenn ihre Prioritätswerte auf weniger als 40 festgelegt sind, werden diese Threads ausgeführt und abgeschlossen, bevor Benutzerthreads ausgeführt werden können. Ein Thread mit dem festen Wert 10 wird beispielsweise vor einem Thread mit dem festen Wert 15 ausgeführt.
Benutzer können den Befehl nice anwenden, um die nicht festgelegte Priorität eines Threads ungünstiger zu machen. Der Systemmanager kann einen negativen Prioritätswert auf einen Thread anwenden, um ihm eine bessere Priorität zu geben.
Die folgende Abbildung zeigt einige Möglichkeiten, wie sich der Prioritätswert ändern kann.

Der Prioritätswert eines Threads wird festgelegt, wenn der Thread erstellt wird, und ist über die Lebensdauer des Threads konstant, sofern er nicht explizit durch den Befehl renice oder durch den Systemaufruf setpri (), setpriority (), thread_setsched ()oder nice () geändert wird.
Die Prozessorstrafe ist eine ganze Zahl, die aus der letzten Prozessorauslastung eines Threads berechnet wird. Die aktuelle Prozessorauslastung erhöht sich jedes Mal um ungefähr 1, wenn der Thread den Prozessor am Ende eines 10-ms-Taktimpuls steuert, bis zu einem Maximalwert von 120. Die tatsächliche Prioritätsstrafe pro Teilstrich wird mit dem Wert nice erhöht. Einmal pro Sekunde werden die aktuellen Prozessorbelegungswerte für alle Threads neu berechnet.
Das Ergebnis lautet wie folgt:
- Die Priorität eines Threads ohne feste Priorität wird mit zunehmender Prozessorauslastung weniger günstig und umgekehrt. Dies impliziert, dass je mehr Zeitscheiben ein Thread kürzlich zugeordnet wurde, desto geringer ist die Wahrscheinlichkeit, dass der Thread die nächste Zeitscheibe zugeordnet wird.
- Die Priorität eines Threads ohne feste Priorität wird mit zunehmendem Wert für die Prioritätszahl weniger günstig und umgekehrt.
Mit dem Befehl ps können Sie den Prioritätswert, die Prioritätszahl und die kurzfristige Prozessorauslastung für einen Prozess anzeigen.
Weitere Informationen zur Verwendung der Befehle nice und renice finden Sie unter Konkurrenzsituationen für den Mikroprozessor steuern .
Weitere Informationen zur Berechnung der Prozessorpenalisierung und zur Abnahme der letzten Prozessorauslastungswerte finden Sie im Abschnitt Berechnung des Threadprioritätswerts.
Der Prioritätsmechanismus wird auch von AIX Workload Manager verwendet, um das Prozessorressourcenmanagement durchzusetzen. Da Threads, die unter Workload Manager klassifiziert sind, von Workload Managerverwaltet werden, haben sie möglicherweise ein anderes Prioritätsverhalten als Threads, die nicht unter Workload Managerklassifiziert sind.