Re: [PATCH][1/2] adjust dirty threshold for lowmem-only mappings

From: Sami Farin
Date: Mon Dec 20 2004 - 13:03:20 EST

On Mon, Dec 20, 2004 at 10:46:48AM -0600, Robert_Hentosh@xxxxxxxx wrote:
> > On Mon, 20 Dec 2004, Rik van Riel wrote:
> >
> >> Simply running "dd if=/dev/zero of=/dev/hd<one you can miss>"
> >> will result in OOM kills, with the dirty pagecache
> >> completely filling up lowmem. This patch is part 1 to
> >> fixing that problem.
> >
> > What I forgot to say is that in order to trigger this OOM
> > Kill the dirty_limit of 40% needs to be more memory than
> > what fits in low memory. So this will work on x86 with
> > 4GB RAM, since the dirty_limit is 1.6GB, but the block
> > device cache cannot grow that big because it is restricted
> > to low memory.
> >
> > This has the effect of all low memory being tied up in
> > Dirty page cache and userspace try_to_free_pages() skipping
> > the writeout of these pages because the block device is
> > congested.
> I am just confirming that this is a real problem. The problem
> more frequently shows up with block sizes above 4k on the
> dd and also showed up on some platforms with just a mke2fs
> on a slower device such as a USB hard drive.
> Rik's patch has solved the issue and has been running under
> stress (via ctcs) over the weekend without failure.

Rik's patch was broken (word-wrap by pine), but I patched
manually. However, I have tglx-oom-final patch which moved
out_of_memory call from vmscan.c:try_to_free_pages()
to page_alloc.c:__alloc_pages().

Basically, (sc.nr_congested < SWAP_CLUSTER_MAX) check is missing.
So, what's the best way to combine these two patches?

If you use mutt, the patch can be found with command
/~i 1102697553.3306.91.camel@xxxxxxxxxxxxxxxxxxxxxx
from your LKML mailbox.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at