hwlatdetect: Convert to fstrings
- hwlatdetect: Convert to fstrings - hwlatdetect: Update to integer division - hwlatdetect: Fix incorrect comment about test duration Resolves: rhbz#2121150 Signed-off-by: Leah Leshchinsky <lleshchi@redhat.com>
This commit is contained in:
parent
5463623d28
commit
edf57d7dee
@ -6,7 +6,7 @@ Name: realtime-tests
|
||||
# Numa argument to make: NUMA=1
|
||||
#
|
||||
Version: 2.4
|
||||
Release: 4%{?dist}
|
||||
Release: 5%{?dist}
|
||||
License: GPLv2
|
||||
URL: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
|
||||
Source0: https://www.kernel.org/pub/linux/utils/rt-tests/rt-tests-%{version}.tar.xz
|
||||
@ -24,6 +24,9 @@ Patch1: rt-tests-Remove-arbitrary-num-of-threads-limits.patch
|
||||
Patch2: rt-tests-hackbench-Add-error-checking-to-connect-and.patch
|
||||
Patch3: rt-tests-hackbench-Fix-compile-comparison-of-differe.patch
|
||||
Patch4: rt-tests-hackbench-Fix-compile-warning-about-fall-th.patch
|
||||
Patch5: rt-tests-hwlatdetect.py-Covert-to-f-strings.patch
|
||||
Patch6: rt-tests-hwlatdetect-Update-to-integer-division.patch
|
||||
Patch7: rt-tests-hwlatdetect-Fix-incorrect-comment-about-tes.patch
|
||||
|
||||
%description
|
||||
realtime-tests is a set of programs that test and measure various components of
|
||||
@ -36,6 +39,9 @@ latency. It also tests the functioning of priority-inheritance mutexes.
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
|
||||
%build
|
||||
%set_build_flags
|
||||
@ -86,11 +92,17 @@ latency. It also tests the functioning of priority-inheritance mutexes.
|
||||
%{_mandir}/man8/determine_maximum_mpps.8.*
|
||||
|
||||
%changelog
|
||||
* Mon Nov 14 2022 Leah Leshchinsky <lleshchi@redhat.com> - 2.4-5
|
||||
- hwlatdetect: Convert to fstrings
|
||||
- hwlatdetect: Update to integer division
|
||||
- hwlatdetect: Fix incorrect comment about test duration
|
||||
Resolves: rhbz#2121150
|
||||
|
||||
* Wed Nov 02 2022 John Kacur <jkacur@redhat.com> - 2.4-4
|
||||
- Add error checking in hackbench to connect and getsockname
|
||||
- Fix compile warnings in hackbench because of comparison of different signs
|
||||
- Fix compile warnings in hackbench because of warnings about fall through
|
||||
Resolves: rhbz#bz2115067
|
||||
Resolves: rhbz#2115067
|
||||
|
||||
* Fri Oct 07 2022 John Kacur <jkacur@redhat.com> - 2.4-3
|
||||
- Remove arbitrary limits on number of threads
|
||||
|
||||
34
rt-tests-hwlatdetect-Fix-incorrect-comment-about-tes.patch
Normal file
34
rt-tests-hwlatdetect-Fix-incorrect-comment-about-tes.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 8c7532b710390882ffd7e96d50e75fce99a8249f Mon Sep 17 00:00:00 2001
|
||||
From: John Kacur <jkacur@redhat.com>
|
||||
Date: Fri, 11 Nov 2022 14:48:15 -0500
|
||||
Subject: [PATCH 3/3] rt-tests: hwlatdetect: Fix incorrect comment about
|
||||
testduration
|
||||
|
||||
At some point
|
||||
self.testduration = 10
|
||||
was changed to
|
||||
self.testduration = 30
|
||||
|
||||
but retained the comment, "ten seconds"
|
||||
|
||||
Just change the comment to say, "in seconds" so it's clear what unit
|
||||
we are talking about.
|
||||
|
||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||
|
||||
diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py
|
||||
index c5b3a689dcd1..68df58f7e2d0 100755
|
||||
--- a/src/hwlatdetect/hwlatdetect.py
|
||||
+++ b/src/hwlatdetect/hwlatdetect.py
|
||||
@@ -130,7 +130,7 @@ class Detector:
|
||||
if not self.debugfs.mount():
|
||||
raise RuntimeError("failed to mount debugfs")
|
||||
self.samples = []
|
||||
- self.testduration = 30 # ten seconds
|
||||
+ self.testduration = 30 # in seconds
|
||||
self.have_msr = False
|
||||
self.initsmi = []
|
||||
if os.path.exists('/usr/sbin/rdmsr'):
|
||||
--
|
||||
2.31.1
|
||||
|
||||
34
rt-tests-hwlatdetect-Update-to-integer-division.patch
Normal file
34
rt-tests-hwlatdetect-Update-to-integer-division.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 1eaa7feae3225ae82d00d2e1f02986e34c31a38d Mon Sep 17 00:00:00 2001
|
||||
From: Leah Leshchinsky <lleshchi@redhat.com>
|
||||
Date: Thu, 10 Nov 2022 10:35:27 -0500
|
||||
Subject: [PATCH 2/3] rt-tests: hwlatdetect: Update to integer division
|
||||
|
||||
In Python 3, "/" is a float division operator, as opposed to Python 2,
|
||||
which defaults to integer division. This results in an error when
|
||||
calculating width, which assumes an integer.
|
||||
|
||||
Update width division to integer division with the "//" operator.
|
||||
|
||||
Signed-off-by: Leah Leshchinsky <lleshchi@redhat.com>
|
||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||
|
||||
diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py
|
||||
index 1efbe7a60059..c5b3a689dcd1 100755
|
||||
--- a/src/hwlatdetect/hwlatdetect.py
|
||||
+++ b/src/hwlatdetect/hwlatdetect.py
|
||||
@@ -454,9 +454,10 @@ if __name__ == '__main__':
|
||||
|
||||
if args.window:
|
||||
w = microseconds(args.window)
|
||||
+ width = w//2
|
||||
if w < int(detect.get("width")):
|
||||
- debug(f"shrinking width to {w//2} for new window of {w}")
|
||||
- detect.set("width", w/2)
|
||||
+ debug(f"shrinking width to {width} for new window of {w}")
|
||||
+ detect.set("width", width)
|
||||
debug(f"window parameter = {w}")
|
||||
detect.set("window", w)
|
||||
debug(f"window for sampling set to {w}us")
|
||||
--
|
||||
2.31.1
|
||||
|
||||
225
rt-tests-hwlatdetect.py-Covert-to-f-strings.patch
Normal file
225
rt-tests-hwlatdetect.py-Covert-to-f-strings.patch
Normal file
@ -0,0 +1,225 @@
|
||||
From d9acad79fa157f90522b3dc2b745bbb3b72fef1d Mon Sep 17 00:00:00 2001
|
||||
From: Leah Leshchinsky <lleshchi@redhat.com>
|
||||
Date: Fri, 11 Nov 2022 13:49:33 -0500
|
||||
Subject: [PATCH 1/3] rt-tests: hwlatdetect.py Covert to f-strings
|
||||
|
||||
Add f-strings where applicable for readability.
|
||||
|
||||
Signed-off-by: Leah Leshchinsky <lleshchi@redhat.com>
|
||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||
|
||||
diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py
|
||||
index 9ef50f862127..1efbe7a60059 100755
|
||||
--- a/src/hwlatdetect/hwlatdetect.py
|
||||
+++ b/src/hwlatdetect/hwlatdetect.py
|
||||
@@ -59,7 +59,7 @@ class DebugFS:
|
||||
if self.premounted or self.mounted:
|
||||
debug("not mounting debugfs")
|
||||
return True
|
||||
- debug("mounting debugfs at %s" % path)
|
||||
+ debug(f"mounting debugfs at {path}")
|
||||
self.mountpoint = path
|
||||
cmd = ['/bin/mount', '-t', 'debugfs', 'none', path]
|
||||
self.mounted = (subprocess.call(cmd) == 0)
|
||||
@@ -90,7 +90,7 @@ class DebugFS:
|
||||
try:
|
||||
val = f.readline()
|
||||
except OSError as e:
|
||||
- print("errno: %s" % e)
|
||||
+ print(f"errno: {e}")
|
||||
if e.errno == errno.EAGAIN:
|
||||
val = None
|
||||
else:
|
||||
@@ -192,18 +192,18 @@ class Detector:
|
||||
count = 0
|
||||
threshold = int(self.get("threshold"))
|
||||
self.c_states_off()
|
||||
- debug("enabling detector module (threshold: %d)" % threshold)
|
||||
+ debug(f"enabling detector module (threshold: {threshold})")
|
||||
self.set("enable", 1)
|
||||
while self.get("enable") == 0:
|
||||
debug("still disabled, retrying in a bit")
|
||||
count += 1
|
||||
time.sleep(0.1)
|
||||
- debug("retrying enable of detector module (%d)" % count)
|
||||
+ debug(f"retrying enable of detector module ({count})")
|
||||
self.set("enable", 1)
|
||||
if self.get("threshold") != threshold:
|
||||
debug("start: threshold reset by start, fixing")
|
||||
self.set("threshold", threshold)
|
||||
- debug("detector module enabled (threshold: %d)" % int(self.get("threshold")))
|
||||
+ debug(f"detector module enabled (threshold: {int(self.get('threshold'))})")
|
||||
|
||||
def stop(self):
|
||||
""" disable the detector """
|
||||
@@ -214,7 +214,7 @@ class Detector:
|
||||
debug("still enabled, retrying in a bit")
|
||||
count += 1
|
||||
time.sleep(0.1)
|
||||
- debug("retrying disable of detector module(%d)" % count)
|
||||
+ debug(f"retrying disable of detector module({count})")
|
||||
self.set("enable", 0)
|
||||
self.c_states_on()
|
||||
debug("detector module disabled")
|
||||
@@ -248,7 +248,7 @@ class Tracer(Detector):
|
||||
self.outer = int(o)
|
||||
|
||||
def __str__(self):
|
||||
- return "ts: %s, inner:%d, outer:%d" % (self.timestamp, self.inner, self.outer)
|
||||
+ return f"ts: {self.timestamp}, inner:{self.inner}, outer:{self.outer}"
|
||||
|
||||
def display(self):
|
||||
""" convert object to string and print """
|
||||
@@ -322,8 +322,8 @@ class Tracer(Detector):
|
||||
if output:
|
||||
with open(output, "w") as f:
|
||||
for s in self.samples:
|
||||
- f.write("%s\n" % str(s))
|
||||
- print("report saved to %s (%d samples)" % (output, len(self.samples)))
|
||||
+ f.write(f"{s}\n")
|
||||
+ print(f"report saved to {output} ({len(self.samples)} samples)")
|
||||
|
||||
def display(self):
|
||||
for s in self.samples:
|
||||
@@ -341,7 +341,7 @@ def seconds(sval):
|
||||
if sval.isdigit():
|
||||
return int(sval)
|
||||
if sval[-2].isalpha():
|
||||
- raise RuntimeError("illegal suffix for seconds: '%s'" % sval[-2:-1])
|
||||
+ raise RuntimeError(f"illegal suffix for seconds: '{sval[-2:-1]}'")
|
||||
if sval[-1:] == 's':
|
||||
return int(sval[0:-1])
|
||||
if sval[-1:] == 'm':
|
||||
@@ -352,7 +352,7 @@ def seconds(sval):
|
||||
return int(sval[0:-1]) * 86400
|
||||
if sval[-1:] == 'w':
|
||||
return int(sval[0:-1]) * 86400 * 7
|
||||
- raise RuntimeError("invalid input for seconds: '%s'" % sval)
|
||||
+ raise RuntimeError(f"invalid input for seconds: '{sval}'")
|
||||
|
||||
|
||||
def milliseconds(sval):
|
||||
@@ -367,7 +367,7 @@ def milliseconds(sval):
|
||||
return int(sval[0:-1]) * 1000 * 60
|
||||
if sval[-1] == 'h':
|
||||
return int(sval[0:-1]) * 1000 * 60 * 60
|
||||
- raise RuntimeError("invalid input for milliseconds: %s" % sval)
|
||||
+ raise RuntimeError(f"invalid input for milliseconds: {sval}")
|
||||
|
||||
|
||||
def microseconds(sval):
|
||||
@@ -380,7 +380,7 @@ def microseconds(sval):
|
||||
return int(sval[0:-2])
|
||||
if sval[-1:] == 's':
|
||||
return int(sval[0:-1]) * 1000 * 1000
|
||||
- raise RuntimeError("invalid input for microseconds: '%s'" % sval)
|
||||
+ raise RuntimeError(f"invalid input for microseconds: '{sval}'")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@@ -444,37 +444,37 @@ if __name__ == '__main__':
|
||||
if args.threshold:
|
||||
t = microseconds(args.threshold)
|
||||
detect.set("threshold", t)
|
||||
- debug("threshold set to %dus" % t)
|
||||
+ debug(f"threshold set to {t}us")
|
||||
|
||||
if args.hardlimit:
|
||||
hardlimit = microseconds(args.hardlimit)
|
||||
else:
|
||||
hardlimit = int(detect.get("threshold"))
|
||||
- debug("hardlimit set to %dus" % hardlimit)
|
||||
+ debug(f"hardlimit set to {hardlimit}us")
|
||||
|
||||
if args.window:
|
||||
w = microseconds(args.window)
|
||||
if w < int(detect.get("width")):
|
||||
- debug("shrinking width to %d for new window of %d" % (w/2, w))
|
||||
+ debug(f"shrinking width to {w//2} for new window of {w}")
|
||||
detect.set("width", w/2)
|
||||
- debug("window parameter = %d" % w)
|
||||
+ debug(f"window parameter = {w}")
|
||||
detect.set("window", w)
|
||||
- debug("window for sampling set to %dus" % w)
|
||||
+ debug(f"window for sampling set to {w}us")
|
||||
|
||||
if args.width:
|
||||
w = microseconds(args.width)
|
||||
if w > int(detect.get("window")):
|
||||
- debug("widening window to %d for new width of %d" % (w*2, w))
|
||||
+ debug(f"widening window to {w*2} for new width of {w}")
|
||||
detect.set("window", w*2)
|
||||
- debug("width parameter = %d" % w)
|
||||
+ debug(f"width parameter = {w}")
|
||||
detect.set("width", w)
|
||||
- debug("sample width set to %dus" % w)
|
||||
+ debug(f"sample width set to {w}us")
|
||||
|
||||
if args.duration:
|
||||
detect.testduration = seconds(args.duration)
|
||||
else:
|
||||
detect.testduration = 120 # 2 minutes
|
||||
- debug("test duration is %ds" % detect.testduration)
|
||||
+ debug(f"test duration is {detect.testduration}s")
|
||||
|
||||
if args.watch:
|
||||
watch = True
|
||||
@@ -491,18 +491,18 @@ if __name__ == '__main__':
|
||||
l, r = map(int, [c, c])
|
||||
for i in range(l, r + 1):
|
||||
cpumask |= (1 << i)
|
||||
- debug("set tracing_cpumask to %x" % cpumask)
|
||||
- detect.set("cpumask", "%x" % cpumask)
|
||||
+ debug(f"set tracing_cpumask to {cpumask:x}")
|
||||
+ detect.set("cpumask", f"{cpumask:x}")
|
||||
|
||||
- info("hwlatdetect: test duration %d seconds" % detect.testduration)
|
||||
- info(" detector: %s" % detect.type)
|
||||
+ info(f"hwlatdetect: test duration {detect.testduration} seconds")
|
||||
+ info(f" detector: {detect.type}")
|
||||
info(" parameters:")
|
||||
- info(" CPU list: %s" % args.cpulist)
|
||||
- info(" Latency threshold: %dus" % int(detect.get("threshold")))
|
||||
- info(" Sample window: %dus" % int(detect.get("window")))
|
||||
- info(" Sample width: %dus" % int(detect.get("width")))
|
||||
- info(" Non-sampling period: %dus" % (int(detect.get("window")) - int(detect.get("width"))))
|
||||
- info(" Output File: %s" % reportfile)
|
||||
+ info(f" CPU list: {args.cpulist}")
|
||||
+ info(f" Latency threshold: {int(detect.get('threshold'))}us")
|
||||
+ info(f" Sample window: {int(detect.get('window'))}us")
|
||||
+ info(f" Sample width: {int(detect.get('width'))}us")
|
||||
+ info(f" Non-sampling period: {(int(detect.get('window')) - int(detect.get('width')))}us")
|
||||
+ info(f" Output File: {reportfile}")
|
||||
info("\nStarting test")
|
||||
|
||||
detect.detect()
|
||||
@@ -513,12 +513,12 @@ if __name__ == '__main__':
|
||||
if max_latency == 0:
|
||||
info("Max Latency: Below threshold")
|
||||
else:
|
||||
- info("Max Latency: %dus" % max_latency)
|
||||
+ info(f"Max Latency: {int(max_latency)}us")
|
||||
|
||||
- info("Samples recorded: %d" % len(detect.samples))
|
||||
+ info(f"Samples recorded: {len(detect.samples)}")
|
||||
|
||||
exceeding = detect.get("count")
|
||||
- info("Samples exceeding threshold: %d" % exceeding)
|
||||
+ info(f"Samples exceeding threshold: {exceeding}")
|
||||
|
||||
if detect.have_msr:
|
||||
finishsmi = detect.getsmicounts()
|
||||
@@ -527,8 +527,8 @@ if __name__ == '__main__':
|
||||
if count > detect.initsmi[i]:
|
||||
smis = count - detect.initsmi[i]
|
||||
total_smis += smis
|
||||
- print("%d SMIs occured on cpu %d" % (smis, i))
|
||||
- info("SMIs during run: %d" % total_smis)
|
||||
+ print(f"{smis} SMIs occured on cpu {i}")
|
||||
+ info(f"SMIs during run: {total_smis}")
|
||||
|
||||
maxlatency = int(detect.get("max"))
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user