From: Andrea Arcangeli <andrea@novell.com>
To: Nikita Danilov <nikita@clusterfs.com>
Cc: Nick Piggin <piggin@cyberone.com.au>,
Jesse Barnes <jbarnes@sgi.com>,
Marcelo Tosatti <marcelo.tosatti@cyclades.com>,
Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH] Remove OOM killer from try_to_free_pages / all_unreclaimable braindamage
Date: Sat, 6 Nov 2004 18:44:44 +0100 [thread overview]
Message-ID: <20041106174444.GF3851@dualathlon.random> (raw)
In-Reply-To: <16781.436.710721.667909@gargle.gargle.HOWL>
On Sat, Nov 06, 2004 at 07:54:12PM +0300, Nikita Danilov wrote:
> Andrea Arcangeli writes:
> > On Sat, Nov 06, 2004 at 02:37:05PM +0300, Nikita Danilov wrote:
> > > We need page-reservation API of some sort. There were several attempts
> > > to introduce this, but none get into mainline.
> >
> > they're already in under the name of mempools
>
> I am talking about slightly different thing. Think of some operation
> that calls find_or_create_page(). find_or_create_page() doesn't know
> about memory reserved in mempools, it uses alloc_page() directly. If one
> wants to guarantee that compound operation has enough memory to
> complete, memory should be reserved at the lowest level---in the page
> allocator.
the page allocator reserve only memory in order to swapout, that's
PF_MEMALLOC.
For other purposes not related to swapping (which is not a deterministic
thing, given there can be multiple layers of I/O and fs operations to
do), you should use mempool and change find_or_create_page to get your
reserved page as parameter.
> > I'm perfectly aware the fs tends to be the less correct places in terms
> > of allocations, and luckily it's not an heavy memory user, so I still
>
> Either you are kidding, or we are facing very different workloads. In
> the world of file-system development, file-system is (not surprisingly)
> single largest memory consumer.
when the machine runs oom the fs allocations means nothing. when the
machine runs oom is because somebody entered the malloc loop or
something like that. all allocations come from page faults.
Try yourself to run your box oom with getblk allocations. Only then
you'll run into the deadlock.
You've to keep in mind an oom condition happens once in a while, and
when it happens the userspace memory allocation load is huge compared to
any fs operation.
> > have to see a deadlock in getblk or create_buffers or similar. It's
> > mostly a correctness issue (math proof it can't deadlock, right now it
> > can if more tasks all get stuck in getblk at the same time during a hard
> > oom condition etc..).
>
> Add here mmap that can dirty all physical memory behind your back, and
> delayed disk block allocation that forces ->writepage() to allocate
> potentially huge extent when memory is already tight and hope of having
> a proof becomes quite remote.
that's the PF_MEMALLOC path. A reservation already exists, or it would
never work since 2.2. PF_MEMALLOC and the min/2 watermark are meant to
allow writepage to allocate ram. however the amount reserved is limited,
so it's not perfect. The only way to make it perfect I believe is to
reserve the stuff inside the fs with mempools as described above.
next prev parent reply other threads:[~2004-11-06 17:45 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-05 20:01 [PATCH] Remove OOM killer from try_to_free_pages / all_unreclaimable braindamage Marcelo Tosatti
2004-11-05 23:32 ` Jesse Barnes
2004-11-05 23:47 ` Thomas Gleixner
2004-11-06 1:20 ` Andrea Arcangeli
2004-11-06 1:26 ` Nick Piggin
2004-11-06 1:36 ` Jesse Barnes
2004-11-06 1:50 ` Andrea Arcangeli
2004-11-06 9:47 ` Hugh Dickins
2004-11-06 10:53 ` Nick Piggin
2004-11-06 15:29 ` Andrea Arcangeli
2004-11-06 15:29 ` Andrea Arcangeli
2004-11-06 16:21 ` Hugh Dickins
2004-12-10 6:02 ` William Lee Irwin III
2004-11-06 11:37 ` Nikita Danilov
2004-11-06 15:32 ` Andrea Arcangeli
2004-11-06 16:54 ` Nikita Danilov
2004-11-06 17:44 ` Andrea Arcangeli [this message]
2004-11-06 19:24 ` Nikita Danilov
2004-11-07 1:16 ` Andrea Arcangeli
2004-11-06 10:11 ` Marcelo Tosatti
2004-11-06 1:55 ` Thomas Gleixner
2004-11-06 10:28 ` Marcelo Tosatti
2004-11-17 22:54 ` Werner Almesberger
2004-11-17 23:27 ` Chris Ross
2004-11-18 0:04 ` Werner Almesberger
2004-11-18 0:28 ` Chris Ross
2004-11-18 1:14 ` Werner Almesberger
2004-11-18 8:20 ` Chris Ross
2004-11-18 10:01 ` Werner Almesberger
2004-11-18 14:44 ` Thomas Gleixner
2004-11-18 15:10 ` Chris Friesen
2004-11-06 10:05 ` Marcelo Tosatti
2004-11-06 15:44 ` Andrea Arcangeli
2004-11-06 15:52 ` Arjan van de Ven
2004-11-06 17:09 ` Marcelo Tosatti
2004-11-07 0:48 ` Andrea Arcangeli
2004-11-07 11:21 ` Marcelo Tosatti
2004-11-06 12:53 ` [PATCH] Remove OOM killer Andries Brouwer
2004-11-06 10:41 ` Marcelo Tosatti
2004-11-07 9:26 ` Marko Macek
2004-11-07 11:34 ` memory overcommit (was: [PATCH] Remove OOM killer ...) Anton Ertl
2004-11-08 16:27 ` [PATCH] Remove OOM killer from try_to_free_pages / all_unreclaimable braindamage Marcelo Tosatti
2004-11-08 18:55 ` Marcelo Tosatti
2004-11-09 2:22 ` Nick Piggin
2004-11-09 2:35 ` Andrew Morton
2004-11-09 2:46 ` Nick Piggin
2004-11-09 7:18 ` Marcelo Tosatti
2004-11-09 7:15 ` Marcelo Tosatti
2004-11-10 1:11 ` Nick Piggin
[not found] <fa.ev73q5c.ejcnom@ifi.uio.no>
[not found] ` <fa.es1mdq5.76ib8j@ifi.uio.no>
2004-11-18 20:48 ` Bodo Eggert
2004-11-18 21:15 ` Werner Almesberger
2004-11-19 1:05 ` Bodo Eggert
2004-11-19 0:15 ` Andreas Dilger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20041106174444.GF3851@dualathlon.random \
--to=andrea@novell.com \
--cc=akpm@osdl.org \
--cc=jbarnes@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=marcelo.tosatti@cyclades.com \
--cc=nikita@clusterfs.com \
--cc=piggin@cyberone.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox