From 60a791fae430a488b0e552e4e62d49f9849ef115 Mon Sep 17 00:00:00 2001 From: Jan Vcelak Date: Tue, 24 Apr 2012 17:35:46 +0200 Subject: [PATCH 1/2] refs #13, static latency setting for CPU --- tuned/plugins/plugin_cpu.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tuned/plugins/plugin_cpu.py b/tuned/plugins/plugin_cpu.py index f2a54bc..287aa45 100644 --- a/tuned/plugins/plugin_cpu.py +++ b/tuned/plugins/plugin_cpu.py @@ -16,8 +16,16 @@ class CPULatencyPlugin(tuned.plugins.Plugin): super(self.__class__, self).__init__(None, options) self._latency = None + self._load_monitor = None self._cpu_latency_fd = os.open("/dev/cpu_dma_latency", os.O_WRONLY) - self._load_monitor = tuned.monitors.get_repository().create("load", devices) + + def _delayed_init(self): + if self._options["force_latency"] is None: + self._load_monitor = tuned.monitors.get_repository().create("load", self._devices) + self.update_tuning = self._update_tuning_dynamic + else: + self._set_latency(self._options["force_latency"]) + self.update_tuning = self._update_tuning_forced @classmethod def _get_default_options(cls): @@ -25,14 +33,25 @@ class CPULatencyPlugin(tuned.plugins.Plugin): "load_threshold" : 0.2, "latency_low" : 100, "latency_high" : 1000, + "force_latency" : None, } def cleanup(self): - tuned.monitors.get_repository().delete(self._load_monitor) + if self._load_monitor is not None: + tuned.monitors.get_repository().delete(self._load_monitor) os.close(self._cpu_latency_fd) def update_tuning(self): + old_update_tuning = self.update_tuning + self._delayed_init() + assert self.update_tuning != old_update_tuning + self.update_tuning() + + def _update_tuning_forced(self): + pass + + def _update_tuning_dynamic(self): load = self._load_monitor.get_load()["system"] if load < self._options["load_threshold"]: self._set_latency(self._options["latency_high"]) From 84f338461f948415b27839579036b62a4748aa33 Mon Sep 17 00:00:00 2001 From: Jan Vcelak Date: Tue, 24 Apr 2012 17:36:26 +0200 Subject: [PATCH 2/2] refs #13, latency-performance: use cpu force_latency --- profiles/latency-performance/script.sh | 2 -- profiles/latency-performance/tuned.conf | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/profiles/latency-performance/script.sh b/profiles/latency-performance/script.sh index cdd82dd..b68aa32 100755 --- a/profiles/latency-performance/script.sh +++ b/profiles/latency-performance/script.sh @@ -5,7 +5,6 @@ start() { set_elevator "/sys/block/{sd,cciss,dm-,vd}*/queue/scheduler" deadline set_cpu_governor performance - /usr/libexec/tuned/pmqos-static.py cpu_dma_latency=0 return 0 } @@ -13,7 +12,6 @@ start() { stop() { restore_elevator "/sys/block/{sd,cciss,dm-,vd}*/queue/scheduler" restore_cpu_governor - /usr/libexec/tuned/pmqos-static.py disable return 0 } diff --git a/profiles/latency-performance/tuned.conf b/profiles/latency-performance/tuned.conf index 6c4c15a..7f3254d 100644 --- a/profiles/latency-performance/tuned.conf +++ b/profiles/latency-performance/tuned.conf @@ -2,5 +2,8 @@ # tuned configuration # +[cpu] +force_latency=0 + [script] script=script.sh