Contrôle de l'utilisation du processeur

Cette section explique comment contrôler l'utilisation des processeurs sur le système multiprocesseur.

Sur un système multiprocesseur, l'utilisation des processeurs peut être contrôlée de la manière suivante:
  • Un utilisateur peut forcer un processus ou des unités d'exécution de noyau à s'exécuter sur un processeur spécifique.

Processus de liaison et unités d'exécution du noyau

Les utilisateurs peuvent forcer leurs processus à s'exécuter sur un processeur donné ; cette action est appelée liaison. Un administrateur système peut lier n'importe quel processus. A partir de la ligne de commande, la liaison est contrôlée à l'aide de la commande bindprocessor .

Le processus lui-même n'est pas lié, mais ses unités d'exécution de noyau sont liées. Une fois que les unités d'exécution du noyau sont liées, elles sont toujours planifiées pour s'exécuter sur le processeur choisi, sauf si elles sont ultérieurement non liées. Lorsqu'une nouvelle unité d'exécution du noyau est créée, elle possède les mêmes propriétés de liaison que son créateur.

Cette situation s'applique à l'unité d'exécution initiale dans le nouveau processus créé par la sous-routine fork ; la nouvelle unité d'exécution hérite des propriétés de liaison de l'unité d'exécution qui a appelé la sous-routine fork . Lorsque la sous-routine exec est appelée, les propriétés de liaison restent inchangées. Une fois qu'un processus est lié à un processeur, si aucune autre action de liaison ou de suppression de liaison n'est effectuée, tous les processus enfant sont liés au même processeur.

Il est uniquement possible de lier des processus à des processeurs activés à l'aide de numéros de processeur logique. Pour obtenir la liste des numéros de processeurs logiques disponibles, utilisez la commande bindprocessor -q. Pour un système avec quatre processeurs activés, cette commande génère une sortie similaire à la suivante:
The available processors are: 0 1 2 3

La liaison peut également être contrôlée dans un programme à l'aide de la sous-routine bindprocessor , qui permet au programmeur de lier une seule unité d'exécution de noyau ou toutes les unités d'exécution de noyau d'un processus. Le programmeur peut également annuler la liaison d'une seule unité d'exécution de noyau ou de toutes les unités d'exécution de noyau d'un processus.