[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 1 of 4] Prevent low values of max_pages for domains doing sharing or paging


  • To: xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
  • Date: Wed, 15 Feb 2012 22:57:04 -0500
  • Cc: andres@xxxxxxxxxxxxxx, tim@xxxxxxx, adin@xxxxxxxxxxxxxx
  • Delivery-date: Thu, 16 Feb 2012 03:58:06 +0000
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=lagarcavilla.org; h=content-type :mime-version:content-transfer-encoding:subject:message-id :in-reply-to:references:date:from:to:cc; q=dns; s= lagarcavilla.org; b=mGCzsFVfD8qOLoAe6A00lSKYepb8WnBlCyjKddwjAMDS niy9SVFep906ZSYoHvGa6sZY0bAm6/EwazJCif2KJZY2OQ1YVVgG7GLv59oY62zH 5O5ko4D4oZHyV2E22lYp3aO3bfh787o30Tlz7cWNl4iYQyggXkgGU0QuEomjKX8=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

 xen/common/domctl.c |  8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)


Apparently, setting d->max_pages to something lower than d->tot_pages is
used as a mechanism for controling a domain's footprint. It will result
in all new page allocations failing.

This is a really bad idea with paging or sharing, as regular guest memory
accesses may need to be satisfied by allocating new memory (either to
page in or to unshare).

Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>

diff -r 62b1fe67b8d1 -r 11fd4e0a1e1a xen/common/domctl.c
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -813,8 +813,14 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
          * NB. We removed a check that new_max >= current tot_pages; this means
          * that the domain will now be allowed to "ratchet" down to new_max. In
          * the meantime, while tot > max, all new allocations are disallowed.
+         *
+         * Except that this is not a great idea for domains doing sharing or 
+         * paging, as they need to perform new allocations on the fly.
          */
-        d->max_pages = new_max;
+        if ( (new_max > d->max_pages) ||
+             !((d->mem_event->paging.ring_page != NULL) ||
+                d->arch.hvm_domain.mem_sharing_enabled) )
+            d->max_pages = new_max;
         ret = 0;
         spin_unlock(&d->page_alloc_lock);
 

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.