1
0
Fork 0

rewritten latency setting using the new API

This commit is contained in:
HanzZ 2012-04-27 11:48:36 +02:00
commit ab9846ed81
3 changed files with 23 additions and 6 deletions

View file

@ -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
}

View file

@ -2,5 +2,8 @@
# tuned configuration
#
[cpu]
force_latency=0
[script]
script=script.sh

View file

@ -18,15 +18,19 @@ class CPULatencyPlugin(tuned.plugins.Plugin):
super(self.__class__, self).__init__(devices, options)
self._latency = None
self._load_monitor = None
self._cpu_latency_fd = os.open("/dev/cpu_dma_latency", os.O_WRONLY)
self.dynamic_tuning = None
self._load_monitor = None
if self.dynamic_tuning:
self._load_monitor = tuned.monitors.get_repository().create("load", devices)
if not tuned.utils.storage.Storage.get_instance().data.has_key("cpu"):
tuned.utils.storage.Storage.get_instance().data["cpu"] = {}
self.register_command("latency",
self._set_latency,
self._revert_latency)
self.register_command("cpu_governor",
self._set_cpu_governor,
self._revert_cpu_governor)
@ -43,6 +47,7 @@ class CPULatencyPlugin(tuned.plugins.Plugin):
"load_threshold" : 0.2,
"latency_low" : 100,
"latency_high" : 1000,
"latency" : "",
"cpu_governor" : "",
"cpu_multicore_powersave" : "",
"enable_usb_autosupend" : "",
@ -57,11 +62,11 @@ class CPULatencyPlugin(tuned.plugins.Plugin):
def update_tuning(self):
load = self._load_monitor.get_load()["system"]
if load < self._options["load_threshold"]:
self._set_latency(self._options["latency_high"])
self._set_latency_dynamic(self._options["latency_high"])
else:
self._set_latency(self._options["latency_low"])
self._set_latency_dynamic(self._options["latency_low"])
def _set_latency(self, latency):
def _set_latency_dynamic(self, latency):
latency = int(latency)
if self._latency != latency:
log.info("new cpu latency %d" % latency)
@ -69,6 +74,17 @@ class CPULatencyPlugin(tuned.plugins.Plugin):
os.write(self._cpu_latency_fd, latency_bin)
self._latency = latency
@command("cpu", "latency")
def _set_latency(self, value):
latency_bin = tuned.utils.commands.read_file("/dev/cpu_dma_latency")
old_value = str(struct.unpack("i", latency_bin)[0])
self._set_latency_dynamic(value)
return old_value
@command_revert("cpu", "latency")
def _revert_latency(self, value):
self._set_latency_dynamic(value)
@command("cpu", "cpu_governor")
def _set_cpu_governor(self, value):
old_value = tuned.utils.commands.execute(["cpupower", "frequency-info", "-p"])