Restore all load module options
Change the default kernel to linux-6.10.5-rteval Fix parsing in kcompile for the correct kernel to compile Resolves: RHEL-54310 Signed-off-by: John Kacur <jkacur@redhat.com>
This commit is contained in:
parent
592a80822a
commit
9b29dd6c7b
102
rteval-Fix-parsing-in-kcompile-of-the-kernel-to-comp.patch
Normal file
102
rteval-Fix-parsing-in-kcompile-of-the-kernel-to-comp.patch
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
From 7e2fae40e551530f6d0ad8528c4de1ec2ae9e31b Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Kacur <jkacur@redhat.com>
|
||||||
|
Date: Sun, 18 Aug 2024 15:23:00 -0400
|
||||||
|
Subject: [PATCH 3/3] rteval: Fix parsing in kcompile of the kernel to compile
|
||||||
|
|
||||||
|
This patch does two things.
|
||||||
|
1. It allows you to create your own customer kernel with a dash -rteval
|
||||||
|
in the name, eg, linux-6.10.5-rteval
|
||||||
|
2. It fixes parsing of the kernel name so that if the user requests
|
||||||
|
linux-6.10.5 it doesn't use linux-6.10.6-rteval instead
|
||||||
|
|
||||||
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||||
|
---
|
||||||
|
rteval/modules/loads/kcompile.py | 30 +++++++++++++++++++-----------
|
||||||
|
1 file changed, 19 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rteval/modules/loads/kcompile.py b/rteval/modules/loads/kcompile.py
|
||||||
|
index 80106812af0a..58c542201a1b 100644
|
||||||
|
--- a/rteval/modules/loads/kcompile.py
|
||||||
|
+++ b/rteval/modules/loads/kcompile.py
|
||||||
|
@@ -122,6 +122,8 @@ class Kcompile(CommandLineLoad):
|
||||||
|
self.cpulist = config.cpulist
|
||||||
|
CommandLineLoad.__init__(self, "kcompile", config, logger)
|
||||||
|
self.logger = logger
|
||||||
|
+ self._kernel_prefix = ""
|
||||||
|
+ self._log(Log.DEBUG, f'self._cfg.source = {self._cfg.source}')
|
||||||
|
|
||||||
|
def _extract_tarball(self):
|
||||||
|
if self.source is None:
|
||||||
|
@@ -152,22 +154,29 @@ class Kcompile(CommandLineLoad):
|
||||||
|
f"error removing builddir ({self.builddir}) (ret={ret})")
|
||||||
|
|
||||||
|
def _find_tarball(self):
|
||||||
|
- # If the user specifies the full kernel name, check if available
|
||||||
|
- tarfile = os.path.join(self.srcdir, self._cfg.source)
|
||||||
|
- if os.path.exists(tarfile):
|
||||||
|
- return tarfile
|
||||||
|
+ """ Find the tarball and self._kernel_prefix """
|
||||||
|
|
||||||
|
if 'rc' in self._cfg.source:
|
||||||
|
- tarfile_prefix = re.search(r"\d{1,2}\.\d{1,3}\-[a-z]*\d{1,2}", self._cfg.source).group(0)
|
||||||
|
+ tarfile_prefix = re.search(r"\d{1,2}\.\d{1,3}\-rc\d{1,2}", self._cfg.source).group(0)
|
||||||
|
+ elif 'rteval' in self._cfg.source:
|
||||||
|
+ tarfile_prefix = re.search(r"(\d{1,2}\.\d{1,3}\.\d{1,3}\-rteval)|(\d{1,2}\.\d{1,3}\-rteval)", self._cfg.source).group(0)
|
||||||
|
else:
|
||||||
|
tarfile_prefix = re.search(r"(\d{1,2}\.\d{1,3}\.\d{1,3})|(\d{1,2}\.\d{1,3})", self._cfg.source).group(0)
|
||||||
|
|
||||||
|
+ # Save the kernel prefix
|
||||||
|
+ self._kernel_prefix = "linux-" + tarfile_prefix
|
||||||
|
+
|
||||||
|
+ # If the user specifies the full kernel name, check if available
|
||||||
|
+ tarfile = os.path.join(self.srcdir, self._cfg.source)
|
||||||
|
+ if os.path.exists(tarfile):
|
||||||
|
+ return tarfile
|
||||||
|
+
|
||||||
|
# either a tar.xz or tar.gz might exist. Check for both.
|
||||||
|
xz_file = os.path.join(self.srcdir,"linux-" + tarfile_prefix + ".tar.xz" )
|
||||||
|
gz_file = os.path.join(self.srcdir,"linux-" + tarfile_prefix + ".tar.gz" )
|
||||||
|
if os.path.exists(xz_file):
|
||||||
|
return xz_file
|
||||||
|
- elif os.path.exists(gz_file):
|
||||||
|
+ if os.path.exists(gz_file):
|
||||||
|
return gz_file
|
||||||
|
raise rtevalRuntimeError(self, f"tarfile {tarfile} does not exist!")
|
||||||
|
|
||||||
|
@@ -178,21 +187,20 @@ class Kcompile(CommandLineLoad):
|
||||||
|
# find our source tarball
|
||||||
|
if self._cfg.source:
|
||||||
|
self.source = self._find_tarball()
|
||||||
|
- kernel_prefix = re.search(r"(linux-\d{1,2}\.\d{1,3}\.\d{1,3})|(linux-\d{1,2}\.\d{1,3})", self.source).group(0)
|
||||||
|
else:
|
||||||
|
tarfiles = glob.glob(os.path.join(self.srcdir, f"{DEFAULT_KERNEL_PREFIX}*"))
|
||||||
|
if tarfiles:
|
||||||
|
self.source = tarfiles[0]
|
||||||
|
else:
|
||||||
|
raise rtevalRuntimeError(self, f" no kernel tarballs found in {self.srcdir}")
|
||||||
|
- kernel_prefix = DEFAULT_KERNEL_PREFIX
|
||||||
|
- self._log(Log.DEBUG, f"kernel_prefix = {kernel_prefix}")
|
||||||
|
+ self._kernel_prefix = DEFAULT_KERNEL_PREFIX
|
||||||
|
+ self._log(Log.DEBUG, f"self._kernel_prefix = {self._kernel_prefix}")
|
||||||
|
|
||||||
|
# check for existing directory
|
||||||
|
kdir = None
|
||||||
|
names = os.listdir(self.builddir)
|
||||||
|
for d in names:
|
||||||
|
- if d.startswith(kernel_prefix):
|
||||||
|
+ if d == self._kernel_prefix:
|
||||||
|
kdir = d
|
||||||
|
break
|
||||||
|
if kdir is None:
|
||||||
|
@@ -200,7 +208,7 @@ class Kcompile(CommandLineLoad):
|
||||||
|
names = os.listdir(self.builddir)
|
||||||
|
for d in names:
|
||||||
|
self._log(Log.DEBUG, f"checking {d}")
|
||||||
|
- if d.startswith(kernel_prefix):
|
||||||
|
+ if d == self._kernel_prefix:
|
||||||
|
kdir = d
|
||||||
|
break
|
||||||
|
if kdir is None:
|
||||||
|
--
|
||||||
|
2.46.0
|
||||||
|
|
80
rteval-Upgrade-load-kernel-to-linux-6.10.5.patch
Normal file
80
rteval-Upgrade-load-kernel-to-linux-6.10.5.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
From 0e6fa19365330937d54132a3077d5d9961877546 Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Kacur <jkacur@redhat.com>
|
||||||
|
Date: Sun, 18 Aug 2024 12:10:55 -0400
|
||||||
|
Subject: [PATCH 2/3] rteval: Upgrade load kernel to linux-6.10.5-rteval
|
||||||
|
|
||||||
|
The older kernel fails to compile on newer tool chains, so upgrade
|
||||||
|
the kernel that kcompile compiles as a load to linux-6.10.5-rteval
|
||||||
|
|
||||||
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||||
|
---
|
||||||
|
Dockerfile | 2 +-
|
||||||
|
Makefile | 2 +-
|
||||||
|
rteval/modules/loads/kcompile.py | 4 ++--
|
||||||
|
rteval/rteval.conf | 2 +-
|
||||||
|
4 files changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Dockerfile b/Dockerfile
|
||||||
|
index 45f6434777d4..f3ee516b57d5 100644
|
||||||
|
--- a/Dockerfile
|
||||||
|
+++ b/Dockerfile
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# Use CentOS Stream 9 as base image
|
||||||
|
FROM centos:stream9
|
||||||
|
|
||||||
|
-ARG KERNEL_VERSION=linux-6.6.1.tar.xz
|
||||||
|
+ARG KERNEL_VERSION=linux-6.10.5-rteval.tar.xz
|
||||||
|
|
||||||
|
|
||||||
|
# Copy current directory to /opt/rteval/
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index d9a6b9f116ac..e1a2bbba0373 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -14,7 +14,7 @@ PREFIX := /usr
|
||||||
|
DATADIR := $(DESTDIR)/$(PREFIX)/share
|
||||||
|
LOADDIR := loadsource
|
||||||
|
|
||||||
|
-KLOAD := $(LOADDIR)/linux-6.6.1.tar.xz
|
||||||
|
+KLOAD := $(LOADDIR)/linux-6.10.5-rteval.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 f7a9c0084805..80106812af0a 100644
|
||||||
|
--- a/rteval/modules/loads/kcompile.py
|
||||||
|
+++ b/rteval/modules/loads/kcompile.py
|
||||||
|
@@ -21,7 +21,7 @@ expand_cpulist = cpulist_utils.expand_cpulist
|
||||||
|
compress_cpulist = cpulist_utils.compress_cpulist
|
||||||
|
nonisolated_cpulist = cpulist_utils.nonisolated_cpulist
|
||||||
|
|
||||||
|
-DEFAULT_KERNEL_PREFIX = "linux-6.6"
|
||||||
|
+DEFAULT_KERNEL_PREFIX = "linux-6.10.5-rteval"
|
||||||
|
|
||||||
|
class KBuildJob:
|
||||||
|
'''Class to manage a build job bound to a particular node'''
|
||||||
|
@@ -334,7 +334,7 @@ class Kcompile(CommandLineLoad):
|
||||||
|
|
||||||
|
def ModuleParameters():
|
||||||
|
return {"source": {"descr": "Source tar ball",
|
||||||
|
- "default": "linux-6.6.1.tar.xz",
|
||||||
|
+ "default": "linux-6.10.5-rteval.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 a4aad33e264f..0611c031c2a0 100644
|
||||||
|
--- a/rteval/rteval.conf
|
||||||
|
+++ b/rteval/rteval.conf
|
||||||
|
@@ -18,7 +18,7 @@ dbench: external
|
||||||
|
stressng: module
|
||||||
|
|
||||||
|
[kcompile]
|
||||||
|
-source: linux-6.6.1.xz
|
||||||
|
+source: linux-6.10.5-rteval.xz
|
||||||
|
jobspercore: 2
|
||||||
|
|
||||||
|
[hackbench]
|
||||||
|
--
|
||||||
|
2.46.0
|
||||||
|
|
103
rteval-restore-all-load-module-options.patch
Normal file
103
rteval-restore-all-load-module-options.patch
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
From 06acb385b2074f39146d5c1a41cb2133c43ade82 Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Kacur <jkacur@redhat.com>
|
||||||
|
Date: Sun, 18 Aug 2024 09:48:49 -0400
|
||||||
|
Subject: [PATCH 1/3] rteval: restore all load module options
|
||||||
|
|
||||||
|
Commit 56c7cf63942d rteval: Allow arguments specific to module group
|
||||||
|
|
||||||
|
intended to allow group options to the overall measurement modules without
|
||||||
|
applying to the load modules. It inadvertently disabled options for most
|
||||||
|
load modules such as hackbench and kcompile.
|
||||||
|
|
||||||
|
This patch reworks the overall group mechanism a little bit to restore
|
||||||
|
these menus.
|
||||||
|
|
||||||
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||||
|
---
|
||||||
|
rteval/modules/__init__.py | 22 +++++++++++++++++-----
|
||||||
|
rteval/modules/measurement/__init__.py | 12 +-----------
|
||||||
|
2 files changed, 18 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rteval/modules/__init__.py b/rteval/modules/__init__.py
|
||||||
|
index acd6330788e2..eb29db86ce7a 100644
|
||||||
|
--- a/rteval/modules/__init__.py
|
||||||
|
+++ b/rteval/modules/__init__.py
|
||||||
|
@@ -280,10 +280,24 @@ reference from the first import"""
|
||||||
|
|
||||||
|
grparser = parser.add_argument_group(f"Group Options for {self.__modtype} modules")
|
||||||
|
grparser.add_argument(f'--{self.__modtype}-cpulist',
|
||||||
|
- dest=f'{self.__modtype}___cpulist', action='store', default="",
|
||||||
|
+ dest=f'{self.__modtype}___cpulist', action='store',
|
||||||
|
+ default="",
|
||||||
|
help=f'CPU list where {self.__modtype} modules will run',
|
||||||
|
metavar='CPULIST')
|
||||||
|
|
||||||
|
+ # Set up options for measurement modules only
|
||||||
|
+ if self.__modtype == 'measurement':
|
||||||
|
+ grparser.add_argument(f'--{self.__modtype}-run-on-isolcpus',
|
||||||
|
+ dest = f'{self.__modtype}___run_on_isolcpus',
|
||||||
|
+ action = "store_true",
|
||||||
|
+ default = config.GetSection("measurement").setdefault("run-on-isolcpus", "false").lower() == "true",
|
||||||
|
+ help = "Include isolated CPUs in default cpulist")
|
||||||
|
+ grparser.add_argument('--idle-set',
|
||||||
|
+ dest='measurement___idlestate',
|
||||||
|
+ metavar='IDLESTATE',
|
||||||
|
+ default=None,
|
||||||
|
+ help='Idle state depth to set on cpus running measurement modules')
|
||||||
|
+
|
||||||
|
for (modname, mod) in list(self.__modsloaded.items()):
|
||||||
|
opts = mod.ModuleParameters()
|
||||||
|
if len(opts) == 0:
|
||||||
|
@@ -296,7 +310,7 @@ reference from the first import"""
|
||||||
|
# Ignore if a section is not found
|
||||||
|
cfg = None
|
||||||
|
|
||||||
|
- modgrparser = parser.add_argument_group(f"Options for the {shortmod} module")
|
||||||
|
+ grparser = parser.add_argument_group(f"Options for the {shortmod} module")
|
||||||
|
for (o, s) in list(opts.items()):
|
||||||
|
descr = 'descr' in s and s['descr'] or ""
|
||||||
|
metavar = 'metavar' in s and s['metavar'] or None
|
||||||
|
@@ -311,7 +325,7 @@ reference from the first import"""
|
||||||
|
default = 'default' in s and s['default'] or None
|
||||||
|
|
||||||
|
|
||||||
|
- modgrparser.add_argument(f'--{shortmod}-{o}',
|
||||||
|
+ grparser.add_argument(f'--{shortmod}-{o}',
|
||||||
|
dest=f"{shortmod}___{o}",
|
||||||
|
action='store',
|
||||||
|
help='%s%s' % (descr,
|
||||||
|
@@ -319,8 +333,6 @@ reference from the first import"""
|
||||||
|
default=default,
|
||||||
|
metavar=metavar)
|
||||||
|
|
||||||
|
- return grparser
|
||||||
|
-
|
||||||
|
|
||||||
|
def InstantiateModule(self, modname, modcfg, modroot=None):
|
||||||
|
"""Imports a module and instantiates an object from the modules create() function.
|
||||||
|
diff --git a/rteval/modules/measurement/__init__.py b/rteval/modules/measurement/__init__.py
|
||||||
|
index 9314d1cb6bbc..44708ce0b035 100644
|
||||||
|
--- a/rteval/modules/measurement/__init__.py
|
||||||
|
+++ b/rteval/modules/measurement/__init__.py
|
||||||
|
@@ -29,17 +29,7 @@ class MeasurementModules(RtEvalModules):
|
||||||
|
|
||||||
|
def SetupModuleOptions(self, parser):
|
||||||
|
"Sets up all the measurement modules' parameters for the option parser"
|
||||||
|
- grparser = super().SetupModuleOptions(parser)
|
||||||
|
-
|
||||||
|
- # Set up options specific for measurement module group
|
||||||
|
- grparser.add_argument("--measurement-run-on-isolcpus",
|
||||||
|
- dest="measurement___run_on_isolcpus",
|
||||||
|
- action="store_true",
|
||||||
|
- default=self._cfg.GetSection("measurement").setdefault("run-on-isolcpus", "false").lower()
|
||||||
|
- == "true",
|
||||||
|
- help="Include isolated CPUs in default cpulist")
|
||||||
|
- grparser.add_argument('--idle-set', dest='measurement___idlestate', metavar='IDLESTATE',
|
||||||
|
- default=None, help='Idle state depth to set on cpus running measurement modules')
|
||||||
|
+ super().SetupModuleOptions(parser)
|
||||||
|
|
||||||
|
|
||||||
|
def Setup(self, modparams):
|
||||||
|
--
|
||||||
|
2.46.0
|
||||||
|
|
13
rteval.spec
13
rteval.spec
@ -1,6 +1,6 @@
|
|||||||
Name: rteval
|
Name: rteval
|
||||||
Version: 3.8
|
Version: 3.8
|
||||||
Release: 10%{?dist}
|
Release: 11%{?dist}
|
||||||
Summary: Utility to evaluate system suitability for RT Linux
|
Summary: Utility to evaluate system suitability for RT Linux
|
||||||
|
|
||||||
Group: Development/Tools
|
Group: Development/Tools
|
||||||
@ -14,7 +14,7 @@ BuildRequires: python3-setuptools
|
|||||||
Requires: python3-lxml
|
Requires: python3-lxml
|
||||||
Requires: python3-libxml2
|
Requires: python3-libxml2
|
||||||
Requires: realtime-tests
|
Requires: realtime-tests
|
||||||
Requires: rteval-loads >= 1.6-5
|
Requires: rteval-loads >= 1.6-12
|
||||||
Requires: sysstat
|
Requires: sysstat
|
||||||
Requires: xz bzip2 tar gzip m4 gawk
|
Requires: xz bzip2 tar gzip m4 gawk
|
||||||
Requires: kernel-headers
|
Requires: kernel-headers
|
||||||
@ -51,6 +51,9 @@ Patch14: rteval-Added-functionality-to-allow-user-to-set-the-.patch
|
|||||||
Patch15: rteval-run-cyclictest-using-default-system-when-sett.patch
|
Patch15: rteval-run-cyclictest-using-default-system-when-sett.patch
|
||||||
Patch16: rteval-Add-module-for-tuned-state.patch
|
Patch16: rteval-Add-module-for-tuned-state.patch
|
||||||
Patch17: rteval-Add-tuned-state-to-rteval-text-report.patch
|
Patch17: rteval-Add-tuned-state-to-rteval-text-report.patch
|
||||||
|
Patch18: rteval-restore-all-load-module-options.patch
|
||||||
|
Patch19: rteval-Upgrade-load-kernel-to-linux-6.10.5.patch
|
||||||
|
Patch20: rteval-Fix-parsing-in-kcompile-of-the-kernel-to-comp.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The rteval script is a utility for measuring various aspects of
|
The rteval script is a utility for measuring various aspects of
|
||||||
@ -83,6 +86,12 @@ to the screen.
|
|||||||
%{_bindir}/rteval
|
%{_bindir}/rteval
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 19 2024 John Kacur <jkacur@redhat.com> - 3.8-11
|
||||||
|
- Restore all load module options
|
||||||
|
- Change the default kernel to linux-6.10.5-rteval
|
||||||
|
- Fix parsing in kcompile for the correct kernel to compile
|
||||||
|
Resolves: RHEL-54310
|
||||||
|
|
||||||
* Tue Aug 13 2024 Tomas Glozar <tglozar@redhat.com> - 3.8-10
|
* Tue Aug 13 2024 Tomas Glozar <tglozar@redhat.com> - 3.8-10
|
||||||
- Collect tuned state in sysinfo
|
- Collect tuned state in sysinfo
|
||||||
Resolves: RHEL-33854
|
Resolves: RHEL-33854
|
||||||
|
Loading…
Reference in New Issue
Block a user