diff options
author | Tomas Glozar <tglozar@redhat.com> | 2023-08-11 11:52:27 +0200 |
---|---|---|
committer | John Kacur <jkacur@redhat.com> | 2023-09-13 15:57:19 -0400 |
commit | 2c7951caad224bd5199fc000cfc59ae4e9b3e2f0 (patch) | |
tree | 1fb84ef046f3a7824aea7712377540f53744ee51 | |
parent | 56c7cf63942db378e404a6905a387f82fc755038 (diff) | |
download | rteval-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__.py | 17 |
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: |