linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mike Kravetz <mike.kravetz@oracle.com>
To: linux-mm@kvack.org, linux-api@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Michal Hocko <mhocko@suse.com>, Aaron Lu <aaron.lu@intel.com>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	Mike Kravetz <mike.kravetz@oracle.com>
Subject: [RFC PATCH 0/1] mm/mremap: add MREMAP_MIRROR flag
Date: Thu,  6 Jul 2017 09:17:25 -0700	[thread overview]
Message-ID: <1499357846-7481-1-git-send-email-mike.kravetz@oracle.com> (raw)

The mremap system call has the ability to 'mirror' parts of an existing
mapping.  To do so, it creates a new mapping that maps the same pages as
the original mapping, just at a different virtual address.  This
functionality has existed since at least the 2.6 kernel [1].  A comment
was added to the code to help preserve this feature.

The Oracle JVM team has discovered this feature and used it while
prototyping a new garbage collection model.  This new model shows promise,
and they are considering its use in a future release.  However, since
the only mention of this functionality is a single comment in the kernel,
they are concerned about its future.

I propose the addition of a new MREMAP_MIRROR flag to explicitly request
this functionality.  The flag simply provides the same functionality as
the existing undocumented 'old_size == 0' interface.  As an alternative,
we could simply document the 'old_size == 0' interface in the man page.
In either case, man page modifications would be needed.

Future Direction

After more formally adding this to the API (either new flag or documenting
existing interface), the mremap code could be enhanced to optimize this
case.  Currently, 'mirroring' only sets up the new mapping.  It does not
create page table entries for new mapping.  This could be added as an
enhancement.

The JVM today has the option of using (static) huge pages.  The mremap
system call does not fully support huge page mappings today.  You can
use mremap to shrink the size of a huge page mapping, but it can not be
used to expand or mirror a mapping.  Such support is fairly straight
forward.

[1] https://lkml.org/lkml/2004/1/12/260

Mike Kravetz (1):
  mm/mremap: add MREMAP_MIRROR flag for existing mirroring functionality

 include/uapi/linux/mman.h       |  5 +++--
 mm/mremap.c                     | 23 ++++++++++++++++-------
 tools/include/uapi/linux/mman.h |  5 +++--
 3 files changed, 22 insertions(+), 11 deletions(-)

-- 
2.7.5

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

             reply	other threads:[~2017-07-06 16:17 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-06 16:17 Mike Kravetz [this message]
2017-07-06 16:17 ` [RFC PATCH 1/1] mm/mremap: add MREMAP_MIRROR flag for existing mirroring functionality Mike Kravetz
2017-07-07  8:45   ` Anshuman Khandual
2017-07-07 17:14     ` Mike Kravetz
2017-07-09  7:23       ` Anshuman Khandual
2017-07-07 10:23   ` Kirill A. Shutemov
2017-07-07 17:29     ` Mike Kravetz
2017-07-07 17:45       ` Kirill A. Shutemov
2017-07-07 18:09         ` Mike Kravetz
2017-07-09  7:32           ` Anshuman Khandual
2017-07-10 16:22             ` Vlastimil Babka
2017-07-10 17:22               ` Mike Kravetz
2017-07-11 12:36   ` Michal Hocko
2017-07-11 18:23     ` Mike Kravetz
2017-07-11 21:02       ` Andrea Arcangeli
2017-07-11 21:57         ` Mike Kravetz
     [not found]           ` <fcfa8403-3151-41eb-4ac4-bbac55705626-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2017-07-11 23:31             ` Andrea Arcangeli
     [not found]       ` <7f14334f-81d1-7698-d694-37278f05a78e-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2017-07-12 11:46         ` Michal Hocko
2017-07-12 16:55           ` Mike Kravetz
2017-07-13  6:16             ` Michal Hocko
2017-07-13 16:01               ` Mike Kravetz
2017-07-13 16:30                 ` Andrea Arcangeli
2017-07-13 18:11                   ` Mike Kravetz
     [not found]                     ` <28a8da13-bdc2-3f23-dee9-607377ac1cc3-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2017-07-13 20:33                       ` Andrea Arcangeli
2017-07-07  8:19 ` [RFC PATCH 0/1] mm/mremap: add MREMAP_MIRROR flag Anshuman Khandual
2017-07-07 17:04   ` Mike Kravetz
     [not found] ` <1499357846-7481-1-git-send-email-mike.kravetz-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2017-07-07 11:03   ` Anshuman Khandual
2017-07-07 17:12     ` Mike Kravetz

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=1499357846-7481-1-git-send-email-mike.kravetz@oracle.com \
    --to=mike.kravetz@oracle.com \
    --cc=aarcange@redhat.com \
    --cc=aaron.lu@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    /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;
as well as URLs for NNTP newsgroup(s).