PERFは 出力./sample.out -dをstatです: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
から表示されますなぜ私が読んで。しかし、私は指示や枝などの基本的なカウンターにもなっています。誰もそれを働かせる方法を提案できますか?
興味深いのは、次のとおりです。STATの睡眠3
PERF
sudoが与えられる出力:STAT -C 1睡眠PERF
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の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
なぜこれは予期しない動作ですか?
はあなたに
'PERF stat'は、統計的サンプリング(HTTPではありません//lxr.free-electrons.com/source/tools/perf/builtin-stat.c?v=4.4 - "builtin statコマンド:任意のワークロード、CPU、または特定のPIDについての**正確な**パフォーマンスカウンタサマリーの概要を与える")、すべてのイベントを見ることができるhw pmuの単純なカウントモードでなければなりません。 'sleep 1'と' echo 1'はともに '' strace sleep 1''または '' ltrace sleep 1''をチェックして、何十万回ものサイクリングをしています。 perfレコードだけが統計的サンプリングです。 statの後に-vvフラグを付けて、perf_eventsシステムコールの「サンプリング」フィールドをチェックすることもできます。 – osgx
@osgx:私は、HW PMU自体が50k命令/サイクル/ブランチなど何かの割り込みをトリガするだけで、サンプルを実行することを意味しましたか?クロックサイクルごとに割り込みを発生させることはできません。または、転がったり割り込みを引き起こしたりしなかったカウンタであっても、正確なカウントを取得できますか? –
@osgx:とにかく、あなたの答えは明らかに正しいものです。私のエラーを修正してくれてありがとう。私はそれが多重化カウンターであることに気付くために '-C'出力を十分に見ていなかったし、それはOPの観察を完全に説明している。 –