All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Deacon <will@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Jan Kara <jack@suse.cz>, Minchan Kim <minchan@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	Vinayak Menon <vinmenon@codeaurora.org>,
	Hugh Dickins <hughd@google.com>,
	Android Kernel Team <kernel-team@android.com>
Subject: Re: [PATCH v2 0/3] Create 'old' ptes for faultaround mappings on arm64 with hardware access flag
Date: Mon, 11 Jan 2021 14:01:49 +0000	[thread overview]
Message-ID: <20210111140149.GB7642@willie-the-truck> (raw)
In-Reply-To: <CAHk-=wh=6=7qYKL0RLbzg4vKnT0v_c66n8RYS-CvmUxnO9MxPw@mail.gmail.com>

On Fri, Jan 08, 2021 at 11:42:39AM -0800, Linus Torvalds wrote:
> On Fri, Jan 8, 2021 at 11:34 AM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > Yeah, I think that's a side effect of "now the code really makes a lot
> > more sense". Your subsequent patches 2-3 certainly are much simpler
> > now
> 
> On that note - they could be simpler still if this was just done
> entirely unconditionally..
> 
> I'm taking your word for "it makes sense", but when you say
> 
>   On CPUs with hardware AF/DBM, initialising prefaulted PTEs as 'old'
>   improves vmscan behaviour and does not appear to introduce any overhead.
> 
> in the description for patch 3, it makes me wonder how noticeable the
> overhead is on the hardware that _does_ take a fault on old pte's..
> 
> IOW, it would be lovely to see numbers if you have any like that..

[Vinayak -- please chime in if I miss anything here, as you've posted these
 numbers before]

The initial posting in 2016 had some numbers based on a 3.18 kernel, which
didn't have support for hardware AF/DBM:

  https://lore.kernel.org/lkml/fdc23a2a-b42a-f0af-d403-41ea4e755084@codeaurora.org

  (note that "Kirill's-fix" in the last column was a quick hack and didn't
   make the faulting pte young)

So yes, for the cases we care about in Android (where the vmscan behaviour
seems to be the important thing), then this patch makes sense for
non-hardware AF/DBM CPUs too. In either case, we see ~80% reduction in
direct reclaim time according to mmtests [1] and double-digit percentage
reductions in app launch latency (some of this is mentioned in the link
above). The actual fault cost isn't especially relevant.

*However...*

For machines with lots of memory, the increased fault cost when hardware
AF/DBM is not available may well be measurable, and I suspect it would
hurt unixbench (which was the reason behind reverting this on x86 [2],
although I must admit that the diagnosis wasn't particularly satisfactory
[3]). We could run those numbers on arm64 but, due to the wide diversity of
micro-architectures we have to deal with, I would like to keep our options
open to detecting this dynamically anyway, just in case somebody builds a
CPU which struggles in this area.

Cheers,

Will

[1] https://github.com/gormanm/mmtests
[2] https://lore.kernel.org/lkml/20160613125248.GA30109@black.fi.intel.com/
[3] https://lore.kernel.org/lkml/20160616151049.GM6836@dhcp22.suse.cz/

WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jan Kara <jack@suse.cz>, Minchan Kim <minchan@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Hugh Dickins <hughd@google.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	Vinayak Menon <vinmenon@codeaurora.org>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Android Kernel Team <kernel-team@android.com>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v2 0/3] Create 'old' ptes for faultaround mappings on arm64 with hardware access flag
Date: Mon, 11 Jan 2021 14:01:49 +0000	[thread overview]
Message-ID: <20210111140149.GB7642@willie-the-truck> (raw)
In-Reply-To: <CAHk-=wh=6=7qYKL0RLbzg4vKnT0v_c66n8RYS-CvmUxnO9MxPw@mail.gmail.com>

On Fri, Jan 08, 2021 at 11:42:39AM -0800, Linus Torvalds wrote:
> On Fri, Jan 8, 2021 at 11:34 AM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > Yeah, I think that's a side effect of "now the code really makes a lot
> > more sense". Your subsequent patches 2-3 certainly are much simpler
> > now
> 
> On that note - they could be simpler still if this was just done
> entirely unconditionally..
> 
> I'm taking your word for "it makes sense", but when you say
> 
>   On CPUs with hardware AF/DBM, initialising prefaulted PTEs as 'old'
>   improves vmscan behaviour and does not appear to introduce any overhead.
> 
> in the description for patch 3, it makes me wonder how noticeable the
> overhead is on the hardware that _does_ take a fault on old pte's..
> 
> IOW, it would be lovely to see numbers if you have any like that..

[Vinayak -- please chime in if I miss anything here, as you've posted these
 numbers before]

The initial posting in 2016 had some numbers based on a 3.18 kernel, which
didn't have support for hardware AF/DBM:

  https://lore.kernel.org/lkml/fdc23a2a-b42a-f0af-d403-41ea4e755084@codeaurora.org

  (note that "Kirill's-fix" in the last column was a quick hack and didn't
   make the faulting pte young)

So yes, for the cases we care about in Android (where the vmscan behaviour
seems to be the important thing), then this patch makes sense for
non-hardware AF/DBM CPUs too. In either case, we see ~80% reduction in
direct reclaim time according to mmtests [1] and double-digit percentage
reductions in app launch latency (some of this is mentioned in the link
above). The actual fault cost isn't especially relevant.

*However...*

For machines with lots of memory, the increased fault cost when hardware
AF/DBM is not available may well be measurable, and I suspect it would
hurt unixbench (which was the reason behind reverting this on x86 [2],
although I must admit that the diagnosis wasn't particularly satisfactory
[3]). We could run those numbers on arm64 but, due to the wide diversity of
micro-architectures we have to deal with, I would like to keep our options
open to detecting this dynamically anyway, just in case somebody builds a
CPU which struggles in this area.

Cheers,

Will

[1] https://github.com/gormanm/mmtests
[2] https://lore.kernel.org/lkml/20160613125248.GA30109@black.fi.intel.com/
[3] https://lore.kernel.org/lkml/20160616151049.GM6836@dhcp22.suse.cz/

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-01-11 14:03 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-08 17:15 [PATCH v2 0/3] Create 'old' ptes for faultaround mappings on arm64 with hardware access flag Will Deacon
2021-01-08 17:15 ` Will Deacon
2021-01-08 17:15 ` [PATCH v2 1/3] mm: Cleanup faultaround and finish_fault() codepaths Will Deacon
2021-01-08 17:15   ` Will Deacon
2021-01-11 14:26   ` Kirill A. Shutemov
2021-01-11 14:26     ` Kirill A. Shutemov
2021-01-11 14:27     ` Will Deacon
2021-01-11 14:27       ` Will Deacon
2021-01-08 17:15 ` [PATCH v2 2/3] mm: Allow architectures to request 'old' entries when prefaulting Will Deacon
2021-01-08 17:15   ` Will Deacon
2021-01-11 14:25   ` Kirill A. Shutemov
2021-01-11 14:25     ` Kirill A. Shutemov
2021-01-11 14:37     ` Will Deacon
2021-01-11 14:37       ` Will Deacon
2021-01-11 14:47       ` Kirill A. Shutemov
2021-01-11 14:47         ` Kirill A. Shutemov
2021-01-08 17:15 ` [PATCH v2 3/3] arm64: mm: Implement arch_wants_old_prefaulted_pte() Will Deacon
2021-01-08 17:15   ` Will Deacon
2021-01-08 19:34 ` [PATCH v2 0/3] Create 'old' ptes for faultaround mappings on arm64 with hardware access flag Linus Torvalds
2021-01-08 19:34   ` Linus Torvalds
2021-01-08 19:34   ` Linus Torvalds
2021-01-08 19:42   ` Linus Torvalds
2021-01-08 19:42     ` Linus Torvalds
2021-01-08 19:42     ` Linus Torvalds
2021-01-11 14:01     ` Will Deacon [this message]
2021-01-11 14:01       ` Will Deacon
2021-01-11 13:30   ` Will Deacon
2021-01-11 13:30     ` Will Deacon
2021-01-11 21:03     ` Hugh Dickins
2021-01-11 21:03       ` Hugh Dickins
2021-01-11 21:03       ` Hugh Dickins
2021-01-12 21:46       ` Will Deacon
2021-01-12 21:46         ` Will Deacon
2021-01-11 14:24   ` Kirill A. Shutemov
2021-01-11 14:24     ` Kirill A. Shutemov
2021-01-11 19:25     ` Linus Torvalds
2021-01-11 19:25       ` Linus Torvalds
2021-01-11 19:25       ` Linus Torvalds
2021-01-12 21:47       ` Will Deacon
2021-01-12 21:47         ` Will Deacon
2021-01-12 21:55         ` Linus Torvalds
2021-01-12 21:55           ` Linus Torvalds
2021-01-12 21:55           ` Linus Torvalds

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=20210111140149.GB7642@willie-the-truck \
    --to=will@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=catalin.marinas@arm.com \
    --cc=hughd@google.com \
    --cc=jack@suse.cz \
    --cc=kernel-team@android.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=vinmenon@codeaurora.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.