From: Stephan von Krawczynski <skraw@ithnet.com>
To: Daniel Phillips <phillips@bonn-fries.net>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: Memory Problem in 2.4.10-pre2 / __alloc_pages failed
Date: Thu, 30 Aug 2001 16:46:34 +0200 [thread overview]
Message-ID: <20010830164634.3706d8f8.skraw@ithnet.com> (raw)
In-Reply-To: <20010829232929Z16206-32383+2351@humbolt.nl.linux.org>
In-Reply-To: <20010829140706.3fcb735c.skraw@ithnet.com> <20010829232929Z16206-32383+2351@humbolt.nl.linux.org>
On Thu, 30 Aug 2001 01:36:10 +0200
Daniel Phillips <phillips@bonn-fries.net> wrote:
> > Aug 29 13:43:34 admin kernel: __alloc_pages: 1-order allocation failed (gfp=0x20/0).
> > Aug 29 13:43:34 admin kernel: pid=1207; __alloc_pages(gfp=0x20, order=1, ...)
> > Aug 29 13:43:34 admin kernel: Call Trace: [_alloc_pages+22/24] [__get_free_pages+10/24] [<fdcec845>] [<fdcec913>] [<fdceb7d7>]
> > Aug 29 13:43:34 admin kernel: [<fdcec0f5>] [<fdcea589>] [ip_local_deliver_finish+0/368] [nf_hook_slow+272/404] [ip_rcv_finish+0/480] [ip_local_deliver+436/444]
> > Aug 29 13:43:34 admin kernel: [ip_local_deliver_finish+0/368] [ip_rcv_finish+0/480] [ip_rcv_finish+413/480] [ip_rcv_finish+0/480] [nf_hook_slow+272/404] [ip_rcv+870/944]
> > Aug 29 13:43:34 admin kernel: [ip_rcv_finish+0/480] [net_rx_action+362/628] [do_softirq+111/204] [do_IRQ+219/236] [ret_from_intr+0/7] [sys_ioctl+443/532]
> > Aug 29 13:43:34 admin kernel: [system_call+51/56]
>
> OK, I see what the problem is. Regular memory users are consuming memory
> right down to the emergency reserve limit, beyond which only PF_MEMALLOC
> users can go. Unfortunately, since atomic memory allocators can't wait,
> they tend to fail with high frequency in this state. Duh.
Aehm, excuse my ignorance, but why is a "regular memory user" effectively _consuming_ the memory? I mean how does CD reading and NFS writing _consume_ memory (to such an extent)? Where _is_ this memory gone? If I stop I/O the memory is still gone. I can make at least quite a bit appear again as free, if I delete all the files I have copied via NFS before. After that I receive lots of free mem right away. Why? I would not expect the memory as validly consumed by knfsd during writing files. I mean what for? I guess from "Inact_dirty" list being _huge_, that the mem is in fact already freed again by the original allocator, but the vm holds it, until ... well I don't know. Or am I wrong?
> First, there's an effective way to make these particular atomic failures
> go away almost entirely. The atomic memory user (in this case a network
> interrupt handler) keeps a list of pages for its private use, starting with
> an empty list. Each time it needs a page it gets it from its private list,
> but if that list is empty it gets it from alloc_pages, and when done with
> it, returns it to its private list. The alloc_pages call can still fail of
> course, but now it will only fail a few times as it expands its list up to
> the size required for normal traffic. The effect on throughput should be
> roughly nothing.
Uh, I would not do that. To a shared memory pool system this is really contra-productive (is this english?). You simply let the mem vanish in some private pools, so only _one_ process (or whatever) can use it. To tell the full truth, you do not even know, if he really uses it. If he allocated it in a heavy load situation and does not give it back (or has his own weird strategy of returning it) you run out of mem only because of one flaky driver. It will not be easy as external spectator of a driver to find out if it performs well or has some memory leakage inside. You simply can't tell.
In fact I do trust kernel mem management more :-), even if it isn't performing very well currently.
> Let's try another way of dealing with it. What I'm trying to do with the
> patch below is leave a small reserve of 1/12 of pages->min, above the
> emergency reserve, to be consumed by non-PF_MEMALLOC atomic allocators.
> Please bear in mind this is completely untested, but would you try it
> please and see if the failure frequency goes down?
Well, I will try. But must honestly mention, that the whole idea looks like a patch to patch a patch. Especially because nobody can tell what the right reserve may be. I guess this may very much depend on host layout. How do you want to make an acceptable kernel-patch for all the world out of this idea? The idea sounds obvious, but looks not very helpful for solving the basic problem.
Regards,
Stephan
next prev parent reply other threads:[~2001-08-30 14:47 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-08-29 12:07 Memory Problem in 2.4.10-pre2 / __alloc_pages failed Stephan von Krawczynski
2001-08-29 16:47 ` Roger Larsson
2001-08-29 19:18 ` Stephan von Krawczynski
[not found] ` <Pine.LNX.4.33.0108300521280.448-100000@mikeg.weiden.de>
2001-08-30 14:16 ` Stephan von Krawczynski
2001-08-29 23:36 ` Daniel Phillips
2001-08-30 14:46 ` Stephan von Krawczynski [this message]
2001-08-30 18:02 ` Daniel Phillips
2001-08-31 10:32 ` Stephan von Krawczynski
2001-08-30 23:53 ` [PATCH] __alloc_pages cleanup -R6 Was: " Roger Larsson
2001-08-31 7:43 ` Russell King
2001-08-31 23:22 ` Roger Larsson
2001-08-30 16:49 ` Roger Larsson
2001-08-31 11:06 ` Stephan von Krawczynski
2001-08-31 19:03 ` Daniel Phillips
-- strict thread matches above, loose matches on Subject: below --
2001-09-01 18:28 Stephan von Krawczynski
2001-09-02 1:57 ` Daniel Phillips
2001-09-02 2:21 ` Roger Larsson
2001-09-02 4:16 ` Daniel Phillips
2001-09-02 13:48 ` Alex Bligh - linux-kernel
2001-09-02 18:26 ` Daniel Phillips
2001-09-02 19:32 ` Alex Bligh - linux-kernel
2001-09-02 20:24 ` Daniel Phillips
2001-09-02 21:03 ` Alex Bligh - linux-kernel
2001-09-02 20:33 ` Daniel Phillips
2001-09-02 21:14 ` Alex Bligh - linux-kernel
2001-09-02 21:23 ` Daniel Phillips
2001-09-02 21:28 ` Alex Bligh - linux-kernel
[not found] <20010901055634Z16057-32383+2785@humbolt.nl.linux.org>
[not found] ` <Pine.LNX.4.33.0109011021570.280-100000@mikeg.weiden.de>
2001-09-01 18:54 ` Stephan von Krawczynski
2001-09-02 3:21 ` Mike Galbraith
[not found] <20010907154801.028a48e8.skraw@ithnet.com>
[not found] ` <689208719.999883299@[10.132.112.53]>
2001-09-07 21:13 ` Stephan von Krawczynski
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=20010830164634.3706d8f8.skraw@ithnet.com \
--to=skraw@ithnet.com \
--cc=linux-kernel@vger.kernel.org \
--cc=phillips@bonn-fries.net \
/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