Monitoring d'une application multi-thread [Résolu]

Signaler
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009
-
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009
-
Bonjour,



J'ai créé une application multi-threads qui utilise des librairies,
égalements, multi-threads. J'aurai voulu savoir s'il était possible de
surveiller le temps d'exécution de chaque thread (lib incluses). Ou
encore mieux, avoir un graphique présentant l'utilisation du CPU
précisant quel thread travail. Pour des histoires de synchronisation et
de performance.



Il peut y avoir plusieurs solutions :

- un programme externe qui surveille le CPU et qui se débrouille pour me sortir l'id du thread en cours.

- un genre de "label" à inclure dans le code source à chaque début et fin de thread.

- ... ?



Merci pour vos réponses.

6 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Intel VTune semble bien mais je n'ai pas utilisé, faudrait voir.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Sous Windows:
QueryPerformanceFrequency
QueryPerformanceCounter

Prends tes mesures en début de chaque thread et soustrais avec mesure en sortie et tu écris dans un fichier.

ciao...
BruNews, MVP VC++
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009

Merci, ceci répond à ma question concernant le temps d'exécution d'un thread.



Maintenant, supposons deux threads qui durents 10 secondes chacun.
Comment faire pour connaître leur découpage, par l'OS, pour s'exécuter
"en même temps" ?



Par exemple, 10 ms pour le premier puis 15 ms pour le second, et on
reprend le premier... Le résultat pourrait être sous forme graphique,
ou un tableau, ...



Merci



Ps : Windows XP & VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Regarde GetThreadTimes() dans MSDN.
Par contre s'il te faut graphique etc... trop long à dev, vaudrait mieux se tourner vers un outil de monitoring.

ciao...
BruNews, MVP VC++
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009

On se rapproche de la solution...

Cette fonction permet de connaitre le temps CPU du thread.



En fait, j'aurais voulu un truc dans ce genre :



thread 1
|---------|
|----------|
|----------| [FIN]

thread 2 |----|

|----|

|----| [FIN]

CPU idle
---|
|---|
|-|
|--------


--------------------------------------------------------------->
temps



Sinon, quel outil peut faire ceci ?



Merci
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009

Bonjour,

J'ai télécharger une démo en flash de ce programme sur intel... ca a l'aire convainquant !
par contre le prix l'est un peu moins... 699$ mais bon

Merci