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

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Wed Nov 26 15:11:24 CST 2008


Author: borja
Date: 2008-11-26 15:11:23 -0600 (Wed, 26 Nov 2008)
New Revision: 549

Modified:
   trunk/src/haizea/resourcemanager/slottable.py
Log:
Minor changes in slottable implementation which should reduce running time of simulations.

Modified: trunk/src/haizea/resourcemanager/slottable.py
===================================================================
--- trunk/src/haizea/resourcemanager/slottable.py	2008-11-26 21:10:36 UTC (rev 548)
+++ trunk/src/haizea/resourcemanager/slottable.py	2008-11-26 21:11:23 UTC (rev 549)
@@ -228,7 +228,7 @@
         return [i.value for i in self.reservationsByEnd if isinstance(i.value, ds.VMResourceReservation) and i.value.prematureend == t]
 
     
-    def getReservationsWithChangePointsAfter(self, after):
+    def get_reservations_starting_or_ending_after(self, after):
         item = KeyValueWrapper(after, None)
         startpos = bisect.bisect_right(self.reservationsByStart, item)
         bystart = set([x.value for x in self.reservationsByStart[:startpos]])
@@ -287,7 +287,7 @@
     
     def findChangePointsAfter(self, after, until=None, nodes=None):
         changepoints = set()
-        res = self.getReservationsWithChangePointsAfter(after)
+        res = self.get_reservations_starting_or_ending_after(after)
         for rr in res:
             if nodes == None or (nodes != None and len(set(rr.resources_in_pnode.keys()) & set(nodes)) > 0):
                 if rr.start > after:
@@ -407,7 +407,13 @@
         
         # Determine the availability at the subsequent change points
         nodes = set(availatstart.keys())
-        changepoints = self.slottable.findChangePointsAfter(self.time, nodes=self.avail.keys())
+        res = self.slottable.get_reservations_starting_after(self.time)
+        changepoints = set()
+        for rr in res:
+            if nodes == None or (nodes != None and len(set(rr.resources_in_pnode.keys()) & set(nodes)) > 0):
+                changepoints.add(rr.start)
+        changepoints = list(changepoints)
+        changepoints.sort()
         for p in changepoints:
             availatpoint = self.slottable.getAvailability(p, self.resreq, nodes, canpreempt)
             newnodes = set(availatpoint.keys())



More information about the Haizea-commit mailing list