[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <YnqjQmgXebK4itXj@kernel.org>
Date: Tue, 10 May 2022 14:39:14 -0300
From: Arnaldo Carvalho de Melo <acme@...nel.org>
To: Namhyung Kim <namhyung@...nel.org>
Cc: Jiri Olsa <jolsa@...nel.org>, Ingo Molnar <mingo@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
LKML <linux-kernel@...r.kernel.org>,
Andi Kleen <ak@...ux.intel.com>,
Ian Rogers <irogers@...gle.com>,
linux-perf-users@...r.kernel.org
Subject: Re: [PATCH] perf annotate: Add --percent-limit option
Em Mon, May 02, 2022 at 04:20:15PM -0700, Namhyung Kim escreveu:
> Like in perf report and perf top, Add this option to limit the number
> of functions it displays based on the overhead value in percent.
>
> This affects only stdio and stdio2 output modes. Without this, it
> shows very long disassembly lines for every function in the data
> file. If users don't want this behavior, they can set a value in
> percent to suppress that.
Thanks, applied.
- Arnaldo
> Signed-off-by: Namhyung Kim <namhyung@...nel.org>
> ---
> tools/perf/Documentation/perf-annotate.txt | 5 +++++
> tools/perf/builtin-annotate.c | 24 ++++++++++++++++++++++
> 2 files changed, 29 insertions(+)
>
> diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt
> index 33c2521cba4a..18fcc52809fb 100644
> --- a/tools/perf/Documentation/perf-annotate.txt
> +++ b/tools/perf/Documentation/perf-annotate.txt
> @@ -147,6 +147,11 @@ include::itrace.txt[]
> The period/hits keywords set the base the percentage is computed
> on - the samples period or the number of samples (hits).
>
> +--percent-limit::
> + Do not show functions which have an overhead under that percent on
> + stdio or stdio2 (Default: 0). Note that this is about selection of
> + functions to display, not about lines within the function.
> +
> SEE ALSO
> --------
> linkperf:perf-record[1], linkperf:perf-report[1]
> diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
> index e65dc380be15..2ffe071dbcff 100644
> --- a/tools/perf/builtin-annotate.c
> +++ b/tools/perf/builtin-annotate.c
> @@ -54,6 +54,7 @@ struct perf_annotate {
> bool skip_missing;
> bool has_br_stack;
> bool group_set;
> + float min_percent;
> const char *sym_hist_filter;
> const char *cpu_list;
> DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
> @@ -324,6 +325,17 @@ static void hists__find_annotations(struct hists *hists,
> (strcmp(he->ms.sym->name, ann->sym_hist_filter) != 0))
> goto find_next;
>
> + if (ann->min_percent) {
> + float percent = 0;
> + u64 total = hists__total_period(hists);
> +
> + if (total)
> + percent = 100.0 * he->stat.period / total;
> +
> + if (percent < ann->min_percent)
> + goto find_next;
> + }
> +
> notes = symbol__annotation(he->ms.sym);
> if (notes->src == NULL) {
> find_next:
> @@ -457,6 +469,16 @@ static int __cmd_annotate(struct perf_annotate *ann)
> return ret;
> }
>
> +static int parse_percent_limit(const struct option *opt, const char *str,
> + int unset __maybe_unused)
> +{
> + struct perf_annotate *ann = opt->value;
> + double pcnt = strtof(str, NULL);
> +
> + ann->min_percent = pcnt;
> + return 0;
> +}
> +
> static const char * const annotate_usage[] = {
> "perf annotate [<options>]",
> NULL
> @@ -557,6 +579,8 @@ int cmd_annotate(int argc, const char **argv)
> OPT_CALLBACK(0, "percent-type", &annotate.opts, "local-period",
> "Set percent type local/global-period/hits",
> annotate_parse_percent_type),
> + OPT_CALLBACK(0, "percent-limit", &annotate, "percent",
> + "Don't show entries under that percent", parse_percent_limit),
> OPT_CALLBACK_OPTARG(0, "itrace", &itrace_synth_opts, NULL, "opts",
> "Instruction Tracing options\n" ITRACE_HELP,
> itrace_parse_synth_opts),
> --
> 2.36.0.464.gb9c8b46e94-goog
--
- Arnaldo
Powered by blists - more mailing lists