晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /usr/lib/python3.6/site-packages/tuned/monitors/ |
Upload File : |
import tuned.logs
log = tuned.logs.get()
__all__ = ["Monitor"]
class Monitor(object):
"""
Base class for all monitors.
Monitors provide data about the running system to Plugin objects, which use the data
to tune system parameters.
Following methods require reimplementation:
- _init_available_devices(cls)
- update(cls)
"""
# class properties
@classmethod
def _init_class(cls):
cls._class_initialized = False
cls._instances = set()
cls._available_devices = set()
cls._updating_devices = set()
cls._load = {}
cls._init_available_devices()
assert isinstance(cls._available_devices, set)
cls._class_initialized = True
log.debug("available devices: %s" % ", ".join(cls._available_devices))
@classmethod
def _init_available_devices(cls):
raise NotImplementedError()
@classmethod
def _update_available_devices(cls):
cls._init_available_devices()
log.debug("available devices updated to: %s"
% ", ".join(cls._available_devices))
@classmethod
def get_available_devices(cls):
return cls._available_devices
@classmethod
def update(cls):
raise NotImplementedError()
@classmethod
def _register_instance(cls, instance):
cls._instances.add(instance)
@classmethod
def _deregister_instance(cls, instance):
cls._instances.remove(instance)
@classmethod
def _refresh_updating_devices(cls):
new_updating = set()
for instance in cls._instances:
new_updating |= instance.devices
cls._updating_devices.clear()
cls._updating_devices.update(new_updating)
@classmethod
def instances(cls):
return cls._instances
# instance properties
def __init__(self, devices = None):
if not hasattr(self, "_class_initialized"):
self._init_class()
assert hasattr(self, "_class_initialized")
self._register_instance(self)
if devices is not None:
self.devices = devices
else:
self.devices = self.get_available_devices()
self.update()
def __del__(self):
try:
self.cleanup()
except:
pass
def cleanup(self):
self._deregister_instance(self)
self._refresh_updating_devices()
@property
def devices(self):
return self._devices
@devices.setter
def devices(self, value):
new_devices = self._available_devices & set(value)
self._devices = new_devices
self._refresh_updating_devices()
def add_device(self, device):
assert (isinstance(device,str) or isinstance(device,unicode))
self._update_available_devices()
if device in self._available_devices:
self._devices.add(device)
self._updating_devices.add(device)
def remove_device(self, device):
assert (isinstance(device,str) or isinstance(device,unicode))
if device in self._devices:
self._devices.remove(device)
self._updating_devices.remove(device)
def get_load(self):
return dict([dev_load for dev_load in list(self._load.items()) if dev_load[0] in self._devices])
def get_device_load(self, device):
return self._load.get(device, None)