web-dev-qa-db-fra.com

Déterminer sur quel processeur un processus est exécuté

À l'aide de l'Explorateur de processus de Sysinternals, une colonne peut-elle être utilisée pour indiquer le processeur sur lequel un processus est exécuté? S'il n'y a pas de colonne, y a-t-il un autre moyen?

19
rory.ap

Requis en 2005 :

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

Pas de réponse.

Demandé en 2007 :

Merci pour les superbes utilitaires. Ma demande est d’ajouter une option de colonne pour que l’Explorateur puisse afficher l’affinité CPU. C'est tout.

Pas de réponse.

Similaires discutées en 2013 :

Ce serait vraiment bien s'il y avait une nouvelle colonne de la vue Performance du processus appelée Utilisation du noyau qui montrerait la somme de l'utilisation sur le noyau sur lequel le processus est exécuté.

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

Les threads sont ceux qui sont envoyés aux cœurs pour traitement, pas les processus. La plupart des processus modernes ont plusieurs threads.

Si vous définissez manuellement l'affinité pour un processus, tous les threads de ce processus doivent s'en tenir à un seul processeur. Puisque vous le configurez manuellement, vous devez savoir sur quel processeur il est allumé. ;)

Mais si vous ne spécifiez pas, le ou les threads seront contrôlés par le système d'exploitation et le matériel de traitement sous-jacent, et basculeront entre les processeurs à une vitesse inatteignable et probablement imprécise au moment de son affichage. vous.

Peut-être vérifier ces questions SU pour plus:

En outre, à partir de StackOverflow:

Maintenant, si vous avez écrit le programme, vous pouvez utiliser le GetCurrentProcessorNumber , qui indique le processeur en cours d'utilisation par le thread à partir duquel la fonction a été appelée.

En utilisant cela, vous pourrez faire des estimations sur l'utilisation du processeur par vos threads, car vous ne pouvez jamais savoir exactement où les threads seront d'un cycle à l'autre (à moins que vous ne définissiez affinité volontaire).

Plus d'informations:

47
Ƭᴇcʜιᴇ007

Cela peut être fait en capturant une trace xperf et en l'ouvrant avec Windows Performance Analyzer (WPA.exe) à partir de Windows Performance Toolkit. Vous pouvez y ajouter une Colonne CPU pour voir quel CPU (Core) le processus est en cours d'exécution:

enter image description here

8
magicandre1981