Dumb question about Voluntary Kernel Preemption Patch
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)?
Quoted 5 lines
My question is this: Do your reschedule points (
might_sleepor 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.