Commit eac23d1c384b55e4bbb89ea9e5a6bb77fb4d1140
Committed by
Arnaldo Carvalho de Melo
1 parent
21ef97f05a
Exists in
master
and in
7 other branches
perf record,report,annotate,diff: Process events in order
This patch changes perf report to ask for the ID info on all events be default if recording from multiple CPUs. Perf report, annotate and diff will now process the events in order if the kernel is able to provide timestamps on all events. This ensures that events such as COMM and MMAP which are necessary to correctly interpret samples are processed prior to those samples so that they are attributed correctly. Before: # perf record ./cachetest # perf report # Events: 6K cycles # # Overhead Command Shared Object Symbol # ........ ....... ................. ............................... # 74.11% :3259 [unknown] [k] 0x4a6c 1.50% cachetest ld-2.11.2.so [.] 0x1777c 1.46% :3259 [kernel.kallsyms] [k] .perf_event_mmap_ctx 1.25% :3259 [kernel.kallsyms] [k] restore 0.74% :3259 [kernel.kallsyms] [k] ._raw_spin_lock 0.71% :3259 [kernel.kallsyms] [k] .filemap_fault 0.66% :3259 [kernel.kallsyms] [k] .memset 0.54% cachetest [kernel.kallsyms] [k] .sha_transform 0.54% :3259 [kernel.kallsyms] [k] .copy_4K_page 0.54% :3259 [kernel.kallsyms] [k] .find_get_page 0.52% :3259 [kernel.kallsyms] [k] .trace_hardirqs_off 0.50% :3259 [kernel.kallsyms] [k] .__do_fault <SNIP> After: # perf report # Events: 6K cycles # # Overhead Command Shared Object Symbol # ........ ....... ................. ............................... # 44.28% cachetest cachetest [.] sumArrayNaive 22.53% cachetest cachetest [.] sumArrayOptimal 6.59% cachetest ld-2.11.2.so [.] 0x1777c 2.13% cachetest [unknown] [k] 0x340 1.46% cachetest [kernel.kallsyms] [k] .perf_event_mmap_ctx 1.25% cachetest [kernel.kallsyms] [k] restore 0.74% cachetest [kernel.kallsyms] [k] ._raw_spin_lock 0.71% cachetest [kernel.kallsyms] [k] .filemap_fault 0.66% cachetest [kernel.kallsyms] [k] .memset 0.54% cachetest [kernel.kallsyms] [k] .copy_4K_page 0.54% cachetest [kernel.kallsyms] [k] .find_get_page 0.54% cachetest [kernel.kallsyms] [k] .sha_transform 0.52% cachetest [kernel.kallsyms] [k] .trace_hardirqs_off 0.50% cachetest [kernel.kallsyms] [k] .__do_fault <SNIP> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> LKML-Reference: <1291872833-839-1-git-send-email-imunsie@au1.ibm.com> Signed-off-by: Ian Munsie <imunsie@au1.ibm.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Showing 4 changed files with 10 additions and 1 deletions Side-by-side Diff
tools/perf/builtin-annotate.c
tools/perf/builtin-diff.c
tools/perf/builtin-record.c
... | ... | @@ -285,7 +285,7 @@ |
285 | 285 | if (system_wide) |
286 | 286 | attr->sample_type |= PERF_SAMPLE_CPU; |
287 | 287 | |
288 | - if (sample_time) | |
288 | + if (sample_time || system_wide || !no_inherit || cpu_list) | |
289 | 289 | attr->sample_type |= PERF_SAMPLE_TIME; |
290 | 290 | |
291 | 291 | if (raw_samples) { |
... | ... | @@ -327,6 +327,9 @@ |
327 | 327 | * Old kernel, no attr->sample_id_type_all field |
328 | 328 | */ |
329 | 329 | sample_id_all_avail = false; |
330 | + if (!sample_time && !raw_samples) | |
331 | + attr->sample_type &= ~PERF_SAMPLE_TIME; | |
332 | + | |
330 | 333 | goto retry_sample_id; |
331 | 334 | } |
332 | 335 |
tools/perf/builtin-report.c
... | ... | @@ -244,6 +244,8 @@ |
244 | 244 | .event_type = event__process_event_type, |
245 | 245 | .tracing_data = event__process_tracing_data, |
246 | 246 | .build_id = event__process_build_id, |
247 | + .ordered_samples = true, | |
248 | + .ordering_requires_timestamps = true, | |
247 | 249 | }; |
248 | 250 | |
249 | 251 | extern volatile int session_done; |