History log of /haiku/src/system/kernel/scheduler/scheduler_common.h
Revision Date Author Comments
# 30c9d3c0 01-Dec-2017 Augustin Cavalier <waddlesplash@gmail.com>

kernel: Correct class/struct mixups.

Almost certainly harmless. Spotted by Clang.


# 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.


# e4ea6372 03-Jan-2014 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Disable load tracking when not needed


# 60e198f2 22-Dec-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Encapsulate PackageEntry fields

Apart from the refactoring this commit takes the opportunity and removes
unnecessary read locks when choosing a package and a core from idle lists.
The data structures are accessed in a thread safe way and it does not really
matter whether the obtained data becomes outdated just when we release the
lock or during our search for the appropriate package/core.


# d287274d 05-Dec-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Code refactoring


# 07218997 28-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Allow mode to specify time slice length


# 7b4befcd 28-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Introduce upper bound on latency


# f9ee217a 28-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Migrate threads less often in power saving mode


# 87115715 26-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Protect package data with rw_spinlock


# 9caf7f4f 26-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Update estimate_max_scheduling_latency()


# 7d7dc357 26-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Move simple inline functions to scheduler_common.h


# 22ae68fa 26-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Simplify thread priority penalties


# 0e94a12f 24-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Make CACHE_LINE_ALIGN visible in the whole kernel


# 26970784 24-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Clean scheduler_common.h

scheduler_common.h is now meant for types, variables and functions used
by both core scheduler code and implementations of scheduler modes.
Functions like switch_thread() and update_thread_times() do not belong
there anymore.


# 7c7b9b79 21-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Return time stolen by irq and ipi handlers


# 1a7eb502 21-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Calculate correct load on SMT processors


# 65741c8b 21-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Improve locking


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

scheduler: Reduce scheduler mode lock cache bouncing


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

scheduler: Improve power saving mode

* Remove possibility to temporarily disable small task packing.
* When small task packing target gets overloaded continue packing
threads on another core, but avoid migrating the already packed
ones.

Scheduler still tends to needlessly migrate threads to another cores
when under heavier load, but it is now much better than before.


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

scheduler: Move mode specific logic to separate files


# 03fb2d88 07-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Remove gSchedulerLock

* Thread::scheduler_lock protects thread state, priority, etc.
* sThreadCreationLock protects thread creation and removal and list of
threads in team.
* Team::signal_lock and Team::time_lock protect list of threads in team
as well.
* Scheduler uses its own internal locking.


# 72addc62 07-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Introduce Thread::time_lock and Team::time_lock


# 24df6592 11-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Merged signals-merge branch into trunk with the following changes:
* Reorganized the kernel locking related to threads and teams.
* We now discriminate correctly between process and thread signals. Signal
handlers have been moved to teams. Fixes #5679.
* Implemented real-time signal support, including signal queuing, SA_SIGINFO
support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition
of the real-time signal range. Closes #1935 and #2695.
* Gave SIGBUS a separate signal number. Fixes #6704.
* Implemented <time.h> clock and timer support, and fixed/completed alarm() and
[set]itimer(). Closes #5682.
* Implemented support for thread cancellation. Closes #5686.
* Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554.
* Lots over smaller more or less related changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 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.


# e4ea637227d7cf9a53bc89317990b8a22a76780a 03-Jan-2014 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Disable load tracking when not needed


# 60e198f2cbf2e26b584370c0d32c37cb3dce556c 22-Dec-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Encapsulate PackageEntry fields

Apart from the refactoring this commit takes the opportunity and removes
unnecessary read locks when choosing a package and a core from idle lists.
The data structures are accessed in a thread safe way and it does not really
matter whether the obtained data becomes outdated just when we release the
lock or during our search for the appropriate package/core.


# d287274dcec634da4973a1b92c97dd14d7c5ecd0 05-Dec-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Code refactoring


# 072189970913d3cce35c34b4307b5e58b0f241b5 28-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Allow mode to specify time slice length


# 7b4befcd47d4a7ee56d50b40a41cf79aa23cf7c6 28-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Introduce upper bound on latency


# f9ee217ad6c59122fefd39a445c99f2c0fb2af1e 28-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Migrate threads less often in power saving mode


# 87115715b40c394b08de08b6709863eb257b020d 26-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Protect package data with rw_spinlock


# 9caf7f4fb95b33daa9e2caf2267c2636ba24ce49 26-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Update estimate_max_scheduling_latency()


# 7d7dc357bf0966b28dce9e0f08bff04353be7098 26-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Move simple inline functions to scheduler_common.h


# 22ae68fa692c4dd82e53001ace5f071f1b209fe8 26-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Simplify thread priority penalties


# 0e94a12f8e0e5fe5ff5b2e3f83384f3586396c92 24-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Make CACHE_LINE_ALIGN visible in the whole kernel


# 26970784cd0050d72a1bb96eccd027dfc2769ffb 24-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Clean scheduler_common.h

scheduler_common.h is now meant for types, variables and functions used
by both core scheduler code and implementations of scheduler modes.
Functions like switch_thread() and update_thread_times() do not belong
there anymore.


# 7c7b9b795bbb537b889e96e335dd9a4add8b2789 21-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Return time stolen by irq and ipi handlers


# 1a7eb50254e1cee8160de17253aa6972c3d960cf 21-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Calculate correct load on SMT processors


# 65741c8b56b2fc74e8e1cd419b92f799e75f556d 21-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

scheduler: Improve locking


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

scheduler: Reduce scheduler mode lock cache bouncing


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

scheduler: Improve power saving mode

* Remove possibility to temporarily disable small task packing.
* When small task packing target gets overloaded continue packing
threads on another core, but avoid migrating the already packed
ones.

Scheduler still tends to needlessly migrate threads to another cores
when under heavier load, but it is now much better than before.


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

scheduler: Move mode specific logic to separate files


# 03fb2d886830e4dd4b344c56725db59f96733216 07-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Remove gSchedulerLock

* Thread::scheduler_lock protects thread state, priority, etc.
* sThreadCreationLock protects thread creation and removal and list of
threads in team.
* Team::signal_lock and Team::time_lock protect list of threads in team
as well.
* Scheduler uses its own internal locking.


# 72addc62e042d2a39fba1f04e2cc8dadc155adfe 07-Nov-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel: Introduce Thread::time_lock and Team::time_lock


# 24df65921befcd0ad0c5c7866118f922da61cb96 11-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Merged signals-merge branch into trunk with the following changes:
* Reorganized the kernel locking related to threads and teams.
* We now discriminate correctly between process and thread signals. Signal
handlers have been moved to teams. Fixes #5679.
* Implemented real-time signal support, including signal queuing, SA_SIGINFO
support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition
of the real-time signal range. Closes #1935 and #2695.
* Gave SIGBUS a separate signal number. Fixes #6704.
* Implemented <time.h> clock and timer support, and fixed/completed alarm() and
[set]itimer(). Closes #5682.
* Implemented support for thread cancellation. Closes #5686.
* Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554.
* Lots over smaller more or less related changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96