[haizea-commit] r773 - in branches/1.1/src/haizea/core: . scheduler
haizea-commit at mailman.cs.uchicago.edu
haizea-commit at mailman.cs.uchicago.edu
Fri Jan 15 15:08:48 CST 2010
Author: borja
Date: 2010-01-15 15:08:48 -0600 (Fri, 15 Jan 2010)
New Revision: 773
Modified:
branches/1.1/src/haizea/core/configfile.py
branches/1.1/src/haizea/core/leases.py
branches/1.1/src/haizea/core/manager.py
branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
branches/1.1/src/haizea/core/scheduler/slottable.py
Log:
Add option to perform a sanity check at every timestep.
Modified: branches/1.1/src/haizea/core/configfile.py
===================================================================
--- branches/1.1/src/haizea/core/configfile.py 2010-01-15 20:33:44 UTC (rev 772)
+++ branches/1.1/src/haizea/core/configfile.py 2010-01-15 21:08:48 UTC (rev 773)
@@ -546,8 +546,17 @@
If specified, the simulated clock will print a status
message with some basic statistics. This is useful to keep track
of long simulations. The interval is specified in minutes.
- """)
+ """),
+ Option(name = "sanity-check",
+ getter = "sanity-check",
+ type = OPTTYPE_BOOLEAN,
+ required = False,
+ default = True,
+ doc = """
+ Perform a sanity check at every timestep (only for debugging)
+ """),
+
]
sections.append(simulation)
Modified: branches/1.1/src/haizea/core/leases.py
===================================================================
--- branches/1.1/src/haizea/core/leases.py 2010-01-15 20:33:44 UTC (rev 772)
+++ branches/1.1/src/haizea/core/leases.py 2010-01-15 21:08:48 UTC (rev 773)
@@ -713,7 +713,31 @@
"""
self.duration.incr_by_percent(percent)
+ def sanity_check(self):
+ prev_time = None
+ for vmrr in self.vm_rrs:
+ if len(vmrr.pre_rrs) > 0:
+ prev_time = vmrr.pre_rrs[0].start - 1
+ else:
+ prev_time = vmrr.start - 1
+
+ for pre_rr in vmrr.pre_rrs:
+ assert pre_rr.start >= prev_time
+ assert pre_rr.end >= pre_rr.start
+ prev_time = pre_rr.end
+
+ assert vmrr.start >= prev_time
+ assert vmrr.end >= vmrr.start
+ prev_time = vmrr.end
+ if vmrr.prematureend != None:
+ assert vmrr.prematureend >= vmrr.start and vmrr.prematureend < vmrr.end
+
+ for post_rr in vmrr.post_rrs:
+ assert post_rr.start >= prev_time
+ assert post_rr.end >= post_rr.start
+ prev_time = post_rr.end
+
def __estimate_suspend_resume_time(self, rate):
""" Estimate the time to suspend/resume an entire lease
Modified: branches/1.1/src/haizea/core/manager.py
===================================================================
--- branches/1.1/src/haizea/core/manager.py 2010-01-15 20:33:44 UTC (rev 772)
+++ branches/1.1/src/haizea/core/manager.py 2010-01-15 21:08:48 UTC (rev 773)
@@ -796,6 +796,17 @@
self.manager.accounting.at_timestep(self.manager.scheduler)
+ if self.manager.config.get("sanity-check"):
+ passed, node, time, capacity = self.manager.scheduler.slottable.sanity_check(only_at=self.time)
+ assert passed == True
+
+ util = self.manager.accounting.get_last_counter_value("CPU utilization")
+ assert util <= 1.0
+
+ for l in self.manager.scheduler.leases.get_leases():
+ l.sanity_check()
+
+
# Print a status message
if self.statusinterval != None and (self.time - prevstatustime).minutes >= self.statusinterval:
self.manager.print_status()
Modified: branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/lease_scheduler.py 2010-01-15 20:33:44 UTC (rev 772)
+++ branches/1.1/src/haizea/core/scheduler/lease_scheduler.py 2010-01-15 21:08:48 UTC (rev 773)
@@ -992,6 +992,15 @@
self.completed_leases.add(l)
self.leases.remove(l)
self.accounting.at_lease_done(l)
+
+ if get_config().get("sanity-check"):
+ if l.duration.known != None and l.duration.known < l.duration.requested:
+ duration = l.duration.known
+ else:
+ duration = l.duration.requested
+
+ assert duration == l.duration.actual
+
Modified: branches/1.1/src/haizea/core/scheduler/slottable.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/slottable.py 2010-01-15 20:33:44 UTC (rev 772)
+++ branches/1.1/src/haizea/core/scheduler/slottable.py 2010-01-15 21:08:48 UTC (rev 773)
@@ -975,7 +975,7 @@
pos += 1
return pos
- def sanity_check(self):
+ def sanity_check(self, only_at = None):
"""Verifies the slot table is consistent. Used by unit tests.
@return: Returns a tuple, the first item being True if the slot table
@@ -986,12 +986,15 @@
@rtype: (C{bool},
"""
# Get checkpoints
- changepoints = set()
- for rr in [x.value for x in self.reservations_by_start]:
- changepoints.add(rr.start)
- changepoints.add(rr.end)
- changepoints = list(changepoints)
- changepoints.sort()
+ if only_at != None:
+ changepoints = [only_at]
+ else:
+ changepoints = set()
+ for rr in [x.value for x in self.reservations_by_start]:
+ changepoints.add(rr.start)
+ changepoints.add(rr.end)
+ changepoints = list(changepoints)
+ changepoints.sort()
for cp in changepoints:
avail = self.get_availability(cp)
More information about the Haizea-commit
mailing list