From: Costa Shulyupin <costa.shul@redhat.com>
To: linux-rt-users <linux-rt-users@vger.kernel.org>
Cc: John Kacur <jkacur@redhat.com>,
Costa Shulyupin <costa.shul@redhat.com>,
"Luis Claudio R. Goncalves" <lgoncalv@redhat.com>
Subject: [PATCH v1] rt-tests: hwlatdetect: Add --time-format argument
Date: Mon, 23 Mar 2026 18:03:46 +0200 [thread overview]
Message-ID: <20260323160346.230639-1-costa.shul@redhat.com> (raw)
Add --time-format argument to customize timestamp output format using
strftime directives. By default raw timestamps are output for
backward compatibility.
Add %n directive processing for nanoseconds (9 digits) since strftime
doesn't support it.
Signed-off-by: Costa Shulyupin <costa.shul@redhat.com>
---
src/hwlatdetect/hwlatdetect.py | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py
index 18ca930487f0..34fe5af4844a 100755
--- a/src/hwlatdetect/hwlatdetect.py
+++ b/src/hwlatdetect/hwlatdetect.py
@@ -14,6 +14,7 @@
import subprocess
import sys
import time
+from datetime import datetime
version = "0.8"
debugging = False
@@ -255,6 +256,7 @@ def detect(self):
'private class for tracer sample data'
__slots__ = 'cpu', 'timestamp', 'delta', 'inner', 'outer', 'count'
prev = float('nan')
+ time_format = None
def __init__(self, line):
fields = line.split()
@@ -284,8 +286,17 @@ def __init__(self, line):
self.outer = int(o)
self.count = int(kv["count"]) if "count" in kv else None
+ def format_timestamp(self):
+ """Format timestamp with %n (nanoseconds) support.
+ Float precision is safe for microseconds until year 2242 (2^33 seconds)."""
+ if not self.time_format:
+ return self.timestamp
+ t, ns = self.timestamp.split('.')
+ return datetime.fromtimestamp(float(f"{t}.{ns[:6]}")).strftime(self.time_format.replace('%n', ns))
+
def __str__(self):
- s = f"ts: {self.timestamp}, delta:{self.delta:.6f}, inner:{self.inner}, outer:{self.outer}, cpu:{self.cpu}"
+ s = f"ts: {self.format_timestamp()}"
+ s += f", delta:{self.delta:.6f}, inner:{self.inner}, outer:{self.outer}, cpu:{self.cpu}"
return s if self.count is None else s + f", count:{self.count}"
def display(self):
@@ -472,6 +483,9 @@ def cleanup(self):
dest="watch",
help="print sample data to stdout as it arrives")
+ parser.add_argument("--time-format",
+ help="strftime format for timestamps (e.g. %%H:%%M:%%S.%%n)")
+
args = parser.parse_args()
# need these before creating detector instance
@@ -525,6 +539,8 @@ def cleanup(self):
if args.watch:
watch = True
+ Tracer.Sample.time_format = args.time_format
+
reportfile = args.report
if args.cpulist:
--
2.53.0
reply other threads:[~2026-03-23 16:04 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20260323160346.230639-1-costa.shul@redhat.com \
--to=costa.shul@redhat.com \
--cc=jkacur@redhat.com \
--cc=lgoncalv@redhat.com \
--cc=linux-rt-users@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox