Cher journal,
Je cherche à calculer le nombre de cycles cpu que prend l'exécution d'une commande.
La commande `time' est intéressante mais elle renvoie un temps en (micro) secondes ce qui n'est pas très pratique pour comparer avec un autre pc plus puissant par exemple.
Je sais que je pourrais multiplier ce temps par la fréquence du processeur mais je ne trouve pas ça très propre ni très précis...
Y a-t-il une façon de faire simple pour calculer le nombre de cycles cpu pour l'exécution d'une commande?
Merci d'avance cher journal
Ceci est mon premier message, j'espère que je ne fais pas du HS, sinon j'en suis désolé...
# Re: Nombre de cycles CPU d'une commande?
Posté par Jerome Herman . Évalué à 4.
Une seule solution : le manuel du CPU. Si tu veux des timings vraiment precis fait une recherche sur Google sur "timer zen".
Kha
[^] # Re: Nombre de cycles CPU d'une commande?
Posté par Gregplus . Évalué à 2.
ça doit être possible de calculer ça d'après le code assembleur et la doc du processeur en question
[^] # Re: Nombre de cycles CPU d'une commande?
Posté par Rolland Dudemaine . Évalué à 2.
Mais de toute facon je ne vois pas bien l'interet de calculer le nombre de cycles sur une application entiere, ce n'est pas plutot sur la boucle principale de traitement que tu voudrais mesurer ?
# Re: Nombre de cycles CPU d'une commande?
Posté par Stephane Marchesin (site web personnel) . Évalué à 3.
http://www.midnightbeach.com/jon/pubs/rdtsc.htm(...)
[^] # Re: Nombre de cycles CPU d'une commande?
Posté par Jean-Yves B. . Évalué à 2.
Ça ne marche plus qu'en mode mono tâche tout ça ...
[^] # Re: Nombre de cycles CPU d'une commande?
Posté par Nicolas Boulay (site web personnel) . Évalué à 1.
http://articles.linuxmag-france.org/lm32/hackC.html(...)
"La première sécurité est la liberté"
# Re: Nombre de cycles CPU d'une commande?
Posté par TazForEver . Évalué à 2.
# Re: Nombre de cycles CPU d'une commande?
Posté par Troy McClure (site web personnel) . Évalué à 3.
http://www.cs.uoregon.edu/research/paracomp/tau/(...)
http://icl.cs.utk.edu/papi/index.html(...)
http://www.fz-juelich.de/zam/PCL/PCLcontent.html(...)
# Re: Nombre de cycles CPU d'une commande?
Posté par arutha . Évalué à 1.
En fait je me basais sur un cas simple. Par exemple, pour exécuter l'instruction ASM MOVE, il faut n ticks d'horloge.
Je pensais donc qu'on pouvait avoir la durée d'exécution d'un programme en ticks d'horloge également.
Les ticks d'horloge étant comptés seulement quand le processeur travaille sur notre processus et non pas sur d'autres processus dans le cas du multithread, le multithread étant un leurre vu que le processeur ne traite qu'une instruction à la fois (ou alors j'ai rien compris!!).
Je souhaitais avoir cette information afin de pouvoir mesurer le temps d'exécution de facon indépendante du materiel... Un tick d'horloge sur un 486 reste un tick d'horloge sur un AthlonXP, la fréquence n'étant pas la même évidemment.
Enfin bref, ce n'est pas grave, je n'ai pas le temps d'approfondir pour le moment car j'ai un rapport qui m'attend :).
Mais la réponse m'intéresse toujours :-).
[^] # Re: Nombre de cycles CPU d'une commande?
Posté par MrTout (site web personnel) . Évalué à 2.
Non, ce n'est pas que la fréquence qui change. Même pour les processeurs d'une même famille et en se bornant aux instructions communes (pas de MMX et compagnie) la façon dont ton processeur va exécuter ton programme sera différente : pipeline, prédiction de branchement, cout différent des instructions en ticks d'horloge.
Par exemple une instruction blup sur 486 fait 4 ticks et sur 986 fait 13 ticks. Une instruction plop fait 5 ticks sur 486 et 11 sur 986. Et le pipeline du 986 permet de combiner ces deux instruction de façon efficace (14 ticks pour exécuter blup suivit de plop)
Donc même s'il est possible de compter les ticks d'un programme pour différents processeurs, tu ne pouras pas en déduire grand chose. Sans compter que comme il est dit au dessus l'OS, les autres processus et certains périfériques ont leur mots à dire. Et même dans un système mono-tâche, une différence peut se situer au niveau des caches du processeur. Leurs taille et leurs vitesse entrent bien sûr en jeu mais les algos utilisés pour faire le caching sont également importants.
[^] # Re: Nombre de cycles CPU d'une commande?
Posté par Christophe Fergeau . Évalué à 1.
Par exemple, sur le pentium, si tu faisais deux mov à la suite, en utilisant le meme registre comme source dans un des mov et comme destination dans l'autre, tu avais une pénalité de qques cycles sur le second mov (y avait un truc du genre, mais c'est très flou dans mes souvenirs, merci de me corriger si je me suis trompé)
[^] # Re: Nombre de cycles CPU d'une commande?
Posté par Nicolas Boulay (site web personnel) . Évalué à 1.
Bref, tu devrais vraiment lire :
http://articles.linuxmag-france.org/lm32/hackC.html(...)
"La première sécurité est la liberté"
[^] # Re: Nombre de cycles CPU d'une commande?
Posté par arutha . Évalué à 1.
Vous éclairez ma lanterne. On apprend plein de choses intéressantes en postant un journal ;-).
Je m'en vais lire vos liens de ce pas.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.