addded cpu load trigger
This commit is contained in:
@@ -40,5 +40,14 @@
|
||||
<endTime>23:59</endTime>
|
||||
</customConfig>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<name>cpu_load</name>
|
||||
<type>run_once</type>
|
||||
<intervalInSeconds>5</intervalInSeconds>
|
||||
<governor>performance</governor>
|
||||
<customConfig>
|
||||
<fiveMinuteLoadThreshold>0.1</fiveMinuteLoadThreshold>
|
||||
</customConfig>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</cpuGovernorAutoAdjust>
|
||||
|
||||
@@ -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
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
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."
|
||||
authors = [
|
||||
{ name = "Martin Reurekas", email = "martin@semrks.nl" }
|
||||
|
||||
Reference in New Issue
Block a user