lkml.org 
[lkml]   [2010]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/5] Add multiple event support to perf report V2
    Date
    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(-)



    \
     
     \ /
      Last update: 2010-03-03 16:41    [W:0.048 / U:3.428 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site