lkml.org 
[lkml]   [2020]   [Apr]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] perf script: add flamegraph.py script
From
Date
Hi Arnaldo,

thanks for merging!

On 06.04.20 17:11, Arnaldo Carvalho de Melo wrote:
> It works then, so I'll add a note to that effect. But please consider
> fixing it so that it works with both python2 and python3, if possible,
> or to fail gracefully and state that only python3 is supported and that
> perf should be built with "PYTHON=python3" on the make command line.

Ok, I just sent a patch (based on your perf/core branch) to add Python 2
support. I hope soon Python 2 support won't be required anymore ;)

> Some RFEs for you to consider:
>
> 1. make:
>
> perf flamegraph -a -F 99 sleep 1
>
> be equivalent, should be easy.

`perf flamegraph -a -F 99 sleep 1` should be equivalent to `perf script
flamegraph -a -F 99 sleep 1`?
Or in other words, flamegraph should be a top-level command of perf, and
run the flamegraph.py script?

> 2. make the command somehow create a new tab on an existing browser with
> the generated file, and switch the focus to that tab.

As a personal preference I don't like programs interfering with my
browser session. For example I have a flame graph open in a tab, then I
generate another one (overwriting the current file), I would not want
another tab to open with the new flame graph, but instead I want to
manually refresh the currently open tab.

> 3. get whats in:
>
> [root@five ~]# perf report --header-only
> # ========
> # captured on : Mon Apr 6 12:02:52 2020
> # header version : 1
> # data offset : 336
> # data size : 1173584
> # feat offset : 1173920
> # hostname : five
> # os release : 5.5.10-200.fc31.x86_64
> # perf version : 5.6.gb6b7dc6ec0c8
> # arch : x86_64
> # nrcpus online : 12
> # nrcpus avail : 12
> # cpudesc : AMD Ryzen 5 3600X 6-Core Processor
> # cpuid : AuthenticAMD,23,113,0
> # total memory : 32890748 kB
> # cmdline : /home/acme/bin/perf record -a -g -F 99 sleep 1
> # event : name = cycles, , id = { 2918625, 2918626, 2918627, 2918628, 2918629, 2918630, 2918631, 2918632, 2918633, 2918634, 2918635, 2918636 }, size = 120, { sample_period, sample_freq } = 99, sample_type = IP|TID|TIME|CALLCHAIN|CPU|PERIOD, read_format = ID, disabled = 1,>
> # CPU_TOPOLOGY info available, use -I to display
> # NUMA_TOPOLOGY info available, use -I to display
> # pmu mappings: amd_df = 8, software = 1, ibs_op = 11, ibs_fetch = 10, uprobe = 7, cpu = 4, amd_iommu_0 = 12, breakpoint = 5, amd_l3 = 9, tracepoint = 2, kprobe = 6, msr = 13
> # CACHE info available, use -I to display
> # time of first sample : 87600.831767
> # time of last sample : 87601.096829
> # sample duration : 265.062 ms
> # MEM_TOPOLOGY info available, use -I to display
> # bpf_prog_info 40: bpf_prog_6deef7357e7b4530 addr 0xffffffffc030650c size 66
> # bpf_prog_info 41: bpf_prog_6deef7357e7b4530 addr 0xffffffffc03080e8 size 66
> # bpf_prog_info 42: bpf_prog_6deef7357e7b4530 addr 0xffffffffc030a218 size 66
> # bpf_prog_info 43: bpf_prog_6deef7357e7b4530 addr 0xffffffffc036c698 size 66
> # bpf_prog_info 44: bpf_prog_5a2b06eab81b8f51 addr 0xffffffffc036e2c0 size 1132
> # bpf_prog_info 45: bpf_prog_6deef7357e7b4530 addr 0xffffffffc06e7118 size 66
> # bpf_prog_info 46: bpf_prog_6deef7357e7b4530 addr 0xffffffffc06e9cd8 size 66
> # bpf_prog_info 47: bpf_prog_f3b9e166f6c1aaaa addr 0xffffffffc089732c size 1786
> # bpf_prog_info 48: bpf_prog_6deef7357e7b4530 addr 0xffffffffc0dcb64c size 66
> # bpf_prog_info 49: bpf_prog_6deef7357e7b4530 addr 0xffffffffc0dcd0fc size 66
> # bpf_prog_info 50: bpf_prog_6deef7357e7b4530 addr 0xffffffffc0f4d8dc size 66
> # bpf_prog_info 51: bpf_prog_6deef7357e7b4530 addr 0xffffffffc0f4fc7c size 66
> # bpf_prog_info 52: bpf_prog_84efc2eecc454ca6 addr 0xffffffffc0f6e584 size 373
> # missing features: TRACING_DATA BRANCH_STACK GROUP_DESC AUXTRACE STAT CLOCKID DIR_FORMAT COMPRESSED
> # ========
> #
> [root@five ~]#
>
> And make it available in some UI element.

Good idea!
I'll implement this with the next set of flame graph template changes.


Thanks,
Andreas

\
 
 \ /
  Last update: 2020-04-09 19:15    [W:0.117 / U:0.272 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site