From: Emre Can Sezer <ecsezer@ncsu.edu>
To: Xen Devel <xen-devel@lists.xensource.com>
Subject: Re: Two shadow page tables for HVM
Date: Mon, 29 Dec 2008 11:17:40 -0500 [thread overview]
Message-ID: <4958F824.10400@ncsu.edu> (raw)
In-Reply-To: <20081223161006.GB28336@york.uk.xensource.com>
Tim Deegan wrote:
> Hi,
>
> At 12:05 -0500 on 22 Dec (1229947511), Emre Can Sezer wrote:
>
>> Wouldn't this mean that the two page tables are NOT synchronized? When we
>> switch paging modes, wouldn't we have to rebuild the entire shadow page
>> tables from guest?
>>
>
> We maintain shadow pagetables for pagetables that are not in use, and
> even for modes that aren't in use. We only get rid of shadows when we're
> running out of memory, or when the guest uses the page for sonmething else.
> If we didn't do that our context-switch costs would be enormous.
>
I've been trying to understand the shadow code for a while now and I
have one last question about this approach. In my case, the guest OS
will have only a single set of page tables and in return I will have two
sets of shadows for them. I understand that once you change your shadow
mode, the shadow pages are still kept and the mapping is stored in the
shadow cache. However, if a page table is updated in one mode, how does
the other mode know of this change? As far as I understand, the same gfn
will be inserted to the hash twice with two types. However, does Xen
determine that the guest page's contents have changed? That change must
somehow propagate to the second shadow mode's page tables with the
appropriate permission changes. How is this being done? How does Xen
determine that the page contents have changed?
Thanks for all the input,
John
>
>> The reason I was thinking of synchronized page tables is because I will
>> have to switch between them quite often - several times during a system
>> call. So I want to minimize the tlb flushes and make the switch as fast as
>> possible. With synced PT's, my plan was to set the guest CR3 to point to
>> the new top level page table and only flush the kernel pages.
>>
>
> That might be just as expensive -- ISTR Keir measured the cost of invlpg
> vs TLB flush a while ago and found that invlpg'ing more than one or two
> PTEs was slower than just flushing the whole TLB.
>
>
>> When considering the performance penalties of flushing the kernel page
>> tables from the TLB, how significant is traversing all the shadow page
>> tables for the guest kernel and updating their permissions? If there isn't
>> an order of magnitude of difference, it might be reasonable to take the
>> short cut in implementation.
>>
>
> I don't have any measurements for doing walks of the whole set of
> shadows, but in general we've found it's worth doing almost any trick
> that will avoid that.
>
> Cheers,
>
> Tim.
>
>
next prev parent reply other threads:[~2008-12-29 16:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-17 23:06 Two shadow page tables for HVM Emre Can Sezer
2008-12-18 3:50 ` Sina Bahram
2008-12-18 11:32 ` Tim Deegan
2008-12-22 18:28 ` Emre Can Sezer
2008-12-23 12:03 ` Gianluca Guida
[not found] ` <494FC8C7.8030508@ncsu.edu>
[not found] ` <20081223161006.GB28336@york.uk.xensource.com>
2008-12-29 16:17 ` Emre Can Sezer [this message]
[not found] ` <4958F7E0.8050207@ncsu.edu>
[not found] ` <20081229165415.GB5734@york.uk.xensource.com>
2009-01-09 22:08 ` Emre Can Sezer
2009-01-12 9:46 ` Tim Deegan
2009-01-27 0:39 ` Emre Can Sezer
2009-01-27 10:34 ` Tim Deegan
2009-01-27 19:07 ` Emre Can Sezer
2009-01-28 9:25 ` Tim Deegan
2009-01-30 16:15 ` Emre Can Sezer
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=4958F824.10400@ncsu.edu \
--to=ecsezer@ncsu.edu \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.