diff --git a/cpu_governor_auto_adjust.xml b/cpu_governor_auto_adjust.xml
index f3ac9f6..8e82b3e 100644
--- a/cpu_governor_auto_adjust.xml
+++ b/cpu_governor_auto_adjust.xml
@@ -46,7 +46,9 @@
5
performance
- 0.01
+ 0.3
+ 0.2
+ 0.1
diff --git a/cpu_governor_auto_adjust/triggers/cpu_load.py b/cpu_governor_auto_adjust/triggers/cpu_load.py
index 09460e7..9b9b53e 100644
--- a/cpu_governor_auto_adjust/triggers/cpu_load.py
+++ b/cpu_governor_auto_adjust/triggers/cpu_load.py
@@ -13,22 +13,37 @@ class CpuLoadTrigger(Trigger):
@cached_property
def one_minute_load_threshold(self) -> float:
return float(self.config.custom_config['oneMinuteLoadThreshold'])
+
+ @cached_property
+ def five_minute_load_threshold(self) -> float:
+ return float(self.config.custom_config['fiveMinuteLoadThreshold'])
+
+ @cached_property
+ def ten_minute_load_threshold(self) -> float:
+ return float(self.config.custom_config['tenMinuteLoadThreshold'])
+
+ @cached_property
+ def threshold(self) -> tuple[float, float, float]:
+ return self.one_minute_load_threshold, self.five_minute_load_threshold, self.ten_minute_load_threshold
@property
- def current_load(self) -> float:
- _current_load = getloadavg()[0]
+ def current_load(self) -> tuple[float, float, float]:
+ _current_load = getloadavg()
self.log.debug("current load: %s", _current_load)
return _current_load
+ def current_load_average_over_threshold(self) -> bool:
+ return any(load >= threshold for load, threshold in zip(self.current_load, self.threshold))
+
def run(self) -> None:
current_active = self.active
current_time = datetime.now()
- new_active = self.current_load >= self.one_minute_load_threshold
+ new_active = self.current_load_average_over_threshold()
if not current_active and new_active:
self.log.info(
"activating trigger, load: %s, threshold: %s, governor: %s",
- self.current_load, self.one_minute_load_threshold, self.governor.name
+ self.current_load, self.threshold, self.governor.name
)
self.timestamp_last_governor_change = current_time
@@ -39,7 +54,7 @@ class CpuLoadTrigger(Trigger):
self.log.info(
"deactivating trigger, load: %s, threshold: %s, governor: %s",
- self.current_load, self.one_minute_load_threshold, self.governor.name
+ self.current_load, self.threshold, self.governor.name
)
self.active = new_active
diff --git a/pyproject.toml b/pyproject.toml
index 553b818..7d2641d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "cpu_governor_auto_adjust"
-version = "0.1.39"
+version = "0.1.41"
description = "This application has been developed to automatically change cpu governor based on certain triggers."
authors = [
{ name = "Martin Reurekas", email = "martin@semrks.nl" }