Re: [PATCH] vm: enhance __alloc_pages to prioritize pagecache eviction when pressed for memory

From: Neil Horman
Date: Mon Dec 12 2005 - 13:22:25 EST


On Fri, Dec 09, 2005 at 04:29:01PM -0800, Andrew Morton wrote:
> Neil Horman <nhorman@xxxxxxxxxxxxx> wrote:
> >
> > Hey all-
> > I was recently shown this issue, wherein, if the kernel was kept full of
> > pagecache via applications that were constantly writing large amounts of data to
> > disk, the box could find itself in a position where the vm, in __alloc_pages
> > would invoke the oom killer repetatively within try_to_free_pages, until such
> > time as the box had no candidate processes left to kill, at which point it would
> > panic.
>
> That's pretty bad. Are you able to provide a description which would permit
> others to reproduce this?

As promised, heres the reproducer that was given to me, and used to reproduce
this problem:

1) setup an nfs serve with a thread count of 2. Of course, 1 thread might make
the problem more easy to reproduce. I haven't tried it yet.

2) Setup 4 nodes to hammer the nfs mounted directory. The 4 nodes should hammer
out 4 gigs. 2 gigs didn't seem to be enough.

I used a locally developed tool called ior to reproduce this problem. The tool
can be found here:

http://www.llnl.gov/asci/platforms/purple/rfp/benchmarks/limited/ior/

I suppose anything that can write to NFS fast should be fine. But that's what I
did.


If you do this, any node writing to the server that has more than 4GB of RAM
should start oom killing to the point where it runs out of candidate processes
and panics

Thanks & Regards
Neil

--
/***************************************************
*Neil Horman
*Software Engineer
*gpg keyid: 1024D / 0x92A74FA1 - http://pgp.mit.edu
***************************************************/
-
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/