Messages in this thread | | | Date | Sat, 19 Sep 1998 00:21:11 +1000 | From | Richard Gooch <> | Subject | Re: Interesting scheduling times |
| |
I wrote: > At the very least I'd like to see the wake_up* functions set > need_resched=1 if an RT process is woken up. This way unblocked RT > processes will start running immediately. > If we do go with a special RT run queue, then the wake_up* functions > will need to be changed anyway to put RT processes onto the RT > runqueue.
Hm. I've dug more deeply into the source code and I notice that when a process with policy != SCHED_OTHER is woken up, then current->need_resched is set to 1 (this is done in reschedulre_idle()), which I hadn't noticed before.
So (someone correct me if I'm wrong), an RT process (which has the highest priority) which is woken up in an interrupt handler will start running immediately upon return from the handler (provided the interrupted process wasn't in kernel mode). This is good.
Nevertheless, my original point: having a separate run queue for RT processes remains. From my tests on a Pentium/MMX 200 (with SDRAM) a thread switch takes 2 us and for each extra process on the run queue add about 0.7 us. You only need to have 3 extra processes on the run queue to more than double the thread switch times.
Regards,
Richard....
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |