linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Cc: peterz@infradead.org, akpm@linux-foundation.org,
	kirill@shutemov.name, ak@linux.intel.com, mhocko@kernel.org,
	dave@stgolabs.net, jack@suse.cz,
	Matthew Wilcox <willy@infradead.org>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	haren@linux.vnet.ibm.com, khandual@linux.vnet.ibm.com,
	npiggin@gmail.com, bsingharora@gmail.com
Subject: Re: [RFC v4 00/20] Speculative page faults
Date: Fri, 9 Jun 2017 11:55:58 -0700	[thread overview]
Message-ID: <20170609185558.GK3721@linux.vnet.ibm.com> (raw)
In-Reply-To: <1497018069-17790-1-git-send-email-ldufour@linux.vnet.ibm.com>

On Fri, Jun 09, 2017 at 04:20:49PM +0200, Laurent Dufour wrote:
> This is a port on kernel 4.12 of the work done by Peter Zijlstra to
> handle page fault without holding the mm semaphore.
> 
> http://linux-kernel.2935.n7.nabble.com/RFC-PATCH-0-6-Another-go-at-speculative-page-faults-tt965642.html#none
> 
> Compared to the Peter initial work, this series introduce a try spin
> lock when dealing with speculative page fault. This is required to
> avoid dead lock when handling a page fault while a TLB invalidate is
> requested by an other CPU holding the PTE. Another change due to a
> lock dependency issue with mapping->i_mmap_rwsem.
> 
> This series also protect changes to VMA's data which are read or
> change by the page fault handler. The protections is done through the
> VMA's sequence number.
> 
> This series is functional on x86 and PowerPC.
> 
> It's building on top of v4.12-rc4 and relies on the change done by
> Paul McKenney to the SRCU code allowing better performance by
> maintaining per-CPU callback lists:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=da915ad5cf25b5f5d358dd3670c3378d8ae8c03e
> 
> Tests have been made using a large commercial in-memory database on a
> PowerPC system with 752 CPUs. The results are very encouraging since
> the loading of the 2TB database was faster by 20% with the speculative
> page fault.
> 
> Since tests are encouraging and running test suite didn't raise any
> issue, I'd like this request for comment series to move to a patch
> series soon. So please feel free to comment.

For whatever it is worth, this series passes moderate rcutorture testing,
30 minutes on each of sixteen scenarios.  Not that rcutorture is set up
to find mmap_sem issues, but it does place some stress on the kernel as
a whole.

Tested-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

							Thanx, Paul

> Changes since V3:
>  - support for the 5-level paging.
>  - abort speculative path before entering userfault code
>  - support for PowerPC architecture
>  - reorder the patch to fix build test errors.
> 
> Laurent Dufour (14):
>   mm: Introduce pte_spinlock
>   mm/spf: Try spin lock in speculative path
>   mm/spf: Fix fe.sequence init in __handle_mm_fault()
>   mm/spf: don't set fault entry's fields if locking failed
>   mm/spf; fix lock dependency against mapping->i_mmap_rwsem
>   mm/spf: Protect changes to vm_flags
>   mm/spf Protect vm_policy's changes against speculative pf
>   mm/spf: Add check on the VMA's flags
>   mm/spf: protect madvise vs speculative pf
>   mm/spf: protect mremap() against speculative pf
>   mm/spf: Don't call user fault callback in the speculative path
>   x86/mm: Update the handle_speculative_fault's path
>   powerpc/mm: Add speculative page fault
>   mm/spf: Clear FAULT_FLAG_KILLABLE in the speculative path
> 
> Peter Zijlstra (6):
>   mm: Dont assume page-table invariance during faults
>   mm: Prepare for FAULT_FLAG_SPECULATIVE
>   mm: VMA sequence count
>   mm: RCU free VMAs
>   mm: Provide speculative fault infrastructure
>   x86/mm: Add speculative pagefault handling
> 
>  arch/powerpc/mm/fault.c  |  25 +++-
>  arch/x86/mm/fault.c      |  14 +++
>  fs/proc/task_mmu.c       |   2 +
>  include/linux/mm.h       |   4 +
>  include/linux/mm_types.h |   3 +
>  kernel/fork.c            |   1 +
>  mm/init-mm.c             |   1 +
>  mm/internal.h            |  20 ++++
>  mm/madvise.c             |   4 +
>  mm/memory.c              | 291 +++++++++++++++++++++++++++++++++++++++--------
>  mm/mempolicy.c           |  10 +-
>  mm/mlock.c               |   9 +-
>  mm/mmap.c                | 123 +++++++++++++++-----
>  mm/mprotect.c            |   2 +
>  mm/mremap.c              |   7 ++
>  15 files changed, 435 insertions(+), 81 deletions(-)
> 
> -- 
> 2.7.4
> 

--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2017-06-09 18:56 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-09 14:20 [RFC v4 00/20] Speculative page faults Laurent Dufour
2017-06-09 14:20 ` [RFC v4 01/20] mm: Dont assume page-table invariance during faults Laurent Dufour
2017-06-09 14:20 ` [RFC v4 02/20] mm: Prepare for FAULT_FLAG_SPECULATIVE Laurent Dufour
2017-06-09 14:20 ` [RFC v4 03/20] mm: Introduce pte_spinlock Laurent Dufour
2017-06-09 14:20 ` [RFC v4 04/20] mm: VMA sequence count Laurent Dufour
2017-06-09 14:20 ` [RFC v4 05/20] mm: RCU free VMAs Laurent Dufour
2017-06-09 14:20 ` [RFC v4 06/20] mm: Provide speculative fault infrastructure Laurent Dufour
2017-06-09 14:20 ` [RFC v4 07/20] mm/spf: Try spin lock in speculative path Laurent Dufour
2017-06-09 14:20 ` [RFC v4 08/20] mm/spf: Fix fe.sequence init in __handle_mm_fault() Laurent Dufour
2017-06-09 14:20 ` [RFC v4 09/20] mm/spf: don't set fault entry's fields if locking failed Laurent Dufour
2017-06-09 14:20 ` [RFC v4 10/20] mm/spf; fix lock dependency against mapping->i_mmap_rwsem Laurent Dufour
2017-06-09 14:21 ` [RFC v4 11/20] mm/spf: Protect changes to vm_flags Laurent Dufour
2017-06-09 14:21 ` [RFC v4 12/20] mm/spf Protect vm_policy's changes against speculative pf Laurent Dufour
2017-06-09 14:21 ` [RFC v4 13/20] mm/spf: Add check on the VMA's flags Laurent Dufour
2017-06-09 14:21 ` [RFC v4 14/20] mm/spf: protect madvise vs speculative pf Laurent Dufour
2017-06-09 14:21 ` [RFC v4 15/20] mm/spf: protect mremap() against " Laurent Dufour
2017-06-09 14:21 ` [RFC v4 16/20] mm/spf: Don't call user fault callback in the speculative path Laurent Dufour
2017-06-09 14:21 ` [RFC v4 17/20] x86/mm: Add speculative pagefault handling Laurent Dufour
2017-06-09 14:21 ` [RFC v4 18/20] x86/mm: Update the handle_speculative_fault's path Laurent Dufour
2017-06-09 14:21 ` [RFC v4 19/20] powerpc/mm: Add speculative page fault Laurent Dufour
2017-06-09 14:21 ` [RFC v4 20/20] mm/spf: Clear FAULT_FLAG_KILLABLE in the speculative path Laurent Dufour
2017-06-09 15:01 ` [RFC v4 00/20] Speculative page faults Michal Hocko
2017-06-09 15:25   ` Laurent Dufour
2017-06-09 16:35     ` Michal Hocko
2017-06-09 16:59       ` Tim Chen
2017-06-13 10:19         ` Laurent Dufour
2017-06-13  9:58       ` Laurent Dufour
2017-06-09 18:55 ` Paul E. McKenney [this message]
2017-06-12 10:20 ` Jan Kara
2017-06-13 10:24   ` Laurent Dufour

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=20170609185558.GK3721@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=bsingharora@gmail.com \
    --cc=dave@stgolabs.net \
    --cc=haren@linux.vnet.ibm.com \
    --cc=jack@suse.cz \
    --cc=khandual@linux.vnet.ibm.com \
    --cc=kirill@shutemov.name \
    --cc=ldufour@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=npiggin@gmail.com \
    --cc=peterz@infradead.org \
    --cc=willy@infradead.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;
as well as URLs for NNTP newsgroup(s).