X7ROOT File Manager
Current Path:
/usr/lib/python2.7/site-packages/tuned/plugins
usr
/
lib
/
python2.7
/
site-packages
/
tuned
/
plugins
/
📁
..
📄
__init__.py
(49 B)
📄
__init__.pyc
(232 B)
📄
__init__.pyo
(232 B)
📄
base.py
(21.7 KB)
📄
base.pyc
(24.43 KB)
📄
base.pyo
(24.43 KB)
📄
decorators.py
(983 B)
📄
decorators.pyc
(1.52 KB)
📄
decorators.pyo
(1.52 KB)
📄
exceptions.py
(99 B)
📄
exceptions.pyc
(460 B)
📄
exceptions.pyo
(460 B)
📄
hotplug.py
(2.97 KB)
📄
hotplug.pyc
(4.09 KB)
📄
hotplug.pyo
(4.09 KB)
📁
instance
📄
plugin_audio.py
(2.46 KB)
📄
plugin_audio.pyc
(4.36 KB)
📄
plugin_audio.pyo
(4.36 KB)
📄
plugin_bootloader.py
(12.6 KB)
📄
plugin_bootloader.pyc
(15.47 KB)
📄
plugin_bootloader.pyo
(15.47 KB)
📄
plugin_cpu.py
(12.95 KB)
📄
plugin_cpu.pyc
(15.46 KB)
📄
plugin_cpu.pyo
(15.42 KB)
📄
plugin_disk.py
(13.77 KB)
📄
plugin_disk.pyc
(16.92 KB)
📄
plugin_disk.pyo
(16.92 KB)
📄
plugin_eeepc_she.py
(2.04 KB)
📄
plugin_eeepc_she.pyc
(3.3 KB)
📄
plugin_eeepc_she.pyo
(3.3 KB)
📄
plugin_modules.py
(3.8 KB)
📄
plugin_modules.pyc
(5.64 KB)
📄
plugin_modules.pyo
(5.64 KB)
📄
plugin_mounts.py
(5.17 KB)
📄
plugin_mounts.pyc
(6.36 KB)
📄
plugin_mounts.pyo
(6.36 KB)
📄
plugin_net.py
(14.02 KB)
📄
plugin_net.pyc
(16.5 KB)
📄
plugin_net.pyo
(16.5 KB)
📄
plugin_scheduler.py
(23.2 KB)
📄
plugin_scheduler.pyc
(25.28 KB)
📄
plugin_scheduler.pyo
(25.28 KB)
📄
plugin_script.py
(2.47 KB)
📄
plugin_script.pyc
(3.77 KB)
📄
plugin_script.pyo
(3.71 KB)
📄
plugin_scsi_host.py
(2.59 KB)
📄
plugin_scsi_host.pyc
(5.01 KB)
📄
plugin_scsi_host.pyo
(5.01 KB)
📄
plugin_selinux.py
(1.56 KB)
📄
plugin_selinux.pyc
(2.96 KB)
📄
plugin_selinux.pyo
(2.96 KB)
📄
plugin_sysctl.py
(5.45 KB)
📄
plugin_sysctl.pyc
(7.33 KB)
📄
plugin_sysctl.pyo
(7.33 KB)
📄
plugin_sysfs.py
(2.05 KB)
📄
plugin_sysfs.pyc
(3.77 KB)
📄
plugin_sysfs.pyo
(3.77 KB)
📄
plugin_systemd.py
(4.82 KB)
📄
plugin_systemd.pyc
(6.87 KB)
📄
plugin_systemd.pyo
(6.87 KB)
📄
plugin_usb.py
(1.49 KB)
📄
plugin_usb.pyc
(3.06 KB)
📄
plugin_usb.pyo
(3.06 KB)
📄
plugin_video.py
(2.81 KB)
📄
plugin_video.pyc
(4.2 KB)
📄
plugin_video.pyo
(4.2 KB)
📄
plugin_vm.py
(2.74 KB)
📄
plugin_vm.pyc
(4.31 KB)
📄
plugin_vm.pyo
(4.31 KB)
📄
repository.py
(1.49 KB)
📄
repository.pyc
(2.46 KB)
📄
repository.pyo
(2.4 KB)
Editing: plugin_systemd.py
from . import base from .decorators import * import tuned.logs from . import exceptions from tuned.utils.commands import commands import tuned.consts as consts import os import re log = tuned.logs.get() class SystemdPlugin(base.Plugin): """ Plugin for tuning systemd options. These tunings are unloaded only on profile change followed by reboot. """ def __init__(self, *args, **kwargs): if not os.path.isfile(consts.SYSTEMD_SYSTEM_CONF_FILE): raise exceptions.NotSupportedPluginException("Required systemd '%s' configuration file not found, disabling plugin." % consts.SYSTEMD_SYSTEM_CONF_FILE) super(SystemdPlugin, self).__init__(*args, **kwargs) self._cmd = commands() def _instance_init(self, instance): instance._has_dynamic_tuning = False instance._has_static_tuning = True def _instance_cleanup(self, instance): pass @classmethod def _get_config_options(cls): return { "cpu_affinity": None, } def _get_keyval(self, conf, key): if conf is not None: mo = re.search(r"^\s*" + key + r"\s*=\s*(.*)$", conf, flags = re.MULTILINE) if mo is not None and mo.lastindex == 1: return mo.group(1) return None # add/replace key with the value def _add_keyval(self, conf, key, val): (conf_new, nsubs) = re.subn(r"^(\s*" + key + r"\s*=).*$", r"\g<1>" + str(val), conf, flags = re.MULTILINE) if nsubs < 1: try: if conf[-1] != "\n": conf += "\n" except IndexError: pass conf += key + "=" + str(val) + "\n" return conf return conf_new def _del_key(self, conf, key): return re.sub(r"^\s*" + key + r"\s*=.*\n", "", conf, flags = re.MULTILINE) def _read_systemd_system_conf(self): systemd_system_conf = self._cmd.read_file(consts.SYSTEMD_SYSTEM_CONF_FILE, err_ret = None) if systemd_system_conf is None: log.error("error reading systemd configuration file") return None return systemd_system_conf def _write_systemd_system_conf(self, conf): tmpfile = consts.SYSTEMD_SYSTEM_CONF_FILE + consts.TMP_FILE_SUFFIX if not self._cmd.write_to_file(tmpfile, conf): log.error("error writing systemd configuration file") self._cmd.unlink(tmpfile, no_error = True) return False # Atomic replace, this doesn't work on Windows (AFAIK there is no way on Windows how to do this # atomically), but it's unlikely this code will run there if not self._cmd.rename(tmpfile, consts.SYSTEMD_SYSTEM_CONF_FILE): log.error("error replacing systemd configuration file '%s'" % consts.SYSTEMD_SYSTEM_CONF_FILE) self._cmd.unlink(tmpfile, no_error = True) return False return True def _get_storage_filename(self): return os.path.join(consts.PERSISTENT_STORAGE_DIR, self.name) def _remove_systemd_tuning(self): conf = self._read_systemd_system_conf() if (conf is not None): fname = self._get_storage_filename() cpu_affinity_saved = self._cmd.read_file(fname, err_ret = None, no_error = True) self._cmd.unlink(fname) if cpu_affinity_saved is None: conf = self._del_key(conf, consts.SYSTEMD_CPUAFFINITY_VAR) else: conf = self._add_keyval(conf, consts.SYSTEMD_CPUAFFINITY_VAR, cpu_affinity_saved) self._write_systemd_system_conf(conf) def _instance_unapply_static(self, instance, full_rollback = False): if full_rollback: log.info("removing '%s' systemd tuning previously added by Tuned" % consts.SYSTEMD_CPUAFFINITY_VAR) self._remove_systemd_tuning() log.console("you may need to manualy run 'dracut -f' to update the systemd configuration in initrd image") # convert cpulist from systemd syntax to Tuned syntax and unpack it def _cpulist_convert_unpack(self, cpulist): if cpulist is None: return "" return " ".join(str(v) for v in self._cmd.cpulist_unpack(re.sub(r"\s+", r",", re.sub(r",\s+", r",", cpulist)))) @command_custom("cpu_affinity", per_device = False) def _cmdline(self, enabling, value, verify, ignore_missing): conf_affinity = None conf_affinity_unpacked = None v = self._cmd.unescape(self._variables.expand(self._cmd.unquote(value))) v_unpacked = " ".join(str(v) for v in self._cmd.cpulist_unpack(v)) conf = self._read_systemd_system_conf() if conf is not None: conf_affinity = self._get_keyval(conf, consts.SYSTEMD_CPUAFFINITY_VAR) conf_affinity_unpacked = self._cpulist_convert_unpack(conf_affinity) if verify: return self._verify_value("cpu_affinity", v_unpacked, conf_affinity_unpacked, ignore_missing) if enabling: fname = self._get_storage_filename() cpu_affinity_saved = self._cmd.read_file(fname, err_ret = None, no_error = True) if conf_affinity is not None and cpu_affinity_saved is None and v_unpacked != conf_affinity_unpacked: self._cmd.write_to_file(fname, conf_affinity, makedir = True) log.info("setting '%s' to '%s' in the '%s'" % (consts.SYSTEMD_CPUAFFINITY_VAR, v_unpacked, consts.SYSTEMD_SYSTEM_CONF_FILE)) self._write_systemd_system_conf(self._add_keyval(conf, consts.SYSTEMD_CPUAFFINITY_VAR, v_unpacked))
Upload File
Create Folder