Re: [PATCH] perf trace: Skip unnecessary synthesis for summary-only mode

From: Ian Rogers

Date: Mon Mar 30 2026 - 17:00:31 EST


On Mon, Mar 30, 2026 at 1:14 PM Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
>
> It needs to synthesize task info for the comm name. The mmap
> information is only needed for callchain symbolization which is not used
> by the summary mode. Also total or cgroup summary mode don't require
> the task info. Let's skip the processing if possible.
>
> Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
> ---
> tools/perf/builtin-trace.c | 22 +++++++++++++++++-----
> 1 file changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
> index f487fbaa0ad60028..d09d78b3222717d1 100644
> --- a/tools/perf/builtin-trace.c
> +++ b/tools/perf/builtin-trace.c
> @@ -2004,11 +2004,23 @@ static int trace__symbols_init(struct trace *trace, int argc, const char **argv,
> if (err < 0)
> goto out;
>
> - err = __machine__synthesize_threads(trace->host, &trace->tool, &trace->opts.target,
> - evlist->core.threads, trace__tool_process,
> - /*needs_mmap=*/callchain_param.enabled,
> - /*mmap_data=*/false,
> - /*nr_threads_synthesize=*/1);
> + if (trace->summary_only) {
> + if (trace->summary_mode == SUMMARY__BY_THREAD) {
> + err = __machine__synthesize_threads(trace->host, &trace->tool,
> + &trace->opts.target,
> + evlist->core.threads,
> + trace__tool_process,
> + /*needs_mmap=*/false,
> + /*mmap_data=*/false,
> + /*nr_threads_synthesize=*/1);
> + }
> + } else {
> + err = __machine__synthesize_threads(trace->host, &trace->tool, &trace->opts.target,
> + evlist->core.threads, trace__tool_process,
> + /*needs_mmap=*/callchain_param.enabled,
> + /*mmap_data=*/false,
> + /*nr_threads_synthesize=*/1);
> + }

Could this be simplified to something like:
```
if (!trace->summary_only || trace->summary_mode == SUMMARY__BY_THREAD) {
err = __machine__synthesize_threads(trace->host, &trace->tool,
&trace->opts.target,
evlist->core.threads,
trace__tool_process,

/*needs_mmap=*/callchain_param.enabled && !trace->summary_only,
/*mmap_data=*/false,
/*nr_threads_synthesize=*/1);
}
```

Thanks,
Ian

> out:
> if (err) {
> perf_env__exit(&trace->host_env);
> --
> 2.53.0.1185.g05d4b7b318-goog
>