Skip to content
Snippets Groups Projects
Commit 31fdefb0 authored by Niko Ehrenfeuchter's avatar Niko Ehrenfeuchter :keyboard:
Browse files

Prototype using event handlers for reacting on CPU load changes.

Refers to #36
parent 2f95a64b
No related branches found
No related tags found
No related merge requests found
...@@ -45,6 +45,7 @@ namespace ATxService ...@@ -45,6 +45,7 @@ namespace ATxService
private int _txCurFileProgress; private int _txCurFileProgress;
private int _waitCyclesBeforeNextTx; private int _waitCyclesBeforeNextTx;
private Cpu _cpu; private Cpu _cpu;
private bool _cpuLoadHigh;
private DateTime _lastUserDirCheck = DateTime.MinValue; private DateTime _lastUserDirCheck = DateTime.MinValue;
...@@ -98,6 +99,8 @@ namespace ATxService ...@@ -98,6 +99,8 @@ namespace ATxService
Probation = 16, Probation = 16,
Enabled = true Enabled = true
}; };
_cpu.LoadAboveLimit += OnLoadAboveLimit;
_cpu.LoadBelowLimit += OnLoadBelowLimit;
} }
catch (UnauthorizedAccessException ex) { catch (UnauthorizedAccessException ex) {
Log.Error("Not enough permissions to monitor the CPU load.\nMake sure the " + Log.Error("Not enough permissions to monitor the CPU load.\nMake sure the " +
...@@ -518,6 +521,22 @@ namespace ATxService ...@@ -518,6 +521,22 @@ namespace ATxService
#region general methods #region general methods
/// <summary>
/// Event handler for CPU load dropping below the configured limit.
/// </summary>
private void OnLoadBelowLimit(object sender, EventArgs e) {
Log.Warn("CPU load is below given limit.");
_cpuLoadHigh = false;
}
/// <summary>
/// Event handler for CPU load exceeding the configured limit.
/// </summary>
private void OnLoadAboveLimit(object sender, EventArgs e) {
Log.Warn("High CPU load detected!");
_cpuLoadHigh = true;
}
/// <summary> /// <summary>
/// Check system parameters for valid ranges and update the global service state accordingly. /// Check system parameters for valid ranges and update the global service state accordingly.
/// </summary> /// </summary>
...@@ -526,7 +545,7 @@ namespace ATxService ...@@ -526,7 +545,7 @@ namespace ATxService
// check all system parameters for valid ranges and remember the reason in a string // check all system parameters for valid ranges and remember the reason in a string
// if one of them is failing (to report in the log why we're suspended) // if one of them is failing (to report in the log why we're suspended)
if (_cpu.Load() >= _config.MaxCpuUsage) if (_cpuLoadHigh)
limitReason = "CPU usage"; limitReason = "CPU usage";
else if (SystemChecks.GetFreeMemory() < _config.MinAvailableMemory) else if (SystemChecks.GetFreeMemory() < _config.MinAvailableMemory)
limitReason = "RAM usage"; limitReason = "RAM usage";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment