Les outils Linux perf
(il y a quelque temps nommé perf_events
) comportent plusieurs événements logiciels universels intégrés. Les plus basiques d'entre eux sont: task-clock
et cpu_clock
(appelés en interne PERF_COUNT_SW_CPU_CLOCK
et PERF_COUNT_SW_TASK_CLOCK
). Mais ce qui ne va pas avec eux, c'est le manque de description.
ysdx user indique que man perf_event_open
a une description courte:
PERF_COUNT_SW_CPU_CLOCK
This reports the CPU clock, a high-resolution per-
CPU timer.
PERF_COUNT_SW_TASK_CLOCK
This reports a clock count specific to the task
that is running.
Mais la description est difficile à comprendre.
Quelqu'un peut-il donner une réponse faisant autorité sur comment et quand les événements task-clock
et cpu-clock
sont comptabilisés? Quel est leur lien avec le planificateur de noyau Linux?
Quand task-clock
et cpu-clock
donneront des valeurs différentes? Lequel devrais-je utiliser?
Selon ce message , ils mesurent la même chose.
Ils diffèrent simplement en quand ils échantillonnent.
cpu-clock est basé sur une horloge murale - de sorte que des échantillons sont prélevés à intervalles réguliers par rapport au temps passé. Je crois que l'horloge de tâche est relative au temps d'exécution de la tâche. Ainsi, des échantillons sont pris à intervalles réguliers par rapport à l'exécution du processus.
Lorsque je l'exécute sur mon application multithread, il affiche en effet des valeurs presque identiques.
De manière générale: l’événement cpu-clock mesure le passage du temps. Il utilise l'horloge du processeur Linux comme source de synchronisation.
Voici un article détaillé sur la recherche de points chauds d'exécution avec perf: http://sandsoftwaresound.net/perf/perf-tutorial-hot-spots/
L'horloge de tâche vous indique le niveau de parallélisation de votre travail/le nombre de processeurs utilisés. Ce recueil contient des informations détaillées sur les résultats générés par perf: https://doc.zih.tu-dresden.de/hpc-wiki/bin/view/Compendium/PerfTools
Il y a aussi beaucoup d’informations ici: https://stackoverflow.com/a/20378648/8223204