All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Andi Kleen" <ak@linux.intel.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v4 3/4] perf tools: Add support for displaying weights in annotate
Date: Tue, 18 Aug 2026 23:15:36 +0000	[thread overview]
Message-ID: <20260818231536.6E7761F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260818230229.1491871-4-ak@linux.intel.com>

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [Medium] The TUI browser width calculation omits cycle and branch counter widths, leading to visual truncation.
- [Medium] Toggling weight columns globally freezes the weight mask for all symbols, breaking accurate display.
- [Medium] Use of compile-time host architecture macros breaks cross-platform analysis for weight modes.
- [Low] Typographical error in the `--weights` command-line option description.
--

--- Patch [3]: [PATCH v4 3/4] perf tools: Add support for displaying weights in annotate ---
commit 9eb5862996d191c9f87138b1476aa94808cc5008
Author: Andi Kleen <ak@linux.intel.com>

perf tools: Add support for displaying weights in annotate

Add support for showing all the three possible per IP weights in
annotate. The weights are shown by defaults if any are non zero. This
is useful, especially with the new insn lat statistics, but also
for all the existing weights.

Add a hotkey to the interactive browser to turn them off (w), as well
as a perf annotate command line option.

> diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
> index 69cb72b2082a6..998f472152e2f 100644
> --- a/tools/perf/builtin-annotate.c
> +++ b/tools/perf/builtin-annotate.c
[ ... ]
> @@ -719,6 +719,8 @@ int cmd_annotate(int argc, const char **argv)
>  	OPT_BOOLEAN(0, "tui", &annotate.use_tui, "Use the TUI interface"),
>  #endif
>  	OPT_BOOLEAN(0, "stdio", &annotate.use_stdio, "Use the stdio interface"),
> +	OPT_BOOLEAN(0, "weights", &symbol_conf.annotate_weight,
> +		    "Hide or hide weight columns in annotation. Default show if non zero."),

[Severity: Low]
This isn't a bug, but there is a typo in the help text here. "Hide or hide"
should probably be "Show or hide" to match the identical option added to
builtin-report.c.

> diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
> index e47a467750890..16713d85db7c5 100644
> --- a/tools/perf/ui/browsers/annotate.c
> +++ b/tools/perf/ui/browsers/annotate.c
[ ... ]
> @@ -1091,6 +1093,15 @@ static int annotate_browser__run(struct annotate_browser *browser,
>  				symbol_conf.show_total_period = true;
>  			annotation__update_column_widths(notes);
>  			continue;
> +		case 'w':
> +			symbol_conf.annotate_weight = !symbol_conf.annotate_weight;
> +			symbol_conf.weight_mask_user = true;
> +			symbol_conf.weight_mask = !symbol_conf.annotate_weight ?
> +				0 : sym_hist__weight_mask(annotation__histogram(notes, evsel));

[Severity: Medium]
Does toggling weight columns globally freeze the weight mask for all symbols?

Because symbol_conf is global, when the 'w' hotkey sets
symbol_conf.weight_mask_user to true, all subsequently viewed symbols will
use the frozen mask from this current symbol.

If a newly opened symbol has different weights (for example, WEIGHT_INSNLAT
instead of WEIGHT_WEIGHT), those relevant columns might incorrectly remain
hidden.

[ ... ]
> @@ -1228,7 +1239,7 @@ int __hist_entry__tui_annotate(struct hist_entry *he, struct map_symbol *ms,
>  	browser.b.width = notes->src->widths.max_line_len;
>  	browser.b.nr_entries = notes->src->nr_entries;
>  	browser.b.entries = &notes->src->source;
> -	browser.b.width += 18; /* Percentage */
> +	browser.b.width += annotation__pcnt_width(notes, evsel);

[Severity: Medium]
Could this width calculation result in visual truncation of the TUI browser?

By replacing the hardcoded 18 with annotation__pcnt_width() in
__hist_entry__tui_annotate(), the browser width calculation remains strictly
bound to the percentage and weight columns. It doesn't appear to make any
allowance for the IPC, cycles, or branch counters that might be displayed.

If no weights are present, the padding drops significantly, which might set
the horizontal scroll limit too narrow to show the full annotated line.

> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index df70e95a84704..d4886e18275ef 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
[ ... ]
> @@ -778,6 +797,47 @@ static bool needs_type_info(struct annotated_data_type *data_type)
>  	return (data_type != &stackop_type) && (data_type != &canary_type);
>  }
>  
> +static const char *annotation__weight_mode_str(enum symbol__weight_mode mode)
> +{
> +	switch (mode) {
> +	case WEIGHT_NONE:
> +		return "";
> +	case WEIGHT_WEIGHT:
> +		return "Weight";
> +	case WEIGHT_INSNLAT:
> +		return "InsnLat";
> +	case WEIGHT_WEIGHT3:
> +#ifdef __powerpc__
> +		return "PCycleLat";
> +#elif defined(__x86_64__)
> +		return "RetireLat";
> +#else
> +		return "Weight3";
> +#endif

[Severity: Medium]
Does using compile-time host architecture macros break cross-platform
analysis for weight modes?

If an ARM64 host machine analyzes an x86_64 perf.data file, it will
incorrectly display "Weight3" instead of "RetireLat".

Would it be better to dynamically inspect the ELF machine constant
(e_machine) via the evsel or session structures instead of relying on host
compile-time macros?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260818230229.1491871-1-ak@linux.intel.com?part=3

  reply	other threads:[~2026-08-18 23:15 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-18 23:01 v4 of perf weight annotation Andi Kleen
2026-08-18 23:01 ` [PATCH v4 1/4] perf tools record: Modernize -W man page Andi Kleen
2026-08-18 23:05   ` sashiko-bot
2026-08-18 23:01 ` [PATCH v4 2/4] perf tools top: Add --weight option Andi Kleen
2026-08-18 23:09   ` sashiko-bot
2026-08-18 23:01 ` [PATCH v4 3/4] perf tools: Add support for displaying weights in annotate Andi Kleen
2026-08-18 23:15   ` sashiko-bot [this message]
2026-08-18 23:01 ` [PATCH v4 4/4] perf tools: Add test for weight annotation Andi Kleen
2026-08-18 23:10   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260818231536.6E7761F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.