golden hour
/lib/python2.7/site-packages/tuned/plugins
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
49 B
Del
OK
__init__.pyc
232 B
Del
OK
__init__.pyo
232 B
Del
OK
base.py
21.7 KB
Del
OK
base.pyc
24.43 KB
Del
OK
base.pyo
24.43 KB
Del
OK
decorators.py
983 B
Del
OK
decorators.pyc
1.52 KB
Del
OK
decorators.pyo
1.52 KB
Del
OK
exceptions.py
99 B
Del
OK
exceptions.pyc
460 B
Del
OK
exceptions.pyo
460 B
Del
OK
hotplug.py
2.97 KB
Del
OK
hotplug.pyc
4.09 KB
Del
OK
hotplug.pyo
4.09 KB
Del
OK
instance
-
Del
OK
plugin_audio.py
2.46 KB
Del
OK
plugin_audio.pyc
4.36 KB
Del
OK
plugin_audio.pyo
4.36 KB
Del
OK
plugin_bootloader.py
12.6 KB
Del
OK
plugin_bootloader.pyc
15.47 KB
Del
OK
plugin_bootloader.pyo
15.47 KB
Del
OK
plugin_cpu.py
12.95 KB
Del
OK
plugin_cpu.pyc
15.46 KB
Del
OK
plugin_cpu.pyo
15.42 KB
Del
OK
plugin_disk.py
13.77 KB
Del
OK
plugin_disk.pyc
16.92 KB
Del
OK
plugin_disk.pyo
16.92 KB
Del
OK
plugin_eeepc_she.py
2.04 KB
Del
OK
plugin_eeepc_she.pyc
3.3 KB
Del
OK
plugin_eeepc_she.pyo
3.3 KB
Del
OK
plugin_modules.py
3.8 KB
Del
OK
plugin_modules.pyc
5.64 KB
Del
OK
plugin_modules.pyo
5.64 KB
Del
OK
plugin_mounts.py
5.17 KB
Del
OK
plugin_mounts.pyc
6.36 KB
Del
OK
plugin_mounts.pyo
6.36 KB
Del
OK
plugin_net.py
14.02 KB
Del
OK
plugin_net.pyc
16.5 KB
Del
OK
plugin_net.pyo
16.5 KB
Del
OK
plugin_scheduler.py
23.2 KB
Del
OK
plugin_scheduler.pyc
25.28 KB
Del
OK
plugin_scheduler.pyo
25.28 KB
Del
OK
plugin_script.py
2.47 KB
Del
OK
plugin_script.pyc
3.77 KB
Del
OK
plugin_script.pyo
3.71 KB
Del
OK
plugin_scsi_host.py
2.59 KB
Del
OK
plugin_scsi_host.pyc
5.01 KB
Del
OK
plugin_scsi_host.pyo
5.01 KB
Del
OK
plugin_selinux.py
1.56 KB
Del
OK
plugin_selinux.pyc
2.96 KB
Del
OK
plugin_selinux.pyo
2.96 KB
Del
OK
plugin_sysctl.py
5.45 KB
Del
OK
plugin_sysctl.pyc
7.33 KB
Del
OK
plugin_sysctl.pyo
7.33 KB
Del
OK
plugin_sysfs.py
2.05 KB
Del
OK
plugin_sysfs.pyc
3.77 KB
Del
OK
plugin_sysfs.pyo
3.77 KB
Del
OK
plugin_systemd.py
4.82 KB
Del
OK
plugin_systemd.pyc
6.87 KB
Del
OK
plugin_systemd.pyo
6.87 KB
Del
OK
plugin_usb.py
1.49 KB
Del
OK
plugin_usb.pyc
3.06 KB
Del
OK
plugin_usb.pyo
3.06 KB
Del
OK
plugin_video.py
2.81 KB
Del
OK
plugin_video.pyc
4.2 KB
Del
OK
plugin_video.pyo
4.2 KB
Del
OK
plugin_vm.py
2.74 KB
Del
OK
plugin_vm.pyc
4.31 KB
Del
OK
plugin_vm.pyo
4.31 KB
Del
OK
repository.py
1.49 KB
Del
OK
repository.pyc
2.46 KB
Del
OK
repository.pyo
2.4 KB
Del
OK
Edit: plugin_modules.py
import re import os.path from . import base from .decorators import * import tuned.logs from subprocess import * from tuned.utils.commands import commands import tuned.consts as consts log = tuned.logs.get() class ModulesPlugin(base.Plugin): """ Plugin for applying custom kernel modules options. """ def __init__(self, *args, **kwargs): super(ModulesPlugin, self).__init__(*args, **kwargs) self._has_dynamic_options = True self._cmd = commands() def _instance_init(self, instance): instance._has_dynamic_tuning = False instance._has_static_tuning = True instance._modules = instance.options def _instance_cleanup(self, instance): pass def _reload_modules(self, modules): for module in modules: retcode, out = self._cmd.execute(["modprobe", "-r", module]) if retcode < 0: log.warn("'modprobe' command not found, cannot reload kernel modules, reboot is required") return elif retcode > 0: log.debug("cannot remove kernel module '%s': %s" % (module, out.strip())) retcode, out = self._cmd.execute(["modprobe", module]) if retcode != 0: log.warn("cannot insert/reinsert module '%s', reboot is required: %s" % (module, out.strip())) def _instance_apply_static(self, instance): self._clear_modprobe_file() s = "" retcode = 0 skip_check = False reload_list = [] for option, value in list(instance._modules.items()): module = self._variables.expand(option) v = self._variables.expand(value) if not skip_check: retcode, out = self._cmd.execute(["modinfo", module]) if retcode < 0: skip_check = True log.warn("'modinfo' command not found, not checking kernel modules") elif retcode > 0: log.error("kernel module '%s' not found, skipping it" % module) if skip_check or retcode == 0: if len(v) > 1 and v[0:2] == "+r": v = re.sub(r"^\s*\+r\s*,?\s*", "", v) reload_list.append(module) if len(v) > 0: s += "options " + module + " " + v + "\n" else: log.debug("module '%s' doesn't have any option specified, not writing it to modprobe.d" % module) self._cmd.write_to_file(consts.MODULES_FILE, s) l = len(reload_list) if l > 0: self._reload_modules(reload_list) if len(instance._modules) != l: log.info(consts.STR_HINT_REBOOT) def _unquote_path(self, path): return str(path).replace("/", "") def _instance_verify_static(self, instance, ignore_missing, devices): ret = True # not all modules exports all their parameteters through sysfs, so hardcode check with ignore_missing ignore_missing = True r = re.compile(r"\s+") for option, value in list(instance._modules.items()): module = self._variables.expand(option) v = self._variables.expand(value) v = re.sub(r"^\s*\+r\s*,?\s*", "", v) mpath = "/sys/module/%s" % module if not os.path.exists(mpath): ret = False log.error(consts.STR_VERIFY_PROFILE_FAIL % "module '%s' is not loaded" % module) else: log.info(consts.STR_VERIFY_PROFILE_OK % "module '%s' is loaded" % module) l = r.split(v) for item in l: arg = item.split("=") if len(arg) != 2: log.warn("unrecognized module option for module '%s': %s" % (module, item)) else: if self._verify_value(arg[0], arg[1], self._cmd.read_file(mpath + "/parameters/" + self._unquote_path(arg[0]), err_ret = None, no_error = True), ignore_missing) == False: ret = False return ret def _instance_unapply_static(self, instance, full_rollback = False): if full_rollback: self._clear_modprobe_file() def _clear_modprobe_file(self): s = self._cmd.read_file(consts.MODULES_FILE, no_error = True) l = s.split("\n") i = j = 0 ll = len(l) r = re.compile(r"^\s*#") while i < ll: if r.search(l[i]) is None: j = i i = ll i += 1 s = "\n".join(l[0:j]) if len(s) > 0: s += "\n" self._cmd.write_to_file(consts.MODULES_FILE, s)
Save