All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mel Gorman <mgorman@suse.de>
To: Christoph Lameter <cl@linux.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linux-MM <linux-mm@kvack.org>,
	Linux-Netdev <netdev@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	David Miller <davem@davemloft.net>, Neil Brown <neilb@suse.de>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [PATCH 02/15] mm: sl[au]b: Add knowledge of PFMEMALLOC reserve pages
Date: Wed, 8 Feb 2012 14:45:06 +0000	[thread overview]
Message-ID: <20120208144506.GI5938@suse.de> (raw)
In-Reply-To: <alpine.DEB.2.00.1202071025050.30652@router.home>

On Tue, Feb 07, 2012 at 10:27:56AM -0600, Christoph Lameter wrote:
> On Mon, 6 Feb 2012, Mel Gorman wrote:
> 
> > Pages allocated from the reserve are returned with page->pfmemalloc
> > set and it is up to the caller to determine how the page should be
> > protected.  SLAB restricts access to any page with page->pfmemalloc set
> 
> pfmemalloc sounds like a page flag. If you would use one then the
> preservation of the flag by copying it elsewhere may not be necessary and
> the patches would be less invasive.

Using a page flag would simplify parts of the patch. The catch of course
is that it requires a page flag which are in tight supply and I do not
want to tie this to being 32-bit unnecessarily.

> Also you would not need to extend
> and modify many of the structures.
> 
 
Lets see;

o struct page size would be unaffected
o struct kmem_cache_cpu could be left alone even though it's a small saving
o struct slab also be left alone
o struct array_cache could be left alone although I would point out that
  it would make no difference in size as touched is changed to a bool to
  fit pfmemalloc in
o It would still be necessary to do the object pointer tricks in slab.c
  to avoid doing an excessive number of page lookups which is where much
  of the complexity is
o The virt_to_slab could be replaced by looking up the page flag instead
  and avoiding a level of indirection that would be pleasing
  to an int and placed with struct kmem_cache

I agree that parts of the patch would be simplier although the
complexity of storing pfmemalloc within the obj pointer would probably
remain. However, the downside of requiring a page flag is very high. In
the event we increase the number of page flags - great, I'll use one but
right now I do not think the use of page flag is justified.

-- 
Mel Gorman
SUSE Labs

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mgorman@suse.de>
To: Christoph Lameter <cl@linux.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linux-MM <linux-mm@kvack.org>,
	Linux-Netdev <netdev@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	David Miller <davem@davemloft.net>, Neil Brown <neilb@suse.de>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [PATCH 02/15] mm: sl[au]b: Add knowledge of PFMEMALLOC reserve pages
Date: Wed, 8 Feb 2012 14:45:06 +0000	[thread overview]
Message-ID: <20120208144506.GI5938@suse.de> (raw)
In-Reply-To: <alpine.DEB.2.00.1202071025050.30652@router.home>

On Tue, Feb 07, 2012 at 10:27:56AM -0600, Christoph Lameter wrote:
> On Mon, 6 Feb 2012, Mel Gorman wrote:
> 
> > Pages allocated from the reserve are returned with page->pfmemalloc
> > set and it is up to the caller to determine how the page should be
> > protected.  SLAB restricts access to any page with page->pfmemalloc set
> 
> pfmemalloc sounds like a page flag. If you would use one then the
> preservation of the flag by copying it elsewhere may not be necessary and
> the patches would be less invasive.

Using a page flag would simplify parts of the patch. The catch of course
is that it requires a page flag which are in tight supply and I do not
want to tie this to being 32-bit unnecessarily.

> Also you would not need to extend
> and modify many of the structures.
> 
 
Lets see;

o struct page size would be unaffected
o struct kmem_cache_cpu could be left alone even though it's a small saving
o struct slab also be left alone
o struct array_cache could be left alone although I would point out that
  it would make no difference in size as touched is changed to a bool to
  fit pfmemalloc in
o It would still be necessary to do the object pointer tricks in slab.c
  to avoid doing an excessive number of page lookups which is where much
  of the complexity is
o The virt_to_slab could be replaced by looking up the page flag instead
  and avoiding a level of indirection that would be pleasing
  to an int and placed with struct kmem_cache

I agree that parts of the patch would be simplier although the
complexity of storing pfmemalloc within the obj pointer would probably
remain. However, the downside of requiring a page flag is very high. In
the event we increase the number of page flags - great, I'll use one but
right now I do not think the use of page flag is justified.

-- 
Mel Gorman
SUSE Labs

  reply	other threads:[~2012-02-08 14:45 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-06 22:56 [PATCH 00/15] Swap-over-NBD without deadlocking V8 Mel Gorman
2012-02-06 22:56 ` Mel Gorman
2012-02-06 22:56 ` [PATCH 01/15] mm: Serialize access to min_free_kbytes Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-08 18:47   ` Rik van Riel
2012-02-08 18:47     ` Rik van Riel
2012-02-06 22:56 ` [PATCH 02/15] mm: sl[au]b: Add knowledge of PFMEMALLOC reserve pages Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-07 16:27   ` Christoph Lameter
2012-02-07 16:27     ` Christoph Lameter
2012-02-08 14:45     ` Mel Gorman [this message]
2012-02-08 14:45       ` Mel Gorman
2012-02-08 15:14       ` Christoph Lameter
2012-02-08 15:14         ` Christoph Lameter
2012-02-08 16:34         ` Mel Gorman
2012-02-08 16:34           ` Mel Gorman
2012-02-08 19:49           ` Christoph Lameter
2012-02-08 19:49             ` Christoph Lameter
2012-02-08 21:23             ` Mel Gorman
2012-02-08 21:23               ` Mel Gorman
2012-02-08 22:13               ` Christoph Lameter
2012-02-08 22:13                 ` Christoph Lameter
2012-02-09 12:50                 ` Mel Gorman
2012-02-09 12:50                   ` Mel Gorman
2012-02-09 19:53                   ` Christoph Lameter
2012-02-09 19:53                     ` Christoph Lameter
2012-02-10 10:26                     ` Mel Gorman
2012-02-10 10:26                       ` Mel Gorman
2012-02-10 21:01                       ` Christoph Lameter
2012-02-10 21:01                         ` Christoph Lameter
2012-02-10 22:07                         ` Christoph Lameter
2012-02-10 22:07                           ` Christoph Lameter
2012-02-13 10:12                           ` Mel Gorman
2012-02-13 10:12                             ` Mel Gorman
2012-02-13 11:10                         ` Mel Gorman
2012-02-13 11:10                           ` Mel Gorman
2012-02-06 22:56 ` [PATCH 03/15] mm: Introduce __GFP_MEMALLOC to allow access to emergency reserves Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 04/15] mm: allow PF_MEMALLOC from softirq context Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 05/15] mm: Ignore mempolicies when using ALLOC_NO_WATERMARK Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 06/15] net: Introduce sk_allocation() to allow addition of GFP flags depending on the individual socket Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 07/15] netvm: Allow the use of __GFP_MEMALLOC by specific sockets Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 08/15] netvm: Allow skb allocation to use PFMEMALLOC reserves Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 09/15] netvm: Propagate page->pfmemalloc to skb Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 10/15] netvm: Propagate page->pfmemalloc from netdev_alloc_page " Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-07 23:38   ` Alexander Duyck
2012-02-07 23:38     ` Alexander Duyck
2012-02-08 15:23     ` Mel Gorman
2012-02-08 15:23       ` Mel Gorman
2012-02-06 22:56 ` [PATCH 11/15] netvm: Set PF_MEMALLOC as appropriate during SKB processing Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 12/15] mm: Micro-optimise slab to avoid a function call Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 13/15] nbd: Set SOCK_MEMALLOC for access to PFMEMALLOC reserves Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 14/15] mm: Throttle direct reclaimers if PF_MEMALLOC reserves are low and swap is backed by network storage Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-06 22:56 ` [PATCH 15/15] mm: Account for the number of times direct reclaimers get throttled Mel Gorman
2012-02-06 22:56   ` Mel Gorman
2012-02-07 12:45 ` [PATCH 00/15] Swap-over-NBD without deadlocking V8 Hillf Danton
2012-02-07 12:45   ` Hillf Danton
2012-02-07 13:27   ` Mel Gorman
2012-02-07 13:27     ` Mel Gorman
2012-02-07 13:27     ` Mel Gorman
2012-02-08 12:51     ` Hillf Danton
2012-02-08 12:51       ` Hillf Danton
2012-02-08 15:26       ` Mel Gorman
2012-02-08 15:26         ` 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=20120208144506.GI5938@suse.de \
    --to=mgorman@suse.de \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=neilb@suse.de \
    --cc=netdev@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.