On Sun, 2010-12-19 at 08:21 +0200, Avi Kivity wrote:
That's why you'd drop lag, set to max(se->vruntime, cfs_rq->min_vruntime).
I don't get this part. How does the whole process yield if one thread
yields?
And that's the hard part. If can drop lag, you may hurt yourself, but
at least only yourself.
That makes it difficult to the point of impossible.
You want a specific task to run NOW for good reasons, but any number of
tasks may want the same godlike power for equally good reasons.
You could create a force select which only godly tasks could use that
didn't try to play games with vruntimes, just let the bugger run, and
let him also eat the latency hit he'll pay for that extra bit of cpu IFF
you didn't care about being able to mix loads.
Or, you could just bump his nice level with an automated return to
previous level on resched.
Any intervention has unavoidable consequences for all comers though.
(dropping lag on the floor)
SOME tasks receive gifts from the void. The difference is the bias.
What's that? :) No task may run until there are enough of you to fill
the box? God help you when somebody else wakes up Mr. Early-bird? ...
It doesn't ignore it complete, it just doesn't try to do all the math
continuously (danger Will Robinson: Peter has scary patches). Prodding
it in the right general direction with migrations is cheaper.
-Mike
--