128 lines
5.1 KiB
Diff
128 lines
5.1 KiB
Diff
From 39115f0a826de1b42fd2b879f7c702e2e9926f3c Mon Sep 17 00:00:00 2001
|
|
From: John Kacur <jkacur@redhat.com>
|
|
Date: Mon, 25 Jul 2022 12:46:57 -0400
|
|
Subject: [PATCH 05/19] rteval: Make use of systopology instead of misc in
|
|
hackbench
|
|
|
|
- Make use of systopology instead of misc in hackbench
|
|
- Add a module docstring
|
|
- Make use of f-strings
|
|
|
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
|
- Add missing "f" from f-string in __starton in hackbench.py
|
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
|
---
|
|
rteval/modules/loads/hackbench.py | 30 ++++++++++++++----------------
|
|
1 file changed, 14 insertions(+), 16 deletions(-)
|
|
|
|
diff --git a/rteval/modules/loads/hackbench.py b/rteval/modules/loads/hackbench.py
|
|
index ddd1378bac75..538f60f00282 100644
|
|
--- a/rteval/modules/loads/hackbench.py
|
|
+++ b/rteval/modules/loads/hackbench.py
|
|
@@ -24,6 +24,7 @@
|
|
# including keys needed to generate an equivalently functional executable
|
|
# are deemed to be part of the source code.
|
|
#
|
|
+""" Load module - run the hackbench program from rt-tests ad a load """
|
|
|
|
import sys
|
|
import os
|
|
@@ -34,8 +35,9 @@ import errno
|
|
from signal import SIGKILL
|
|
from rteval.modules.loads import CommandLineLoad
|
|
from rteval.Log import Log
|
|
-from rteval.misc import expand_cpulist
|
|
-from rteval.systopology import SysTopology
|
|
+from rteval.systopology import CpuList, SysTopology
|
|
+
|
|
+expand_cpulist = CpuList.expand_cpulist
|
|
|
|
class Hackbench(CommandLineLoad):
|
|
def __init__(self, config, logger):
|
|
@@ -46,7 +48,7 @@ class Hackbench(CommandLineLoad):
|
|
if self._donotrun:
|
|
return
|
|
|
|
- 'calculate arguments based on input parameters'
|
|
+ # calculate arguments based on input parameters
|
|
(mem, units) = self.memsize
|
|
if units == 'KB':
|
|
mem = mem / (1024.0 * 1024.0)
|
|
@@ -58,9 +60,9 @@ class Hackbench(CommandLineLoad):
|
|
ratio = float(mem) / float(self.num_cpus)
|
|
if ratio < 0.75:
|
|
if self.__cfg.runlowmem:
|
|
- self._log(Log.WARN, "Low memory system (%f GB/core)!" % ratio)
|
|
+ self._log(Log.WARN, f"Low memory system ({ratio} GB/core)!")
|
|
else:
|
|
- self._log(Log.WARN, "Low memory system (%f GB/core)! Not running hackbench" % ratio)
|
|
+ self._log(Log.WARN, f"Low memory system ({ratio} GB/core)! Not running hackbench")
|
|
self._donotrun = True
|
|
|
|
sysTop = SysTopology()
|
|
@@ -85,7 +87,7 @@ class Hackbench(CommandLineLoad):
|
|
for node, cpus in list(self.cpus.items()):
|
|
if not cpus:
|
|
self.nodes.remove(node)
|
|
- self._log(Log.DEBUG, "node %s has no available cpus, removing" % node)
|
|
+ self._log(Log.DEBUG, f"node {node} has no available cpus, removing")
|
|
|
|
# setup jobs based on the number of cores available per node
|
|
self.jobs = biggest * 3
|
|
@@ -95,7 +97,7 @@ class Hackbench(CommandLineLoad):
|
|
self.__multinodes = False
|
|
if len(self.nodes) > 1:
|
|
self.__multinodes = True
|
|
- self._log(Log.INFO, "running with multiple nodes (%d)" % len(self.nodes))
|
|
+ self._log(Log.INFO, f"running with multiple nodes ({len(self.nodes)})")
|
|
if os.path.exists('/usr/bin/numactl') and not self.cpulist:
|
|
self.__usenumactl = True
|
|
self._log(Log.INFO, "using numactl for thread affinity")
|
|
@@ -121,7 +123,7 @@ class Hackbench(CommandLineLoad):
|
|
|
|
self.tasks = {}
|
|
|
|
- self._log(Log.DEBUG, "starting loop (jobs: %d)" % self.jobs)
|
|
+ self._log(Log.DEBUG, f"starting loop (jobs: {self.jobs})")
|
|
|
|
self.started = False
|
|
|
|
@@ -135,14 +137,14 @@ class Hackbench(CommandLineLoad):
|
|
else:
|
|
args = self.args
|
|
|
|
- self._log(Log.DEBUG, "starting on node %s: args = %s" % (node, args))
|
|
+ self._log(Log.DEBUG, f"starting on node {node}: args = {args}")
|
|
p = subprocess.Popen(args,
|
|
stdin=self.__nullfp,
|
|
stdout=self.__out,
|
|
stderr=self.__err)
|
|
if not p:
|
|
- self._log(Log.DEBUG, "hackbench failed to start on node %s" % node)
|
|
- raise RuntimeError("hackbench failed to start on node %s" % node)
|
|
+ self._log(Log.DEBUG, f"hackbench failed to start on node {node}")
|
|
+ raise RuntimeError(f"hackbench failed to start on node {node}")
|
|
return p
|
|
|
|
def _WorkloadTask(self):
|
|
@@ -181,7 +183,7 @@ class Hackbench(CommandLineLoad):
|
|
|
|
for node in self.nodes:
|
|
if node in self.tasks and self.tasks[node].poll() is None:
|
|
- self._log(Log.INFO, "cleaning up hackbench on node %s" % node)
|
|
+ self._log(Log.INFO, f"cleaning up hackbench on node {node}")
|
|
self.tasks[node].send_signal(SIGKILL)
|
|
if self.tasks[node].poll() is None:
|
|
time.sleep(2)
|
|
@@ -213,7 +215,3 @@ def ModuleParameters():
|
|
def create(config, logger):
|
|
return Hackbench(config, logger)
|
|
|
|
-# TODO: The following test is broken
|
|
-#if __name__ == '__main__':
|
|
-# h = Hackbench(params={'debugging':True, 'verbose':True})
|
|
-# h.run()
|
|
--
|
|
2.37.3
|
|
|