Re: Tree based scheduling

Pavel Machek (pavel@atrey.karlin.mff.cuni.cz)
Sat, 17 Jan 1998 23:36:03 +0100


Hi!

> Example of a possible tree:
>
> [*]---<normal>---<soft realtime>---[idle task]
> | |
> | [*]---[rtproc1]---[rtproc2]
> |
> [*]---<user1>---<user2>---[root's process]---[root's process]
> | |
> | [*]---[proc1]---[proc2]---[proc3]
> |
> [*]---<proc1>---[proc2]---[proc3]---[proc4]
> |
> [*]---[thread1]---[thread2]---[thread3]

Bad idea, when done this way. Imagine system with two users (A, B),
each runs cpu-intensive task, A1, B1, and some interactive tasks (A2,
B2). Now, if scheduling is done like that, both users will be given
time in big chunks (I assume), so 500msec user-1's A1 will run, and at
that time A2 will give good response time, and then 500msec B1 will
run, and A2 will starve.

This would work ok with current scheduler. You may avoid this problem,
somehow, but I do not know how to do that.

> If each user has his/her own node, they can set priorities of their
> own processes as they wish: If they set one of their processes to
> realtime priority, it has that priority only over other processes of
> that user, not over processes of other users. If root wants to set a
> "real" realtime priority to an arbitrary process, (s)he should move it
> upper in the scheduler tree (with an appropriate utility, of course).
> In addition, when user sets process priority to "IDLE", it means that
> "when *MY* processes are idle and I have time-slices left". If a real
> idle process is wanted, it would be moved to the
> "root_node->ready->idle" queue (not to "root_node->idle" because the
> system idle process would compete with it :)).

See above example. I think that your scheduler will fail on that.

Pavel

-- 
Do *NOT* buy software, GNU software is better and free!		Pavel
GCM d? s-: !g p?:+ au- a--@ w+ v- C++@ UL+++ L++ N++ E++ W--- M- Y- R+