Fix how CPU load counts are adjusted so that the total always adds up to 100%
This commit is contained in:
parent
7138e18efe
commit
cb0d49047a
@ -6673,4 +6673,7 @@
|
|||||||
* arch/arm/src/sam34: The port to the SAM4E is code complete (2014-2-16).
|
* arch/arm/src/sam34: The port to the SAM4E is code complete (2014-2-16).
|
||||||
* include/cxx: Fix some bad idempotence defintions in header files
|
* include/cxx: Fix some bad idempotence defintions in header files
|
||||||
(2014-2-27).
|
(2014-2-27).
|
||||||
|
* sched/sched_cpuload.c: Change calulation of the total count when the
|
||||||
|
time constant related delay elapsed. The total count is now always
|
||||||
|
guaranteed to add up to 100% (excepting only truncation errors)
|
||||||
|
(2014-2-27).
|
||||||
|
@ -121,16 +121,21 @@ void weak_function sched_process_cpuload(void)
|
|||||||
|
|
||||||
if (++g_cpuload_total > (CONFIG_SCHED_CPULOAD_TIMECONSTANT * CLOCKS_PER_SEC))
|
if (++g_cpuload_total > (CONFIG_SCHED_CPULOAD_TIMECONSTANT * CLOCKS_PER_SEC))
|
||||||
{
|
{
|
||||||
/* Divide the tick count for every task by two */
|
uint32_t total = 0;
|
||||||
|
|
||||||
|
/* Divide the tick count for every task by two and recalculate the
|
||||||
|
* total.
|
||||||
|
*/
|
||||||
|
|
||||||
for (i = 0; i < CONFIG_MAX_TASKS; i++)
|
for (i = 0; i < CONFIG_MAX_TASKS; i++)
|
||||||
{
|
{
|
||||||
g_pidhash[i].ticks >>= 1;
|
g_pidhash[i].ticks >>= 1;
|
||||||
|
total += g_pidhash[i].ticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Divide the total tick count by two */
|
/* Save the new total. */
|
||||||
|
|
||||||
g_cpuload_total >>= 1;
|
g_cpuload_total = total;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user