Skip to content
  • Jin Yao's avatar
    perf report: Tag branch type/flag on "to" and tag cycles on "from" · a1a8bed3
    Jin Yao authored
    
    
    Current --branch-history LBR annotation displays confused data. For
    example, each cycles report is duplicated on both "from" and "to"
    entries.
    
    For example:
    
      perf report --branch-history --no-children --stdio
    
      --2.32%--main div.c:39 (COND_BWD CROSS_2M predicted:49.7% cycles:1)
                main div.c:44 (predicted:49.7% cycles:1)
                main div.c:42 (RET CROSS_2M cycles:2)
                compute_flag div.c:28 (cycles:2)
                compute_flag div.c:27 (RET CROSS_2M cycles:1)
                rand rand.c:28 (cycles:1)
                rand rand.c:28 (RET CROSS_2M cycles:1)
                __random random.c:298 (cycles:1)
                __random random.c:297 (COND_BWD CROSS_2M cycles:1)
                __random random.c:295 (cycles:1)
                __random random.c:295 (COND_BWD CROSS_2M cycles:1)
                __random random.c:295 (cycles:1)
                __random random.c:295 (RET CROSS_2M cycles:9)
    
    The cycles should be tagged only on the "from". It's for the code block
    that ends with "from", not for "to".
    
    Another issue is the "predicted:49.7%" is duplicated too (tag on both
    "from" and "to").
    
    This patch tags the branch type/flag on "to" and tag the cycles on
    "from".
    
    For example:
    
      --2.32%--main div.c:39 (COND_BWD CROSS_2M predicted:49.7%)
                main div.c:44 (cycles:1)
                main div.c:42 (RET CROSS_2M)
                compute_flag div.c:28 (cycles:2)
                compute_flag div.c:27 (RET CROSS_2M)
                rand rand.c:28 (cycles:1)
                rand rand.c:28 (RET CROSS_2M)
                __random random.c:298 (cycles:1)
                __random random.c:297 (COND_BWD CROSS_2M)
                __random random.c:295 (cycles:1)
                __random random.c:295 (COND_BWD CROSS_2M)
                __random random.c:295 (cycles:1)
                __random random.c:295 (RET CROSS_2M)
                |
                 --2.23%--__random_r random_r.c:392 (cycles:9)
    
    In this example, The "main div.c:39 (COND_BWD CROSS_2M predicted:49.7%)"
    is "to" of branch and "main div.c:44 (cycles:1)" is "from" of branch.
    It should be easier for understanding than before.
    
    Signed-off-by: default avatarYao Jin <yao.jin@linux.intel.com>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1500894547-18411-1-git-send-email-yao.jin@linux.intel.com
    
    
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    a1a8bed3