diff mbox series

[v4,5/5] x86: mremap speedup - Enable HAVE_MOVE_PUD

Message ID 20201014005320.2233162-6-kaleshsingh@google.com
State New
Headers show
Series Speed up mremap on large regions | expand

Commit Message

Kalesh Singh Oct. 14, 2020, 12:53 a.m. UTC
HAVE_MOVE_PUD enables remapping pages at the PUD level if both the
source and destination addresses are PUD-aligned.

With HAVE_MOVE_PUD enabled it can be inferred that there is approximately
a 13x improvement in performance on x86. (See data below).

------- Test Results ---------

The following results were obtained using a 5.4 kernel, by remapping
a PUD-aligned, 1GB sized region to a PUD-aligned destination.
The results from 10 iterations of the test are given below:

Total mremap times for 1GB data on x86. All times are in nanoseconds.

Control        HAVE_MOVE_PUD

180394         15089
235728         14056
238931         25741
187330         13838
241742         14187
177925         14778
182758         14728
160872         14418
205813         15107
245722         13998

205721.5       15594    <-- Mean time in nanoseconds

A 1GB mremap completion time drops from ~205 microseconds
to ~15 microseconds on x86. (~13x speed up).

Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: H. Peter Anvin <hpa@zytor.com>
---
Changes in v4:
  - Add Kirill's Acked-by.

 arch/x86/Kconfig | 1 +
 1 file changed, 1 insertion(+)

Comments

Ingo Molnar Oct. 14, 2020, 3:53 p.m. UTC | #1
* Kalesh Singh <kaleshsingh@google.com> wrote:

> HAVE_MOVE_PUD enables remapping pages at the PUD level if both the
> source and destination addresses are PUD-aligned.
> 
> With HAVE_MOVE_PUD enabled it can be inferred that there is approximately
> a 13x improvement in performance on x86. (See data below).
> 
> ------- Test Results ---------
> 
> The following results were obtained using a 5.4 kernel, by remapping
> a PUD-aligned, 1GB sized region to a PUD-aligned destination.
> The results from 10 iterations of the test are given below:
> 
> Total mremap times for 1GB data on x86. All times are in nanoseconds.
> 
> Control        HAVE_MOVE_PUD
> 
> 180394         15089
> 235728         14056
> 238931         25741
> 187330         13838
> 241742         14187
> 177925         14778
> 182758         14728
> 160872         14418
> 205813         15107
> 245722         13998
> 
> 205721.5       15594    <-- Mean time in nanoseconds
> 
> A 1GB mremap completion time drops from ~205 microseconds
> to ~15 microseconds on x86. (~13x speed up).
> 
> Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
> Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: H. Peter Anvin <hpa@zytor.com>

Nice!

Assuming it's all correct code:

Acked-by: Ingo Molnar <mingo@kernel.org>

Thanks,

	Ingo
diff mbox series

Patch

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 835d93006bd6..e199760d54fc 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -198,6 +198,7 @@  config X86
 	select HAVE_MIXED_BREAKPOINTS_REGS
 	select HAVE_MOD_ARCH_SPECIFIC
 	select HAVE_MOVE_PMD
+	select HAVE_MOVE_PUD
 	select HAVE_NMI
 	select HAVE_OPROFILE
 	select HAVE_OPTPROBES