Obtenir des statistiques de processeur par thread


17

Je suis intéressé par l'utilisation actuelle de cpu - précisément cpu% et wait% - pour chaque thread dans une application spécifique. Est-il possible d'obtenir ces informations quelque part?

Je sais que cela toppeut diviser les informations par vrai thread (ceux avec pid), mais cela ne montre pas la répartition d'utilisation du processeur système / utilisateur / attente pour chacun d'eux. J'aimerais également trouver un moyen de consigner ces informations. Connaissez-vous des applications (ou des API) qui peuvent le faire?

Réponses:


4

Je regarde dans SystemTap . Cet outil vous donnera certainement ce que vous voulez. Il y a cet exemple de profilage de threads; Je ne sais pas s'il a tout ce que vous voulez, mais vous pouvez le modifier pour qu'il le fasse.



12

Pourcentage d'utilisation du processeur par thread que vous pouvez obtenir avec la pscommande:

 ps -emo %cpu,pid,user,args

La façon dont il est calculé est décrite dans ps manpage:

Actuellement, c'est le temps CPU utilisé divisé par le temps d'exécution du processus (rapport cputime / temps réel), exprimé en pourcentage.


Je suis vraiment intéressé par le temps CPU et le temps d'attente io. ps ne peut malheureusement pas gérer le second.
viraptor

note à soi: remplacer -e par -C java et pid par spid pour les identifiants de thread dans l'application java
kellogs

2
une plus grande note à soi-même: ps -To pcpu,tid -C java | sort -r -k1 | morepour les fils de porc dans une application java. ps --sort=pcpun'obtient rien; mieux compter sur shell pour la partie tri.
kellogs

@Kellogs très utile, merci. Je voudrais ajouter -nou -gtrier, de sorte que "10" apparaisse au-dessus de "2", par exemple.
EM0

0

Peut-être jetez un œil à htop, vous pouvez en configurer beaucoup avec lui.


malheureusement, il ne peut pas diviser le processeur sur l'utilisateur / le système / le temps d'attente pour un thread spécifique - uniquement pour la machine entière
viraptor

Oui, mais comment pourrais-je procéder?
rmobis

0

Avez-vous essayé Sar? Il peut récupérer de nombreuses informations même au niveau pid.



0

J'ai trébuché là-dessus sur un système embarqué où nous n'avons pas les outils sophistiqués pour examiner ce genre de choses.

Pour cela, j'ai utilisé cpuacct cgroupet placé chaque fil dans son propre dossier. De cette façon, j'ai pu mesurer leur utilisation.

La hiérarchie ressemblait à ceci:

my-app.service
|-tid1
|-tid2
|-tid3

Ensuite, je l'ai changé en

my-app.service
|-dir1
|  -tid1
|-dir2
|  -tid2
|-dir3
|  -tid3
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.