Commande bindprocessor

Objectif

Lie ou délie les unités d'exécution du noyau d'un processus à un processeur.

Syntaxe

bindprocessor Process [ ProcessorNum ] | -q | -u Process{ProcessID [ProcessorNum] | -u ProcessID | -s SmtSetID | -b ID_liaison ProcessorNum | -q }

Descriptif

La commande bindprocessor lie ou délie les unités d'exécution du noyau d'un processus ou répertorie les processeurs disponibles. Le paramètre Processus est l'identificateur du processus dont les unités d'exécution doivent être liées ou non, et le paramètre ProcessorNum est l'identificateur d'unité centrale de liaison du processeur à utiliser. Si le paramètre ProcessorNum est omis, le processus est lié à un processeur sélectionné de manière aléatoire.

Si le traitement multitâche simultané est activé, chaque unité d'exécution matérielle d'un processeur physique est répertoriée en tant que processeur distinct par la commande bindprocessor . Cela permet aux unités d'exécution logicielles d'être liées à chaque unité d'exécution matérielle séparément. Il existe deux unités d'exécution matérielles sur un processeur POWER5 , et sont appelées unité d'exécution matérielle principale et unité d'exécution matérielle secondaire. Le paramètre SmtSetId est la valeur de l'identifiant de l'ensemble multithread simultané d'un thread matériel et est défini comme " 0 pour les threads matériels primaires et " 1 pour les threads matériels secondaires. L'indicateur -s peut être utilisé pour répertorier les processeurs disponibles qui sont toutes des unités d'exécution matérielles principales ou qui sont toutes des unités d'exécution matérielles secondaires. L'indicateur -b répertorie toutes les unités d'exécution matérielles disponibles sur un seul processeur physique sur lequel le paramètre ProcessorNum est l'identificateur d'unité centrale de liaison de l'unité d'exécution matérielle principale ou de l'unité d'exécution matérielle secondaire sur ce processeur. Pour plus d'informations, reportez-vous à la rubrique Utilisation simultanée de plusieurs unités d'exécution dans Concepts généraux de programmation: Ecriture et débogage des programmes .

La commande bindprocessor échoue si le processus cible comporte une pièce jointe de ressource.

Les programmes qui utilisent des liaisons de processeur doivent prendre en compte le partitionnement logique dynamique (DLPAR).

Il est important de comprendre qu'un processus lui-même n'est pas lié, mais que 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 est créée, elle possède les mêmes propriétés de liaison que son créateur. Ceci 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 appelée fork. Lorsque la sous-routine exec est appelée, les propriétés de l'unité d'exécution restent inchangées.

L'indicateur -q de la commande bindprocessor répertorie les identificateurs d'UC de liaison disponibles: vous pouvez utiliser les nombres logiques donnés comme valeurs pour le paramètre ProcessorNum . L'indicateur -u annule la liaison des unités d'exécution d'un processus, ce qui leur permet de s'exécuter sur n'importe quel processeur.

Lorsque le traitement multitâche simultané est activé, l'indicateur -s de la commande bindprocessor vous permet de lier les unités d'exécution d'une application à des processeurs physiques distincts en les répertoriant séparément. L'indicateur -b est utile si vous souhaitez lier toutes les unités d'exécution d'une application aux unités d'exécution matérielles du même processeur physique.

Notes :
  1. La commande bindprocessor est destinée aux systèmes multiprocesseurs. Bien qu'elle fonctionne également sur les systèmes monoprocesseurs, la liaison n'a aucun effet sur ces systèmes.
  2. Vous avez besoin de droits d'accès root pour lier ou délier des unités d'exécution dans des processus que vous ne possédez pas.
  3. Si vous tentez de lier des processus de noyau tels que swapper et sched à partir de l'espace utilisateur, l'opération échoue avec le code d'erreur EPERM . Vous pouvez déterminer les processus de noyau qui échoueront en recherchant l'indicateur SSCHEDPROC dans la structure de processus. Si l'indicateur SSCHEDPROC est défini, la liaison du processus de noyau échoue.

Indicateurs

Article Descriptif
-b Lie toutes les unités d'exécution d'une application aux unités d'exécution matérielles du même processeur physique.
-q Affiche les processeurs disponibles.
-S Lie toutes les unités d'exécution d'une application à des processeurs physiques distincts en répertoriant les processeurs séparément.
-u Annule la liaison des unités d'exécution du processus spécifié.

Exemples

  1. Pour savoir quels processeurs sont disponibles ( ProcessorNum valeurs), entrez:
    bindprocessor -q
    Pour un système à quatre processeurs, la sortie est similaire à la suivante:
    The available processors are: 0 1 2 3
  2. Pour lier les unités d'exécution du processus 19254 au processeur 1, entrez:
    bindprocessor 19254 1
  3. Pour afficher tous les processeurs disponibles qui sont des unités d'exécution matérielles principales, entrez:
    bindprocessor -s 0
    Pour un système à quatre processeurs avec le traitement multitâche simultané activé, la sortie est similaire à la suivante:
    The available processors are: 0 2 4 5
    Pour afficher tous les processeurs disponibles qui sont des unités d'exécution matérielles secondaires, entrez:
    bindprocessor -s 1
    La sortie est similaire à la suivante:
    The available processors are: 1 3 6 7
    Lorsque le traitement multitâche simultané est désactivé à l'aide de la commande smtctl ou sur des systèmes dotés de processeurs qui ne prennent pas en charge le traitement multitâche simultané, les sorties sont les suivantes:
    bindprocessor -s 0
    
    The available processors are: 0 1 2 3
    
    bindprocessor -s 1
    
    SmtSetId 1 is not available
  4. Pour afficher tous les ID UC de liaison disponibles sur un processeur physique doté d'une unité d'exécution matérielle avec l'ID UC de liaison 0, entrez:
    bindprocessor -b 0
    La sortie est similaire à la suivante:
    The available processors are: 0 1
    Entrez à nouveau la commande suivante:
    bindprocessor -b 1
    génère également la même sortie.

Fichier

Article Descriptif
/usr/sbin/processeur de liaison Contient la commande bindprocessor .