[haizea-commit] r816 - branches/1.1/src/haizea/core/scheduler

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Fri Jun 25 19:28:03 CDT 2010


Author: borja
Date: 2010-06-25 19:28:03 -0500 (Fri, 25 Jun 2010)
New Revision: 816

Modified:
   branches/1.1/src/haizea/core/scheduler/slottable.py
   branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
Log:
Fix bug in availability window optimization

Modified: branches/1.1/src/haizea/core/scheduler/slottable.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/slottable.py	2010-06-25 23:06:05 UTC (rev 815)
+++ branches/1.1/src/haizea/core/scheduler/slottable.py	2010-06-26 00:28:03 UTC (rev 816)
@@ -784,8 +784,13 @@
         changepoints = set()
         res = self.get_reservations_after(after)
         if VMRR_ONLY:
-            from haizea.core.scheduler.vm_scheduler import VMResourceReservation
-            res = [r for r in res if isinstance(r, VMResourceReservation)]
+            from haizea.core.scheduler.vm_scheduler import VMResourceReservation, SuspensionResourceReservation, ResumptionResourceReservation, ShutdownResourceReservation
+            vmrrs = set([r for r in res if isinstance(r, VMResourceReservation)])
+            vmrrs = vmrrs.union([r.vmrr for r in res if isinstance(r, SuspensionResourceReservation)
+                          or isinstance(r, ResumptionResourceReservation) 
+                          or isinstance(r, ShutdownResourceReservation) 
+                          ])
+            res = list(vmrrs)
         for rr in res:
             if VMRR_ONLY:
                 start = rr.get_first_start()
@@ -1123,8 +1128,14 @@
         # Get reservations that will affect the availability window.
         rrs = self.slottable.get_reservations_after(time)
         if VMRR_ONLY:
-            from haizea.core.scheduler.vm_scheduler import VMResourceReservation
-            rrs = [(r.get_first_start(), r) for r in rrs if isinstance(r, VMResourceReservation)]
+            from haizea.core.scheduler.vm_scheduler import VMResourceReservation, SuspensionResourceReservation, ResumptionResourceReservation, ShutdownResourceReservation
+            vmrrs = set([r for r in rrs if isinstance(r, VMResourceReservation)])
+            vmrrs = vmrrs.union([r.vmrr for r in rrs if isinstance(r, SuspensionResourceReservation)
+                          or isinstance(r, ResumptionResourceReservation) 
+                          or isinstance(r, ShutdownResourceReservation) 
+                          ])
+            rrs = list(vmrrs)            
+            rrs = [(r.get_first_start(), r) for r in rrs]
             rrs.sort(key=itemgetter(0))
             rrs = [r for s, r in rrs]
         else:

Modified: branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/vm_scheduler.py	2010-06-25 23:06:05 UTC (rev 815)
+++ branches/1.1/src/haizea/core/scheduler/vm_scheduler.py	2010-06-26 00:28:03 UTC (rev 816)
@@ -1153,10 +1153,11 @@
             all_vnodes = []
             for (pnode,vnodes) in node_mappings.items():
                 num_vnodes = len(vnodes)
-                r = Capacity([constants.RES_MEM,constants.RES_DISK])
+                r = Capacity([constants.RES_CPU,constants.RES_MEM,constants.RES_DISK])
                 mem = 0
                 for vnode in vnodes:
                     mem += vmrr.lease.requested_resources[vnode].get_quantity(constants.RES_MEM)
+                r.set_quantity(constants.RES_CPU, 100) # TODO: Need to get the same quantity as pnode
                 r.set_quantity(constants.RES_MEM, mem * num_vnodes)
                 r.set_quantity(constants.RES_DISK, mem * num_vnodes)
                 suspres[pnode] = self.slottable.create_resource_tuple_from_capacity(r)          
@@ -1213,10 +1214,11 @@
             all_vnodes = []
             for (pnode,vnodes) in node_mappings.items():
                 num_vnodes = len(vnodes)
-                r = Capacity([constants.RES_MEM,constants.RES_DISK])
+                r = Capacity([constants.RES_CPU,constants.RES_MEM,constants.RES_DISK])
                 mem = 0
                 for vnode in vnodes:
                     mem += vmrr.lease.requested_resources[vnode].get_quantity(constants.RES_MEM)
+                r.set_quantity(constants.RES_CPU, 100) # TODO: Need to get the same quantity as pnode                    
                 r.set_quantity(constants.RES_MEM, mem * num_vnodes)
                 r.set_quantity(constants.RES_DISK, mem * num_vnodes)
                 resmres[pnode] = self.slottable.create_resource_tuple_from_capacity(r)



More information about the Haizea-commit mailing list