On Thu, 2009-07-16 at 10:58 +0200, Peter Zijlstra wrote: > On Wed, 2009-07-15 at 19:16 -0400, Ted Baker wrote: > > > > 1) The priority of a group seemed to be defined by the priority of > > > > the highest-priority thread in the group's run-queue, which means > > > > it varies dynamically according to which threads in the group are > > > > contending. > > > > > > > > > > This is true, but it also ensures that the time allocated to the group > > > is also consumed by group if it wants to. > > > > I don't see how schedulability analysis can be done with this model, > > since a single budget is being expended at varying priorities/deadlines. > > > > > > 4) On an SMP, more than one thread could be running against > > > > the same budget at the same time, resulting in budget over-charges. > > > > > > > > > > The rt group scheduler does split the budget per cpu. On expiring the > > > budget, it tries to borrow from other CPUs if possible. > > > > First, how is the splitting of the budget between CPU's controlled > > by the application? > > > > Second, I don't see how schedulabiliyt analysis could be done if > > CPU's can "borrow" budget from other CPUs, unless there is some > > mechanism in place to "pay it back". How do you do the analysis? > > Right so control-groups (cgroups for short) are a form of > virtualization. Each controller is specific to a resource. We have > memory controllers, namespace controllers and also a scheduler > controller. > > If you would apply all controllers to the same task groups you get a > result like chroot on steroids, or jails etc. But you can also use them > individually to control resources in creative ways. To add to this, it is by no means a way of introducing deadline scheduling to tasks, for that you're quite right in that we should extend sched_setscheduler() and struct sched_param. Somewhere before RTLWS we'll add: struct sched_param2; sys_sched_setscheduler2(pid_t pid, int policy, struct sched_param2 *param); sys_sched_setparam2(pid_t pid, struct sched_param2 *param); sys_sched_getparam2(pid_t pid, struct sched_param2 *param); SCHED_SOFT_DEADLINE (bounded tardiness) SCHED_DEADLINE (no tardiness) and hopefully enough hooks to make people happy :-) The intention is to add these to -rt only for now, so that we can still poke at the interfaces and only move then to mainline once the dust settles down. -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html