Re: [RFC][PATCH -mm 2/2] mm: make shrink_all_memory try harder

From: Rafael J. Wysocki
Date: Tue Feb 28 2006 - 18:02:33 EST


On Tuesday 28 February 2006 19:46, Andrew Morton wrote:
> "Rafael J. Wysocki" <rjw@xxxxxxx> wrote:
> >
> > On Tuesday 28 February 2006 04:25, Andrew Morton wrote:
> > > "Rafael J. Wysocki" <rjw@xxxxxxx> wrote:
> > > >
> > > > Make shrink_all_memory() repeat the attempts to free more memory if there
> > > > seems to be no pages to free.
> > > >
> > >
> > > This description doesn't describe what the problem is, not how the patch
> > > fixes it. So I'm kinda left guessing.
> >
> > I have described it in the 0/0 message, but I should have repeated that in the
> > changelog, sorry.
>
> Actually these [patch 0/n] emails are a nuisance - some poor schmuck just
> has to copy-n-paste that text into the fist patch's changelog anwyay.
>
> > > swsusp should call drop_pagecache() and then drop_slab() before trying to
> > > use shrink_all_memory(), btw.
> >
> > Well, sometimes we don't need to free a lot of memory.
>
> OK. But if clean pagecache and reclaimable slabs are left in memory,
> they'll have to be written to swap, won't they?

Yes, but then we write them more or less linearly and we can also compress
them. :-)

> It could well be more efficent to restore them from swap. Slower suspend,
> faster resume.
>
> > > + if (retry-- && ret < nr_pages) {
> > > + blk_congestion_wait(WRITE, HZ/5);
> > > + goto repeat;
> > > + }
> >
> > I'd like to do this only if ret is 0.
>
> Well I figured that this was a more general approach: we were _asked_ to
> free that many pages. If we haven't done that yet, keep trying. Can you
> test that code please?

So far, it works just fine. Thanks.

[Tested on 2.6.16-rc4-mm2, because -rc5-mm1 crashes on my system in a
spectacular way (already reported separately).]
-
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/