From 4621a82e74bc77bb4c960345c7319b73fd52e1a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 5 Jan 2007 19:01:09 +0000 Subject: [PATCH] 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 --- src/system/kernel/scheduler.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/system/kernel/scheduler.cpp b/src/system/kernel/scheduler.cpp index b4fbff6b44..60d8699bf7 100644 --- a/src/system/kernel/scheduler.cpp +++ b/src/system/kernel/scheduler.cpp @@ -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;