addded cpu load trigger
This commit is contained in:
@@ -40,5 +40,14 @@
|
|||||||
<endTime>23:59</endTime>
|
<endTime>23:59</endTime>
|
||||||
</customConfig>
|
</customConfig>
|
||||||
</trigger>
|
</trigger>
|
||||||
|
<trigger>
|
||||||
|
<name>cpu_load</name>
|
||||||
|
<type>run_once</type>
|
||||||
|
<intervalInSeconds>5</intervalInSeconds>
|
||||||
|
<governor>performance</governor>
|
||||||
|
<customConfig>
|
||||||
|
<fiveMinuteLoadThreshold>0.1</fiveMinuteLoadThreshold>
|
||||||
|
</customConfig>
|
||||||
|
</trigger>
|
||||||
</triggers>
|
</triggers>
|
||||||
</cpuGovernorAutoAdjust>
|
</cpuGovernorAutoAdjust>
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
from types import MappingProxyType
|
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 = {
|
_trigger_mapping = {
|
||||||
'test_trigger1': TestTrigger1,
|
'test_trigger1': TestTrigger1,
|
||||||
'test_trigger2': TestTrigger2,
|
'test_trigger2': TestTrigger2,
|
||||||
'roon': RoonTrigger,
|
'roon': RoonTrigger,
|
||||||
'wakeup': WakeupTrigger
|
'wakeup': WakeupTrigger,
|
||||||
|
'cpu_load': CpuLoadTrigger
|
||||||
}
|
}
|
||||||
trigger_mapping = MappingProxyType(_trigger_mapping)
|
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_trigger1 import TestTrigger1
|
||||||
from .test_trigger2 import TestTrigger2
|
from .test_trigger2 import TestTrigger2
|
||||||
from .roon import RoonTrigger
|
from .roon import RoonTrigger
|
||||||
from .wakeup import WakeupTrigger
|
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
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "cpu_governor_auto_adjust"
|
name = "cpu_governor_auto_adjust"
|
||||||
version = "0.1.34"
|
version = "0.1.35"
|
||||||
description = "This application has been developed to automatically change cpu governor based on certain triggers."
|
description = "This application has been developed to automatically change cpu governor based on certain triggers."
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Martin Reurekas", email = "martin@semrks.nl" }
|
{ name = "Martin Reurekas", email = "martin@semrks.nl" }
|
||||||
|
|||||||
Reference in New Issue
Block a user