linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Andrea Arcangeli <aarcange@redhat.com>
To: Mel Gorman <mel@csn.ul.ie>
Cc: Shaohua Li <shaohua.li@intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-mm <linux-mm@kvack.org>,
	"Chen, Tim C" <tim.c.chen@intel.com>,
	Rik van Riel <riel@redhat.com>,
	alex.shi@intel.com
Subject: Re: too big min_free_kbytes
Date: Tue, 22 Feb 2011 15:42:00 +0100	[thread overview]
Message-ID: <20110222144200.GY13092@random.random> (raw)
In-Reply-To: <20110222142559.GD15652@csn.ul.ie>

On Tue, Feb 22, 2011 at 02:25:59PM +0000, Mel Gorman wrote:
> The higher min_free_kbytes is expected as a result of using transparent
> hugepages so I don't really consider it a bug. Free memory going up to

That's true. THP can definitely increase the memory footprint of
certain apps. Especially if the app is allocating lots of data but
only touching a few bytes scattered over the mapping, the memory
footprint can increase up to 512fold (absolute worst case of course,
in average it will be less). This is why there's the enabled=madvise
option after all.

> about 700M as a result of kswapd is a real bug though.

Yes.

> > in our test, there is about 50M memory free (originally just about 5M, which
> > will cause more swap. Should we also reduce the min_free_kbytes?
> > 
> 
> Either that or boot with transparent hugepages disabled and
> min_free_kbytes will be lower.

I suggest to boot with transparent_hugepage=madvise, or to set the
default to madvise in make menuconfig. That will still enable the
anti-frag logic in the buddy allocator in full. If the problem goes
away with the madvise setting, then it's not related to
min_free_kbytes. With the 700M fix for kswapd however it's hard to
imagine the increase min_free_kbytes to cause out of memory conditions
even if it uses a little more memory to allow for increased
performance thanks to hugepages.

Another thing we can change (in addition to the 700M-waste fix in
kswapd) is this:

	/*
	 * By default disable transparent hugepages on smaller
	systems,
	 * where the extra memory used could hurt more than TLB
	overhead
	 * is likely to save.  The admin can still enable it through
	/sys.
	 */
	 if (totalram_pages < (512 << (20 - PAGE_SHIFT)))
	    transparent_hugepage_flags = 0;

and:

	/* don't ever allow to reserve more than 5% of the lowmem */
	recommended_min = min(recommended_min,
			        (unsigned long) nr_free_buffer_pages()
	/ 20);


We can reduce the max min_free_kbytes to less than 5% of the lowmem,
and we can also decide not to enable THP if there's less than 2G
instead of "less than 512M".

I'm also intrigued by reducing this from 2 to 1:

    /* Make sure at least 2 hugepages are free for MIGRATE_RESERVE */
    recommended_min = pageblock_nr_pages * nr_zones * 2;

Do we really need 2 pages instead of just 1 here to provide the
guarantee? I thought 1 page would be enough. But you know anti-frag
logic better ;). It won't save a lot of memory but just a couple of
mbytes, I doubt it can make any real difference. Still I prefer 1 if
it's enough.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2011-02-22 14:42 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-24  3:56 too big min_free_kbytes Shaohua Li
2011-01-24 15:00 ` Andrea Arcangeli
2011-01-25 14:35   ` Mel Gorman
2011-01-26 14:17   ` Mel Gorman
2011-01-26 15:23     ` Mel Gorman
2011-01-26 15:42       ` Andrea Arcangeli
2011-01-26 16:36         ` Mel Gorman
2011-01-26 17:42           ` Mel Gorman
2011-01-27 13:40             ` Mel Gorman
2011-01-27 15:27               ` Andrea Arcangeli
2011-01-27 16:03                 ` Mel Gorman
2011-01-27 18:52                   ` Andrea Arcangeli
2011-01-27 20:33                     ` Rik van Riel
2011-01-27 21:31                     ` Mel Gorman
2011-01-27 23:18                       ` Rik van Riel
2011-01-28 10:35                         ` Mel Gorman
2011-01-28 16:28                           ` Andrea Arcangeli
2011-01-28 16:46                             ` Mel Gorman
2011-01-28 17:16                               ` Rik van Riel
2011-01-28 17:46                                 ` Andrea Arcangeli
2011-01-28 18:03                                   ` Rik van Riel
2011-01-28 18:24                                     ` Andrea Arcangeli
2011-01-28 19:34                                       ` Rik van Riel
2011-01-28 19:45                                         ` Andrea Arcangeli
2011-01-28 20:55                                           ` Rik van Riel
2011-01-29 19:45                                             ` Andrea Arcangeli
2011-01-28 17:34                               ` Andrea Arcangeli
2011-01-28 17:10                             ` Rik van Riel
2011-02-03  2:58                 ` Andrea Arcangeli
2011-02-03 13:15                   ` Mel Gorman
2011-02-03 18:59                     ` Andrea Arcangeli
2011-02-03 14:36                   ` Rik van Riel
2011-02-03 19:11                     ` Andrea Arcangeli
2011-02-12  1:28                       ` Simon Kirby
2011-02-14  2:25                   ` Shaohua Li
2011-02-22 14:25                     ` Mel Gorman
2011-02-22 14:42                       ` Andrea Arcangeli [this message]
2011-02-22 14:50                         ` Mel Gorman
2011-02-22 14:54                           ` Andrea Arcangeli
2011-02-22 16:04                         ` Mel Gorman
2011-02-22 16:40                           ` Rik van Riel
2011-02-23  5:29                       ` Shaohua Li
2011-02-23 14:45                         ` Andrea Arcangeli
2011-02-24  8:08                           ` Shaohua Li
2011-02-24  9:52                             ` Mel Gorman
2011-02-24  9:57                               ` Mel Gorman
2011-02-24 14:27                                 ` Andrea Arcangeli
2011-02-24 14:04                             ` Andrea Arcangeli
2011-02-25  0:51                               ` Shaohua Li
2011-02-25 12:13                                 ` Mel Gorman
2011-02-12  9:48                 ` alex shi
2011-02-22 14:24                   ` Mel Gorman

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=20110222144200.GY13092@random.random \
    --to=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=alex.shi@intel.com \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=riel@redhat.com \
    --cc=shaohua.li@intel.com \
    --cc=tim.c.chen@intel.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;
as well as URLs for NNTP newsgroup(s).