perf stat -d ./sample.out sortie est:Comment résoudre "non compté" dans perf?
Performance counter stats for './sample.out':
0.586266 task-clock (msec) # 0.007 CPUs utilized
2 context-switches # 0.003 M/sec
1 cpu-migrations # 0.002 M/sec
116 page-faults # 0.198 M/sec
7,35,790 cycles # 1.255 GHz [81.06%]
<not counted> stalled-cycles-frontend
<not supported> stalled-cycles-backend
<not counted> instructions
<not counted> branches
<not counted> branch-misses
<not supported> L1-dcache-loads:HG
<not counted> L1-dcache-load-misses:HG
<not counted> LLC-loads:HG
<not supported> LLC-load-misses:HG
0.088013919 seconds time elapsed
J'ai lu pourquoi sera affiché à partir . Mais je reçois même pour des compteurs de base comme des instructions, des branches, etc. Quelqu'un peut-il suggérer comment le faire fonctionner?
chose intéressante est:
sudo perf sommeil stat 3
donne une sortie:
Performance counter stats for 'sleep 3':
0.598484 task-clock (msec) # 0.000 CPUs utilized
2 context-switches # 0.003 M/sec
0 cpu-migrations # 0.000 K/sec
181 page-faults # 0.302 M/sec
<not counted> cycles
<not counted> stalled-cycles-frontend
<not supported> stalled-cycles-backend
<not counted> instructions
<not counted> branches
<not counted> branch-misses
sudo perf stat C 1 sommeil 3
Performance counter stats for 'CPU(s) 1':
3002.640578 task-clock (msec) # 1.001 CPUs utilized [100.00%]
425 context-switches # 0.142 K/sec [100.00%]
9 cpu-migrations # 0.003 K/sec [100.00%]
5 page-faults # 0.002 K/sec
7,82,97,019 cycles # 0.026 GHz [33.32%]
9,38,21,585 stalled-cycles-frontend # 119.83% frontend cycles idle [33.32%]
<not supported> stalled-cycles-backend
3,09,81,643 instructions # 0.40 insns per cycle
# 3.03 stalled cycles per insn [33.32%]
70,15,390 branches # 2.336 M/sec [33.32%]
6,38,644 branch-misses # 9.10% of all branches [33.32%]
3.001075650 seconds time elapsed
Pourquoi ce fonctionnement inattendu?
Merci
'est pas perf stat' échantillonnage statistique (http: //lxr.free-electrons.com/source/tools/perf/builtin-stat.c?v=4.4 - "Commande de statistiques intégrée: donne une vue d'ensemble des compteurs de performance ** précis ** sur n'importe quelle charge de travail, CPU ou PID spécifique "), il devrait être le mode comptage clair de hw pmu, capable de voir tous les événements. 'sleep 1' et' echo 1' font tous deux beaucoup de syscalls (vérifiez 'strace sleep 1' ou' ltrace sleep 1') et ils ont tous des centaines de milliers de cycles et d'instructions. Seul l'enregistrement de perf est un échantillonnage statistique. Vous pouvez également ajouter un drapeau -vv après stat pour vérifier le champ "sampling" de perf_events syscall. – osgx
@osgx: Je voulais dire que l'UGP HW échantillonne elle-même, en déclenchant seulement une interruption toutes les 50k instructions/cycles/branches ou autres, n'est-ce pas? Il ne peut pas déclencher une interruption à chaque cycle d'horloge. Ou pouvez-vous obtenir le compte exact après, même pour les compteurs qui ne se sont jamais retournés et ont déclenché une interruption? –
@osgx: Quoi qu'il en soit, votre réponse est clairement la bonne; merci de corriger mon erreur. Je n'ai pas regardé assez attentivement la sortie '-C' pour remarquer qu'il s'agissait de compteurs de multiplexage, et cela explique complètement les observations du PO. –