Messages in this thread | | | Date | Wed, 18 Jun 2003 14:32:14 +0200 | From | Mike Galbraith <> | Subject | Re: O(1) scheduler starvation |
| |
At 02:16 PM 6/18/2003 +0200, Helge Hafting wrote: >Mike Galbraith wrote: >>At 09:53 AM 6/18/2003 +0200, Felipe Alfaro Solana wrote: >> >>>Hi! >>> >>>I've been poking around and found the following link on O(1) scheduler >>>starvation problems: >>> >>>http://www.hpl.hp.com/research/linux/kernel/o1-starve.php >>> >>>The web page contains a small test program which supposedly is able to >>>make two processes starvate. However, I've been unable to reproduce what >>>is described in the above link. In fact, the CPU usage ratio ranges >>>between 60-40% or 70-30% in the worst cases. >> >>(you're talking about with my monotinic_clock() diff in your kernel right?) >>If you examine the priorities vs cpu usage, therein lies a big fat bug. >>I think the fundamental problem is that you can only execute in series, >>but can sleep in parallel, which makes for more sleep time existing than >>all execution time combined. > >Would dividing the sleep time by the number of sleepers fix this? >Or is division a too heavy operation here?
That won't work. You'd have to plunk it all into a pot, and divvy it up by %cpu usage or something. I solved it the simple way. I keep a smoothed run_avg (%cpu * 100), and use that as a sleep_avg limit... ie if you're run_avg is 9000 (you're eating 10% cpu), no sleep will push you into insanity land. I still have the problem that tasks will seek their appropriate priority level and _stick_ there, so I probably need to add some decay. (which will no doubt open the next can-O-worms)
-Mike
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |