All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Wilcox <willy@infradead.org>
To: Christoph Hellwig <hch@infradead.org>
Cc: Robin Murphy <robin.murphy@arm.com>,
	Michal Hocko <mhocko@suse.com>, Will Deacon <will.deacon@arm.com>,
	Levin Alexander <Alexander.Levin@microsoft.com>,
	linux-mm@kvack.org, Christopher Lameter <cl@linux.com>,
	Nicolas Boichat <drinkcat@chromium.org>,
	Huaisheng Ye <yehs1@lenovo.com>,
	David Rientjes <rientjes@google.com>,
	yingjoe.chen@mediatek.com, Vlastimil Babka <vbabka@suse.cz>,
	Tomasz Figa <tfiga@google.com>,
	Mike Rapoport <rppt@linux.vnet.ibm.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Pekka Enberg <penberg@kernel.org>,
	iommu@lists.linux-foundation.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Mel Gorman <mgorman@techsingularity.net>
Subject: Re: [PATCH v2 0/3] iommu/io-pgtable-arm-v7s: Use DMA32 zone for page tables
Date: Thu, 22 Nov 2018 07:16:32 -0800	[thread overview]
Message-ID: <20181122151632.GP3065@bombadil.infradead.org> (raw)
In-Reply-To: <20181122082602.GB2049@infradead.org>

On Thu, Nov 22, 2018 at 12:26:02AM -0800, Christoph Hellwig wrote:
> On Wed, Nov 21, 2018 at 06:35:58PM -0800, Matthew Wilcox wrote:
> > I think you should look at using the page_frag allocator here.  You can
> > use whatever GFP_DMA flags you like.
> 
> So I actually tries to use page_frag to solve the XFS unaligned kmalloc
> allocations problem, and I don't think it is the right hammer for this
> nail (or any other nail outside of networking).
> 
> The problem with the page_frag allocator is that it never reuses
> fragments returned to the page, but only only frees the page once all
> fragments are freed.  This means that if you have some long(er) term
> allocations you are effectively creating memory leaks.

Yes, your allocations from the page_frag allocator have to have similar
lifetimes.  I thought that would be ideal for XFS though; as I understood
the problem, these were per-IO allocations, and IOs to the same filesystem
tend to take roughly the same amount of time.  Sure, in an error case,
some IOs will take a long time before timing out, but it should be OK
to have pages unavailable during that time in these rare situations.
What am I missing?

WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox <willy@infradead.org>
To: Christoph Hellwig <hch@infradead.org>
Cc: Pekka Enberg <penberg@kernel.org>,
	Mike Rapoport <rppt@linux.vnet.ibm.com>,
	Michal Hocko <mhocko@suse.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Huaisheng Ye <yehs1@lenovo.com>, Tomasz Figa <tfiga@google.com>,
	Mel Gorman <mgorman@techsingularity.net>,
	Will Deacon <will.deacon@arm.com>,
	linux-kernel@vger.kernel.org,
	Levin Alexander <Alexander.Levin@microsoft.com>,
	linux-mm@kvack.org, iommu@lists.linux-foundation.org,
	Nicolas Boichat <drinkcat@chromium.org>,
	linux-arm-kernel@lists.infradead.org,
	David Rientjes <rientjes@google.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	yingjoe.chen@mediatek.com, Christopher Lameter <cl@linux.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Vlastimil Babka <vbabka@suse.cz>
Subject: Re: [PATCH v2 0/3] iommu/io-pgtable-arm-v7s: Use DMA32 zone for page tables
Date: Thu, 22 Nov 2018 07:16:32 -0800	[thread overview]
Message-ID: <20181122151632.GP3065@bombadil.infradead.org> (raw)
In-Reply-To: <20181122082602.GB2049@infradead.org>

On Thu, Nov 22, 2018 at 12:26:02AM -0800, Christoph Hellwig wrote:
> On Wed, Nov 21, 2018 at 06:35:58PM -0800, Matthew Wilcox wrote:
> > I think you should look at using the page_frag allocator here.  You can
> > use whatever GFP_DMA flags you like.
> 
> So I actually tries to use page_frag to solve the XFS unaligned kmalloc
> allocations problem, and I don't think it is the right hammer for this
> nail (or any other nail outside of networking).
> 
> The problem with the page_frag allocator is that it never reuses
> fragments returned to the page, but only only frees the page once all
> fragments are freed.  This means that if you have some long(er) term
> allocations you are effectively creating memory leaks.

Yes, your allocations from the page_frag allocator have to have similar
lifetimes.  I thought that would be ideal for XFS though; as I understood
the problem, these were per-IO allocations, and IOs to the same filesystem
tend to take roughly the same amount of time.  Sure, in an error case,
some IOs will take a long time before timing out, but it should be OK
to have pages unavailable during that time in these rare situations.
What am I missing?

WARNING: multiple messages have this Message-ID (diff)
From: willy@infradead.org (Matthew Wilcox)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 0/3] iommu/io-pgtable-arm-v7s: Use DMA32 zone for page tables
Date: Thu, 22 Nov 2018 07:16:32 -0800	[thread overview]
Message-ID: <20181122151632.GP3065@bombadil.infradead.org> (raw)
In-Reply-To: <20181122082602.GB2049@infradead.org>

On Thu, Nov 22, 2018 at 12:26:02AM -0800, Christoph Hellwig wrote:
> On Wed, Nov 21, 2018 at 06:35:58PM -0800, Matthew Wilcox wrote:
> > I think you should look at using the page_frag allocator here.  You can
> > use whatever GFP_DMA flags you like.
> 
> So I actually tries to use page_frag to solve the XFS unaligned kmalloc
> allocations problem, and I don't think it is the right hammer for this
> nail (or any other nail outside of networking).
> 
> The problem with the page_frag allocator is that it never reuses
> fragments returned to the page, but only only frees the page once all
> fragments are freed.  This means that if you have some long(er) term
> allocations you are effectively creating memory leaks.

Yes, your allocations from the page_frag allocator have to have similar
lifetimes.  I thought that would be ideal for XFS though; as I understood
the problem, these were per-IO allocations, and IOs to the same filesystem
tend to take roughly the same amount of time.  Sure, in an error case,
some IOs will take a long time before timing out, but it should be OK
to have pages unavailable during that time in these rare situations.
What am I missing?

  reply	other threads:[~2018-11-22 15:16 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-11  9:03 [PATCH v2 0/3] iommu/io-pgtable-arm-v7s: Use DMA32 zone for page tables Nicolas Boichat
2018-11-11  9:03 ` Nicolas Boichat
2018-11-11  9:03 ` Nicolas Boichat
2018-11-11  9:03 ` [PATCH v2 1/3] mm: slab/slub: Add check_slab_flags function to check for valid flags Nicolas Boichat
2018-11-11  9:03   ` Nicolas Boichat
2018-11-11  9:03   ` Nicolas Boichat
2018-11-11  9:03 ` [PATCH v2 2/3] mm: Add support for SLAB_CACHE_DMA32 Nicolas Boichat
2018-11-11  9:03   ` Nicolas Boichat
2018-11-11  9:03   ` Nicolas Boichat
2018-11-21 18:32   ` Christopher Lameter
2018-11-21 18:32     ` Christopher Lameter
2018-11-22  0:52     ` Nicolas Boichat
2018-11-22  0:52       ` Nicolas Boichat
2018-11-22  0:52       ` Nicolas Boichat
2018-11-11  9:03 ` [PATCH v2 3/3] iommu/io-pgtable-arm-v7s: Request DMA32 memory, and improve debugging Nicolas Boichat
2018-11-11  9:03   ` Nicolas Boichat
2018-11-11  9:03   ` Nicolas Boichat
2018-11-21 16:46   ` Will Deacon
2018-11-21 16:46     ` Will Deacon
2018-11-21 17:38     ` Christopher Lameter
2018-11-21 17:38       ` Christopher Lameter
2018-11-21 17:43       ` Robin Murphy
2018-11-21 17:43         ` Robin Murphy
2018-11-21 18:18         ` Christopher Lameter
2018-11-21 18:18           ` Christopher Lameter
2018-11-21 18:02     ` Michal Hocko
2018-11-21 18:02       ` Michal Hocko
2018-11-22  1:20       ` Nicolas Boichat
2018-11-22  1:20         ` Nicolas Boichat
2018-11-22  1:20         ` Nicolas Boichat
2018-11-23 12:15         ` Vlastimil Babka
2018-11-23 12:15           ` Vlastimil Babka
2018-11-21 18:20 ` [PATCH v2 0/3] iommu/io-pgtable-arm-v7s: Use DMA32 zone for page tables Christopher Lameter
2018-11-21 18:20   ` Christopher Lameter
2018-11-21 21:38   ` Matthew Wilcox
2018-11-21 21:38     ` Matthew Wilcox
2018-11-21 21:38     ` Matthew Wilcox
2018-11-21 22:26     ` Robin Murphy
2018-11-21 22:26       ` Robin Murphy
2018-11-21 22:26       ` Robin Murphy
2018-11-22  1:05       ` Nicolas Boichat
2018-11-22  1:05         ` Nicolas Boichat
2018-11-22  1:05         ` Nicolas Boichat
2018-11-22  2:35       ` Matthew Wilcox
2018-11-22  2:35         ` Matthew Wilcox
2018-11-22  2:35         ` Matthew Wilcox
2018-11-22  5:56         ` Nicolas Boichat
2018-11-22  5:56           ` Nicolas Boichat
2018-11-22  5:56           ` Nicolas Boichat
2018-11-22  8:26         ` Christoph Hellwig
2018-11-22  8:26           ` Christoph Hellwig
2018-11-22  8:26           ` Christoph Hellwig
2018-11-22 15:16           ` Matthew Wilcox [this message]
2018-11-22 15:16             ` Matthew Wilcox
2018-11-22 15:16             ` Matthew Wilcox
2018-11-22 15:19             ` Christoph Hellwig
2018-11-22 15:19               ` Christoph Hellwig
2018-11-22 15:19               ` Christoph Hellwig
2018-11-22  8:23       ` Christoph Hellwig
2018-11-22  8:23         ` Christoph Hellwig
2018-11-22  8:23         ` Christoph Hellwig
2018-11-23  3:04         ` Nicolas Boichat
2018-11-23  3:04           ` Nicolas Boichat
2018-11-23  3:04           ` Nicolas Boichat
2018-11-23  5:37           ` Nicolas Boichat
2018-11-23  5:37             ` Nicolas Boichat
2018-11-23  5:37             ` Nicolas Boichat
2018-11-23 12:23         ` Vlastimil Babka
2018-11-23 12:23           ` Vlastimil Babka
2018-11-23 12:23           ` Vlastimil Babka
2018-11-23 12:30           ` Michal Hocko
2018-11-23 12:30             ` Michal Hocko
2018-11-23 12:30             ` Michal Hocko
2018-11-26  8:02           ` Christoph Hellwig
2018-11-26  8:02             ` Christoph Hellwig
2018-11-26  8:02             ` Christoph Hellwig
2018-11-28  8:55             ` Nicolas Boichat
2018-11-28  8:55               ` Nicolas Boichat
2018-11-28  8:55               ` Nicolas Boichat
2018-12-04  9:37 ` Nicolas Boichat
2018-12-04  9:37   ` Nicolas Boichat
2018-12-04 14:35   ` Vlastimil Babka
2018-12-04 14:35     ` Vlastimil Babka
2018-12-04 14:35     ` Vlastimil Babka
2018-12-05  2:04     ` Nicolas Boichat
2018-12-05  2:04       ` Nicolas Boichat
2018-12-05  2:04       ` Nicolas Boichat
2018-12-05  5:51       ` Nicolas Boichat
2018-12-05  5:51         ` Nicolas Boichat
2018-12-05  5:51         ` Nicolas Boichat
2018-12-05 14:41       ` Will Deacon
2018-12-05 14:41         ` Will Deacon
2018-12-05 14:41         ` Will Deacon
2018-12-04 16:28   ` Will Deacon
2018-12-04 16:28     ` Will Deacon
2018-12-04 16:28     ` Will Deacon

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=20181122151632.GP3065@bombadil.infradead.org \
    --to=willy@infradead.org \
    --cc=Alexander.Levin@microsoft.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=drinkcat@chromium.org \
    --cc=hch@infradead.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=matthias.bgg@gmail.com \
    --cc=mgorman@techsingularity.net \
    --cc=mhocko@suse.com \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    --cc=robin.murphy@arm.com \
    --cc=rppt@linux.vnet.ibm.com \
    --cc=tfiga@google.com \
    --cc=vbabka@suse.cz \
    --cc=will.deacon@arm.com \
    --cc=yehs1@lenovo.com \
    --cc=yingjoe.chen@mediatek.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 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.