Skip to contentSkip to conversation

Dumb question about Voluntary Kernel Preemption Patch

DISCUSSION Timothy Miller 2 participants 2 messages Jul 15, 2004

lore
Share & tools
lore
#0 lore raw

I sent this before, but I didn't get a response. Either people missed it or it wasn't worth responding to. I'll give it one more try before I shut up about it...

I have a question about voluntary kernel preemption in general. (Shouldn't we call this "cooperative multitasking"?)

There are two disadvantages to voluntary preemption. One is that the kernel thread my not sleep enough (high latency), and the other is that the kernel thread may sleep too much (wasted CPU for context switch overhead). The advantage of using the timer interrupt instead is that the preemption happens only as often as it needs to.

My question is this: Do your reschedule points (might_sleep or whatever you end up using) ALWAYS reschedule, or do they only reschedule after a certain period of time (timer interrupt increments counter, and reschedule point does nothing if it's too early)?

#1 lore raw
Quoted 5 lines

My question is this: Do your reschedule points (might_sleep or whatever you end up using) ALWAYS reschedule, or do they only reschedule after a certain period of time (timer interrupt increments counter, and reschedule point does nothing if it's too early)?

they only reschedule when there is a higher priority task is waiting to be run. In all other cases the current code just keeps running.