Que dois-je utiliser profileur pour mesurer le temps _RÉELLE_ (y compris en attendant syscalls) passer dans cette fonction, pas un _CPU_

StackOverflow https://stackoverflow.com/questions/3992587

Question

L'application ne calculate choses, mais ne i / o, lire les fichiers, utilise le réseau. Je veux profileur de le montrer.

Je me attends quelque chose comme quelque chose comme dans callgrind que les appels clock_gettime chaque problèm.

Ou comme oprofile que interruptions ma demande (alors qu'il dort ou en attente de socket / fichier / whatever) pour voir ce qui ce fait.

Je veux des choses comme « lire », « connexion », « nanosleep », « envoyer » et surtout « fsync » ( Et tous leurs appelants ) être gras (pas des choses comme la chaîne ou le numéro les fonctions qui effectuent des calculs).

Plate-forme: GNU / Linux @ i386

Était-ce utile?

La solution

rapidement piraté jusqu'à profileur d'échantillonnage trivial pour linux: http://vi-server.org/vi /simple_sampling_profiler.html

Il ajoute backtrace(3) un fichier sur SIGUSR1, et convertit ensuite à la source annotée.

Comme il sonde le programme périodiquement, nous verrons des fonctions qui attend quelque chose.

Et comme il marche la pile, nous verrons les appels aussi.

Aussi les gens de réponses à des questions similaires recommande Zoom.

Autres conseils

Il n'y a pas de véritable moyen de répondre à cette question sans connaître votre plate-forme et un peu plus sur ce que vous essayez de faire.

Quand je suis en cours d'exécution sur une plate-forme Intel, je veux utiliser le temps Stamp compteur (RDTSC) . Il est difficile de battre resoultion dans la gamme sous-microseconde. Je viens de mettre un appel à avant et après un morceau de code, et comparer la différence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top