Priorité des processus et des unités d'exécution
Les outils de gestion des priorités manipulent la priorité des processus.
Dans la version 4 d'AIX, la priorité des processus est un précurseur de la priorité des threads. Lorsque la sous-routine fork() est appelée, un processus et une unité d'exécution qui doivent y être exécutés sont créés. L'unité d'exécution a la priorité qui aurait été attribuée au processus.
Le noyau gère une valeur de priorité (parfois appelée priorité de planification) pour chaque unité d'exécution. La valeur de priorité est un entier positif et varie inversement avec l'importance de l'unité d'exécution associée. Autrement dit, une valeur de priorité plus petite indique une unité d'exécution plus importante. Lorsque le planificateur recherche une unité d'exécution à répartir, il choisit l'unité d'exécution du répartiteur avec la plus petite valeur de priorité.
Une unité d'exécution peut être à priorité fixe ou à priorité non fixe. La valeur de priorité d'une unité d'exécution à priorité fixe est constante, tandis que la valeur de priorité d'une unité d'exécution à priorité non fixe varie en fonction du niveau de priorité minimal pour les unités d'exécution utilisateur (une constante 40), de la valeur nice de l'unité d'exécution (20 par défaut, éventuellement définie par la commande nice ou la commande renice) et de sa pénalité d'utilisation du processeur.
La priorité d'une unité d'exécution peut être fixée à une certaine valeur, qui peut avoir une valeur de priorité inférieure à 40, si sa priorité est définie (fixe) via la sous-routine setpri(). Ces unités d'exécution sont immunisées contre les algorithmes de recalcul du planificateur. Si leurs valeurs de priorité sont fixées sur une valeur inférieure à 40, ces unités d'exécution s'exécuteront et se termineront avant que les unités d'exécution utilisateur ne puissent s'exécuter. Par exemple, une unité d'exécution dont la valeur fixe est 10 s'exécutera avant une unité d'exécution dont la valeur fixe est 15.
Les utilisateurs peuvent appliquer la commande nice pour rendre la priorité non fixe d'une unité d'exécution moins favorable. Le gestionnaire du système peut appliquer une valeur nice négative à une unité d'exécution, lui donnant ainsi une meilleure priorité.
L'illustration suivante montre certaines des manières dont la valeur de priorité peut changer.

La valeur nice d'une unité d'exécution est définie lorsque l'unité d'exécution est créée et est constante pendant toute la durée de vie de l'unité d'exécution, sauf si elle a été explicitement modifiée par l'utilisateur via la commande renice ou les appels système setpri(), setpriority(), thread_setsched() ou nice().
La pénalité du processeur est un entier qui est calculé à partir de l'utilisation récente du processeur d'une unité d'exécution. L'utilisation récente du processeur augmente d'environ 1 à chaque fois que l'unité d'exécution contrôle le processeur à la fin d'une graduation d'horloge de 10 ms, jusqu'à une valeur maximale de 120. La pénalité de priorité réelle par graduation augmente avec la valeur nice. Une fois par seconde, les valeurs d'utilisation du processeur pour toutes les unités d'exécution sont recalculées.
Le résultat est le suivant :
- La priorité d'une unité d'exécution non fixe devient moins favorable à mesure que son utilisation récente du processeur augmente, et inversement. Cela implique qu'en moyenne, plus une unité d'exécution s'est vue attribuer de tranches de temps récemment, moins il est probable que l'unité d'exécution se verra attribuer la tranche de temps suivante.
- La priorité d'une unité d'exécution non fixe devient moins favorable à mesure que sa valeur nice augmente, et inversement.
Vous pouvez utiliser la commande ps pour afficher la valeur de priorité, la valeur nice et les valeurs d'utilisation du processeur à court terme d'un processus.
Pour plus d'informations sur l'utilisation des commandes nice et renice , voir Contrôle des conflits pour le microprocesseur .
Voir Calcul de la valeur de priorité d'unité d'exécutionpour plus de détails sur le calcul de la pénalité de processeur et la diminution des valeurs d'utilisation de processeur récentes.
Le mécanisme de priorité est également utilisé par AIX Workload Manager pour appliquer la gestion des ressources processeur. Etant donné que les priorités des unités d'exécution classées dans le Gestionnaire de charge de travail sont gérées par le Gestionnaire de charge de travail, elles peuvent avoir un comportement de priorité différent de celui des unités d'exécution non classées dans le Gestionnaire de charge de travail.