Uname:
Linux yisu-647059427c03a 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64
Software:
nginx/1.22.1
PHP version:
7.3.31 [ PHP INFO ] PHP os:
Linux
Server Ip:
103.146.158.90
Your Ip:
216.73.216.141
User:
www (1000) | Group:
www (1000)
Safe Mode:
OFF
Disable Function:
passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
import base
import tuned.consts as consts
import tuned.logs
log = tuned.logs.get()
class Plugin(base.Plugin):
"""
Base class for plugins with device hotpluging support.
"""
def __init__(self, *args, **kwargs):
super(Plugin, self).__init__(*args, **kwargs)
self._hardware_events_init()
def cleanup(self):
super(Plugin, self).cleanup()
self._hardware_events_cleanup()
def _hardware_events_init(self):
raise NotImplementedError()
def _hardware_events_cleanup(self):
raise NotImplementedError()
def _hardware_events_callback(self, event, device):
if event == "add":
log.info("device '%s' added" % device.sys_name)
self._add_device(device)
elif event == "remove":
log.info("device '%s' removed" % device.sys_name)
self._remove_device(device)
def _add_device(self, device):
device_name = device.sys_name
if device_name in (self._assigned_devices | self._free_devices):
return
for instance_name, instance in self._instances.items():
if len(self._get_matching_devices(instance, [device_name])) == 1:
log.info("instance %s: adding new device %s" % (instance_name, device_name))
self._assigned_devices.add(device_name)
instance.devices.add(device_name)
self._call_device_script(instance, instance.script_pre, "apply", [device_name])
self._added_device_apply_tuning(instance, device_name)
self._call_device_script(instance, instance.script_post, "apply", [device_name])
break
else:
log.debug("no instance wants %s" % device_name)
self._free_devices.add(device_name)
def _remove_device(self, device):
device_name = device.sys_name
if device_name not in (self._assigned_devices | self._free_devices):
return
for instance in self._instances.values():
if device_name in instance.devices:
self._call_device_script(instance, instance.script_post, "unapply", [device_name])
self._removed_device_unapply_tuning(instance, device_name)
self._call_device_script(instance, instance.script_pre, "unapply", [device_name])
instance.devices.remove(device_name)
instance.active = len(instance.devices) > 0
self._assigned_devices.remove(device_name)
break
else:
self._free_devices.remove(device_name)
def _added_device_apply_tuning(self, instance, device_name):
self._execute_all_device_commands(instance, [device_name])
if instance.has_dynamic_tuning and self._global_cfg.get(consts.CFG_DYNAMIC_TUNING, consts.CFG_DEF_DYNAMIC_TUNING):
self._instance_apply_dynamic(instance, device_name)
def _removed_device_unapply_tuning(self, instance, device_name):
if instance.has_dynamic_tuning and self._global_cfg.get(consts.CFG_DYNAMIC_TUNING, consts.CFG_DEF_DYNAMIC_TUNING):
self._instance_unapply_dynamic(instance, device_name)
self._cleanup_all_device_commands(instance, [device_name])