[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Z4Bt8aIkX5uErX8a@google.com>
Date: Thu, 9 Jan 2025 16:46:41 -0800
From: Namhyung Kim <namhyung@...nel.org>
To: Gabriele Monaco <gmonaco@...hat.com>
Cc: Arnaldo Carvalho de Melo <acme@...nel.org>,
Ian Rogers <irogers@...gle.com>,
Kan Liang <kan.liang@...ux.intel.com>, Jiri Olsa <jolsa@...nel.org>,
Adrian Hunter <adrian.hunter@...el.com>,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...nel.org>, LKML <linux-kernel@...r.kernel.org>,
linux-perf-users@...r.kernel.org
Subject: Re: [PATCH 1/2] perf ftrace: Check min/max latency only with bucket
range
On Thu, Jan 09, 2025 at 08:53:02AM +0100, Gabriele Monaco wrote:
> On Wed, 2025-01-08 at 13:00 -0800, Namhyung Kim wrote:
> > It's an optional feature and remains 0 when bucket range is not
> > given.
> > And it makes the histogram goes to the last entry always because any
> > latency (num) is greater than or equal to 0.
>
> Thanks Namhyung for fixing this, something definitely slipped while
> testing..
>
> I confirm your patches work well also when the bucket range is provided but the
> min latency isn't.
>
> I'm wondering if it would be cleaner to propagate your changes (using
> min/max latency only if bucket_range is provided) also to
> make_histogram. That function currently works since we assume
> min_latency to be always 0, which is the case but probably not
> considering it altogether would look a bit better and prevent some
> headache in the future.
It looks good. One thing I concern is 'num += min_latency' before
do_inc. I put it there to make it symmetric to 'num -= min_latency'
so it should go to inside the block too.
Or you could factor it out as a function like 'i = get_bucket_index(num)'
so that it can keep the original num for the stats.
Thanks,
Namhyung
>
> ---
> tools/perf/builtin-ftrace.c | 13 +++++--------
> 1 file changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
> index 076c703e5c334..82d63d7af9d03 100644
> --- a/tools/perf/builtin-ftrace.c
> +++ b/tools/perf/builtin-ftrace.c
> @@ -779,19 +779,16 @@ static void make_histogram(struct perf_ftrace *ftrace, int buckets[],
> if (ftrace->use_nsec)
> num *= 1000;
>
> - i = 0;
> - if (num < min_latency)
> - goto do_inc;
> -
> - num -= min_latency;
> -
> if (!ftrace->bucket_range) {
> i = log2(num);
> if (i < 0)
> i = 0;
> } else {
> - // Less than 1 unit (ms or ns), or, in the future,
> - // than the min latency desired.
> + i = 0;
> + if (num < min_latency)
> + goto do_inc;
> +
> + num -= min_latency;
> if (num > 0) // 1st entry: [ 1 unit .. bucket_range units ]
> i = num / ftrace->bucket_range + 1;
> if (num >= max_latency - min_latency)
>
> base-commit: 257ccfaf9fbef6f54eabf1a8f8a8efcc9036439b
> --
> 2.47.1
>
Powered by blists - more mailing lists