xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Dave McCracken <dcm@mccr.org>
To: Keir Fraser <keir.fraser@eu.citrix.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>,
	Xen Developers List <xen-devel@lists.xensource.com>
Subject: Re: [PATCH] Add hypercall to mark superpages to improve performance
Date: Fri, 30 Apr 2010 14:43:23 -0500	[thread overview]
Message-ID: <201004301443.23350.dcm@mccr.org> (raw)
In-Reply-To: <C7FD9B3F.1157F%keir.fraser@eu.citrix.com>

On Wednesday 28 April 2010, Keir Fraser wrote:
> On 28/04/2010 15:33, "Dave McCracken" <dcm@mccr.org> wrote:
> > The current method of mapping hugepages/superpages in the hypervisor
> > involves updating the reference counts of every page in the superpage. 
> > This has proved to be a significant performance bottleneck.
> >
> > This patch adds a pair of MMUEXT hypercalls to mark and unmark a
> > superpage. Once the superpage is marked, the type is locked to writable
> > page until a companion unmark is done.  When that superpage is
> > subsequently mapped, only the first page needs to be reference counted.
> >
> > There are checks when the superpage is marked and unmarked to make sure
> > no individual page mappings have skewed the reference counts.
> 
> First of all, that changes the semantics of hugepages, since they can
> subsequently *only* be mapped as superpages. I'm not sure that's a
> restriction we want. 

That's not correct.  Individual pages can be freely mapped as writable pages 
after the superpage flag is set.  The only requirement is they all be at a base 
mapping state at the time of setting the mark, and be returned to that state 
when the mark is removed.

> Secondly, I don't really believe that the mark/unmark
> hypercalls are race-free -- bearing in mind, that other mappings (superpage
> or otherwise) can be constructed or deleted in parallel on other cpus.

I'll look into what can be done to prevent races.  I suspect some races we 
don't care about.

> Finally, does this really require new hypercalls? Could there not instead
>  be an always-enabled robust method for Xen to do superpage tracking?

I'm open to alternative suggestions on how to lock superpages into writable 
state once they're mapped without having to touch each individual page, even 
on the first map/unmap.  We could refcount superpage mappings in the base page 
of each superpage and then whenever a small page is mapped check its base 
page, but that would require an additional refcounted field in struct 
page_info.  I figured that would not be considered acceptable.

Dave McCracken

  reply	other threads:[~2010-04-30 19:43 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-28 14:33 [PATCH] Add hypercall to mark superpages to improve performance Dave McCracken
2010-04-28  6:58 ` Keir Fraser
2010-04-30 19:43   ` Dave McCracken [this message]
2010-04-30 21:30     ` Keir Fraser
2010-04-30 22:10       ` Keir Fraser
2010-04-30 21:34     ` Keir Fraser
2010-04-30 21:43       ` Dave McCracken
2010-04-30 22:03         ` Keir Fraser
2010-05-02 21:34           ` Dave McCracken
2010-05-02 23:54             ` Keir Fraser
2010-05-03  0:03               ` Keir Fraser
2010-05-03  1:55                 ` Dave McCracken
2010-05-03 16:09                   ` Keir Fraser
2010-05-03 16:29                     ` Keir Fraser

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=201004301443.23350.dcm@mccr.org \
    --to=dcm@mccr.org \
    --cc=jeremy@goop.org \
    --cc=keir.fraser@eu.citrix.com \
    --cc=xen-devel@lists.xensource.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).