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/
Home Products Support Community News


[Xen-devel] [PATCH 11/21] xenpaging: optimize p2m_mem_paging_populate

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 11/21] xenpaging: optimize p2m_mem_paging_populate
From: Olaf Hering <olaf@xxxxxxxxx>
Date: Fri, 26 Nov 2010 14:49:12 +0100
Delivery-date: Fri, 26 Nov 2010 06:00:22 -0800
Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1290779355; l=1425; s=domk; d=aepfle.de; h=References:Subject:To:From:Date:X-RZG-CLASS-ID:X-RZG-AUTH; bh=966YuOeWcTX4aEIPHNxfvQO5fo0=; b=akaQAYZTxlHfvKs3tNHllGkkqyg41mdlZ+kfEqJELNlhIQjsw6XF4mAajjtHlS6Zf2B dASa5EgmH6wehYpeyycIid+hQZIrbL5Xu7fTaji6iTdAveYKfKguoaYIm/eVz3znRIw08 7xLgUJHq/Rg1JytfLnJniWroM8e1Z7K5nCg=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20101126134901.384130351@xxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: quilt/0.48-4.4
p2m_mem_paging_populate will always put another request in the ring.  To
reduce pressure on the ring, place only required requests in the ring.
If the gfn was already processed by another thread, and the current vcpu
does not need to be paused, p2m_mem_paging_resume will do nothing with
the request.  And also xenpaging will drop the request if the vcpu does
not need a wakeup.

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>

 xen/arch/x86/mm/p2m.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

--- xen-unstable.hg-4.1.22433.orig/xen/arch/x86/mm/p2m.c
+++ xen-unstable.hg-4.1.22433/xen/arch/x86/mm/p2m.c
@@ -2757,12 +2757,12 @@ void p2m_mem_paging_populate(struct p2m_
     p2m_type_t p2mt;
     struct domain *d = p2m->domain;
-    memset(&req, 0, sizeof(req));
     /* Check that there's space on the ring for this request */
     if ( mem_event_check_ring(d) )
+    memset(&req, 0, sizeof(req));
     /* Fix p2m mapping */
     /* XXX: It seems inefficient to have this here, as it's only needed
      *      in one case (ept guest accessing paging out page) */
@@ -2781,6 +2781,11 @@ void p2m_mem_paging_populate(struct p2m_
         req.flags |= MEM_EVENT_FLAG_VCPU_PAUSED;
+    else if ( p2mt != p2m_ram_paging_out && p2mt != p2m_ram_paged )
+    {
+        /* gfn is already on its way back and vcpu is not paused */
+        return;
+    }
     /* Send request to pager */
     req.gfn = gfn;

Xen-devel mailing list

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