From f1f12c1dfb93ea9069bd9052803dce11888cd44f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 1 Mar 2022 08:31:27 -0500 Subject: [PATCH] import rteval-3.3-3.el9 --- .gitignore | 2 +- .rteval.metadata | 2 +- ...of-exclusive-load-module-and-make-st.patch | 79 ------------ ...trict-measurement-threads-to-inherit.patch | 51 ++++++++ ...Fix-test-misses-threshold-assignment.patch | 32 +++++ ...er-doesn-t-specify-a-cpumask-use-the.patch | 34 ++++++ ...se-default-buckets-from-2000-to-3500.patch | 60 +++++++++ ...otrun-work-correctly-in-load-modules.patch | 115 ------------------ ...rteval-Remove-mult-from-hackbench.py.patch | 49 -------- SOURCES/rteval-Remove-self.__err_sleep.patch | 31 ----- ...ement-threads-to-the-cpus-in-cpumask.patch | 35 ------ ...ate-to-using-the-linux-5.13.2-kernel.patch | 65 ---------- ...ble-running-on-a-system-with-low-mem.patch | 42 ------- SPECS/rteval.spec | 46 +++++-- 14 files changed, 213 insertions(+), 430 deletions(-) delete mode 100644 SOURCES/rteval-Add-idea-of-exclusive-load-module-and-make-st.patch create mode 100644 SOURCES/rteval-Don-t-restrict-measurement-threads-to-inherit.patch create mode 100644 SOURCES/rteval-Fix-test-misses-threshold-assignment.patch create mode 100644 SOURCES/rteval-If-the-user-doesn-t-specify-a-cpumask-use-the.patch create mode 100644 SOURCES/rteval-Increase-default-buckets-from-2000-to-3500.patch delete mode 100644 SOURCES/rteval-Make-donotrun-work-correctly-in-load-modules.patch delete mode 100644 SOURCES/rteval-Remove-mult-from-hackbench.py.patch delete mode 100644 SOURCES/rteval-Remove-self.__err_sleep.patch delete mode 100644 SOURCES/rteval-Restrict-measurement-threads-to-the-cpus-in-cpumask.patch delete mode 100644 SOURCES/rteval-Update-to-using-the-linux-5.13.2-kernel.patch delete mode 100644 SOURCES/rteval-hackbench.py-Enable-running-on-a-system-with-low-mem.patch diff --git a/.gitignore b/.gitignore index c5cd9ec..2e62a00 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/rteval-3.2.tar.xz +SOURCES/rteval-3.3.tar.xz diff --git a/.rteval.metadata b/.rteval.metadata index 51e5107..6abb67a 100644 --- a/.rteval.metadata +++ b/.rteval.metadata @@ -1 +1 @@ -91a7a126a2fafd88f03880a21c656fd571a347f5 SOURCES/rteval-3.2.tar.xz +557793c55592bfb3dc0e858274895af4347a2fe9 SOURCES/rteval-3.3.tar.xz diff --git a/SOURCES/rteval-Add-idea-of-exclusive-load-module-and-make-st.patch b/SOURCES/rteval-Add-idea-of-exclusive-load-module-and-make-st.patch deleted file mode 100644 index db22161..0000000 --- a/SOURCES/rteval-Add-idea-of-exclusive-load-module-and-make-st.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 89622562925f432396a07cb8d7bb07da89151f2f Mon Sep 17 00:00:00 2001 -From: John Kacur -Date: Thu, 23 Sep 2021 14:12:40 -0400 -Subject: [PATCH 2/7] rteval: Add idea of exclusive load module and make - stress-ng one - -When running stress-ng as a load module in rteval, we don't want to run -kcompile or hackbench, so create the notion of an exclusive load module -and make stress-ng one. - -Signed-off-by: John Kacur ---- - rteval/modules/__init__.py | 21 +++++++++++++++++++++ - rteval/modules/loads/stressng.py | 2 ++ - 2 files changed, 23 insertions(+) - -diff --git a/rteval/modules/__init__.py b/rteval/modules/__init__.py -index 6ff82d10bf8c..d52dd597186a 100644 ---- a/rteval/modules/__init__.py -+++ b/rteval/modules/__init__.py -@@ -58,6 +58,7 @@ class rtevalModulePrototype(threading.Thread): - "stop": threading.Event(), - "finished": threading.Event()} - self._donotrun = False -+ self._exclusive = False - self.__timestamps = {} - self.__sleeptime = 2.0 - -@@ -75,6 +76,16 @@ class rtevalModulePrototype(threading.Thread): - return self.__ready - - -+ def is_exclusive(self): -+ """ Returns true if this workload should run alone """ -+ return self._exclusive -+ -+ -+ def set_donotrun(self): -+ """ set a module's donotrun field to True """ -+ self._donotrun = True -+ -+ - def _setReady(self, state=True): - """ Sets the ready flag for the module """ - self.__ready = state -@@ -459,7 +470,17 @@ class RtEvalModules: - raise rtevalRuntimeError("No %s modules configured" % self._module_type) - - self._logger.log(Log.INFO, "Preparing %s modules" % self._module_type) -+ exclusive = 0 -+ for (modname, mod) in self.__modules: -+ if mod.is_exclusive() and mod.WorkloadWillRun(): -+ exclusive += 1 - for (modname, mod) in self.__modules: -+ if exclusive >= 1: -+ if exclusive != 1: -+ msg = f"More than one exclusive load: {exclusive}" -+ raise RuntimeError(msg) -+ if not mod.is_exclusive() and mod.WorkloadWillRun(): -+ mod.set_donotrun() - mod.start() - if mod.WorkloadWillRun(): - self._logger.log(Log.DEBUG, "\t - Started %s preparations" % modname) -diff --git a/rteval/modules/loads/stressng.py b/rteval/modules/loads/stressng.py -index 926de38e3116..d084814142fb 100644 ---- a/rteval/modules/loads/stressng.py -+++ b/rteval/modules/loads/stressng.py -@@ -27,6 +27,8 @@ class Stressng(CommandLineLoad): - self._donotrun = False - else: - self._donotrun = True -+ """ When this module runs, other load modules should not """ -+ self._exclusive = True - - def _WorkloadSetup(self): - " Since there is nothing to build, we don't need to do anything here " --- -2.31.1 - diff --git a/SOURCES/rteval-Don-t-restrict-measurement-threads-to-inherit.patch b/SOURCES/rteval-Don-t-restrict-measurement-threads-to-inherit.patch new file mode 100644 index 0000000..b4a8f80 --- /dev/null +++ b/SOURCES/rteval-Don-t-restrict-measurement-threads-to-inherit.patch @@ -0,0 +1,51 @@ +From 75667f4b92e3120bced7ae5464d97941edffd802 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Mon, 7 Feb 2022 16:09:13 -0500 +Subject: [PATCH] rteval: Don't restrict measurement threads to inherited + cpumask + +This patch reverses be811d28a471cfcaf7960289e00960e7f5b18f03 + +This patch syncs rteval to 795433f50f20ef7598db5cfe991b5386e4080d41 in +rt-tests + +If the user does not specify a cpumask, rteval will still run on the +cpus according to the cpumask inherited from the runtime environment. +However, if the user specifies a cpumask, then it will overwrite the +runtime environment where allowed. + +This will allow the user to run measurement threads on isolated cpus. + +Signed-off-by: John Kacur +--- + rteval/modules/measurement/cyclictest.py | 12 +----------- + 1 file changed, 1 insertion(+), 11 deletions(-) + +diff --git a/rteval/modules/measurement/cyclictest.py b/rteval/modules/measurement/cyclictest.py +index 5330d1466302..4ca310bf7490 100644 +--- a/rteval/modules/measurement/cyclictest.py ++++ b/rteval/modules/measurement/cyclictest.py +@@ -217,19 +217,9 @@ class Cyclictest(rtevalModulePrototype): + else: + self.__cpus = online_cpus() + +- # Sort the list of cpus to align with the order reported by +- # cyclictest ++ # Sort the list of cpus to align with the order reported by cyclictest + self.__cpus.sort(key=int) + +- # Get the cpuset from the environment +- cpuset = os.sched_getaffinity(0) +- +- # Convert the elements to strings +- cpuset = [str(c) for c in cpuset] +- +- # Only include cpus that are in the cpuset +- self.__cpus = [c for c in self.__cpus if c in cpuset] +- + self.__numcores = len(self.__cpus) + + info = cpuinfo() +-- +2.34.1 + diff --git a/SOURCES/rteval-Fix-test-misses-threshold-assignment.patch b/SOURCES/rteval-Fix-test-misses-threshold-assignment.patch new file mode 100644 index 0000000..cb9fe3b --- /dev/null +++ b/SOURCES/rteval-Fix-test-misses-threshold-assignment.patch @@ -0,0 +1,32 @@ +From aca562064a8d9f5927aa39bc108eac3bf4d0a56b Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Fri, 14 Jan 2022 14:00:54 -0500 +Subject: [PATCH] rteval: Fix test misses threshold assignment + +Fix case where self.__cfg.threshold has a value but +instead of 'threshold' in self.__cfg, +'breaktrace' in self.__cfg. +by just checking whether self.__cfg.threshold has a value +if self._cfg.breaktrace does not have a value + +Signed-off-by: John Kacur +--- + rteval/modules/measurement/cyclictest.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rteval/modules/measurement/cyclictest.py b/rteval/modules/measurement/cyclictest.py +index cc74b467913d..af8adeeeb402 100644 +--- a/rteval/modules/measurement/cyclictest.py ++++ b/rteval/modules/measurement/cyclictest.py +@@ -299,7 +299,7 @@ class Cyclictest(rtevalModulePrototype): + if 'breaktrace' in self.__cfg and self.__cfg.breaktrace: + self.__cmd.append("-b%d" % int(self.__cfg.breaktrace)) + self.__cmd.append("--tracemark") +- elif 'threshold' in self.__cfg and self.__cfg.threshold: ++ elif self.__cfg.threshold: + self.__cmd.append("-b%d" % int(self.__cfg.threshold)) + + # Buffer for cyclictest data written to stdout +-- +2.31.1 + diff --git a/SOURCES/rteval-If-the-user-doesn-t-specify-a-cpumask-use-the.patch b/SOURCES/rteval-If-the-user-doesn-t-specify-a-cpumask-use-the.patch new file mode 100644 index 0000000..3745bb1 --- /dev/null +++ b/SOURCES/rteval-If-the-user-doesn-t-specify-a-cpumask-use-the.patch @@ -0,0 +1,34 @@ +From 14b0cff41f13602579fd708748eb8a2ad93db85b Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Mon, 14 Feb 2022 22:09:21 -0500 +Subject: [PATCH] rteval: If the user doesn't specify a cpumask, use the + inherited one + +If the user doesn't specify a cpumask, then we need to use the inherited +one to match what cyclictest currently does + +Signed-off-by: John Kacur +--- + rteval/modules/measurement/cyclictest.py | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/rteval/modules/measurement/cyclictest.py b/rteval/modules/measurement/cyclictest.py +index 4ca310bf7490..8fdd5341794a 100644 +--- a/rteval/modules/measurement/cyclictest.py ++++ b/rteval/modules/measurement/cyclictest.py +@@ -216,6 +216,12 @@ class Cyclictest(rtevalModulePrototype): + self.__sparse = True + else: + self.__cpus = online_cpus() ++ # Get the cpuset from the environment ++ cpuset = os.sched_getaffinity(0) ++ # Convert the elements to strings ++ cpuset = [str(c) for c in cpuset] ++ # Only include cpus that are in the cpuset ++ self.__cpus = [c for c in self.__cpus if c in cpuset] + + # Sort the list of cpus to align with the order reported by cyclictest + self.__cpus.sort(key=int) +-- +2.34.1 + diff --git a/SOURCES/rteval-Increase-default-buckets-from-2000-to-3500.patch b/SOURCES/rteval-Increase-default-buckets-from-2000-to-3500.patch new file mode 100644 index 0000000..e000f59 --- /dev/null +++ b/SOURCES/rteval-Increase-default-buckets-from-2000-to-3500.patch @@ -0,0 +1,60 @@ +From 9dff629f186313beebb96594d236dd9268bef1b1 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Wed, 26 Jan 2022 10:06:33 -0500 +Subject: [PATCH] rteval: Increase default buckets from 2000 to 3500 + +Increase the default buckets from 2000 to 3500 + +With commit 0292c8963611 we skip statistics reporting if we run out of +buckets. Increase the default number of buckets to make this less likely +to occur. + +Signed-off-by: John Kacur +--- + doc/rteval.8 | 2 +- + rteval/modules/measurement/cyclictest.py | 2 +- + rteval/rteval.conf | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/doc/rteval.8 b/doc/rteval.8 +index fa24509ce7e5..25dcfcc298e7 100644 +--- a/doc/rteval.8 ++++ b/doc/rteval.8 +@@ -122,7 +122,7 @@ Measurement thread interval in microseconds (default: 100) + Interval increment in microseconds (default: 0) + .TP + .B \-\-cyclictest-buckets=NBUCKETS +-Number of 1 microsecond histogram buckets (default: 2000) ++Number of 1 microsecond histogram buckets (default: 3500) + .TP + .B \-\-hackbench-jobspercore=N + Number of jobs per online-core for hackbench load +diff --git a/rteval/modules/measurement/cyclictest.py b/rteval/modules/measurement/cyclictest.py +index af8adeeeb402..5330d1466302 100644 +--- a/rteval/modules/measurement/cyclictest.py ++++ b/rteval/modules/measurement/cyclictest.py +@@ -450,7 +450,7 @@ def ModuleParameters(): + "default": 100, + "metavar": "INTV_US"}, + "buckets": {"descr": "Histogram width", +- "default": 2000, ++ "default": 3500, + "metavar": "NUM"}, + "priority": {"descr": "Run cyclictest with the given priority", + "default": 95, +diff --git a/rteval/rteval.conf b/rteval/rteval.conf +index 7ce6ef0b5acc..aa0a53bcfc63 100644 +--- a/rteval/rteval.conf ++++ b/rteval/rteval.conf +@@ -6,7 +6,7 @@ duration: 60.0 + report_interval: 600 + + [cyclictest] +-buckets: 2000 ++buckets: 3500 + interval: 100 + distance: 0 + priority: 95 +-- +2.34.1 + diff --git a/SOURCES/rteval-Make-donotrun-work-correctly-in-load-modules.patch b/SOURCES/rteval-Make-donotrun-work-correctly-in-load-modules.patch deleted file mode 100644 index 24fa794..0000000 --- a/SOURCES/rteval-Make-donotrun-work-correctly-in-load-modules.patch +++ /dev/null @@ -1,115 +0,0 @@ -From e94a774b8c14e01622b170517eedb9e90232c42c Mon Sep 17 00:00:00 2001 -From: John Kacur -Date: Thu, 23 Sep 2021 11:29:24 -0400 -Subject: [PATCH 1/7] rteval: Make donotrun work correctly in load modules - -hackbench and kcompile don't correctly adhere to the donotrun variable -which is inherited from class rtevalModulePrototype. If the variable is set -after the modules are loaded, although the modules do not run, some -thread accounting still occurs which causes problems on shutdown of -rteval. - -Fix in the methods in hackbench and kcompile where this is relevant, by -checking the variable before the method runs. - -While we are at it fix a few other things -- change len(threading.enumerate()) to threading.active_count() -- Fix a spelling typo - -This patch is in preparation for a patch to allow stress-ng to run as a -load module without running other modules. - -Signed-off-by: John Kacur ---- - rteval/__init__.py | 4 ++-- - rteval/modules/loads/__init__.py | 2 +- - rteval/modules/loads/hackbench.py | 3 +++ - rteval/modules/loads/kcompile.py | 9 +++++++++ - 4 files changed, 15 insertions(+), 3 deletions(-) - -diff --git a/rteval/__init__.py b/rteval/__init__.py -index 5faed23bc927..22af8e85d5aa 100644 ---- a/rteval/__init__.py -+++ b/rteval/__init__.py -@@ -208,7 +208,7 @@ class RtEval(rtevalReport): - report_interval = int(self.__rtevcfg.report_interval) - if with_loads: - self._loadmods.Unleash() -- nthreads = len(threading.enumerate()) -+ nthreads = threading.active_count() - else: - nthreads = None - self.__logger.log(Log.INFO, "Waiting 30 seconds to let load modules settle down") -@@ -233,7 +233,7 @@ class RtEval(rtevalReport): - "Measurement threads did not use the full time slot. Doing a controlled stop.") - - if with_loads: -- if len(threading.enumerate()) < nthreads: -+ if threading.active_count() < nthreads: - raise RuntimeError("load thread died!") - - if not load_avg_checked: -diff --git a/rteval/modules/loads/__init__.py b/rteval/modules/loads/__init__.py -index 9a942f454536..2c2105efa964 100644 ---- a/rteval/modules/loads/__init__.py -+++ b/rteval/modules/loads/__init__.py -@@ -106,7 +106,7 @@ class LoadModules(RtEvalModules): - "Loads and imports all the configured modules" - - for m in modcfg: -- # hope to eventually have different kinds but module is only on -+ # hope to eventually have different kinds but module is only one - # for now (jcw) - if m[1].lower() == 'module': - self._LoadModule(m[0]) -diff --git a/rteval/modules/loads/hackbench.py b/rteval/modules/loads/hackbench.py -index 2fb90c1946a5..21a803b8a3cd 100644 ---- a/rteval/modules/loads/hackbench.py -+++ b/rteval/modules/loads/hackbench.py -@@ -42,6 +42,9 @@ class Hackbench(CommandLineLoad): - CommandLineLoad.__init__(self, "hackbench", config, logger) - - def _WorkloadSetup(self): -+ if self._donotrun: -+ return -+ - 'calculate arguments based on input parameters' - (mem, units) = self.memsize - if units == 'KB': -diff --git a/rteval/modules/loads/kcompile.py b/rteval/modules/loads/kcompile.py -index 8d08a3d44302..ec85b75f38b5 100644 ---- a/rteval/modules/loads/kcompile.py -+++ b/rteval/modules/loads/kcompile.py -@@ -158,6 +158,9 @@ class Kcompile(CommandLineLoad): - "error removing builddir (%s) (ret=%d)" % (self.builddir, ret)) - - def _WorkloadSetup(self): -+ if self._donotrun: -+ return -+ - # find our source tarball - if 'tarball' in self._cfg: - tarfile = os.path.join(self.srcdir, self._cfg.tarfile) -@@ -219,6 +222,9 @@ class Kcompile(CommandLineLoad): - - - def _WorkloadBuild(self): -+ if self._donotrun: -+ return -+ - null = os.open("/dev/null", os.O_RDWR) - if self._logging: - out = self.open_logfile("kcompile-build.stdout") -@@ -293,6 +299,9 @@ class Kcompile(CommandLineLoad): - - - def _WorkloadCleanup(self): -+ if self._donotrun: -+ return -+ - self._log(Log.DEBUG, "out of stopevent loop") - for n in self.buildjobs: - if self.buildjobs[n].jobid.poll() is None: --- -2.31.1 - diff --git a/SOURCES/rteval-Remove-mult-from-hackbench.py.patch b/SOURCES/rteval-Remove-mult-from-hackbench.py.patch deleted file mode 100644 index abf65c8..0000000 --- a/SOURCES/rteval-Remove-mult-from-hackbench.py.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 50e885286b535c4014e769791c25d172e7ee1a8d Mon Sep 17 00:00:00 2001 -From: John Kacur -Date: Tue, 14 Sep 2021 14:48:01 -0400 -Subject: [PATCH 02/11] rteval: Remove mult from hackbench.py - -The method for calculating the number of jobs to run for hackbench was -changed with the following commit. -commit 67629a1b69ffe72af6bfb3a0d4362ac1920005a7 - -However, the mult variable which was used to calculate the number of -jobs using the older method was not removed. - -Remove it now and simplify the logic. - -Signed-off-by: John Kacur ---- - rteval/modules/loads/hackbench.py | 7 ++----- - 1 file changed, 2 insertions(+), 5 deletions(-) - -diff --git a/rteval/modules/loads/hackbench.py b/rteval/modules/loads/hackbench.py -index ab028c495d8b..8119d50f626a 100644 ---- a/rteval/modules/loads/hackbench.py -+++ b/rteval/modules/loads/hackbench.py -@@ -41,7 +41,6 @@ class Hackbench(CommandLineLoad): - def __init__(self, config, logger): - CommandLineLoad.__init__(self, "hackbench", config, logger) - -- - def _WorkloadSetup(self): - 'calculate arguments based on input parameters' - (mem, units) = self.memsize -@@ -51,12 +50,10 @@ class Hackbench(CommandLineLoad): - mem = mem / 1024.0 - elif units == 'TB': - mem = mem * 1024 -+ - ratio = float(mem) / float(self.num_cpus) -- if ratio >= 0.75: -- mult = float(self._cfg.setdefault('jobspercore', 2)) -- else: -+ if ratio < 0.75: - self._log(Log.WARN, "Low memory system (%f GB/core)!" % ratio) -- mult = 0 - - sysTop = SysTopology() - # get the number of nodes --- -2.31.1 - diff --git a/SOURCES/rteval-Remove-self.__err_sleep.patch b/SOURCES/rteval-Remove-self.__err_sleep.patch deleted file mode 100644 index f92063c..0000000 --- a/SOURCES/rteval-Remove-self.__err_sleep.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 0d226e7032399e94f8bdeac84c55333209f0a558 Mon Sep 17 00:00:00 2001 -From: John Kacur -Date: Tue, 14 Sep 2021 14:56:42 -0400 -Subject: [PATCH 03/11] rteval: Remove self.__err_sleep - -commit 5ed68ae77ec05786aab99fbed35d0347a5d25997 -changed the code to exit gracefully if hackbench failed from memory -errors. No attempt is made anymore to wait to see if memory pressures -ease. The variable __err_sleep however was not removed at the time. -Remove it now, as it is now longer used. - -Signed-off-by: John Kacur ---- - rteval/modules/loads/hackbench.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/rteval/modules/loads/hackbench.py b/rteval/modules/loads/hackbench.py -index 8119d50f626a..2fb90c1946a5 100644 ---- a/rteval/modules/loads/hackbench.py -+++ b/rteval/modules/loads/hackbench.py -@@ -97,7 +97,6 @@ class Hackbench(CommandLineLoad): - '-l', str(self._cfg.setdefault('loops', '1000')), - '-s', str(self._cfg.setdefault('datasize', '1000')) - ] -- self.__err_sleep = 5.0 - - def _WorkloadBuild(self): - # Nothing to build, so we're basically ready --- -2.31.1 - diff --git a/SOURCES/rteval-Restrict-measurement-threads-to-the-cpus-in-cpumask.patch b/SOURCES/rteval-Restrict-measurement-threads-to-the-cpus-in-cpumask.patch deleted file mode 100644 index e55a6f1..0000000 --- a/SOURCES/rteval-Restrict-measurement-threads-to-the-cpus-in-cpumask.patch +++ /dev/null @@ -1,35 +0,0 @@ -From be811d28a471cfcaf7960289e00960e7f5b18f03 Mon Sep 17 00:00:00 2001 -From: John Kacur -Date: Thu, 15 Jul 2021 10:09:03 -0400 -Subject: [PATCH] rteval: Restrict measurement threads to the cpus in cpumask - -Only run measurement threads on cpus in the list from sched_getaffinity - -Signed-off-by: John Kacur ---- - rteval/modules/measurement/cyclictest.py | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/rteval/modules/measurement/cyclictest.py b/rteval/modules/measurement/cyclictest.py -index 232bd6b9acc6..ae91dbb7c043 100644 ---- a/rteval/modules/measurement/cyclictest.py -+++ b/rteval/modules/measurement/cyclictest.py -@@ -209,6 +209,15 @@ class Cyclictest(rtevalModulePrototype): - else: - self.__cpus = online_cpus() - -+ # Get the cpuset from the environment -+ cpuset = os.sched_getaffinity(0) -+ -+ # Convert the elements to strings -+ cpuset = [str(c) for c in cpuset] -+ -+ # Only include cpus that are in the cpuset -+ self.__cpus = [c for c in self.__cpus if c in cpuset] -+ - self.__numcores = len(self.__cpus) - - info = cpuinfo() --- -2.31.1 - diff --git a/SOURCES/rteval-Update-to-using-the-linux-5.13.2-kernel.patch b/SOURCES/rteval-Update-to-using-the-linux-5.13.2-kernel.patch deleted file mode 100644 index 57af4d6..0000000 --- a/SOURCES/rteval-Update-to-using-the-linux-5.13.2-kernel.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 936bdd7aff0e46a1509ee4844cba279053ca97c7 Mon Sep 17 00:00:00 2001 -From: John Kacur -Date: Fri, 16 Jul 2021 11:33:19 -0400 -Subject: [PATCH] rteval: Update to using the linux-5.13.2 kernel - -Update to using the linux-5.13.2 kernel - -Signed-off-by: John Kacur ---- - Makefile | 2 +- - rteval/modules/loads/kcompile.py | 4 ++-- - rteval/rteval.conf | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/Makefile b/Makefile -index d942858d5a62..36d40867883c 100644 ---- a/Makefile -+++ b/Makefile -@@ -17,7 +17,7 @@ PREFIX := /usr - DATADIR := $(DESTDIR)/$(PREFIX)/share - LOADDIR := loadsource - --KLOAD := $(LOADDIR)/linux-5.7.tar.xz -+KLOAD := $(LOADDIR)/linux-5.13.2.tar.xz - BLOAD := $(LOADDIR)/dbench-4.0.tar.gz - LOADS := $(KLOAD) $(BLOAD) - -diff --git a/rteval/modules/loads/kcompile.py b/rteval/modules/loads/kcompile.py -index e747b9f17782..d1955c7aee3d 100644 ---- a/rteval/modules/loads/kcompile.py -+++ b/rteval/modules/loads/kcompile.py -@@ -35,7 +35,7 @@ from rteval.Log import Log - from rteval.misc import expand_cpulist, compress_cpulist - from rteval.systopology import SysTopology - --kernel_prefix = "linux-5.7" -+kernel_prefix = "linux-5.13" - - class KBuildJob: - '''Class to manage a build job bound to a particular node''' -@@ -302,7 +302,7 @@ class Kcompile(CommandLineLoad): - - def ModuleParameters(): - return {"source": {"descr": "Source tar ball", -- "default": "linux-5.7.tar.xz", -+ "default": "linux-5.13.2.tar.xz", - "metavar": "TARBALL"}, - "jobspercore": {"descr": "Number of working threads per core", - "default": 2, -diff --git a/rteval/rteval.conf b/rteval/rteval.conf -index 6065d2e909f6..7ce6ef0b5acc 100644 ---- a/rteval/rteval.conf -+++ b/rteval/rteval.conf -@@ -18,7 +18,7 @@ dbench: external - stressng: module - - [kcompile] --source: linux-5.7.xz -+source: linux-5.13.2.xz - jobspercore: 2 - - [hackbench] --- -2.31.1 - diff --git a/SOURCES/rteval-hackbench.py-Enable-running-on-a-system-with-low-mem.patch b/SOURCES/rteval-hackbench.py-Enable-running-on-a-system-with-low-mem.patch deleted file mode 100644 index 42cd393..0000000 --- a/SOURCES/rteval-hackbench.py-Enable-running-on-a-system-with-low-mem.patch +++ /dev/null @@ -1,42 +0,0 @@ -From cb8263770e4f5834a43db6be8ffb55ffd7f876c9 Mon Sep 17 00:00:00 2001 -From: Punit Agrawal -Date: Wed, 1 Sep 2021 17:08:15 +0900 -Subject: [PATCH 01/11] rteval: hackbench.py: Enable running on a system with - low memory - -The hackbench workload refues to run on RockPro64, a hexacore 64bit -Arm board with 4GB memory, complaining about insufficient memory -per-core. - -On further investigation, it turns out that workload is using an -arbitrary limit of 0.75 GB/core but will quite happily run on much -lower lower memory systems. - -Instead of preventing execution, convert the info message to a warning -when the memory is lower than expected but continue execution. This -should enable the workload to be used on a wider range of systems. - -Signed-off-by: Punit Agrawal -Signed-off-by: John Kacur ---- - rteval/modules/loads/hackbench.py | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/rteval/modules/loads/hackbench.py b/rteval/modules/loads/hackbench.py -index 3b692070e9d9..ab028c495d8b 100644 ---- a/rteval/modules/loads/hackbench.py -+++ b/rteval/modules/loads/hackbench.py -@@ -55,9 +55,8 @@ class Hackbench(CommandLineLoad): - if ratio >= 0.75: - mult = float(self._cfg.setdefault('jobspercore', 2)) - else: -- self._log(Log.INFO, "Low memory system (%f GB/core)! Not running" % ratio) -+ self._log(Log.WARN, "Low memory system (%f GB/core)!" % ratio) - mult = 0 -- self._donotrun = True - - sysTop = SysTopology() - # get the number of nodes --- -2.31.1 - diff --git a/SPECS/rteval.spec b/SPECS/rteval.spec index 22f9936..9187d6a 100644 --- a/SPECS/rteval.spec +++ b/SPECS/rteval.spec @@ -1,6 +1,6 @@ Name: rteval -Version: 3.2 -Release: 8%{?dist} +Version: 3.3 +Release: 3%{?dist} Summary: Utility to evaluate system suitability for RT Linux Group: Development/Tools @@ -25,16 +25,14 @@ Requires: elfutils elfutils-libelf-devel Requires: openssl openssl-devel Requires: stress-ng Requires: perl-interpreter, perl-devel, perl-generators +Requires: libmpc, libmpc-devel BuildArch: noarch #Patches -Patch1: rteval-Restrict-measurement-threads-to-the-cpus-in-cpumask.patch -Patch2: rteval-Update-to-using-the-linux-5.13.2-kernel.patch -Patch3: rteval-hackbench.py-Enable-running-on-a-system-with-low-mem.patch -Patch4: rteval-Remove-mult-from-hackbench.py.patch -Patch5: rteval-Remove-self.__err_sleep.patch -Patch6: rteval-Make-donotrun-work-correctly-in-load-modules.patch -Patch7: rteval-Add-idea-of-exclusive-load-module-and-make-st.patch +Patch1: rteval-Fix-test-misses-threshold-assignment.patch +Patch2: rteval-Increase-default-buckets-from-2000-to-3500.patch +Patch3: rteval-Don-t-restrict-measurement-threads-to-inherit.patch +Patch4: rteval-If-the-user-doesn-t-specify-a-cpumask-use-the.patch %description The rteval script is a utility for measuring various aspects of @@ -51,9 +49,6 @@ to the screen. %patch2 -p1 %patch3 -p1 %patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 %build %{__python3} setup.py build @@ -80,6 +75,33 @@ rm -rf $RPM_BUILD_ROOT %{python3_sitelib}/rteval/__pycache__/* %changelog +* Tue Feb 15 2022 John Kacur - 3.3-3 +- Use inherited cpumask if user doesn't specify a cpumask +Resolves: rhbz#1983783 + +* Mon Feb 07 2022 John Kacur - 3.3-2 +- Don't restrict threads to cpumask in environment if user specifies cpumask +Resolves: rhbz#1983783 + +* Wed Jan 26 2022 John Kacur - 3.3-1 +- Rebase to upstream rteval-3.3 +- Fix case where the threshold assignment is not properly parsed +- Increase the default number of buckets from 2000 to 3500 +Resolves: rhbz#2012294 + +* Fri Jan 14 2022 John Kacur - 3.2-10 +- Fix test missing threshold assignment +Resolves: rhbz#1995195 + +* Wed Jan 12 2022 John Kacur - 3.2-9 +- Do not pass obsolete notrace option to cyclictest +- Parse maximum latency even if outside configured buckets +- Sort the list of cpus +- Skip statistics generation if max latency outside of configured buckets +- Add --cyclictest-threshold=USEC feature +- Add libmpc and libmpc-devel to the Requires +Resolves: rhbz#1995195 + * Thu Nov 04 2021 John Kacur - 3.2-8 - allow hackbench to run with warning on low mem - clean-ups to hackbench.py