[haizea-commit] r801 - in branches/1.1/src/haizea/core/scheduler: . preparation_schedulers

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Tue Jun 22 09:54:50 CDT 2010


Author: borja
Date: 2010-06-22 09:54:47 -0500 (Tue, 22 Jun 2010)
New Revision: 801

Modified:
   branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
   branches/1.1/src/haizea/core/scheduler/preparation_schedulers/imagetransfer.py
   branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
Log:
Small bug fixes

Modified: branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/lease_scheduler.py	2010-06-19 20:20:51 UTC (rev 800)
+++ branches/1.1/src/haizea/core/scheduler/lease_scheduler.py	2010-06-22 14:54:47 UTC (rev 801)
@@ -468,7 +468,9 @@
         ## END NOT-FIT-FOR-PRODUCTION CODE
         for l in future_best_effort:
             # We can only reschedule leases in the following four states
-            if l.get_state() in (Lease.STATE_PREPARING, Lease.STATE_READY, Lease.STATE_SCHEDULED, Lease.STATE_SUSPENDED_SCHEDULED):
+            # TODO: Leases in PREPARING state should be rescheduleable.
+            if l.get_state() in (Lease.STATE_READY, Lease.STATE_SCHEDULED, Lease.STATE_SUSPENDED_SCHEDULED):
+            #if l.get_state() in (Lease.STATE_PREPARING, Lease.STATE_READY, Lease.STATE_SCHEDULED, Lease.STATE_SUSPENDED_SCHEDULED):
                 # For each reschedulable lease already scheduled in the
                 # future, we cancel the lease's preparation and
                 # the last scheduled VM.

Modified: branches/1.1/src/haizea/core/scheduler/preparation_schedulers/imagetransfer.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/preparation_schedulers/imagetransfer.py	2010-06-19 20:20:51 UTC (rev 800)
+++ branches/1.1/src/haizea/core/scheduler/preparation_schedulers/imagetransfer.py	2010-06-22 14:54:47 UTC (rev 801)
@@ -105,8 +105,11 @@
         bandwidth = self.resourcepool.info.get_migration_bandwidth()
         migr_rrs = []
         for m in migrations:
-            mb_to_migrate = lease.software.image_size * len(m.keys())
-            migr_time = estimate_transfer_time(mb_to_migrate, bandwidth)
+            mb_per_physnode = {}
+            for vnode, (pnode_from, pnode_to) in m.items():
+                mb_per_physnode[pnode_from] = mb_per_physnode.setdefault(pnode_from, 0) + lease.software.image_size
+            max_mb_to_migrate = max(mb_per_physnode.values())
+            migr_time = estimate_transfer_time(max_mb_to_migrate, bandwidth)
             end = start + migr_time
             res = {}
             for (origin,dest) in m.values():
@@ -130,7 +133,7 @@
             images_in_pnode = dict([(pnode,0) for pnode in set(vmrr.nodes.values())])
             for (vnode,pnode) in vmrr.nodes.items():
                 images_in_pnode[pnode] += lease.software.image_size
-            max_to_transfer = max(images_in_pnode.values())
+            max_to_transfer = max(images_in_pnode.values()) * 2 # Kludge
             bandwidth = self.resourcepool.info.get_migration_bandwidth()
             return estimate_transfer_time(max_to_transfer, bandwidth)
         elif migration == constants.MIGRATE_YES_NOTRANSFER:

Modified: branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/vm_scheduler.py	2010-06-19 20:20:51 UTC (rev 800)
+++ branches/1.1/src/haizea/core/scheduler/vm_scheduler.py	2010-06-22 14:54:47 UTC (rev 801)
@@ -134,11 +134,13 @@
         migration = get_config().get("migration")
         if migration == constants.MIGRATE_YES:
             vmrr = lease.get_last_vmrr()
-            mem_in_pnode = dict([(pnode,0) for pnode in set(vmrr.nodes.values())])
+            #mem_in_pnode = dict([(pnode,0) for pnode in set(vmrr.nodes.values())])
+            max_mem_to_transfer = 0
             for pnode in vmrr.nodes.values():
                 mem = vmrr.resources_in_pnode[pnode].get_by_type(constants.RES_MEM)
-                mem_in_pnode[pnode] += mem
-            max_mem_to_transfer = max(mem_in_pnode.values()) * 2 # Kludge
+                max_mem_to_transfer += mem
+                #mem_in_pnode[pnode] += mem
+            #max_mem_to_transfer = max(mem_in_pnode.values()) * 2 # Kludge
             bandwidth = self.resourcepool.info.get_migration_bandwidth()
             return estimate_transfer_time(max_mem_to_transfer, bandwidth)
         elif migration == constants.MIGRATE_YES_NOTRANSFER:
@@ -605,7 +607,7 @@
 
         # If the mapper couldn't find a mapping for the full duration
         # of the lease, then we need to schedule a suspension.
-        mustsuspend = (vmrr.end - vmrr.start) < remaining_duration
+        mustsuspend = (vmrr.end - vmrr.start) - shutdown_time < remaining_duration
         if mustsuspend:
             self.__schedule_suspension(vmrr, end)
         else:



More information about the Haizea-commit mailing list