cpuload: Fix wrong idle thread load

When the CPU load monitor is started while already running, then the
idle thread last_times[0] is reset to the last 1 second, rather than
since when the CPU load monitor was last started. The remaining threads
are not impacted, since their last_times[i] is reset to zero here.

This results in the idle thread having a lower than real CPU load, with
the remaining CPU time being wrongly attributed as scheduler load.
This commit is contained in:
Niklas Hauser 2024-01-23 10:50:46 +01:00 committed by Beat Küng
parent 76a2acb222
commit 103ddb5b3d
1 changed files with 5 additions and 0 deletions

View File

@ -1610,6 +1610,11 @@ void Logger::print_load_callback(void *user)
void Logger::initialize_load_output(PrintLoadReason reason)
{
// If already in progress, don't try to start again
if (_next_load_print != 0) {
return;
}
init_print_load(&_load);
if (reason == PrintLoadReason::Watchdog) {