• Adrian Hunter's avatar
    perf top: Add --branch-history option · 5ef50613
    Adrian Hunter authored
    Add --branch-history option, to act the same as that option does for
    perf report.
    
    Example:
    
      $ cat tcallf.c
      volatile a = 10000, b = 100000, c;
    
      __attribute__((noinline)) f2()
      {
              c = a / b;
      }
    
      __attribute__((noinline)) f1()
      {
              f2();
              f2();
      }
      main()
      {
              while (1)
                      f1();
      }
      $ gcc -w -g -o tcallf tcallf.c
      $ ./tcallf &
      [1] 29409
      $ perf top -e cycles:u  -t $(pidof tcallf) --stdio --no-children --branch-history
         PerfTop:    3819 irqs/sec  kernel: 0.0%  exact:  0.0% lost: 0/0 drop: 0/0 [4000Hz cycles:u],  (target_tid: 29409)
      --------------------------------------------------------------------------------------------------------------------
    
          49.01%  tcallf.c:5   [.] f2    tcallf
                  |
                  |--24.91%--f2 tcallf.c:4
                  |          |
                  |          |--17.14%--f1 tcallf.c:11 (cycles:1)
                  |          |          f1 tcallf.c:11
                  |          |          f2 tcallf.c:6 (cycles:3)
                  |          |          f2 tcallf.c:4
                  |          |          f1 tcallf.c:10 (cycles:2)
                  |          |          f1 tcallf.c:9
                  |          |          main tcallf.c:16 (cycles:1)
                  |          |          main tcallf.c:16
                  |          |          main tcallf.c:16 (cycles:1)
                  |          |          main tcallf.c:16
                  |          |          f1 tcallf.c:12 (cycles:1)
                  |          |          f1 tcallf.c:12
                  |          |          f2 tcallf.c:6 (cycles:3)
                  |          |          f2 tcallf.c:4
                  |          |          f1 tcallf.c:11 (cycles:1 iter:1 avg_cycles:12)
                  |          |          f1 tcallf.c:11
                  |          |          f2 tcallf.c:6 (cycles:3 iter:1 avg_cycles:12)
                  |          |          f2 tcallf.c:4
                  |          |          f1 tcallf.c:10 (cycles:2 iter:1 avg_cycles:12)
                  |          |
                  |           --7.78%--f1 tcallf.c:10 (cycles:2)
                  |                     f1 tcallf.c:9
                  |                     main tcallf.c:16 (cycles:1)
                  |                     main tcallf.c:16
                  |                     main tcallf.c:16 (cycles:1)
                  |                     main tcallf.c:16
                  |                     f1 tcallf.c:12 (cycles:1)
                  |                     f1 tcallf.c:12
                  |                     f2 tcallf.c:6 (cycles:3)
                  |                     f2 tcallf.c:4
                  |                     f1 tcallf.c:11 (cycles:1)
                  |                     f1 tcallf.c:11
                  |                     f2 tcallf.c:6 (cycles:3)
                  |                     f2 tcallf.c:4
                  |                     f1 tcallf.c:10 (cycles:2 iter:1 avg_cycles:12)
                  |                     f1 tcallf.c:9
                  |                     main tcallf.c:16 (cycles:1 iter:1 avg_cycles:12)
                  |                     main tcallf.c:16
                  |                     main tcallf.c:16 (cycles:1 iter:1 avg_cycles:12)
      ...
    
      $ pkill tcallf
      [1]+  Terminated              ./tcallf
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20230330131833.12864-2-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    5ef50613
perf-top.txt 12.7 KB