3 À<×ej ã@s,ddlZejjƒZdgZGdd„deƒZdS)éNÚMonitorc@sÐeZdZdZedd„ƒZedd„ƒZedd„ƒZedd „ƒZed d „ƒZ ed d „ƒZ edd„ƒZ edd„ƒZ edd„ƒZ d&dd„Zdd„Zdd„Zedd„ƒZejdd„ƒZdd„Zd d!„Zd"d#„Zd$d%„ZdS)'rzô 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) cCsLd|_tƒ|_tƒ|_tƒ|_i|_|jƒd|_tjddj |jƒƒdS)NFTzavailable devices: %sz, ) Ú_class_initializedÚsetÚ _instancesÚ_available_devicesÚ_updating_devicesÚ_loadÚ_init_available_devicesÚlogÚdebugÚjoin)Úcls©rú/usr/lib/python3.6/base.pyÚ _init_classszMonitor._init_classcCs tƒ‚dS)N)ÚNotImplementedError)r rrrr !szMonitor._init_available_devicescCs"|jƒtjddj|jƒƒdS)Nz available devices updated to: %sz, )r r r r r)r rrrÚ_update_available_devices%sz!Monitor._update_available_devicescCs|jS)N)r)r rrrÚget_available_devices+szMonitor.get_available_devicescCs tƒ‚dS)N)r)r rrrÚupdate/szMonitor.updatecCs|jj|ƒdS)N)rÚadd)r ÚinstancerrrÚ_register_instance3szMonitor._register_instancecCs|jj|ƒdS)N)rÚremove)r rrrrÚ_deregister_instance7szMonitor._deregister_instancecCs:tƒ}x|jD]}||jO}qW|jjƒ|jj|ƒdS)N)rrÚdevicesrÚclearr)r Z new_updatingrrrrÚ_refresh_updating_devices;s   z!Monitor._refresh_updating_devicescCs|jS)N)r)r rrrÚ instancesCszMonitor.instancesNcCsBt|dƒs|jƒ|j|ƒ|dk r,||_n |jƒ|_|jƒdS)Nr)Úhasattrrrrrr)ÚselfrrrrÚ__init__Is   zMonitor.__init__c Csy |jƒWn YnXdS)N)Úcleanup)rrrrÚ__del__Ws zMonitor.__del__cCs|j|ƒ|jƒdS)N)rr)rrrrr!]s zMonitor.cleanupcCs|jS)N)Ú_devices)rrrrraszMonitor.devicescCs |jt|ƒ@}||_|jƒdS)N)rrr#r)rÚvalueZ new_devicesrrrrescCs.|jƒ||jkr*|jj|ƒ|jj|ƒdS)N)rrr#rr)rÚdevicerrrÚ add_deviceks  zMonitor.add_devicecCs&||jkr"|jj|ƒ|jj|ƒdS)N)r#rr)rr%rrrÚ remove_devicers  zMonitor.remove_devicecs t‡fdd„tˆjjƒƒDƒƒS)Ncsg|]}|dˆjkr|‘qS)r)r#)Ú.0Zdev_load)rrrú ysz$Monitor.get_load..)ÚdictÚlistrÚitems)rr)rrÚget_loadxszMonitor.get_loadcCs|jj|dƒS)N)rÚget)rr%rrrÚget_device_load{szMonitor.get_device_load)N)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú classmethodrr rrrrrrrr r"r!ÚpropertyrÚsetterr&r'r-r/rrrrrs&           )Z tuned.logsZtunedZlogsr.r Ú__all__ÚobjectrrrrrÚs