Discussion:
Can't set total quantum with L4_Set_Timeslice()
Farid Hajji
2012-04-23 15:09:28 UTC
Permalink
Hello,

I'm experimenting with user space scheduling on L4Ka::Pistachio
(amd64) as specified in the paper
"Towards Effective User-Controlled Scheduling for Microkernel-Based Systems"
and I'd like a worker thread to RPC its associated scheduler
thread, when it has used up its total quantum.

This however never seems to happen. In the KDB, I always see
that 'tq' is set to 0usec, in other words, to L4_Never. Is it right
that the user space scheduler would never be RPC-ed in this case?

So I've tried to change the 'tq' with a call to L4_Set_Timeslice().
But even then, the 'tq' always remain at 0usec, and what's worse,
the time slice also jumps to 0usec, even when set to some other
value.

Is the call to L4_Set_Timeslice() broken?

Attached is a simple test case, and the output of KDB before
and after the call to L4_Set_Timeslice().

Thanks in advance,
-Farid Hajji.
Jan Stoess
2012-04-24 07:52:22 UTC
Permalink
Hi Farid,

If you're referring to the user-space scheduling prototype described in the paper: the prototype has never made it into the mainline kernel. It was an experiment and had significant performance implications (as described in the paper), and we didn't want to pollute the mainline tree with it. If you're interested in the code let me know and I'll dig.

If you're referring to the normal scheduling behavior in pistachio (RR with Prios): the preemption message has been specified in the manual, but has never been completely implemented (at least in L4Ka::Pistachio). Nobody has required or used that functionality, and since it requires careful implementation (see code comment snippet below) , it has been a "TODO" ever since.
Loading...