web-dev-qa-db-fra.com

Événements de perf sous Linux: horloge cpu et horloge de tâche - quelle est la différence

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?

30
osgx

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.

1
Bram

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

0
Patrick Di Martino