-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This one took a lot of detective work to track down the scheduler starvation issue seen rarely, but reproducibly with certain applications. Thanks Mike Galbraith for significantly narrowing my search path. In O15 I mentioned that preventing parents from preempting their children prevented starvation of applications where they would be busy on wait. Long story to describe how, but I discovered the problem inducing starvation in O15 was the same, but with wakers and their wakee. The wakee would preempt the waker, and the waker could make no progress until it got rescheduled... however if the wakee had better priority than the waker it preempted it until it's own priority dropped enough for the waker to get scheduled. Because in O15 the priority decayed slower we were able to see this happening in these "busy on wait" applications... and they're not as rare as we'd like. In fact this wakee preemption is going on at a mild level all the time even in the vanilla scheduler. I've experimented with ways to improve the performance/feel of these applications but I found it was to the detriment of most other apps, so this patch simply makes them run without inducing starvation at usable performance. I'm not convinced the scheduler should have a workaround, but that the apps shouldn't busy on wait. Those who experienced starvation could you please test this patch. Changes: Waker is now kept track of. Only user tasks have the bonus ceiling from uninterruptible sleep. Preemption of tasks at the same level with twice as much timeslice has been dropped as this is not necessary with timeslice granularity (may improve performance of cpu intensive tasks). Preemption of user tasks is limited to those in the interactive range; cpu intensive non interactive tasks can run out their full timeslice (may also improve cpu intensive performance) Tasks cannot preempt their own waker. Cleanups etc. This patch applies onto 2.6.0-test3-mm2 (or O15int) and is available at http://kernel.kolivas.org/2.5 Con -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (GNU/Linux) iD8DBQE/PQD1ZUg7+tp6mRURAkObAJ45p2KLBA6lGFQ588PnSuE4yhrGXgCeOpTL 9bhnnGW6e8Pfn1BTHG/wbh8= =EQ52 -----END PGP SIGNATURE-----