aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Glozar <tglozar@redhat.com>2023-08-11 11:52:27 +0200
committerJohn Kacur <jkacur@redhat.com>2023-09-13 15:57:19 -0400
commit2c7951caad224bd5199fc000cfc59ae4e9b3e2f0 (patch)
tree1fb84ef046f3a7824aea7712377540f53744ee51
parent56c7cf63942db378e404a6905a387f82fc755038 (diff)
downloadrteval-2c7951caad224bd5199fc000cfc59ae4e9b3e2f0.tar.gz
rteval: Add run_on_isolcpus option to measurements
Add option --measurement-run-on-isolcpus for the user to specify to include isolcpus in the default cpulist (without --measurement-cpulist). A default value might also be specified in rteval.conf: [measurement] run-on-isolcpus: true Note that values different from true evaluate as false. Signed-off-by: Tomas Glozar <tglozar@redhat.com> Signed-off-by: John Kacur <jkacur@redhat.com>
-rw-r--r--rteval/modules/measurement/__init__.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/rteval/modules/measurement/__init__.py b/rteval/modules/measurement/__init__.py
index fc6f6e0..2a0556b 100644
--- a/rteval/modules/measurement/__init__.py
+++ b/rteval/modules/measurement/__init__.py
@@ -127,7 +127,15 @@ measurement profiles, based on their characteristics"""
def SetupModuleOptions(self, parser):
"Sets up all the measurement modules' parameters for the option parser"
- self.__container.SetupModuleOptions(parser, self.__cfg)
+ grparser = self.__container.SetupModuleOptions(parser, self.__cfg)
+
+ # 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")
def Setup(self, modparams):
@@ -138,9 +146,10 @@ measurement profiles, based on their characteristics"""
modcfg = self.__cfg.GetSection("measurement")
cpulist = modcfg.cpulist
+ run_on_isolcpus = modcfg.run_on_isolcpus
for (modname, modtype) in modcfg:
- if modtype.lower() == 'module': # Only 'module' will be supported (ds)
+ if isinstance(modtype, str) and modtype.lower() == 'module': # Only 'module' will be supported (ds)
# Extract the measurement modules info
modinfo = self.__container.ModuleInfo(modname)
@@ -160,6 +169,7 @@ measurement profiles, based on their characteristics"""
# Setup this imported module inside the appropriate measurement profile
self.__cfg.AppendConfig(modname, modparams)
self.__cfg.AppendConfig(modname, {'cpulist':cpulist})
+ self.__cfg.AppendConfig(modname, {'run-on-isolcpus':run_on_isolcpus})
mp.Setup(modname)
del self.__container
@@ -171,11 +181,12 @@ measurement profiles, based on their characteristics"""
# Get the reports from all meaurement modules in all measurement profiles
rep_n = libxml2.newNode("Measurements")
cpulist = self.__cfg.GetSection("measurement").cpulist
+ run_on_isolcpus = self.__cfg.GetSection("measurement").run_on_isolcpus
if cpulist:
# Convert str to list and remove offline cpus
cpulist = CpuList(cpulist).cpulist
else:
- cpulist = SysTop().default_cpus()
+ cpulist = SysTop().online_cpus() if run_on_isolcpus else SysTop().default_cpus()
rep_n.newProp("measurecpus", collapse_cpulist(cpulist))
for mp in self.__measureprofiles: