849faebf5a
Prevent using cyclictest and timerlat at the same time Resolves: RHEL-35507 Add a --no-load option Resolves: RHEL-50324 Switch to autosetup, which avoids the need to list every patch in the prep section Signed-off-by: Crystal Wood <crwood@redhat.com>
85 lines
3.1 KiB
Diff
85 lines
3.1 KiB
Diff
From d6f62a5e52843e0b2651268e350a3c0ebe5c543b Mon Sep 17 00:00:00 2001
|
|
From: Crystal Wood <crwood@redhat.com>
|
|
Date: Thu, 20 Jun 2024 21:24:17 -0500
|
|
Subject: [PATCH 4/7] rteval: Enforce only one latency measurement module at a
|
|
time
|
|
|
|
Latency modules will step on each other's toes if run at the same time
|
|
(on the same CPU, though that's an enhancement for later), so only
|
|
run one of them. A priority mechanism allows selecting
|
|
|
|
Signed-off-by: Crystal Wood <crwood@redhat.com>
|
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
|
---
|
|
rteval/modules/__init__.py | 11 +++++++++++
|
|
rteval/modules/measurement/cyclictest.py | 1 +
|
|
rteval/modules/measurement/timerlat.py | 1 +
|
|
3 files changed, 13 insertions(+)
|
|
|
|
diff --git a/rteval/modules/__init__.py b/rteval/modules/__init__.py
|
|
index de1ddc4628c1..2a4eafae71c7 100644
|
|
--- a/rteval/modules/__init__.py
|
|
+++ b/rteval/modules/__init__.py
|
|
@@ -40,6 +40,7 @@ class rtevalModulePrototype(threading.Thread):
|
|
"finished": threading.Event()}
|
|
self._donotrun = False
|
|
self._exclusive = False
|
|
+ self._latency = False
|
|
self.__timestamps = {}
|
|
self.__sleeptime = 2.0
|
|
|
|
@@ -67,6 +68,11 @@ class rtevalModulePrototype(threading.Thread):
|
|
self._exclusive = True
|
|
|
|
|
|
+ def set_latency(self):
|
|
+ """ Sets the module as an exclusive latency measurer """
|
|
+ self._latency = True
|
|
+
|
|
+
|
|
def set_donotrun(self):
|
|
""" set a module's donotrun field to True """
|
|
self._donotrun = True
|
|
@@ -412,9 +418,14 @@ class RtEvalModules:
|
|
|
|
self._logger.log(Log.INFO, f"Preparing {self._module_type} modules")
|
|
exclusive = 0
|
|
+ latency = False
|
|
for (modname, mod) in self.__modules:
|
|
if mod.is_exclusive() and mod.WorkloadWillRun():
|
|
exclusive += 1
|
|
+ if mod._latency:
|
|
+ if latency:
|
|
+ raise RuntimeError("More than one exclusive latency test")
|
|
+ latency = True
|
|
for (modname, mod) in self.__modules:
|
|
if exclusive >= 1:
|
|
if exclusive != 1:
|
|
diff --git a/rteval/modules/measurement/cyclictest.py b/rteval/modules/measurement/cyclictest.py
|
|
index 3a34c1b988d6..a9f5b0c4fba7 100644
|
|
--- a/rteval/modules/measurement/cyclictest.py
|
|
+++ b/rteval/modules/measurement/cyclictest.py
|
|
@@ -216,6 +216,7 @@ class Cyclictest(rtevalModulePrototype):
|
|
self.__started = False
|
|
self.__cyclicoutput = None
|
|
self.__breaktraceval = None
|
|
+ self.set_latency()
|
|
|
|
|
|
@staticmethod
|
|
diff --git a/rteval/modules/measurement/timerlat.py b/rteval/modules/measurement/timerlat.py
|
|
index f3bdc7098bc0..e4b80c33552e 100644
|
|
--- a/rteval/modules/measurement/timerlat.py
|
|
+++ b/rteval/modules/measurement/timerlat.py
|
|
@@ -216,6 +216,7 @@ class Timerlat(rtevalModulePrototype):
|
|
logfnc=self._log)
|
|
self.__timerlatdata['system'].description = (f"({self.__numcores} cores) ") + info['0']['model name']
|
|
self._log(Log.DEBUG, f"system using {self.__numcores} cpu cores")
|
|
+ self.set_latency()
|
|
|
|
|
|
def _WorkloadSetup(self):
|
|
--
|
|
2.45.2
|
|
|