From: "Kirill A. Shutemov" <kirill@shutemov.name>
To: "Joel Fernandes (Google)" <joel@joelfernandes.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
kernel-team@android.com, minchan@google.com, hughd@google.com,
lokeshgidra@google.com, Andrew Morton <akpm@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Kate Stewart <kstewart@linuxfoundation.org>,
Philippe Ombredanne <pombredanne@nexb.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH] mm: Speed up mremap on large regions
Date: Wed, 10 Oct 2018 01:02:22 +0300 [thread overview]
Message-ID: <20181009220222.26nzajhpsbt7syvv@kshutemo-mobl1> (raw)
In-Reply-To: <20181009201400.168705-1-joel@joelfernandes.org>
On Tue, Oct 09, 2018 at 01:14:00PM -0700, Joel Fernandes (Google) wrote:
> Android needs to mremap large regions of memory during memory management
> related operations. The mremap system call can be really slow if THP is
> not enabled. The bottleneck is move_page_tables, which is copying each
> pte at a time, and can be really slow across a large map. Turning on THP
> may not be a viable option, and is not for us. This patch speeds up the
> performance for non-THP system by copying at the PMD level when possible.
>
> The speed up is three orders of magnitude. On a 1GB mremap, the mremap
> completion times drops from 160-250 millesconds to 380-400 microseconds.
>
> Before:
> Total mremap time for 1GB data: 242321014 nanoseconds.
> Total mremap time for 1GB data: 196842467 nanoseconds.
> Total mremap time for 1GB data: 167051162 nanoseconds.
>
> After:
> Total mremap time for 1GB data: 385781 nanoseconds.
> Total mremap time for 1GB data: 388959 nanoseconds.
> Total mremap time for 1GB data: 402813 nanoseconds.
>
> Incase THP is enabled, the optimization is skipped. I also flush the
> tlb every time we do this optimization since I couldn't find a way to
> determine if the low-level PTEs are dirty. It is seen that the cost of
> doing so is not much compared the improvement, on both x86-64 and arm64.
Okay. That's interesting.
It makes me wounder why do we pass virtual address to pte_alloc() (and
pte_alloc_one() inside).
If an arch has real requirement to tight a page table to a virtual address
than the optimization cannot be used as it is. Per-arch should be fine
for this case, I guess.
If nobody uses the address we should just drop the argument as a
preparation to the patch.
Anyway, I think the optimization requires some groundwork before it can be
accepted. At least some explanation why it is safe to move page table from
one spot in virtual address space to another.
--
Kirill A. Shutemov
next prev parent reply other threads:[~2018-10-09 22:02 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-09 20:14 Joel Fernandes (Google)
2018-10-09 21:38 ` Andrew Morton
2018-10-09 23:08 ` Joel Fernandes
2018-10-09 22:02 ` Kirill A. Shutemov [this message]
2018-10-09 23:04 ` Joel Fernandes
2018-10-10 10:00 ` Kirill A. Shutemov
2018-10-11 0:46 ` Joel Fernandes
2018-10-11 0:50 ` Joel Fernandes
2018-10-11 5:14 ` Kirill A. Shutemov
2018-10-11 8:11 ` Kirill A. Shutemov
2018-10-12 1:47 ` Joel Fernandes
2018-10-11 8:17 ` Kirill A. Shutemov
2018-10-11 12:02 ` Michal Hocko
2018-10-12 3:21 ` Jann Horn
2018-10-12 5:29 ` Juergen Gross
2018-10-12 5:34 ` Jann Horn
2018-10-12 7:29 ` Juergen Gross
2018-10-12 7:24 ` Paolo Bonzini
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=20181009220222.26nzajhpsbt7syvv@kshutemo-mobl1 \
--to=kirill@shutemov.name \
--cc=akpm@linux-foundation.org \
--cc=gregkh@linuxfoundation.org \
--cc=hughd@google.com \
--cc=joel@joelfernandes.org \
--cc=kernel-team@android.com \
--cc=kstewart@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lokeshgidra@google.com \
--cc=minchan@google.com \
--cc=pombredanne@nexb.com \
--cc=tglx@linutronix.de \
/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