diff --git a/tuned/plugins/__init__.py b/tuned/plugins/__init__.py index 926bd36..86c6720 100644 --- a/tuned/plugins/__init__.py +++ b/tuned/plugins/__init__.py @@ -1,6 +1,8 @@ import base import repository +__all__ = ["repository", "get_repository", "Plugin"] + def get_repository(): return repository.PluginRepository.get_instance() diff --git a/tuned/plugins/base.py b/tuned/plugins/base.py index 6a5a27b..60371b1 100644 --- a/tuned/plugins/base.py +++ b/tuned/plugins/base.py @@ -1,9 +1,24 @@ class Plugin(object): + """ + Base class for all plugins. + + Plugins change various system settings in order to get desired performance or power + saving. Plugins use Monitor objects to get information from the running system. + + Methods requiring reimplementation: + - update_tuning(self) + """ + + # class methods + @classmethod def _get_default_options(cls): return {} - def __init__(self, options = None): + # instance methods + + def __init__(self, devices = None, options = None): + self._devices = devices self._options = self._get_default_options() if options is not None: self._merge_options(options) diff --git a/tuned/plugins/plugin_cpu.py b/tuned/plugins/plugin_cpu.py index 4d947d1..8c801e7 100644 --- a/tuned/plugins/plugin_cpu.py +++ b/tuned/plugins/plugin_cpu.py @@ -1,18 +1,20 @@ import tuned.plugins import tuned.monitors - import os import struct class CPULatencyPlugin(tuned.plugins.Plugin): - def __init__(self, options = None): + """ + """ + + def __init__(self, devices = None, options = None): """ """ - super(self.__class__, self).__init__(options) + super(self.__class__, self).__init__(options, None, options) self._latency = None self._cpu_latency_fd = os.open("/dev/cpu_dma_latency", os.O_WRONLY) - self._load_monitor = tuned.monitors.get_repository().create("load") + self._load_monitor = tuned.monitors.get_repository().create("load", devices) @classmethod def _get_default_options(cls): diff --git a/tuned/plugins/plugin_test.py b/tuned/plugins/plugin_test.py index decae54..10f10b9 100644 --- a/tuned/plugins/plugin_test.py +++ b/tuned/plugins/plugin_test.py @@ -1,14 +1,14 @@ import tuned.monitors class TestPlugin(tuned.plugins.Plugin): - def __init__(self, options = None): + def __init__(self, devices = None, options = None): """ """ super(self.__class__, self).__init__(options) self._monitors = [ - tuned.monitors.get_repository().create("load"), - tuned.monitors.get_repository().create("disk") + tuned.monitors.get_repository().create("load", None), + tuned.monitors.get_repository().create("disk", None) ] def cleanup(self): diff --git a/tuned/plugins/repository.py b/tuned/plugins/repository.py index a850dc9..f904b92 100644 --- a/tuned/plugins/repository.py +++ b/tuned/plugins/repository.py @@ -12,11 +12,11 @@ class PluginRepository(tuned.patterns.Singleton): self._loader = tuned.utils.PluginLoader("tuned.plugins", "plugin_", tuned.plugins.Plugin) self._plugins = set() - def create(self, plugin_name): + def create(self, plugin_name, devices, options): log.debug("creating plugin %s" % plugin_name) try: plugin_cls = self._loader.load(plugin_name) - plugin_instance = plugin_cls() + plugin_instance = plugin_cls(devices, options) self._plugins.add(plugin_instance) return plugin_instance except Exception as exception: