public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Roger Larsson <roger.larsson@skelleftea.mail.telia.com>
To: Daniel Phillips <phillips@bonn-fries.net>,
	Stephan von Krawczynski <skraw@ithnet.com>,
	linux-kernel <linux-kernel@vger.kernel.org>
Cc: Rik van Riel <riel@conectiva.com.br>,
	Marcelo Tosatti <marcelo@conectiva.com.br>
Subject: Re: Memory Problem in 2.4.10-pre2 / __alloc_pages failed
Date: Sun, 2 Sep 2001 04:21:39 +0200	[thread overview]
Message-ID: <200109020226.f822QCS18912@maile.telia.com> (raw)
In-Reply-To: <20010901202823.303eb0eb.skraw@ithnet.com> <20010902015023Z16303-32383+2910@humbolt.nl.linux.org>
In-Reply-To: <20010902015023Z16303-32383+2910@humbolt.nl.linux.org>

On Sunday den 2 September 2001 03:57, Daniel Phillips wrote:
> On September 1, 2001 08:28 pm, Stephan von Krawczynski wrote:
>
> The next part of the theory says that the higher order allocations are
> failing because of fragmentation.  I put considerable thought into this
> today while wandering around in a dungeon in Berlin watching bats (really)
> and I will post an article to lkml tomorrow with my findings.  To summarize
> briefly here: a Linux system in steady state operation *is* going to show
> physical fragmentation so that the chance of a higher order allocation
> succeeding becomes very small.  The chance of failure increases
> exponentially (or worse) with a) the allocation order and b) the ratio of
> allocated to free memory.  The second of these you can control: the higher
> you set zone->pages_min the better chance your higher order allocations
> will have to succeed.  Do you want a patch for that, to see if this works
> in practice?
>

You beat me to it, with some minutes...
(I sent a email to Stephan...)

> Of course it would be much better if we had some positive mechanism for
> defragging physical memory instead of just relying on chance and hoping
> for the best the way we do now.  IMHO, such a mechanism can be built
> practically and I'm willing to give it a try.  Basically, kswapd would try
> to restore a depleted zone order list by scanning mem_map to find buddy
> partners for free blocks of the next lower order.  This strategy, together
> with the one used in the patch above, could largly eliminate atomic
> allocation failures.  (Although as I mentioned some time ago, getting rid
> of them entirely is an impossible problem.)
>
> The question remains why we suddenly started seeing more atomic allocation
> failures in the recent Linus trees.  I'll guess that the changes in
> scanning strategy have caused the system to spend more time close to the
> zone->pages_min amount of free memory.  This idea seems to be supported by
> your memstat listings.  In some sense, it's been good to have the issue
> forced so that we must come up with ways to make atomic and higher order
> allocations less fragile.

It might be that the elevator works now... :-)

You will only see it once there are no remaining free pages of an even higher
order left - then you will start to fail...

Two things are required:
1) You have lots of memory.
2) You have used it all at some point.

Another thing to do could be to add a order parameter to free.
The pages allocated has to be freed sometime... if we make sure that
they are freed together it could simplify things - no chance that the
first part gets allocated directly...

Or/and we could remove the sources of higher order allocs, as an example:
why is the SCSI layer allowed to allocate order 3 allocs (32 kB) several
times per second? Will we really get a performance hit by not allowing
higher order allocs in active driver code?

/RogerL
-- 
Roger Larsson
Skellefteå
Sweden

  reply	other threads:[~2001-09-02  2:26 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-09-01 18:28 Memory Problem in 2.4.10-pre2 / __alloc_pages failed Stephan von Krawczynski
2001-09-02  1:57 ` Daniel Phillips
2001-09-02  2:21   ` Roger Larsson [this message]
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
2001-09-02 22:36               ` High order memory allocations (was Re: Memory Problem in 2.4.10-pre2 / __alloc_pages failed) Alex Bligh - linux-kernel
     [not found] <20010907154801.028a48e8.skraw@ithnet.com>
     [not found] ` <689208719.999883299@[10.132.112.53]>
2001-09-07 21:13   ` Memory Problem in 2.4.10-pre2 / __alloc_pages failed Stephan von Krawczynski
     [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
  -- strict thread matches above, loose matches on Subject: below --
2001-08-29 12:07 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
2001-08-30 18:02     ` Daniel Phillips
2001-08-31 10:32       ` Stephan von Krawczynski
2001-08-30 16:49   ` Roger Larsson
2001-08-31 11:06   ` Stephan von Krawczynski
2001-08-31 19:03     ` Daniel Phillips

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=200109020226.f822QCS18912@maile.telia.com \
    --to=roger.larsson@skelleftea.mail.telia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcelo@conectiva.com.br \
    --cc=phillips@bonn-fries.net \
    --cc=riel@conectiva.com.br \
    --cc=skraw@ithnet.com \
    /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