143 votes

Comment puis-je mesurer l'utilisation séparée du processeur pour un cœur de CPU?

Y a-t-il un moyen de mesurer l'utilisation spécifique du processeur d'un processus par coeurs?

Je sais que top est bon pour mesurer l'utilisation globale du processeur du système par coeurs et taskset peut fournir des informations sur le coeur du CPU sur lequel le processus est autorisé à s'exécuter.

Mais comment mesurer l'utilisation du CPU d'un processus spécifique par coeurs du CPU ?

3voto

elinx Points 533

J'ai pensé que perf stat est ce dont vous avez besoin.

Il montre une utilisation spécifique d'un processus lorsque vous spécifiez l'option --cpu=list. Voici un exemple de surveillance de l'utilisation du CPU lors de la construction d'un projet en utilisant la commande perf stat --cpu=0-7 --no-aggr -- make all -j. La sortie est la suivante :

CPU0         119254.719293 tâche-horloge (msec)         #    1.000 CPU utilisé            (100.00%)
CPU1         119254.724776 tâche-horloge (msec)         #    1.000 CPU utilisé            (100.00%)
CPU2         119254.724179 tâche-horloge (msec)         #    1.000 CPU utilisé            (100.00%)
CPU3         119254.720833 tâche-horloge (msec)         #    1.000 CPU utilisé            (100.00%)
CPU4         119254.714109 tâche-horloge (msec)         #    1.000 CPU utilisé            (100.00%)
CPU5         119254.727721 tâche-horloge (msec)         #    1.000 CPU utilisé            (100.00%)
CPU6         119254.723447 tâche-horloge (msec)         #    1.000 CPU utilisé            (100.00%)
CPU7         119254.722418 tâche-horloge (msec)         #    1.000 CPU utilisé            (100.00%)
CPU0                 8,108 changements de contexte          #    0.068 K/sec                    (100.00%)
CPU1                26,494 changements de contexte                                              (100.00%)
CPU2                10,193 changements de contexte                                              (100.00%)
CPU3                12,298 changements de contexte                                              (100.00%)
CPU4                16,179 changements de contexte                                              (100.00%)
CPU5                57,389 changements de contexte                                              (100.00%)
CPU6                 8,485 changements de contexte                                              (100.00%)
CPU7                10,845 changements de contexte                                              (100.00%)
CPU0                   167 migrations de CPU            #    0.001 K/sec                    (100.00%)
CPU1                    80 migrations de CPU                                                (100.00%)
CPU2                   165 migrations de CPU                                                (100.00%)
CPU3                   139 migrations de CPU                                                (100.00%)
CPU4                   136 migrations de CPU                                                (100.00%)
CPU5                   175 migrations de CPU                                                (100.00%)
CPU6                   256 migrations de CPU                                                (100.00%)
CPU7                   195 migrations de CPU                                                (100.00%)

La colonne de gauche est l'index du CPU spécifique et la colonne la plus à droite est l'utilisation du CPU. Si vous ne spécifiez pas l'option --no-aggr, le résultat sera agrégé. L'option --pid=pid vous aidera si vous souhaitez surveiller un processus en cours.

Essayez aussi -a --per-core ou -a perf-socket, qui présenteront des informations plus classifiées.

Vous pouvez en savoir plus sur l'utilisation de perf stat dans ce tutoriel : statistiques sur le CPU, également perf help stat vous aidera à comprendre la signification des options.

2voto

J'avais juste ce problème et j'ai trouvé une réponse similaire ici.

La méthode consiste à configurer top comme vous le souhaitez, puis appuyez sur W (majuscule W). Cela enregistre la disposition actuelle de top dans un fichier de configuration dans $HOME/.toprc

Cela peut ne pas fonctionner si vous souhaitez exécuter plusieurs top avec des configurations différentes.

Alors, via ce que je considère comme une solution de contournement, vous pouvez écrire dans différents fichiers de configuration / utiliser différents fichiers de configuration en faisant l'une des actions suivantes...

1) Renommez le binaire

  ln -s /usr/bin/top top2
  ./top2

Maintenant, .top2rc va être écrit dans votre $HOME

2) Définissez $HOME sur un chemin alternatif, car il écrira son fichier de configuration dans le fichier $HOME/.nom-du-binaire.rc

HOME=./
top

Maintenant, .toprc va être écrit dans le dossier actuel.

En utilisant les commentaires d'autres personnes pour ajouter différents comptes d'utilisation dans top, vous pouvez créer une sortie par lots pour ces informations et ensuite regrouper les informations via un script. Peut-être pas aussi simple que votre script, mais j'ai trouvé que top me fournissait TOUS les processus, donc plus tard je peux récapituler et capturer un état pendant une longue exécution que j'aurais peut-être manqué sinon (utilisation soudaine et inexpliquée du processeur due à des processus errants)

2voto

Ask and Learn Points 5013
dstat -C 0,1,2,3 

Vous donnera également l'utilisation du CPU des 4 premiers coeurs. Bien sûr, si vous avez 32 coeurs alors cette commande devient un peu plus longue mais utile si vous êtes seulement intéressés par quelques coeurs.

Par exemple, si vous êtes seulement intéressé par les coeurs 3 et 7 alors vous pourriez faire

dstat -C 3,7

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X