Est-il possible de limiter un processus Linux pour qu'il ne puisse s'exécuter que sur un noyau particulier sur une machine particulière?


10

Disons que j'ai une boîte quad-core et quatre processus identiques, chacun avec dix threads. Est-il possible, sous Linux, de dire que le processus A ne peut s'exécuter que sur le CPU 0, que le processus B ne peut s'exécuter que sur le CPU 1, etc.?

Réponses:


16
taskset <affinity mask> -p <process>

c'est à dire

taskset 1 -p 12345

définir le processus 12345 pour utiliser uniquement le processeur / core 1

Le masque binaire peut être une liste (c.-à-d. 1,3,4 pour utiliser les cœurs 1 3 et 4 d'un système à 4 cœurs) ou un masque binaire en hexadécimal (0x0000000D le 1,3,4, 0x00000001 pour le noyau 1 uniquement)

tasksetest généralement dans un package appelé shedutils.

Edit: presque oublié ... Si vous souhaitez définir l'affinité d'une nouvelle commande au lieu de la modifier pour un processus existant, utilisez:

taskset <mask> <program> [<arg1>]...[<argN>]

1

ensemble de tâches (util-linux 2.13-pre7) utilisation: ensemble de tâches [options] [masque | cpu-list] [pid | cmd [args ...]] définit ou obtient l'affinité d'un processus

-p, --pid opèrent sur l'affichage pid -c, --cpu-list existant et spécifient les processeurs au format liste -h, --help affichent cette aide -v, --version informations sur la version de sortie

Le comportement par défaut est d'exécuter une nouvelle commande: taskset 03 sshd -b 1024 Vous pouvez récupérer le masque d'une tâche existante: taskset -p 700 Ou le définir: taskset -p 03 700 Le format de liste utilise une liste séparée par des virgules au lieu d'un mask: taskset -pc 0,3,7-11 700 Les plages au format liste peuvent prendre un argument de foulée: par exemple 0-31: 2 est équivalent au masque 0x55555555

vous pouvez toujours optimiser votre serveur selon vos besoins

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.