linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mel Gorman <mel@csn.ul.ie>
To: William Lee Irwin III <wli@holomorphy.com>
Cc: Linux Memory Management List <linux-mm@kvack.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [RFC] Avoiding fragmentation through different allocator
Date: Thu, 13 Jan 2005 10:11:30 +0000 (GMT)	[thread overview]
Message-ID: <Pine.LNX.4.58.0501131002430.31154@skynet> (raw)
In-Reply-To: <20050113073146.GB1226@holomorphy.com>

On Wed, 12 Jan 2005, William Lee Irwin III wrote:

> On Wed, Jan 12, 2005 at 09:09:24PM +0000, Mel Gorman wrote:
> > So... What the patch does. Allocations are divided up into three different
> > types of allocations;
> > UserReclaimable - These are userspace pages that are easily reclaimable. Right
> > 	now, I'm putting all allocations of GFP_USER and GFP_HIGHUSER as
> > 	well as disk-buffer pages into this category. These pages are trivially
> > 	reclaimed by writing the page out to swap or syncing with backing
> > 	storage
> > KernelReclaimable - These are pages allocated by the kernel that are easily
> > 	reclaimed. This is stuff like inode caches, dcache, buffer_heads etc.
> > 	These type of pages potentially could be reclaimed by dumping the
> > 	caches and reaping the slabs (drastic, but you get the idea). We could
> > 	also add pages into this category that are known to be only required
> > 	for a short time like buffers used with DMA
> > KernelNonReclaimable - These are pages that are allocated by the kernel that
> > 	are not trivially reclaimed. For example, the memory allocated for a
> > 	loaded module would be in this category. By default, allocations are
> > 	considered to be of this type
>
> I'd expect to do better with kernel/user discrimination only, having
> address-ordering biases in opposite directions for each case.
>

I thought about this and was not 100% sure. I'll explain how I see it
before I go redo large portions of the patch.

1. Discriminating kernel/user will leave the kernel area fragmented much
worse than my approach. On my systems I tested, I found that a significant
portion of kernel memory was taken up by slabs like buffer_head,
ext3_inode_cache, ntfs_inode_cache, ntfs_big_inode_cache and
radix_tree_node. I did not want to mix these allocations, which
potentially are easy to get rid of, with allocations that are incredibly
difficult.  (Totally aside, I also found that slab caches suffer from
terrible internal fragmentation, sometimes wasting up to 60% of their
memory but thats a separate problem)

2. Address-ordering biases was also something I looked at early on, but
then figured it didn't matter. If I don't reserve a 2^MAX_ORDER blocks,
the system will just get terribly fragmented under memory presure when
they meet in the middle. If I do reserve, I just end up with a similar
layout to what I have now.

-- 
Mel Gorman

  reply	other threads:[~2005-01-13 10:11 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-12 21:09 [RFC] Avoiding fragmentation through different allocator Mel Gorman
2005-01-13  7:03 ` Matt Mackall
2005-01-13  7:20   ` Trond Myklebust
2005-01-13 10:22   ` Mel Gorman
2005-01-13  7:31 ` William Lee Irwin III
2005-01-13 10:11   ` Mel Gorman [this message]
2005-01-14 21:42   ` Marcelo Tosatti
2005-01-15  1:31     ` William Lee Irwin III
2005-01-15 19:19       ` Mel Gorman
2005-01-12 22:45 Tolentino, Matthew E
2005-01-12 23:12 ` Mel Gorman
2005-01-13  8:02   ` Hirokazu Takahashi
2005-01-13 10:27     ` Mel Gorman
2005-01-16  4:03   ` Yasunori Goto
2005-01-16 16:21     ` Mel Gorman
2005-01-17 23:08       ` Yasunori Goto
2005-01-19 13:45         ` Mel Gorman
2005-01-17 16:48 Tolentino, Matthew E
2005-01-19 13:17 ` 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=Pine.LNX.4.58.0501131002430.31154@skynet \
    --to=mel@csn.ul.ie \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=wli@holomorphy.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).