WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] writable pagetables scalability issue

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] writable pagetables scalability issue
From: Rik van Riel <riel@xxxxxxxxxx>
Date: Fri, 7 Dec 2007 12:06:48 -0500
Delivery-date: Fri, 07 Dec 2007 09:07:33 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Red Hat, Inc.
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Currently mprotect (and other operations) on paravirt domains have
very bad scalability.  This is no surprise, since all writable
pagetable operations happen under the domain big lock, allowing
only one VCPU at a time to fill in or change PTEs.

This seems an unnecessary restriction, since all the writable
pagetable code does most of the time is atomic updates to page
table entries that are already in place.

I do not understand what we need to protect against, except of
course page table pages changing status (new page table pages
being added, old page table pages becoming writable again) while
handling a writable pagetable fault.

Does anybody see issues with putting all of the writable pagetable 
operations under a read-write lock, with the code paths that change
page table entries (mostly the fault handling) taking the lock in
read mode, and the code paths that change the status of pages taking
the lock in write mode?

That way we can guarantee that the writable page table pages do not
change status while handling a fault (and we get concurrency), blocking
out the write fault handling only while new page table pages are being
created or destroyed.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>