#
e632208b |
|
10-Sep-2020 |
Jérôme Duval <jerome.duval@gmail.com> |
kernel/scheduler: enable cpu load tracking after boot when the cpufreq module is loaded, we let the scheduler update its policy. Improve assert report CoreEntry::GetLoad() could return more than kMaxLoad. Change-Id: I127f9b3e8062b5996872aae30b4021b9904fa179 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3216 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
|
#
81e04d7b |
|
03-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Remove cpu_info::load This field forces kernel to track each CPU load all the time. It is not a problem with the current scheduler on a multicore systems, but on single core machnies or with any other future scheduler this field may become just an unnecessary burden. It isn't difficult for an application to compute CPU load by itself when it needs it.
|
#
15a7f204 |
|
29-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Return CPU load in cpu_info
|
#
1b06228f |
|
17-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Propagate scheduler modes to cpu{freq, idle} modules
|
#
2b7ea4cd |
|
29-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Remove Thread::next_state
|
#
286b341a |
|
28-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Merge two occurences of thread resume code
|
#
03f7d3d1 |
|
24-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Restore logical processor disabling
|
#
308f594e |
|
20-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel, libroot: Make scheduler modes interface public
|
#
9c2e74da |
|
20-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
scheduler: Move mode specific logic to separate files
|
#
288a2664 |
|
12-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
scheduler: Remove sSchedulerInternalLock * pin idle threads to their specific CPUs * allow scheduler to implement SMP_MSG_RESCHEDULE handler * scheduler_set_thread_priority() reworked * at reschedule: enqueue old thread after dequeueing the new one
|
#
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.
|
#
d3e5752b |
|
06-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
scheduler: Performance mode is actually low latency mode
|
#
978fc080 |
|
23-Oct-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
scheduler: Remove support for running different schedulers Simple scheduler behaves exactly the same as affine scheduler with a single core. Obviously, affine scheduler is more complicated thus introduces greater overhead but quite a lot of multicore logic has been disabled on single core systems in the previous commit.
|
#
cd8d4e39 |
|
20-Oct-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Introduce scheduler modes of operation
|
#
fee80091 |
|
09-Oct-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Add another penalty for CPU bound threads Each thread has its minimal priority that depends on the static priority. However, it is still able to starve threads with even lower priority (e.g. CPU bound threads with lower static priority). To prevent this another penalty is introduced. When the minimal priority is reached penalty (count mod minimal_priority) is added, where count is the number of time slices since the thread reached its minimal priority. This prevents starvation of lower priorirt threads (since all CPU bound threads may have their priority temporaily reduced to 1) but preserves relation between static priorities - when there are two CPU bound threads the one with higher static priority would get more CPU time.
|
#
a2bdd284 |
|
08-Oct-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Add scheduler_op for dumping thread data
|
#
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
|
#
4535495d |
|
10-Jan-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged the signals branch into trunk, with these changes: * The team and thread kernel structures have been renamed to Team and Thread respectively and moved into the new BKernel namespace. * Several (kernel add-on) sources have been converted from C to C++ since private kernel headers are included that are no longer C compatible. Changes after merging: * Fixed gcc 2 build (warnings mainly in the scary firewire bus manager). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40196 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
28d05e02 |
|
29-Apr-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Make scheduler_reschedule() an no-op until we're ready to start the scheduler. This avoids the need to use the send_signal_etc() work-around for resume_thread() during the early kernel initialization. Might fix #5851. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36530 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ee0d2be9 |
|
11-Apr-2010 |
Axel Dörfler <axeld@pinc-software.de> |
bonefish+axeld: * Implemented a tiny bit more sophisticated version of estimate_max_scheduling_latency() that uses a syscall that lets the scheduler decide. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36170 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0338371f |
|
13-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* All scheduler implementations: - enqueue_in_run_queue() no longer returns whether rescheduling is supposed to happen. Instead is sets cpu_ent::invoke_scheduler on the current CPU. - reschedule() does now handle cpu_ent::invoke_scheduler_if_idle(). No need to let all callers do that. * thread_unblock[_locked]() no longer return whether rescheduling is supposed to happen. * Got rid of the B_INVOKE_SCHEDULER handling. The interrupt hooks really can't know, when it makes sense to reschedule or not. * Introduced scheduler_reschedule_if_necessary[_locked]() functions for checking+invoking the scheduler. * Some semaphore functions (e.g. delete_sem()) invoke the scheduler now, if they wake up anything with greater priority. I've also tried to add scheduler invocations in the condition variable and mutex/rw_lock code, but that actually has a negative impact on performance, probably because it causes too much ping-ponging between threads when multiple locking primitives are involved. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34657 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
009ccc29 |
|
20-Aug-2009 |
Rene Gollent <anevilyak@gmail.com> |
anevilyak+mmlr: * scheduler_enqueue_in_runqueue() now allows the scheduler to return a hint as to whether a reschedule is desirable or not. This is used in a few other places in order to relegate scheduling decisions entirely to the scheduler rather than the priority hacks previously used. There are probably other places in the kernel that could now make use of that information to more intelligently call reschedule() though. * Switch over the default scheduler to scheduler_affine(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32554 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
227fe7d3 |
|
23-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Scheduler/wait object listener: - Moved scheduler listening interface to <listeners.h> and added more convenient to use templatized notification functions. - Added a listener mechanism for the wait objects (semaphores, condition variables, mutex, rw_lock). * system profiler: - Hopefully fixed locking issues related to notifying the profiler thread for good. We still had an inconsistent locking order, since the scheduler notification callbacks are invoked with the thread lock held and have to acquire the object lock then, while the other callbacks acquired the object lock first and as a side effect of ConditionVariable::NotifyOne() acquired the thread lock. Now we make sure the object lock is the innermost lock. - Track the number of dropped events due to a full buffer. _user_system_profiler_next_buffer() returns this count now. - When scheduling profiling events are requested also listen to wait objects and generate the respective profiling events. We send those events lazily and cache the infos to avoid resending an event for the same wait object. - When starting profiling we do now generate "thread scheduled" events for the already running threads. - _user_system_profiler_start(): Check whether the parameters pointer is a userland address at all. - The system_profiler_team_added event does now also contain the team's name. * Added a sem_get_name_unsafe() returning a semaphore's name. It is "unsafe", since the caller has to ensure that the semaphore exists and continues to exist as long as the returned name is used. * Adjusted the "profile" and "scheduling_recorder" according to the system profiling changes. The latter prints the number of dropped events, now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30345 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79257a4a |
|
18-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added a listener mechanism to the scheduler (ATM only for scheduler_simple). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30242 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0296b82a |
|
25-Mar-2009 |
Rene Gollent <anevilyak@gmail.com> |
Add several extra scheduler hook functions to allow the scheduler(s) to maintain private housekeeping data on the thread structs. These hooks are called on thread creation/destruction and when prepping a thread for use. Review welcome. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29721 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
53892c92 |
|
20-Oct-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Replaced scheduler_remove_from_run_queue() by scheduler_set_thread_priority(). Setting the thread priority was the only situation in which it was used. * Renamed scheduler.cpp to scheduler_simple.cpp. * The scheduler functions are no longer called directly. Instead there's an operation vector now, which is initialized at kernel init time. This allows for picking the most suitable scheduler for the machine (e.g. a non-SMP scheduler on a non-SMP machine). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28262 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
020ac568 |
|
03-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Fixed bug in the "scheduler" command: The check when a thread was unscheduled was incorrect. * Introduced _kern_analyze_scheduling() syscall. It requires scheduler kernel tracing to be enabled. It uses the tracing entries for a given period of time to do a similar analysis the "scheduler" debugger command does (i.e. number of runs, run time, latencies, preemption times) for each thread. Additionally the analysis includes for each thread how long the thread waited on each locking primitive in total. * Added kernel tracing for the creation of semaphores and initialization of condition variables, mutexes, and rw locks. The enabling macro is SCHEDULING_ANALYSIS_TRACING. The only purpose is to provide _kern_analyze_scheduling() with more info on the locking primitives (the name in particular). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27304 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6cd505ce |
|
25-Oct-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Changed the boot procedure a bit. Extracted scheduler_init() from start_scheduler() (which is now called scheduler_start()). Moved scheduler related function prototypes from thread.h to the new scheduler.h. Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14518 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
81e04d7b9734081a6c3190b9b8bdab304dc0fe3e |
|
03-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Remove cpu_info::load This field forces kernel to track each CPU load all the time. It is not a problem with the current scheduler on a multicore systems, but on single core machnies or with any other future scheduler this field may become just an unnecessary burden. It isn't difficult for an application to compute CPU load by itself when it needs it.
|
#
15a7f2046addd659e66d7614ac1e698a0aade255 |
|
29-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Return CPU load in cpu_info
|
#
1b06228f136128b8094c8a7d954815e29775cfe4 |
|
17-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Propagate scheduler modes to cpu{freq, idle} modules
|
#
2b7ea4cddf362859cd3089e3cb95481cda4adc5f |
|
29-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Remove Thread::next_state
|
#
286b341a400e8d12060a8be52214618b8f02df87 |
|
28-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Merge two occurences of thread resume code
|
#
03f7d3d1db10c0a467bea944fb3230ee70c6e015 |
|
24-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Restore logical processor disabling
|
#
308f594e2a5d3674bd019a7620e193ab0a845e6f |
|
20-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel, libroot: Make scheduler modes interface public
|
#
9c2e74da043b32ecd64a0ec4f4917f83ac6cc10f |
|
20-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
scheduler: Move mode specific logic to separate files
|
#
288a2664a2de429f159d746beaab87373184cd3d |
|
12-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
scheduler: Remove sSchedulerInternalLock * pin idle threads to their specific CPUs * allow scheduler to implement SMP_MSG_RESCHEDULE handler * scheduler_set_thread_priority() reworked * at reschedule: enqueue old thread after dequeueing the new one
|
#
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.
|
#
d3e5752b112000b3722d744259be44fa8438cfe7 |
|
06-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
scheduler: Performance mode is actually low latency mode
|
#
978fc080654a2367cfb75a8afa196361ab56645e |
|
23-Oct-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
scheduler: Remove support for running different schedulers Simple scheduler behaves exactly the same as affine scheduler with a single core. Obviously, affine scheduler is more complicated thus introduces greater overhead but quite a lot of multicore logic has been disabled on single core systems in the previous commit.
|
#
cd8d4e39fd92e1886821dcb21ff08f81f1227317 |
|
20-Oct-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Introduce scheduler modes of operation
|
#
fee8009184189f5aa56d759f3f9974313013fbbc |
|
09-Oct-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Add another penalty for CPU bound threads Each thread has its minimal priority that depends on the static priority. However, it is still able to starve threads with even lower priority (e.g. CPU bound threads with lower static priority). To prevent this another penalty is introduced. When the minimal priority is reached penalty (count mod minimal_priority) is added, where count is the number of time slices since the thread reached its minimal priority. This prevents starvation of lower priorirt threads (since all CPU bound threads may have their priority temporaily reduced to 1) but preserves relation between static priorities - when there are two CPU bound threads the one with higher static priority would get more CPU time.
|
#
a2bdd2842f5f94a8229e61880b57e9314c608e96 |
|
08-Oct-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Add scheduler_op for dumping thread data
|
#
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
|
#
4535495d80c86e19e2610e7444a4fcefe3e0f8e6 |
|
10-Jan-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged the signals branch into trunk, with these changes: * The team and thread kernel structures have been renamed to Team and Thread respectively and moved into the new BKernel namespace. * Several (kernel add-on) sources have been converted from C to C++ since private kernel headers are included that are no longer C compatible. Changes after merging: * Fixed gcc 2 build (warnings mainly in the scary firewire bus manager). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40196 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
28d05e026f982a3b5fef1545d1b508d847410f80 |
|
29-Apr-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Make scheduler_reschedule() an no-op until we're ready to start the scheduler. This avoids the need to use the send_signal_etc() work-around for resume_thread() during the early kernel initialization. Might fix #5851. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36530 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ee0d2be9e44bc80bd060f2ad24fbf29d8d449250 |
|
11-Apr-2010 |
Axel Dörfler <axeld@pinc-software.de> |
bonefish+axeld: * Implemented a tiny bit more sophisticated version of estimate_max_scheduling_latency() that uses a syscall that lets the scheduler decide. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36170 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0338371f26864c2a248b1ea53b9fe78c884af7f2 |
|
13-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* All scheduler implementations: - enqueue_in_run_queue() no longer returns whether rescheduling is supposed to happen. Instead is sets cpu_ent::invoke_scheduler on the current CPU. - reschedule() does now handle cpu_ent::invoke_scheduler_if_idle(). No need to let all callers do that. * thread_unblock[_locked]() no longer return whether rescheduling is supposed to happen. * Got rid of the B_INVOKE_SCHEDULER handling. The interrupt hooks really can't know, when it makes sense to reschedule or not. * Introduced scheduler_reschedule_if_necessary[_locked]() functions for checking+invoking the scheduler. * Some semaphore functions (e.g. delete_sem()) invoke the scheduler now, if they wake up anything with greater priority. I've also tried to add scheduler invocations in the condition variable and mutex/rw_lock code, but that actually has a negative impact on performance, probably because it causes too much ping-ponging between threads when multiple locking primitives are involved. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34657 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
009ccc29623e2b54f3e881739754c5cea121e7d6 |
|
20-Aug-2009 |
Rene Gollent <anevilyak@gmail.com> |
anevilyak+mmlr: * scheduler_enqueue_in_runqueue() now allows the scheduler to return a hint as to whether a reschedule is desirable or not. This is used in a few other places in order to relegate scheduling decisions entirely to the scheduler rather than the priority hacks previously used. There are probably other places in the kernel that could now make use of that information to more intelligently call reschedule() though. * Switch over the default scheduler to scheduler_affine(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32554 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
227fe7d34aeed45d0727a0abde2ea2309352983b |
|
23-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Scheduler/wait object listener: - Moved scheduler listening interface to <listeners.h> and added more convenient to use templatized notification functions. - Added a listener mechanism for the wait objects (semaphores, condition variables, mutex, rw_lock). * system profiler: - Hopefully fixed locking issues related to notifying the profiler thread for good. We still had an inconsistent locking order, since the scheduler notification callbacks are invoked with the thread lock held and have to acquire the object lock then, while the other callbacks acquired the object lock first and as a side effect of ConditionVariable::NotifyOne() acquired the thread lock. Now we make sure the object lock is the innermost lock. - Track the number of dropped events due to a full buffer. _user_system_profiler_next_buffer() returns this count now. - When scheduling profiling events are requested also listen to wait objects and generate the respective profiling events. We send those events lazily and cache the infos to avoid resending an event for the same wait object. - When starting profiling we do now generate "thread scheduled" events for the already running threads. - _user_system_profiler_start(): Check whether the parameters pointer is a userland address at all. - The system_profiler_team_added event does now also contain the team's name. * Added a sem_get_name_unsafe() returning a semaphore's name. It is "unsafe", since the caller has to ensure that the semaphore exists and continues to exist as long as the returned name is used. * Adjusted the "profile" and "scheduling_recorder" according to the system profiling changes. The latter prints the number of dropped events, now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30345 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79257a4ad6d56bc5283b11708be63ced4f136ab0 |
|
18-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added a listener mechanism to the scheduler (ATM only for scheduler_simple). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30242 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0296b82ae6a0f131f1fea3edfe21032bd2cf3f5c |
|
25-Mar-2009 |
Rene Gollent <anevilyak@gmail.com> |
Add several extra scheduler hook functions to allow the scheduler(s) to maintain private housekeeping data on the thread structs. These hooks are called on thread creation/destruction and when prepping a thread for use. Review welcome. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29721 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
53892c92a02939d7e657f4fbb9563bc692716318 |
|
20-Oct-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Replaced scheduler_remove_from_run_queue() by scheduler_set_thread_priority(). Setting the thread priority was the only situation in which it was used. * Renamed scheduler.cpp to scheduler_simple.cpp. * The scheduler functions are no longer called directly. Instead there's an operation vector now, which is initialized at kernel init time. This allows for picking the most suitable scheduler for the machine (e.g. a non-SMP scheduler on a non-SMP machine). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28262 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
020ac568404b8ab78825622d8815be48e987f649 |
|
03-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Fixed bug in the "scheduler" command: The check when a thread was unscheduled was incorrect. * Introduced _kern_analyze_scheduling() syscall. It requires scheduler kernel tracing to be enabled. It uses the tracing entries for a given period of time to do a similar analysis the "scheduler" debugger command does (i.e. number of runs, run time, latencies, preemption times) for each thread. Additionally the analysis includes for each thread how long the thread waited on each locking primitive in total. * Added kernel tracing for the creation of semaphores and initialization of condition variables, mutexes, and rw locks. The enabling macro is SCHEDULING_ANALYSIS_TRACING. The only purpose is to provide _kern_analyze_scheduling() with more info on the locking primitives (the name in particular). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27304 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6cd505cee71447d8c4829e79c2fee9c6d92badc7 |
|
25-Oct-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Changed the boot procedure a bit. Extracted scheduler_init() from start_scheduler() (which is now called scheduler_start()). Moved scheduler related function prototypes from thread.h to the new scheduler.h. Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14518 a95241bf-73f2-0310-859d-f6bbb57e9c96
|