[haizea-commit] r551 - trunk/src/haizea/resourcemanager

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Fri Dec 5 14:07:40 CST 2008


Author: borja
Date: 2008-12-05 14:07:33 -0600 (Fri, 05 Dec 2008)
New Revision: 551

Modified:
   trunk/src/haizea/resourcemanager/scheduler.py
Log:
Fixed suspend/resume override

Modified: trunk/src/haizea/resourcemanager/scheduler.py
===================================================================
--- trunk/src/haizea/resourcemanager/scheduler.py	2008-12-04 23:09:18 UTC (rev 550)
+++ trunk/src/haizea/resourcemanager/scheduler.py	2008-12-05 20:07:33 UTC (rev 551)
@@ -827,10 +827,10 @@
                 
         return start, end, canfit
     
-    def __compute_susprem_times(self, vmrr, time, direction, exclusion, rate):
+    def __compute_susprem_times(self, vmrr, time, direction, exclusion, rate, override = None):
         times = [] # (start, end, {pnode -> vnodes})
         enactment_overhead = get_config().get("enactment-overhead") 
-        
+
         if exclusion == constants.SUSPRES_EXCLUSION_GLOBAL:
             # Global exclusion (which represents, e.g., reading/writing the memory image files
             # from a global file system) meaning no two suspensions/resumptions can happen at 
@@ -840,9 +840,14 @@
             t_prev = None
                 
             for (vnode,pnode) in vmrr.nodes.items():
-                mem = vmrr.lease.requested_resources.get_by_type(constants.RES_MEM)
-                op_time = self.__compute_suspend_resume_time(mem, rate)
+                if override == None:
+                    mem = vmrr.lease.requested_resources.get_by_type(constants.RES_MEM)
+                    op_time = self.__compute_suspend_resume_time(mem, rate)
+                else:
+                    op_time = override
+
                 op_time += enactment_overhead
+                    
                 t_prev = t
                 
                 if direction == constants.DIRECTION_FORWARD:
@@ -864,8 +869,11 @@
                 t = time
                 t_prev = None
                 for vnode in vnodes_in_pnode[pnode]:
-                    mem = vmrr.lease.requested_resources.get_by_type(constants.RES_MEM)
-                    op_time = self.__compute_suspend_resume_time(mem, rate)
+                    if override == None:
+                        mem = vmrr.lease.requested_resources.get_by_type(constants.RES_MEM)
+                        op_time = self.__compute_suspend_resume_time(mem, rate)
+                    else:
+                        op_time = override                    
                     
                     t_prev = t
                     
@@ -945,13 +953,14 @@
     def __schedule_suspension(self, vmrr, suspend_by):
         from haizea.resourcemanager.rm import ResourceManager
         config = ResourceManager.get_singleton().config
-        susp_exclusion = config.get("suspendresume-exclusion")        
+        susp_exclusion = config.get("suspendresume-exclusion")
+        override = get_config().get("override-suspend-time")
         rate = config.get("suspend-rate") 
 
         if suspend_by < vmrr.start or suspend_by > vmrr.end:
             raise SchedException, "Tried to schedule a suspension by %s, which is outside the VMRR's duration (%s-%s)" % (suspend_by, vmrr.start, vmrr.end)
 
-        times = self.__compute_susprem_times(vmrr, suspend_by, constants.DIRECTION_BACKWARD, susp_exclusion, rate)
+        times = self.__compute_susprem_times(vmrr, suspend_by, constants.DIRECTION_BACKWARD, susp_exclusion, rate, override)
         suspend_rrs = []
         for (start, end, node_mappings) in times:
             suspres = {}
@@ -988,12 +997,13 @@
         from haizea.resourcemanager.rm import ResourceManager
         config = ResourceManager.get_singleton().config
         resm_exclusion = config.get("suspendresume-exclusion")        
+        override = get_config().get("override-resume-time")
         rate = config.get("resume-rate") 
 
         if resume_at < vmrr.start or resume_at > vmrr.end:
             raise SchedException, "Tried to schedule a resumption at %s, which is outside the VMRR's duration (%s-%s)" % (resume_at, vmrr.start, vmrr.end)
 
-        times = self.__compute_susprem_times(vmrr, resume_at, constants.DIRECTION_FORWARD, resm_exclusion, rate)
+        times = self.__compute_susprem_times(vmrr, resume_at, constants.DIRECTION_FORWARD, resm_exclusion, rate, override)
         resume_rrs = []
         for (start, end, node_mappings) in times:
             resmres = {}
@@ -1076,7 +1086,6 @@
             vmrr.pre_rrs.insert(0, migr_rr)
 
     def __compute_suspend_resume_time(self, mem, rate):
-        force = get_config().get("suspendresume-exclusion")
         time = float(mem) / rate
         time = round_datetime_delta(TimeDelta(seconds = time))
         return time



More information about the Haizea-commit mailing list