Re: [PATCH] perf tools: Add -H short option for --hierarchy

From: Namhyung Kim
Date: Sun Nov 05 2023 - 23:43:37 EST


Hi Arnaldo,

On Thu, Oct 26, 2023 at 1:02 PM Arnaldo Carvalho de Melo
<acme@xxxxxxxxxx> wrote:
>
> Em Thu, Oct 26, 2023 at 09:46:02AM +0300, Adrian Hunter escreveu:
> > On 26/10/23 09:26, Namhyung Kim wrote:
> > > I found the hierarchy mode useful, but it's easy to make a typo when
> > > using it. Let's add a short option for that.
>
> > > Also update the documentation. :)
>
> > Perhaps it would also be possible to support bash-completions for
> > long options
>
> It works:
>
> # . ~acme/git/linux/tools/perf/perf-completion.sh
> # perf top --hi<TAB>
> --hide_kernel_symbols --hide_user_symbols --hierarchy
> #
>
> And:
>
> perf top --hie<ENTER>
>
> works as it is unambiguous (so far).

Thanks for the test!

>
> What we don't have is a way to use hierachy by default, i.e. we should
> have:
>
> perf config top.hierarchy=1
>
> and then:
>
> perf top
>
> would always use the hierarchy view.
>
> tools/perf/Documentation/perf-config.txt has the options that can be
> set, like:
>
> # perf report | head -15
> # To display the perf.data header info, please use --header/--header-only options.
> #
> #
> # Total Lost Samples: 0
> #
> # Samples: 373K of event 'cycles:P'
> # Event count (approx.): 205365133495
> #
> # Overhead Command Shared Object Symbol
> # ........ ............... ................. ...................................
> #
> 3.17% MediaDe~hine #6 libc.so.6 [.] pthread_mutex_lock@@GLIBC_2.2.5
> 2.31% swapper [kernel.vmlinux] [k] psi_group_change
> 1.87% MediaSu~sor #10 libc.so.6 [.] pthread_mutex_lock@@GLIBC_2.2.5
> 1.84% MediaSu~isor #7 libc.so.6 [.] pthread_mutex_lock@@GLIBC_2.2.5
> #
>
> Then:
>
> # perf config report.sort_order=dso
> # perf report | head -15
> # To display the perf.data header info, please use --header/--header-only options.
> #
> #
> # Total Lost Samples: 0
> #
> # Samples: 373K of event 'cycles:P'
> # Event count (approx.): 205365133495
> #
> # Overhead Shared Object
> # ........ ..............................................
> #
> 59.52% [kernel.vmlinux]
> 19.79% libc.so.6
> 8.07% libxul.so
> 5.25% libopenh264.so.2.3.1
> #
>
> # cat ~/.perfconfig
> # this file is auto-generated.
> [report]
> sort_order = dso
> [root@five ~]# perf config report.sort_order
> report.sort_order=dso
> #
>
> Right now 'perf top' has only:
>
> static int perf_top_config(const char *var, const char *value, void *cb __maybe_unused)
> {
> if (!strcmp(var, "top.call-graph")) {
> var = "call-graph.record-mode";
> return perf_default_config(var, value, cb);
> }
> if (!strcmp(var, "top.children")) {
> symbol_conf.cumulate_callchain = perf_config_bool(var, value);
> return 0;
> }
>
> return 0;
> }
>
> This would be similar to what was done for --no-children on:

Sure, I can add the config option later. But it's not
compatible with some options that change the output
like --children and --fields. Maybe it needs to handle
some kind of priority of settings for incompatible one.

Thanks,
Namhyung

>
> https://git.kernel.org/torvalds/c/104ac991bd821773cba6f262f97a4a752ed76dd5
>
> $ git show --pretty=full 104ac991bd821773cba6f262f97a4a752ed76dd5 | head -5
> commit 104ac991bd821773cba6f262f97a4a752ed76dd5
> Author: Namhyung Kim <namhyung@xxxxxxxxxx>
> Commit: Jiri Olsa <jolsa@xxxxxxxxxx>
>
> perf top: Add top.children config option
>
> - Arnaldo