linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Weiny, Ira" <ira.weiny@intel.com>
To: "Williams, Dan J" <dan.j.williams@intel.com>,
	Jason Gunthorpe <jgg@ziepe.ca>
Cc: John Hubbard <jhubbard@nvidia.com>,
	linux-rdma <linux-rdma@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux MM <linux-mm@kvack.org>,
	"Daniel Borkmann" <daniel@iogearbox.net>,
	Davidlohr Bueso <dave@stgolabs.net>,
	Netdev <netdev@vger.kernel.org>,
	"Marciniszyn, Mike" <mike.marciniszyn@intel.com>,
	"Dalessandro, Dennis" <dennis.dalessandro@intel.com>,
	Doug Ledford <dledford@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Subject: RE: [PATCH 2/3] mm/gup: Introduce get_user_pages_fast_longterm()
Date: Mon, 11 Feb 2019 23:04:48 +0000	[thread overview]
Message-ID: <2807E5FD2F6FDA4886F6618EAC48510E79BCF467@CRSMSX101.amr.corp.intel.com> (raw)
In-Reply-To: <CAPcyv4htDHmH7PVm_=HOWwRKtpcKTPSjrHPLqhwp2vhBUWL4-w@mail.gmail.com>

> 
> On Mon, Feb 11, 2019 at 2:07 PM Jason Gunthorpe <jgg@ziepe.ca> wrote:
> >
> > On Mon, Feb 11, 2019 at 01:52:38PM -0800, Ira Weiny wrote:
> > > On Mon, Feb 11, 2019 at 01:39:12PM -0800, John Hubbard wrote:
> > > > On 2/11/19 1:26 PM, Ira Weiny wrote:
> > > > > On Mon, Feb 11, 2019 at 01:13:56PM -0800, John Hubbard wrote:
> > > > >> On 2/11/19 12:39 PM, Jason Gunthorpe wrote:
> > > > >>> On Mon, Feb 11, 2019 at 12:16:42PM -0800, ira.weiny@intel.com
> wrote:
> > > > >>>> From: Ira Weiny <ira.weiny@intel.com>
> > > > >> [...]
> > > > >> It seems to me that the longterm vs. short-term is of questionable
> value.
> > > > >
> > > > > This is exactly why I did not post this before.  I've been
> > > > > waiting our other discussions on how GUP pins are going to be
> > > > > handled to play out.  But with the netdev thread today[1] it
> > > > > seems like we need to make sure we have a "safe" fast variant
> > > > > for a while.  Introducing FOLL_LONGTERM seemed like the cleanest
> > > > > way to do that even if we will not need the distinction in the
> > > > > future...  :-(
> > > >
> > > > Yes, I agree. Below...
> > > >
> > > > > [...]
> > > > > This is also why I did not change the get_user_pages_longterm
> > > > > because we could be ripping this all out by the end of the
> > > > > year...  (I hope. :-)
> > > > >
> > > > > So while this does "pollute" the GUP family of calls I'm hoping
> > > > > it is not forever.
> > > > >
> > > > > Ira
> > > > >
> > > > > [1] https://lkml.org/lkml/2019/2/11/1789
> > > > >
> > > >
> > > > Yes, and to be clear, I think your patchset here is fine. It is
> > > > easy to find the FOLL_LONGTERM callers if and when we want to
> > > > change anything. I just think also it's appopriate to go a bit further, and
> use FOLL_LONGTERM all by itself.
> > > >
> > > > That's because in either design outcome, it's better that way:
> > > >
> > > > is just right. The gup API already has _fast and non-fast
> > > > variants, and once you get past a couple, you end up with a
> > > > multiplication of names that really work better as flags. We're there.
> > > >
> > > > the _longterm API variants.
> > >
> > > Fair enough.   But to do that correctly I think we will need to convert
> > > get_user_pages_fast() to use flags as well.  I have a version of
> > > this series which includes a patch does this, but the patch touched
> > > a lot of subsystems and a couple of different architectures...[1]
> >
> > I think this should be done anyhow, it is trouble the two basically
> > identical interfaces have different signatures. This already caused a
> > bug in vfio..
> >
> > I also wonder if someone should think about making fast into a flag
> > too..
> >
> > But I'm not sure when fast should be used vs when it shouldn't :(
> 
> Effectively fast should always be used just in case the user cares about
> performance. It's just that it may fail and need to fall back to requiring the
> vma.
> 
> Personally I thought RDMA memory registration is a one-time / upfront slow
> path so that non-fast-GUP is tolerable.
> 
> The workloads that *need* it are O_DIRECT users that can't tolerate a vma
> lookup on every I/O.

There are some users who need to [un]register memory more often.  While not in the strict fast path these users would like the registrations to occur as fast as possible.  I don't personally have the results but our OPA team did do performance tests on the GUP vs GUP fast and for the hfi1 case fast was better.  I don't have any reason to believe that regular RDMA users would not also benefit.

Ira


  reply	other threads:[~2019-02-11 23:04 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-11 20:16 [PATCH 0/3] Add gup fast + longterm and use it in HFI1 ira.weiny
2019-02-11 20:16 ` [PATCH 1/3] mm/gup: Change "write" parameter to flags ira.weiny
2019-02-11 20:16 ` [PATCH 2/3] mm/gup: Introduce get_user_pages_fast_longterm() ira.weiny
2019-02-11 20:39   ` Jason Gunthorpe
2019-02-11 21:13     ` John Hubbard
2019-02-11 21:26       ` Ira Weiny
2019-02-11 21:39         ` John Hubbard
2019-02-11 21:45           ` Dan Williams
2019-02-11 21:52           ` Ira Weiny
2019-02-11 22:01             ` John Hubbard
2019-02-11 22:06             ` Jason Gunthorpe
2019-02-11 22:55               ` Dan Williams
2019-02-11 23:04                 ` Weiny, Ira [this message]
2019-02-11 23:25                 ` Jason Gunthorpe
2019-02-12  0:08                   ` Ira Weiny
2019-02-11 20:16 ` [PATCH 3/3] IB/HFI1: Use new get_user_pages_fast_longterm() ira.weiny
2019-02-11 20:34 ` [PATCH 0/3] Add gup fast + longterm and use it in HFI1 Davidlohr Bueso
2019-02-11 20:47   ` Jason Gunthorpe
2019-02-11 21:42     ` Ira Weiny
2019-02-11 22:22       ` Jason Gunthorpe
2019-02-11 22:40         ` Weiny, Ira
2019-02-11 22:50           ` Jason Gunthorpe
2019-02-11 21:29   ` Ira Weiny
2019-02-11 20:40 ` Jason Gunthorpe
2019-02-11 21:14   ` Weiny, Ira
2019-02-11 22:23     ` Jason Gunthorpe
2019-02-13 23:04 ` [PATCH V2 0/7] Add FOLL_LONGTERM to GUP fast and use it ira.weiny
2019-02-13 23:04   ` [PATCH V2 1/7] mm/gup: Replace get_user_pages_longterm() with FOLL_LONGTERM ira.weiny
2019-02-13 23:04   ` [PATCH V2 2/7] mm/gup: Change write parameter to flags in fast walk ira.weiny
2019-02-13 23:04   ` [PATCH V2 3/7] mm/gup: Change GUP fast to use flags rather than a write 'bool' ira.weiny
2019-02-13 23:11     ` Jason Gunthorpe
2019-02-13 23:52       ` Ira Weiny
2019-02-13 23:04   ` [PATCH V2 4/7] mm/gup: Add FOLL_LONGTERM capability to GUP fast ira.weiny
2019-02-13 23:04   ` [PATCH V2 5/7] IB/hfi1: Use the new FOLL_LONGTERM flag to get_user_pages_fast() ira.weiny
2019-02-13 23:04   ` [PATCH V2 6/7] IB/qib: " ira.weiny
2019-02-13 23:04   ` [PATCH V2 7/7] IB/mthca: " ira.weiny

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=2807E5FD2F6FDA4886F6618EAC48510E79BCF467@CRSMSX101.amr.corp.intel.com \
    --to=ira.weiny@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=dan.j.williams@intel.com \
    --cc=daniel@iogearbox.net \
    --cc=dave@stgolabs.net \
    --cc=dennis.dalessandro@intel.com \
    --cc=dledford@redhat.com \
    --cc=jgg@ziepe.ca \
    --cc=jhubbard@nvidia.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=mike.marciniszyn@intel.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox