From d7cdf56108a235416add0794babb6e72e273b524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= Date: Fri, 21 Aug 2015 14:38:17 +0200 Subject: [PATCH] plugin_cpu: save and restore only changed intel pstate attributes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no need to save and restore intel pstate attributes which aren't changed by tuned profile. Resolves: rhbz#1252156 Signed-off-by: Jaroslav Škarvada --- tuned/plugins/plugin_cpu.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/tuned/plugins/plugin_cpu.py b/tuned/plugins/plugin_cpu.py index f6322c7..171a554 100644 --- a/tuned/plugins/plugin_cpu.py +++ b/tuned/plugins/plugin_cpu.py @@ -124,12 +124,21 @@ class CPULatencyPlugin(base.Plugin): if instance._load_monitor is not None: self._monitors_repository.delete(instance._load_monitor) - def _instance_apply_static(self, instance): - if instance._first_instance and self._has_intel_pstate: - self._min_perf_pct_save = self._get_intel_pstate_attr("min_perf_pct") - self._max_perf_pct_save = self._get_intel_pstate_attr("max_perf_pct") - self._no_turbo_save = self._get_intel_pstate_attr("no_turbo") + def _get_intel_pstate_attr(self, attr): + return self._cmd.read_file("/sys/devices/system/cpu/intel_pstate/%s" % attr, None).strip() + def _set_intel_pstate_attr(self, attr, val): + if val is not None: + self._cmd.write_to_file("/sys/devices/system/cpu/intel_pstate/%s" % attr, val) + + def _getset_intel_pstate_attr(self, attr, value): + if value is None: + return None + v = self._get_intel_pstate_attr(attr) + self._set_intel_pstate_attr(attr, value) + return v + + def _instance_apply_static(self, instance): super(self.__class__, self)._instance_apply_static(instance) if not instance._first_instance: @@ -139,9 +148,9 @@ class CPULatencyPlugin(base.Plugin): if force_latency_value is not None: self._set_latency(force_latency_value) if self._has_intel_pstate: - self._set_intel_pstate_attr("min_perf_pct", instance.options["min_perf_pct"]) - self._set_intel_pstate_attr("max_perf_pct", instance.options["max_perf_pct"]) - self._set_intel_pstate_attr("no_turbo", instance.options["no_turbo"]) + self._min_perf_pct_save = self._getset_intel_pstate_attr("min_perf_pct", instance.options["min_perf_pct"]) + self._max_perf_pct_save = self._getset_intel_pstate_attr("max_perf_pct", instance.options["max_perf_pct"]) + self._no_turbo_save = self._getset_intel_pstate_attr("no_turbo", instance.options["no_turbo"]) def _instance_unapply_static(self, instance, profile_switch = False): super(self.__class__, self)._instance_unapply_static(instance, profile_switch) @@ -168,13 +177,6 @@ class CPULatencyPlugin(base.Plugin): def _instance_unapply_dynamic(self, instance, device): pass - def _get_intel_pstate_attr(self, attr): - return self._cmd.read_file("/sys/devices/system/cpu/intel_pstate/%s" % attr, None).strip() - - def _set_intel_pstate_attr(self, attr, val): - if val is not None: - self._cmd.write_to_file("/sys/devices/system/cpu/intel_pstate/%s" % attr, val) - def _set_latency(self, latency): latency = int(latency) if self._latency != latency: