[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