Prev: [PATCH 1/5] Add ID and to recorded event data when recording multiple events
Next: [PATCH tip/core/rcu 3/4] rcu: revert 1883c79a: early boot now handled by lockdep-RCU
From: Eric B Munson on 3 Mar 2010 10:40 Currently perf report is unable to handle multiple events even though perf record is capable of capturing such a stream. For instance if we run 'perf record -e dtlb-misses -e cache-misses sleep 5' today and then ask report to show the results we get: # Samples: 18866 # # Overhead Command Shared Object Symbol # ........ ....... ................. ...... # 47.52% sleep [kernel.kallsyms] [k] page_fault 32.93% sleep [kernel.kallsyms] [k] locks_remove_posix 8.52% sleep [kernel.kallsyms] [k] acl_permission_check 3.46% sleep [kernel.kallsyms] [k] __wake_up_bit 3.31% sleep [kernel.kallsyms] [k] vfs_read 3.23% sleep [kernel.kallsyms] [k] kmem_cache_alloc 0.56% sleep [kernel.kallsyms] [k] get_page_from_freelist 0.15% sleep [kernel.kallsyms] [k] pipe_read 0.13% sleep [kernel.kallsyms] [k] pipe_lock_nested 0.13% sleep [kernel.kallsyms] [k] mm_alloc 0.06% sleep [kernel.kallsyms] [k] mm_init # # (For a higher level overview, try: perf report --sort comm,dso) # Worse than only reporting on one of the events, perf report has summed the two events. i.e. There is no distinguishing between dtlb-misses and cache-misses. This set of patches addresses this problem and now when perf report is run with the same event stream that produced the above report, the output is this: # Samples: 8620 cache-misses # # Overhead Command Shared Object Symbol # ........ ....... ................. ...... # 72.06% sleep [kernel.kallsyms] [k] locks_remove_posix 18.64% sleep [kernel.kallsyms] [k] acl_permission_check 7.56% sleep [kernel.kallsyms] [k] __wake_up_bit 1.22% sleep [kernel.kallsyms] [k] get_page_from_freelist 0.34% sleep [kernel.kallsyms] [k] pipe_read 0.13% sleep [kernel.kallsyms] [k] mm_init 0.02% sleep [kernel.kallsyms] [k] pipe_lock_nested 0.01% sleep [kernel.kallsyms] [k] mm_alloc 0.01% sleep [kernel.kallsyms] [k] kmem_cache_alloc # Samples: 10246 dTLB-load-misses # # Overhead Command Shared Object Symbol # ........ ....... ................. ...... # 87.51% sleep [kernel.kallsyms] [k] page_fault 6.10% sleep [kernel.kallsyms] [k] vfs_read 5.94% sleep [kernel.kallsyms] [k] kmem_cache_alloc 0.22% sleep [kernel.kallsyms] [k] mm_alloc 0.22% sleep [kernel.kallsyms] [k] pipe_lock_nested # # (For a higher level overview, try: perf report --sort comm,dso) # Changlog: From V1: -Removed STREAM_ID from recorded attributes -Only record SAMPLE_ID if more than one event is requested Eric B Munson (5): Add ID and to recorded event data when recording multiple events Change add_hist_entry to take the tree root instead of session Add storage for seperating event types in report Change perf_session post processing functions to take histogram tree Add multiple event support to perf report tools/perf/builtin-annotate.c | 6 +- tools/perf/builtin-diff.c | 12 +++-- tools/perf/builtin-record.c | 3 + tools/perf/builtin-report.c | 111 ++++++++++++++++++++++++++++++++++++----- tools/perf/util/event.h | 9 +++ tools/perf/util/hist.c | 45 +++++++++-------- tools/perf/util/hist.h | 12 +++-- tools/perf/util/session.c | 1 + tools/perf/util/session.h | 1 + 9 files changed, 153 insertions(+), 47 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |