History log of /haiku/headers/private/kernel/load_tracking.h
Revision Date Author Comments
# da30fdf9 05-Jan-2018 Michael Lotz <mmlr@mlotz.ch>

kernel: Fix overflow in load tracking for very large deltas.

The scheduler uses the load tracking logic to compute the load of
threads to be enqueued into the run queue. The time delta between the
last enqueue and the next enqueue may grow very large for threads
that mostly wait on conditions. In such cases the int "n" period count
variable would become too small and wrap around, leading to an
assertion failure.

For this to happen, the thread in question would have to have slept for
at least ~25 days and then wake up. Threads often affected would be ones
waiting for some other process to end, for example shell threads waiting
for a long running process to exit.

Fixes #13558.


# a96e17ba 05-Feb-2014 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Adjust load tracking interval


# a2634874 08-Jan-2014 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Estimate the load thread is able to produce

Previous implementation based on the actual load of each core and share
each thread has in that load turned up to be very problematic when
balancing load on very heavily loaded systems (i.e. more threads
consuming all available CPU time than there is logical CPUs).

The new approach is to estimate how much load would a thread produce
if it had all CPU time only for itself. Summing such load estimations
of each thread assigned to a given core we get a rank that contains
much more information than just simple actual core load.


# 9c2e74da 20-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Move mode specific logic to separate files


# 6a164daa 17-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Track load produced by interrupt handlers


# a96e17ba9d3cf1b7e576fb62a7f06ffbe80cfc97 05-Feb-2014 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Adjust load tracking interval


# a2634874ed5e33a36fe83c272614e2042fafde1d 08-Jan-2014 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Estimate the load thread is able to produce

Previous implementation based on the actual load of each core and share
each thread has in that load turned up to be very problematic when
balancing load on very heavily loaded systems (i.e. more threads
consuming all available CPU time than there is logical CPUs).

The new approach is to estimate how much load would a thread produce
if it had all CPU time only for itself. Summing such load estimations
of each thread assigned to a given core we get a rank that contains
much more information than just simple actual core load.


# 9c2e74da043b32ecd64a0ec4f4917f83ac6cc10f 20-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Move mode specific logic to separate files


# 6a164daad43169daf0a407fb1f6b0484671ff466 17-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Track load produced by interrupt handlers