All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Tomas Glozar <tglozar@redhat.com>, John Kacur <jkacur@redhat.com>,
	Attila Fazekas <afazekas@redhat.com>
Subject: [for-next][PATCH 8/9] rtla/timerlat: Make timerlat_top_cpu->*_count unsigned long long
Date: Fri, 11 Oct 2024 13:30:18 -0400	[thread overview]
Message-ID: <20241011173029.026778216@goodmis.org> (raw)
In-Reply-To: 20241011173010.441043942@goodmis.org

From: Tomas Glozar <tglozar@redhat.com>

Most fields of struct timerlat_top_cpu are unsigned long long, but the
fields {irq,thread,user}_count are int (32-bit signed).

This leads to overflow when tracing on a large number of CPUs for a long
enough time:
$ rtla timerlat top -a20 -c 1-127 -d 12h
...
  0 12:00:00   |          IRQ Timer Latency (us)        |         Thread Timer Latency (us)
CPU COUNT      |      cur       min       avg       max |      cur       min       avg       max
 1 #43200096  |        0         0         1         2 |        3         2         6        12
...
127 #43200096  |        0         0         1         2 |        3         2         5        11
ALL #119144 e4 |                  0         5         4 |                  2        28        16

The average latency should be 0-1 for IRQ and 5-6 for thread, but is
reported as 5 and 28, about 4 to 5 times more, due to the count
overflowing when summed over all CPUs: 43200096 * 127 = 5486412192,
however, 1191444898 (= 5486412192 mod MAX_INT) is reported instead, as
seen on the last line of the output, and the averages are thus ~4.6
times higher than they should be (5486412192 / 1191444898 = ~4.6).

Fix the issue by changing {irq,thread,user}_count fields to unsigned
long long, similarly to other fields in struct timerlat_top_cpu and to
the count variable in timerlat_top_print_sum.

Link: https://lore.kernel.org/20241011121015.2868751-1-tglozar@redhat.com
Reported-by: Attila Fazekas <afazekas@redhat.com>
Signed-off-by: Tomas Glozar <tglozar@redhat.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
 tools/tracing/rtla/src/timerlat_top.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/tracing/rtla/src/timerlat_top.c b/tools/tracing/rtla/src/timerlat_top.c
index 94a2f5bbaeb7..7fb85c8ee3bc 100644
--- a/tools/tracing/rtla/src/timerlat_top.c
+++ b/tools/tracing/rtla/src/timerlat_top.c
@@ -54,9 +54,9 @@ struct timerlat_top_params {
 };
 
 struct timerlat_top_cpu {
-	int			irq_count;
-	int			thread_count;
-	int			user_count;
+	unsigned long long	irq_count;
+	unsigned long long	thread_count;
+	unsigned long long	user_count;
 
 	unsigned long long	cur_irq;
 	unsigned long long	min_irq;
@@ -280,7 +280,7 @@ static void timerlat_top_print(struct osnoise_tool *top, int cpu)
 	/*
 	 * Unless trace is being lost, IRQ counter is always the max.
 	 */
-	trace_seq_printf(s, "%3d #%-9d |", cpu, cpu_data->irq_count);
+	trace_seq_printf(s, "%3d #%-9llu |", cpu, cpu_data->irq_count);
 
 	if (!cpu_data->irq_count) {
 		trace_seq_printf(s, "%s %s %s %s |", no_value, no_value, no_value, no_value);
-- 
2.45.2



  parent reply	other threads:[~2024-10-11 17:30 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-11 17:30 [for-next][PATCH 0/9] rtla: Updates for 6.13 Steven Rostedt
2024-10-11 17:30 ` [for-next][PATCH 1/9] rtla: use the definition for stdout fd when calling isatty() Steven Rostedt
2024-10-11 17:30 ` [for-next][PATCH 2/9] tools/rv: Correct the grammatical errors in the comments Steven Rostedt
2024-10-11 17:30 ` [for-next][PATCH 3/9] tools/rv: Correct the grammatical errors in the comments[2] Steven Rostedt
2024-10-11 17:30 ` [for-next][PATCH 4/9] rv: Fix a typo Steven Rostedt
2024-10-11 17:30 ` [for-next][PATCH 5/9] rtla: Fix consistency in getopt_long for timerlat_hist Steven Rostedt
2024-10-11 17:30 ` [for-next][PATCH 6/9] tools/rtla: drop __NR_sched_getattr Steven Rostedt
2024-10-11 17:30 ` [for-next][PATCH 7/9] tools/rtla: fix collision with glibc sched_attr/sched_set_attr Steven Rostedt
2024-10-11 17:30 ` Steven Rostedt [this message]
2024-10-11 17:30 ` [for-next][PATCH 9/9] rtla/timerlat: Make timerlat_hist_cpu->*_count unsigned long long Steven Rostedt

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=20241011173029.026778216@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=afazekas@redhat.com \
    --cc=jkacur@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglozar@redhat.com \
    /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.