xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] x86/PoD: skip eager reclaim when possible
@ 2016-05-10 13:44 Jan Beulich
  2016-05-10 13:49 ` Jan Beulich
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Jan Beulich @ 2016-05-10 13:44 UTC (permalink / raw)
  To: xen-devel; +Cc: George Dunlap

[-- Attachment #1: Type: text/plain, Size: 1029 bytes --]

Reclaiming pages is pointless when the cache can already satisfy all
outstanding PoD entries, and doing reclaims in that case can be very
harmful to performance when that memory gets used by the guest, but
only to store zeroes there.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -1027,7 +1027,6 @@ static void pod_eager_record(struct p2m_
 {
     struct pod_mrp_list *mrp = &p2m->pod.mrp;
 
-    ASSERT(mrp->list[mrp->idx] == INVALID_GFN);
     ASSERT(gfn != INVALID_GFN);
 
     mrp->list[mrp->idx++] =
@@ -1075,7 +1074,9 @@ p2m_pod_demand_populate(struct p2m_domai
         return 0;
     }
 
-    pod_eager_reclaim(p2m);
+    /* Only reclaim if we're in actual need of more cache. */
+    if ( p2m->pod.entry_count > p2m->pod.count )
+        pod_eager_reclaim(p2m);
 
     /* Only sweep if we're actually out of memory.  Doing anything else
      * causes unnecessary time and fragmentation of superpages in the p2m. */




[-- Attachment #2: x86-PoD-avoid-eager-reclaim.patch --]
[-- Type: text/plain, Size: 1068 bytes --]

x86/PoD: skip eager reclaim when possible

Reclaiming pages is pointless when the cache can already satisfy all
outstanding PoD entries, and doing reclaims in that case can be very
harmful to performance when that memory gets used by the guest, but
only to store zeroes there.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -1027,7 +1027,6 @@ static void pod_eager_record(struct p2m_
 {
     struct pod_mrp_list *mrp = &p2m->pod.mrp;
 
-    ASSERT(mrp->list[mrp->idx] == INVALID_GFN);
     ASSERT(gfn != INVALID_GFN);
 
     mrp->list[mrp->idx++] =
@@ -1075,7 +1074,9 @@ p2m_pod_demand_populate(struct p2m_domai
         return 0;
     }
 
-    pod_eager_reclaim(p2m);
+    /* Only reclaim if we're in actual need of more cache. */
+    if ( p2m->pod.entry_count > p2m->pod.count )
+        pod_eager_reclaim(p2m);
 
     /* Only sweep if we're actually out of memory.  Doing anything else
      * causes unnecessary time and fragmentation of superpages in the p2m. */

[-- Attachment #3: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-05-12 15:20 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-10 13:44 [PATCH] x86/PoD: skip eager reclaim when possible Jan Beulich
2016-05-10 13:49 ` Jan Beulich
2016-05-10 14:18   ` Wei Liu
2016-05-10 13:50 ` Andrew Cooper
2016-05-10 14:27   ` Jan Beulich
2016-05-12 14:40 ` George Dunlap
2016-05-12 15:08   ` Jan Beulich
2016-05-12 15:19     ` George Dunlap

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).