[haizea-commit] r547 - in trunk/src/haizea: resourcemanager traces

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Sat Nov 22 11:28:36 CST 2008


Author: borja
Date: 2008-11-22 11:28:30 -0600 (Sat, 22 Nov 2008)
New Revision: 547

Modified:
   trunk/src/haizea/resourcemanager/accounting.py
   trunk/src/haizea/resourcemanager/datastruct.py
   trunk/src/haizea/resourcemanager/scheduler.py
   trunk/src/haizea/traces/readers.py
Log:
Multiple small bug fixes

Modified: trunk/src/haizea/resourcemanager/accounting.py
===================================================================
--- trunk/src/haizea/resourcemanager/accounting.py	2008-11-20 00:39:06 UTC (rev 546)
+++ trunk/src/haizea/resourcemanager/accounting.py	2008-11-22 17:28:30 UTC (rev 547)
@@ -36,6 +36,8 @@
         # Attributes
         self.attrs = {}
         
+        self.starttime = None
+        
     def get_waiting_times(self):
         waiting_times = {}
         for lease_id in self.leases:
@@ -51,13 +53,15 @@
             if isinstance(lease, ds.BestEffortLease):
                 slowdowns[lease_id] = lease.get_slowdown()
         return slowdowns
+    
+    def get_besteffort_end(self):
+        return max([l.end for l in self.leases.values() if isinstance(l, ds.BestEffortLease)])
 
 class AccountingDataCollection(object):
     def __init__(self, rm, datafile):
         self.data = AccountingData()
         self.rm = rm
-        self.datafile = datafile   
-        self.starttime = None
+        self.datafile = datafile
         
         attrs = get_config().get_attrs()
         for attr in attrs:
@@ -91,7 +95,7 @@
 
         
     def start(self, time):
-        self.starttime = time
+        self.data.starttime = time
         
         # Start the counters
         for counter_id in self.data.counters:
@@ -118,7 +122,7 @@
                 self.data.counter_lists[counter_id] = self.add_timeweighted_average(l)
             
     def normalize_times(self, data):
-        return [((v[0] - self.starttime).seconds, v[1], v[2]) for v in data]
+        return [((v[0] - self.data.starttime).seconds, v[1], v[2]) for v in data]
         
     def add_no_average(self, data):
         return [(v[0], v[1], v[2], None) for v in data]

Modified: trunk/src/haizea/resourcemanager/datastruct.py
===================================================================
--- trunk/src/haizea/resourcemanager/datastruct.py	2008-11-20 00:39:06 UTC (rev 546)
+++ trunk/src/haizea/resourcemanager/datastruct.py	2008-11-22 17:28:30 UTC (rev 547)
@@ -442,10 +442,12 @@
         ResourceReservation.print_contents(self, loglevel)
 
     def is_first(self):
-        return (self == self.vmrr.pre_rrs[0])
+        resm_rrs = [r for r in self.vmrr.pre_rrs if isinstance(r, ResumptionResourceReservation)]
+        return (self == resm_rrs[0])
 
     def is_last(self):
-        return (self == self.vmrr.pre_rrs[-1])
+        resm_rrs = [r for r in self.vmrr.pre_rrs if isinstance(r, ResumptionResourceReservation)]
+        return (self == resm_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-11-20 00:39:06 UTC (rev 546)
+++ trunk/src/haizea/resourcemanager/scheduler.py	2008-11-22 17:28:30 UTC (rev 547)
@@ -1385,7 +1385,7 @@
         leases = []
         vmrrs = self.slottable.get_next_reservations_in_nodes(nexttime, nodes, rr_type=VMResourceReservation, immediately_next=True)
         leases = set([rr.lease for rr in vmrrs])
-        leases = [l for l in leases if isinstance(l, ds.BestEffortLease) and not l in checkedleases]
+        leases = [l for l in leases if isinstance(l, ds.BestEffortLease) and l.state in (Lease.STATE_SUSPENDED,Lease.STATE_READY) and not l in checkedleases]
         for lease in leases:
             self.logger.debug("Found lease %i" % l.id)
             l.print_contents()
@@ -1426,7 +1426,8 @@
         else:
             diff = originalstart - newstart
             if lease.state == Lease.STATE_SUSPENDED:
-                for resmrr in vmrr.pre_rrs:
+                resmrrs = [r for r in vmrr.pre_rrs if isinstance(r, ds.ResumptionResourceReservation)]
+                for resmrr in resmrrs:
                     resmrr_old_start = resmrr.start
                     resmrr_old_end = resmrr.end
                     resmrr.start -= diff

Modified: trunk/src/haizea/traces/readers.py
===================================================================
--- trunk/src/haizea/traces/readers.py	2008-11-20 00:39:06 UTC (rev 546)
+++ trunk/src/haizea/traces/readers.py	2008-11-22 17:28:30 UTC (rev 547)
@@ -47,13 +47,11 @@
                 maxdur = TimeDelta(seconds=reqtime)
                 if runtime < 0 and status==5:
                     # This is a job that got cancelled while waiting in the queue
-                    realdur = maxdur
-                    maxqueuetime = tSubmit + TimeDelta(seconds=waittime)
+                    continue
                 else:
                     if runtime == 0:
                         runtime = 1 # Runtime of 0 is <0.5 rounded down.
                     realdur = TimeDelta(seconds=runtime) # 3: RunTime
-                    maxqueuetime = None
                 if realdur > maxdur:
                     realdur = maxdur
                 preemptible = True



More information about the Haizea-commit mailing list