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

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Thu Nov 6 10:49:10 CST 2008


Author: borja
Date: 2008-11-06 10:49:05 -0600 (Thu, 06 Nov 2008)
New Revision: 538

Modified:
   trunk/src/haizea/resourcemanager/datastruct.py
   trunk/src/haizea/resourcemanager/scheduler.py
Log:
Changed VM RR data structure so that instead of including information on suspend/resume VMs, they include information on pre/post RRs (this will allow us to include other types of post RRs, such as shutdowns and live migrations)

Modified: trunk/src/haizea/resourcemanager/datastruct.py
===================================================================
--- trunk/src/haizea/resourcemanager/datastruct.py	2008-10-20 16:50:12 UTC (rev 537)
+++ trunk/src/haizea/resourcemanager/datastruct.py	2008-11-06 16:49:05 UTC (rev 538)
@@ -337,8 +337,8 @@
         ResourceReservation.__init__(self, lease, start, end, res)
         self.nodes = nodes
         self.backfill_reservation = backfill_reservation
-        self.resm_rrs = []
-        self.susp_rrs = []
+        self.pre_rrs = []
+        self.post_rrs = []
 
         # ONLY for simulation
         self.__update_prematureend()
@@ -366,10 +366,10 @@
             self.prematureend = None 
 
     def is_suspending(self):
-        return len(self.susp_rrs) > 0
+        return len(self.post_rrs) > 0 and isinstance(self.post_rrs[0], SuspensionResourceReservation)
 
     def print_contents(self, loglevel=LOGLEVEL_VDEBUG):
-        for resmrr in self.resm_rrs:
+        for resmrr in self.pre_rrs:
             resmrr.print_contents(loglevel)
             self.logger.log(loglevel, "--")
         self.logger.log(loglevel, "Type           : VM")
@@ -377,7 +377,7 @@
         if self.prematureend != None:
             self.logger.log(loglevel, "Premature end  : %s" % self.prematureend)
         ResourceReservation.print_contents(self, loglevel)
-        for susprr in self.susp_rrs:
+        for susprr in self.post_rrs:
             self.logger.log(loglevel, "--")
             susprr.print_contents(loglevel)
         
@@ -402,10 +402,10 @@
         ResourceReservation.print_contents(self, loglevel)
         
     def is_first(self):
-        return (self == self.vmrr.susp_rrs[0])
+        return (self == self.vmrr.post_rrs[0])
 
     def is_last(self):
-        return (self == self.vmrr.susp_rrs[-1])
+        return (self == self.vmrr.post_rrs[-1])
         
     # TODO: Suspension RRs should be preemptible, but preempting a suspension RR
     # has wider implications (with a non-trivial handling). For now, we leave them 
@@ -429,10 +429,10 @@
         self.logger.log(loglevel, "Type           : RESUME")
 
     def is_first(self):
-        return (self == self.vmrr.resm_rrs[0])
+        return (self == self.vmrr.pre_rrs[0])
 
     def is_last(self):
-        return (self == self.vmrr.resm_rrs[-1])
+        return (self == self.vmrr.pre_rrs[-1])
 
     # TODO: Resumption RRs should be preemptible, but preempting a resumption RR
     # has wider implications (with a non-trivial handling). For now, we leave them 

Modified: trunk/src/haizea/resourcemanager/scheduler.py
===================================================================
--- trunk/src/haizea/resourcemanager/scheduler.py	2008-10-20 16:50:12 UTC (rev 537)
+++ trunk/src/haizea/resourcemanager/scheduler.py	2008-11-06 16:49:05 UTC (rev 538)
@@ -402,16 +402,16 @@
             
             # TODO: migrations
             
-            # Resumptions (if any)
-            for resmrr in vmrr.resm_rrs:
-                self.slottable.addReservation(resmrr)
+            # Post-VM RRs (if any)
+            for rr in vmrr.pre_rrs:
+                self.slottable.addReservation(rr)
                 
             # VM
             self.slottable.addReservation(vmrr)
             
-            # Suspensions (if any)
-            for susprr in vmrr.susp_rrs:
-                self.slottable.addReservation(susprr)
+            # Post-VM RRs (if any)
+            for rr in vmrr.post_rrs:
+                self.slottable.addReservation(rr)
            
             if in_future:
                 self.numbesteffortres += 1
@@ -879,7 +879,7 @@
         
         vmrr.update_start(resm_end)
         for resmrr in resume_rrs:
-            vmrr.resm_rrs.append(resmrr)        
+            vmrr.pre_rrs.append(resmrr)        
            
     
     def __schedule_suspension(self, vmrr, suspend_by):
@@ -913,12 +913,12 @@
         
         # If we're already suspending, remove previous susprrs
         if vmrr.is_suspending():
-            for susprr in vmrr.susp_rrs:
+            for susprr in vmrr.post_rrs:
                 self.slottable.removeReservation(susprr)
-            vmrr.susp_rrs = []
+            vmrr.post_rrs = []
 
         for susprr in suspend_rrs:
-            vmrr.susp_rrs.append(susprr)        
+            vmrr.post_rrs.append(susprr)        
 
     def __compute_suspend_resume_time(self, mem, rate):
         time = float(mem) / rate
@@ -1202,7 +1202,7 @@
             if vmrr.backfill_reservation == True:
                 self.numbesteffortres -= 1
             if vmrr.is_suspending():
-                for susprr in vmrr.susp_rrs:
+                for susprr in vmrr.post_rrs:
                     self.slottable.removeReservation(susprr)
             lease.remove_vmrr(vmrr)
             self.slottable.removeReservation(vmrr)
@@ -1220,7 +1220,7 @@
             old_end = vmrr.end
             self.__schedule_suspension(vmrr, preemption_time)
             self.slottable.update_reservation_with_key_change(vmrr, old_start, old_end)
-            for susprr in vmrr.susp_rrs:
+            for susprr in vmrr.post_rrs:
                 self.slottable.addReservation(susprr)
             
             
@@ -1252,7 +1252,7 @@
         old_end = vmrr.end
         nodes = vmrr.nodes.values()
         if lease.state == Lease.STATE_SUSPENDED:
-            originalstart = vmrr.resm_rrs[0].start
+            originalstart = vmrr.pre_rrs[0].start
         else:
             originalstart = vmrr.start
         cp = self.slottable.findChangePointsAfter(after=earliest, until=originalstart, nodes=nodes)
@@ -1273,7 +1273,7 @@
         else:
             diff = originalstart - newstart
             if lease.state == Lease.STATE_SUSPENDED:
-                for resmrr in vmrr.resm_rrs:
+                for resmrr in vmrr.pre_rrs:
                     resmrr_old_start = resmrr.start
                     resmrr_old_end = resmrr.end
                     resmrr.start -= diff
@@ -1286,9 +1286,9 @@
             remdur = lease.duration.get_remaining_duration()
             if vmrr.is_suspending() and vmrr.end - newstart >= remdur: 
                 vmrr.update_end(vmrr.start + remdur)
-                for susprr in vmrr.susp_rrs:
+                for susprr in vmrr.post_rrs:
                     self.slottable.removeReservation(susprr)
-                vmrr.susp_rrs = []
+                vmrr.post_rrs = []
             else:
                 vmrr.update_end(vmrr.end - diff)
 
@@ -1365,7 +1365,7 @@
         self.logger.info("LEASE-%i The VM has ended prematurely." % l.id)
         self._handle_end_rr(l, vmrr)
         if vmrr.is_suspending():
-            for susprr in vmrr.susp_rrs:
+            for susprr in vmrr.post_rrs:
                 self.slottable.removeReservation(susprr)
         vmrr.end = get_clock().get_time()
         self._handle_end_vm(l, vmrr, enact=enact)



More information about the Haizea-commit mailing list