Our scheduler skipped over threads in about 30% of all cases - that's a bit much; it's

not a penalty to be the first thread in the run queue...
I've reduced it to about 12.5%, but that might still be too much.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19710 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2007-01-05 19:01:09 +00:00
parent 8f67ee51b8
commit 4621a82e74
1 changed files with 4 additions and 4 deletions

View File

@ -181,7 +181,7 @@ scheduler_reschedule(void)
prevThread = NULL;
if (oldThread->cpu->disabled) {
// just select an idle thread
// CPU is disabled - just select an idle thread
while (nextThread && nextThread->priority > B_IDLE_PRIORITY) {
prevThread = nextThread;
nextThread = nextThread->queue_next;
@ -192,13 +192,13 @@ scheduler_reschedule(void)
// always extract real time threads
if (nextThread->priority >= B_FIRST_REAL_TIME_PRIORITY)
break;
// never skip last non-idle normal thread
if (nextThread->queue_next && nextThread->queue_next->priority == B_IDLE_PRIORITY)
break;
// skip normal threads sometimes
if (_rand() > 0x3000)
// skip normal threads sometimes (roughly 12.5%)
if (_rand() > 0x1000)
break;
prevThread = nextThread;