From 98254efae03ba2b5818d5ab4569a00f5d796b6a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= Date: Mon, 2 Jul 2018 23:14:41 +0200 Subject: [PATCH] scheduler: Refactor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ondřej Lysoněk --- tuned/plugins/plugin_scheduler.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/tuned/plugins/plugin_scheduler.py b/tuned/plugins/plugin_scheduler.py index bd2e1ae..4ccd059 100644 --- a/tuned/plugins/plugin_scheduler.py +++ b/tuned/plugins/plugin_scheduler.py @@ -607,20 +607,24 @@ class SchedulerPlugin(base.Plugin): @command_custom("isolated_cores", per_device = False, priority = 10) def _isolated_cores(self, enabling, value, verify, ignore_missing): + affinity = None + if value is not None: + isolated = set(self._cmd.cpulist_unpack(value)) + present = set(self._cpus) + if isolated.issubset(present): + affinity = list(present - isolated) + else: + str_cpus = ",".join([str(x) for x in self._cpus]) + log.error("Invalid isolated_cores specified, '%s' does not match available cores '%s'" + % (value, str_cpus)) + if (enabling or verify) and affinity is None: + return None # currently unsupported if verify: return None - if enabling: - if value is not None: - isolated = set(self._cmd.cpulist_unpack(value)) - present = set(self._cpus) - if not isolated.issubset(present): - str_cpus = ",".join([str(x) for x in self._cpus]) - log.error("invalid isolated_cores specified, '%s' don't match available cores '%s'" % (value, str_cpus)) - return None - affinity = list(present - isolated) - self._set_ps_affinity(affinity) - self._set_all_irq_affinity(affinity) + elif enabling: + self._set_ps_affinity(affinity) + self._set_all_irq_affinity(affinity) else: # Restoring processes' affinity is done in # _instance_unapply_static()