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