On Thu, Oct 1, 2020 at 8:27 AM Kirill A. Shutemov kirill.shutemov@linux.intel.com wrote:
On Wed, Sep 30, 2020 at 03:42:17PM -0700, Lokesh Gidra wrote:
On Wed, Sep 30, 2020 at 3:32 PM Kirill A. Shutemov kirill.shutemov@linux.intel.com 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.
Any chance to quantify the effect of mremap() with and without HAVE_MOVE_PUD?
I doubt it's a major contributor to the GC pause. I expect you need to move tens of gigs to get sizable effect. And if your GC routinely moves tens of gigs, maybe problem somewhere else?
I'm asking for numbers, because increase in complexity comes with cost. If it doesn't provide an substantial benefit to a real workload maintaining the code forever doesn't make sense.
Lokesh on this thread would be better able to answer this. I'll let him weigh in here. Thanks, Kalesh
-- Kirill A. Shutemov
-- To unsubscribe from this group and stop receiving emails from it, send an email to kernel-team+unsubscribe@android.com.