Déterminer le processeur d'un processus en cours d'exécution

À l'aide de l'Explorateur de processus de Sysinternals, existe-t-il une colonne qui peut être utilisée pour indiquer à quelle CPU fonctionne un processus? Si aucune colonne, y a-t-il une autre façon?

Demandé en 2005 :

Je suis très impressionné par les fonctionnalités intégrées dans Process Explorer, mais j'aimerais voir une option pour afficher chaque processus de l'affinité de la CPU dans la fenêtre principale en tant que colonne de bascule.

Pas de réponse.

Demandé en 2007 :

Merci pour les excellents services publics. Ma demande consiste à ajouter une option de colonne pour traiter l'explorateur pour afficher l'affinité de la CPU. C'est tout.

Pas de réponse.

Discussion similaire en 2013 :

Ce serait vraiment agréable s'il y avait une nouvelle colonne Performance Performance View appelée Core Usage qui montrerait une somme de l'utilisation sur le noyau sur laquelle le processus est en cours d'exécution.

Synopsis de base: il ne peut pas être fait.

Les threads sont ceux qui sont envoyés aux noyaux pour le traitement, et non les processus. La plupart des processus modernes ont plusieurs threads.

Si vous définissez manuellement l' affinité pour un processus, tous les threads pour le processus devraient tenir compte d'un seul processeur. Comme vous l'avez configuré manuellement, vous devez savoir à quelle CPU il est activé. 😉

Mais si vous ne spécifiez pas, le (s) thread (s) seront contrôlés par le système d'exploitation et le matériel de traitement sous-jacent et sauteraient entre les processeurs à une vitesse qui serait invariable et très probablement inexacte au moment où il était affiché toi.

Peut-être vérifiez-vous cette question SU pour plus d'informations:

  • Comment un processus «choisit» le noyau sur lequel s'exécuter?
  • Quels sont les threads, et qu'est-ce qu'ils font dans le processeur?

De même, de StackOverflow:

  • Quelle est la différence entre un processus et un thread?

Maintenant, si vous avez écrit le programme, vous pouvez utiliser le GetCurrentProcessorNumber , qui relève le processeur actuel utilisé par le thread à partir duquel la fonction a été appelée.

L'utilisation de cela vous permettra de faire des estimations de l'utilisation du processeur par vos threads, car vous ne pouvez jamais être sûr d'où les threads seront un cycle à l'autre (encore une fois, sauf si vous définissez l'affinité à dessein).

Plus d'informations:

  • Déterminez quel processeur physique mon code fonctionne actuellement
  • Identifier le processeur (noyau) est utilisé par thread spécifique

Cela peut se faire en capturant une trace xperf et en l'ouvrant avec Windows Performance Analyzer (WPA.exe) à partir de Windows Performance Toolkit, vous pouvez ajouter une CPU de colonne pour voir quel CPU (Core) le processus est en cours:

Entrez la description de l'image ici