Messages in this thread |  | | Date | Wed, 3 Jan 2001 06:17:45 +0100 (CET) | From | Mike Galbraith <> | Subject | Re: scheduling problem? |
| |
On Wed, 3 Jan 2001, Roger Larsson wrote:
> Hi, > > I have played around with this code previously. > This is my current understanding. > [yield problem?]
Hmm.. this ~could be. I once dove into the VM waters (me=stone) and changed __alloc_pages() to only yield instead of scheduling. The results (along with many other strange changes) were.. weirdest feeling kernel I ever ran. Damn fast, but very very weird ;-)
> Possible (in -prerelease) untested possibilities. > > * Be tougher when yielding. > > > wakeup_kswapd(0); > if (gfp_mask & __GFP_WAIT) { > __set_current_state(TASK_RUNNING); > current->policy |= SCHED_YIELD; > + current->counter--; /* be faster to let kswapd run */ > or > + current->counter = 0; /* too fast? [not tested] */ > schedule(); > }
That looks a lot like cheating.
> * Move wakeup of bflushd to kswapd. Somewhere after 'do_try_to_free_pages(..)' > has been run. Before going to sleep... > [a variant tested with mixed results - this is likely a better one]
I also did some things along this line.. also with mixed results.
:) the changes I've done that I actually like best is to kill bdflush graveyard dead. Did that twice and didn't miss it at all. (next time, I think I'll erect a headstone)
-Mike
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |