diff options
author | 2025-01-08 13:00:14 -0800 | |
---|---|---|
committer | 2025-01-10 14:43:55 -0300 | |
commit | dd01b985c52a964ed5b193972e475481fefa0f45 (patch) | |
tree | 33c8278a521e4cf3df8ac85c34dea89b7b3a1727 | |
parent | perf MANIFEST: Add arch/*/include/uapi/asm/bpf_perf_event.h to the perf tarball (diff) | |
download | wireguard-linux-dd01b985c52a964ed5b193972e475481fefa0f45.tar.xz wireguard-linux-dd01b985c52a964ed5b193972e475481fefa0f45.zip |
perf ftrace: Check min/max latency only with bucket range
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.
Before:
$ sudo ./perf ftrace latency -a -T do_futex sleep 1
# DURATION | COUNT | GRAPH |
0 - 0 us | 0 | |
1 - 2 us | 0 | |
2 - 4 us | 0 | |
4 - 8 us | 0 | |
8 - 16 us | 0 | |
16 - 32 us | 0 | |
32 - 64 us | 0 | |
64 - 128 us | 0 | |
128 - 256 us | 0 | |
256 - 512 us | 0 | |
512 - 1024 us | 0 | |
1 - 2 ms | 0 | |
2 - 4 ms | 0 | |
4 - 8 ms | 0 | |
8 - 16 ms | 0 | |
16 - 32 ms | 0 | |
32 - 64 ms | 0 | |
64 - 128 ms | 0 | |
128 - 256 ms | 0 | |
256 - 512 ms | 0 | |
512 - 1024 ms | 0 | |
1 - ... s | 1353 | ############################################## |
After:
$ sudo ./perf ftrace latency -a -T do_futex sleep 1
# DURATION | COUNT | GRAPH |
0 - 0 us | 321 | ########### |
1 - 2 us | 132 | #### |
2 - 4 us | 202 | ####### |
4 - 8 us | 188 | ###### |
8 - 16 us | 16 | |
16 - 32 us | 12 | |
32 - 64 us | 30 | # |
64 - 128 us | 98 | ### |
128 - 256 us | 53 | # |
256 - 512 us | 57 | ## |
512 - 1024 us | 9 | |
1 - 2 ms | 9 | |
2 - 4 ms | 1 | |
4 - 8 ms | 98 | ### |
8 - 16 ms | 5 | |
16 - 32 ms | 7 | |
32 - 64 ms | 32 | # |
64 - 128 ms | 10 | |
128 - 256 ms | 10 | |
256 - 512 ms | 2 | |
512 - 1024 ms | 0 | |
1 - ... s | 0 | |
Fixes: 690a052a6d85c530 ("perf ftrace latency: Add --max-latency option")
Reviewed-by: Gabriele Monaco <gmonaco@redhat.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Gabriele Monaco <gmonaco@redhat.com
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20250108210015.1188531-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to '')
-rw-r--r-- | tools/perf/builtin-ftrace.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c index 08c1cc429b27..90cf2c9915a7 100644 --- a/tools/perf/builtin-ftrace.c +++ b/tools/perf/builtin-ftrace.c @@ -796,8 +796,10 @@ static void make_histogram(struct perf_ftrace *ftrace, int buckets[], // than the min latency desired. if (num > 0) // 1st entry: [ 1 unit .. bucket_range units ] i = num / ftrace->bucket_range + 1; + if (num >= max_latency - min_latency) + i = NUM_BUCKET -1; } - if (i >= NUM_BUCKET || num >= max_latency - min_latency) + if (i >= NUM_BUCKET) i = NUM_BUCKET - 1; num += min_latency; @@ -1738,7 +1740,7 @@ int cmd_ftrace(int argc, const char **argv) ret = -EINVAL; goto out_delete_filters; } - if (!ftrace.min_latency) { + if (ftrace.bucket_range && !ftrace.min_latency) { /* default min latency should be the bucket range */ ftrace.min_latency = ftrace.bucket_range; } @@ -1749,7 +1751,7 @@ int cmd_ftrace(int argc, const char **argv) ret = -EINVAL; goto out_delete_filters; } - if (!ftrace.max_latency) { + if (ftrace.bucket_range && !ftrace.max_latency) { /* default max latency should depend on bucket range and num_buckets */ ftrace.max_latency = (NUM_BUCKET - 2) * ftrace.bucket_range + ftrace.min_latency; |