addded cpu load trigger

This commit is contained in:
2025-03-09 17:52:07 +01:00
parent f088b4ecaa
commit 5667ccd784
5 changed files with 47 additions and 4 deletions
+3 -2
View File
@@ -1,10 +1,11 @@
from types import MappingProxyType
from cpu_governor_auto_adjust.triggers import TestTrigger1, TestTrigger2, RoonTrigger, WakeupTrigger
from cpu_governor_auto_adjust.triggers import TestTrigger1, TestTrigger2, RoonTrigger, WakeupTrigger, CpuLoadTrigger
_trigger_mapping = {
'test_trigger1': TestTrigger1,
'test_trigger2': TestTrigger2,
'roon': RoonTrigger,
'wakeup': WakeupTrigger
'wakeup': WakeupTrigger,
'cpu_load': CpuLoadTrigger
}
trigger_mapping = MappingProxyType(_trigger_mapping)
@@ -1,6 +1,7 @@
__all__ = ["test_trigger1", "test_trigger2", "roon", "wakeup"]
__all__ = ["test_trigger1", "test_trigger2", "roon", "wakeup", "cpu_load"]
from .test_trigger1 import TestTrigger1
from .test_trigger2 import TestTrigger2
from .roon import RoonTrigger
from .wakeup import WakeupTrigger
from .cpu_load import CpuLoadTrigger
@@ -0,0 +1,32 @@
from cpu_governor_auto_adjust.trigger import Trigger
from cpu_governor_auto_adjust.config import Config
from functools import cached_property
from os import getloadavg
class CpuLoadTrigger(Trigger):
def __init__(self, _config: Config) -> None:
super().__init__(_config)
@cached_property
def five_minute_load_threshold(self) -> float:
return float(self.config.custom_config['fiveMinuteLoadThreshold'])
@property
def current_load(self) -> float:
return getloadavg()[1]
def run(self) -> None:
current_active = self.active
new_active = self.current_load >= self.five_minute_load_threshold
if not current_active and new_active:
self.log.info(
"activating trigger, load: %s, threshold: %s, governor: %s",
self.current_load, self.five_minute_load_threshold, self.governor.name
)
elif current_active and not new_active:
self.log.info(
"deactivating trigger, load: %s, threshold: %s, governor: %s",
self.current_load, self.five_minute_load_threshold, self.governor.name
)
self.active = new_active