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@xxxxxxxxxx> --- rteval/modules/measurement/__init__.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/rteval/modules/measurement/__init__.py b/rteval/modules/measurement/__init__.py index 0e395be..2472b43 100644 --- a/rteval/modules/measurement/__init__.py +++ b/rteval/modules/measurement/__init__.py @@ -146,7 +146,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): @@ -157,9 +165,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) @@ -179,6 +188,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 @@ -190,11 +200,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: -- 2.41.0