rewritten latency setting using the new API
This commit is contained in:
commit
ab9846ed81
3 changed files with 23 additions and 6 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,5 +2,8 @@
|
|||
# tuned configuration
|
||||
#
|
||||
|
||||
[cpu]
|
||||
force_latency=0
|
||||
|
||||
[script]
|
||||
script=script.sh
|
||||
|
|
|
|||
|
|
@ -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"])
|
||||
|
|
|
|||
Loading…
Reference in a new issue