• Namhyung Kim's avatar
    perf report: Fix hierarchy mode on pipe input · a6e4a4a1
    Namhyung Kim authored
    The hierarchy mode needs to setup output formats for each evsel.
    Normally setup_sorting() handles this at the beginning, but it cannot
    do that if data comes from a pipe since there's no evsel info before
    reading the data.  And then perf report cannot process the samples
    in hierarchy mode and think as if there's no sample.
    
    Let's check the condition and setup the output formats after reading
    data so that it can find evsels.
    
    Before:
    
      $ ./perf record -o- true | ./perf report -i- --hierarchy -q
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.000 MB - ]
      Error:
      The - data has no samples!
    
    After:
    
      $ ./perf record -o- true | ./perf report -i- --hierarchy -q
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.000 MB - ]
          94.76%        true
             94.76%        [kernel.kallsyms]
                94.76%        [k] filemap_fault
           5.24%        perf-ex
              5.24%        [kernel.kallsyms]
                 5.06%        [k] __memset
                 0.18%        [k] native_write_msr
    Acked-by: default avatarIan Rogers <irogers@google.com>
    Link: https://lore.kernel.org/r/20231025003121.2811738-1-namhyung@kernel.orgSigned-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    a6e4a4a1
builtin-report.c 49.1 KB