J'ai accès à un nœud à 8 cœurs d'un cluster Linux. Une fois connecté au nœud, je peux voir une liste de processeurs à l'aide de cette commande:
more /proc/cpuinfo
Dans mon nœud à 8 cœurs, les processeurs sont numérotés de 0 à 7. Chaque processeur est un processeur Intel Xeon (E5430 @ 2,66 GHz).
Supposons maintenant que j'appelle le programme foo
avec quelques arguments args
:
foo args
Le programme foo
est long à exécuter (heures ou jours, par exemple). Après avoir appelé foo
, est-il possible de déterminer le processeur particulier (c.-à-d. 0 à 7) sur lequel foo
fonctionne? Le top
programme me montre l'ID du processus et des informations similaires, mais je ne vois pas le numéro du processeur . Ces informations sont-elles disponibles?
foo
à deux processeurs différents. Quand j'appellefoo
une fois, ça tourne à%CPU
très près de 100% (selontop
). Mais quand j'appellefoo
une seconde fois, les deuxfoo
processus sont exécutés de telle sorte que le%CPU
pour les deux procédés somme à moins de 100% (habituellement d' environ 45% pour chaquefoo
processus). Pour moi, cela suggère que les deux appels àfoo
s'exécutent sur le même processeur (même s'il existe huit processeurs disponibles); Je voudrais vérifier que c'est le cas.Réponses:
ps
peut vous fournir ces informations si vous demandez lapsr
colonne (ou utilisez l'-F
indicateur qui l'inclut).Ex:
Ou:
Mon shell fonctionnait sur le CPU 2 lorsque j'ai exécuté la première commande, sur le CPU 0 lorsque j'ai exécuté la seconde. Attention, les processus peuvent changer très, très rapidement les processeurs, donc les informations que vous voyez sont, en fait, déjà périmées.
Quelques informations supplémentaires dans les réponses à cette question de super utilisateur:
Linux: commande pour connaître le numéro de processeur dans lequel un processus est chargé?
la source
Avec le
top
fromprocps
(généralement la distribution par défaut sur les distributions Linux de nos jours), danstop
, appuyez sur f, accédez àP = Last User CPU (SMP)
et appuyez sur Spacepour sélectionner (vous pouvez également déplacer le champ par exemple avant leCOMMAND
champ avec la Righttouche, puis monter et descendre). qpour revenir à l'écran principal (où vous verrez votre processus passer d'un processeur à l'autre, sauf si vous l'avez explicitement configuré pour rester avec un). Vous pouvez appuyer sur Wpour l'enregistrer par défaut.Appuyez ?pour obtenir de l'aide.
la source
La commande
taskset
est ce que vous recherchez:ensemble de tâches - récupérer ou définir l'affinité CPU d'un processus
Exemple
Un masque de
f
tous les processeurs,0x00000001
serait juste le processeur 0.Affiche les processeurs sous forme de liste. J'ai 4 cœurs sur mon ordinateur portable dans cet exemple.
Voir la page de manuel a plus de détails .
la source
Vous pouvez également obtenir ces informations directement auprès de
/proc/[pid]/stat
. Il s'agit du 39e champ délimité par des espaces (depuis Linux 2.2.8).Par exemple, pour afficher sur quel processeur CPU le shell actuel s'exécute (dans ce cas):
la source