Re: [PATCH 0/5] Speed up mremap on large regions

From: Kalesh Singh
Date: Wed Sep 30 2020 - 19:03:41 EST


On Wed, Sep 30, 2020 at 6:47 PM Joel Fernandes <joelaf@xxxxxxxxxx> wrote:
>
> On Wed, Sep 30, 2020 at 6:42 PM Lokesh Gidra <lokeshgidra@xxxxxxxxxx> wrote:
> >
> > On Wed, Sep 30, 2020 at 3:32 PM Kirill A. Shutemov
> > <kirill.shutemov@xxxxxxxxxxxxxxx> wrote:
> > >
> > > On Wed, Sep 30, 2020 at 10:21:17PM +0000, Kalesh Singh wrote:
> > > > mremap time can be optimized by moving entries at the PMD/PUD level if
> > > > the source and destination addresses are PMD/PUD-aligned and
> > > > PMD/PUD-sized. Enable moving at the PMD and PUD levels on arm64 and
> > > > x86. Other architectures where this type of move is supported and known to
> > > > be safe can also opt-in to these optimizations by enabling HAVE_MOVE_PMD
> > > > and HAVE_MOVE_PUD.
> > > >
> > > > Observed Performance Improvements for remapping a PUD-aligned 1GB-sized
> > > > region on x86 and arm64:
> > > >
> > > > - HAVE_MOVE_PMD is already enabled on x86 : N/A
> > > > - Enabling HAVE_MOVE_PUD on x86 : ~13x speed up
> > > >
> > > > - Enabling HAVE_MOVE_PMD on arm64 : ~ 8x speed up
> > > > - Enabling HAVE_MOVE_PUD on arm64 : ~19x speed up
> > > >
> > > > Altogether, HAVE_MOVE_PMD and HAVE_MOVE_PUD
> > > > give a total of ~150x speed up on arm64.
> > >
> > > Is there a *real* workload that benefit from HAVE_MOVE_PUD?
> > >
> > We have a Java garbage collector under development which requires
> > moving physical pages of multi-gigabyte heap using mremap. During this
> > move, the application threads have to be paused for correctness. It is
> > critical to keep this pause as short as possible to avoid jitters
> > during user interaction. This is where HAVE_MOVE_PUD will greatly
> > help.
>
> And that detail should totally have gone into the commit message :-/
Hi Joel,
The patch that introduces HAVE_MOVE_PUD in the series mentions the
Android garbage collection use case. I can add these details there in
the next version.
Thanks,
Kalesh
>
> Thanks,
>
> - Joel