Re: New PriorityInheritanceTest - bug in 2.6.17-rt7 confirmed
From: Esben Nielsen
Date: Thu Jul 06 2006 - 09:12:33 EST
On Thu, 6 Jul 2006, Thomas Gleixner wrote:
On Thu, 2006-07-06 at 14:07 +0100, Esben Nielsen wrote:
So this is a real bug.
True
In the previous mail I posted a fix for that problem (and other problems).
I had not much time to look at the patch, but I doubt that we need such
a complex hack to achieve that. I will look at it later.
The problem is that the deboosting code have to run somewhere.
It can run within try_to_wake_up(). But then it the whole lock chain is
traversed in an atomic section. That unpredictable overall system
latencies since the locks can be in userspace.
So it has to run in some task. That task has to be high priority enough
to preempt the boosted tasks, but it can't be so high priority that it bothers
any higher priority threads than those involved in this. So it can't be,
forinstance a general priority 99 task we just use for this. We thus need
something running at a slightly higher priority than the priority to
which the tasks are boosted, but not a full +1 priority. I.e. we need to
run it at priority "+0.5".
I also think that other stuff, like high resolution timers and others
doing "scheduler plumbing work" in the kernel could benifit from a +0.5
priority.
I thought about some improvements:
1) Make a general TSK_LIFO flag, That would remove some of the direct
references in sched.c to the rtmutex system. In effect it will be the
same, but be more usefull to other subsystems.
2) Double the number of in-kernel priorities. I.e. simply add a number of
"hidden" priorities in which this kind of "plumbing" work can be run:
Kernel priority User space
0 hidden
1 RT 99
2 hidden
3 RT 98
....
199 0
...
This might turn out more clean than a TSK_LIFO. There will be no need to
hack the core scheduler code, which can have some strange side-effect.
But to be honest I don't think the hacks I have done are that bad - except
they refer directly to the rtmutex subsystem. Also adding priorities would
slow down the system.
tglx
Esben
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/