[haizea-commit] r598 - branches/TP2.0/src/haizea/core/scheduler

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Fri Jul 3 09:18:59 CDT 2009


Author: borja
Date: 2009-07-03 09:18:57 -0500 (Fri, 03 Jul 2009)
New Revision: 598

Modified:
   branches/TP2.0/src/haizea/core/scheduler/lease_scheduler.py
   branches/TP2.0/src/haizea/core/scheduler/resourcepool.py
   branches/TP2.0/src/haizea/core/scheduler/vm_scheduler.py
Log:
Preemption is working again.

Modified: branches/TP2.0/src/haizea/core/scheduler/lease_scheduler.py
===================================================================
--- branches/TP2.0/src/haizea/core/scheduler/lease_scheduler.py	2009-07-03 11:19:38 UTC (rev 597)
+++ branches/TP2.0/src/haizea/core/scheduler/lease_scheduler.py	2009-07-03 14:18:57 UTC (rev 598)
@@ -198,7 +198,7 @@
             except RescheduleLeaseException, exc:
                 # Currently, the only leases that get rescheduled are best-effort leases,
                 # once they've been suspended.
-                if isinstance(rr.lease, BestEffortLease):
+                if rr.lease.get_type() == Lease.BEST_EFFORT:
                     if lease.get_state() == Lease.STATE_SUSPENDED_PENDING:
                         # Put back in the queue, in the same order it arrived
                         self.__enqueue_in_order(lease)

Modified: branches/TP2.0/src/haizea/core/scheduler/resourcepool.py
===================================================================
--- branches/TP2.0/src/haizea/core/scheduler/resourcepool.py	2009-07-03 11:19:38 UTC (rev 597)
+++ branches/TP2.0/src/haizea/core/scheduler/resourcepool.py	2009-07-03 14:18:57 UTC (rev 598)
@@ -66,7 +66,7 @@
         # Add memory image files
         for vnode in rr.vnodes:
             pnode = rr.vmrr.nodes[vnode]
-            self.add_ramfile(pnode, lease.id, vnode, lease.requested_resources.get_by_type(constants.RES_MEM))
+            self.add_ramfile(pnode, lease.id, vnode, lease.requested_resources[vnode].get_by_type(constants.RES_MEM))
 
         # Enact suspend
         suspend_action = actions.VMEnactmentSuspendAction()

Modified: branches/TP2.0/src/haizea/core/scheduler/vm_scheduler.py
===================================================================
--- branches/TP2.0/src/haizea/core/scheduler/vm_scheduler.py	2009-07-03 11:19:38 UTC (rev 597)
+++ branches/TP2.0/src/haizea/core/scheduler/vm_scheduler.py	2009-07-03 14:18:57 UTC (rev 598)
@@ -350,7 +350,7 @@
         self.__schedule_suspension(vmrr, t)
         self.slottable.update_reservation_with_key_change(vmrr, old_start, old_end)
         for susprr in vmrr.post_rrs:
-            self.slottable.addReservation(susprr)
+            self.slottable.add_reservation(susprr)
         
     def slideback(self, lease, earliest):
         vmrr = lease.get_last_vmrr()
@@ -522,7 +522,7 @@
                 t_prev = None
                 for vnode in vnodes_in_pnode[pnode]:
                     if override == None:
-                        mem = vmrr.lease.requested_resources.get_by_type(constants.RES_MEM)
+                        mem = vmrr.lease.requested_resources[vnode].get_by_type(constants.RES_MEM)
                         op_time = self.__compute_suspend_resume_time(mem, rate)
                     else:
                         op_time = override                    
@@ -619,7 +619,9 @@
             for (pnode,vnodes) in node_mappings.items():
                 num_vnodes = len(vnodes)
                 r = ResourceTuple.create_empty()
-                mem = vmrr.lease.requested_resources.get_by_type(constants.RES_MEM)
+                mem = 0
+                for vnode in vnodes:
+                    mem += vmrr.lease.requested_resources[vnode].get_by_type(constants.RES_MEM)
                 r.set_by_type(constants.RES_MEM, mem * num_vnodes)
                 r.set_by_type(constants.RES_DISK, mem * num_vnodes)
                 suspres[pnode] = r          
@@ -638,7 +640,7 @@
         
         # If there are any post RRs, remove them
         for rr in vmrr.post_rrs:
-            self.slottable.removeReservation(rr)
+            self.slottable.remove_reservation(rr)
         vmrr.post_rrs = []
 
         for susprr in suspend_rrs:
@@ -661,7 +663,9 @@
             for (pnode,vnodes) in node_mappings.items():
                 num_vnodes = len(vnodes)
                 r = ResourceTuple.create_empty()
-                mem = vmrr.lease.requested_resources.get_by_type(constants.RES_MEM)
+                mem = 0
+                for vnode in vnodes:
+                    mem += vmrr.lease.requested_resources[vnode].get_by_type(constants.RES_MEM)
                 r.set_by_type(constants.RES_MEM, mem * num_vnodes)
                 r.set_by_type(constants.RES_DISK, mem * num_vnodes)
                 resmres[pnode] = r
@@ -688,7 +692,9 @@
     def __estimate_suspend_resume_time(self, lease, rate):
         susp_exclusion = get_config().get("suspendresume-exclusion")        
         enactment_overhead = get_config().get("enactment-overhead") 
-        mem = lease.requested_resources.get_by_type(constants.RES_MEM)
+        mem = 0
+        for vnode in lease.requested_resources:
+            mem += lease.requested_resources[vnode].get_by_type(constants.RES_MEM)
         if susp_exclusion == constants.SUSPRES_EXCLUSION_GLOBAL:
             return lease.numnodes * (self.__compute_suspend_resume_time(mem, rate) + enactment_overhead)
         elif susp_exclusion == constants.SUSPRES_EXCLUSION_LOCAL:



More information about the Haizea-commit mailing list