]> xenbits.xensource.com Git - xen.git/commitdiff
xend memory ballooning: do not bother if guest will not fit in
authorKeir Fraser <keir@xensource.com>
Tue, 25 Sep 2007 08:30:00 +0000 (09:30 +0100)
committerKeir Fraser <keir@xensource.com>
Tue, 25 Sep 2007 08:30:00 +0000 (09:30 +0100)
physical memory constraints.

If users require domain memory size larger than a physical memory
size, we do not need waiting for ballooning, and should cause
xm create command error right away.

Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
tools/python/xen/xend/balloon.py

index 69d91e2859e1359ca8d8739ff3366d38fe984937..168070ea13c88b6e09d13dc48b4bb7eebc8ca8d4 100644 (file)
@@ -100,12 +100,28 @@ def free(need_mem):
 
     try:
         dom0_min_mem = xoptions.get_dom0_min_mem() * 1024
+        dom0_alloc = get_dom0_current_alloc()
 
         retries = 0
         sleep_time = SLEEP_TIME_GROWTH
+        new_alloc = 0
         last_new_alloc = None
         last_free = None
         rlimit = RETRY_LIMIT
+
+        # If unreasonable memory size is required, we give up waiting
+        # for ballooning or scrubbing, as if had retried.
+        physinfo = xc.physinfo()
+        free_mem = physinfo['free_memory']
+        scrub_mem = physinfo['scrub_memory']
+        total_mem = physinfo['total_memory']
+        if dom0_min_mem > 0:
+            max_free_mem = total_mem - dom0_min_mem
+        else:
+            max_free_mem = total_mem - dom0_alloc
+        if need_mem >= max_free_mem:
+            retries = rlimit
+
         while retries < rlimit:
             physinfo = xc.physinfo()
             free_mem = physinfo['free_memory']