[haizea-commit] r766 - branches/1.1/src/haizea/core/scheduler
haizea-commit at mailman.cs.uchicago.edu
haizea-commit at mailman.cs.uchicago.edu
Fri Jan 15 01:45:17 CST 2010
Author: borja
Date: 2010-01-15 01:45:17 -0600 (Fri, 15 Jan 2010)
New Revision: 766
Modified:
branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
Log:
Fixes to several bugs that showed up when running Haizea with larger workloads.
Modified: branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/lease_scheduler.py 2010-01-15 06:23:15 UTC (rev 765)
+++ branches/1.1/src/haizea/core/scheduler/lease_scheduler.py 2010-01-15 07:45:17 UTC (rev 766)
@@ -818,6 +818,7 @@
cancel = False
if susptype == constants.SUSPENSION_NONE:
+ self.logger.debug("Lease %i will be cancelled because suspension is not supported." % lease_to_preempt.id)
cancel = True
else:
if preempt_vmrr == None:
@@ -829,6 +830,9 @@
if not can_suspend:
self.logger.debug("Suspending lease %i does not meet scheduling threshold." % lease_to_preempt.id)
cancel = True
+ else:
+ self.logger.debug("Lease %i will be suspended." % lease_to_preempt.id)
+
after_vmrrs = lease_to_preempt.get_vmrr_after(preemption_time)
Modified: branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/vm_scheduler.py 2010-01-15 06:23:15 UTC (rev 765)
+++ branches/1.1/src/haizea/core/scheduler/vm_scheduler.py 2010-01-15 07:45:17 UTC (rev 766)
@@ -652,6 +652,7 @@
and rr.lease.get_state() in (Lease.STATE_SCHEDULED, Lease.STATE_READY, Lease.STATE_SUSPENDED_SCHEDULED)]
for future_vmrr in future_vmrrs:
+ future_vmrr.lease.remove_vmrr(future_vmrr)
self.cancel_vm(future_vmrr)
leases = list(set([future_vmrr.lease for future_vmrr in future_vmrrs]))
@@ -741,10 +742,6 @@
restored_leases.add(l)
print "Skipped re-scheduling %i leases (out of %i)" % (len(restored_leases), len(leases))
-
- for l in [l2 for l2 in orig_vmrrs if l2 in scheduled - restored_leases]:
- for vmrr in orig_vmrrs[l]:
- vmrr.lease.remove_vmrr(vmrr)
for lease2, vmrr in new_vmrrs.items():
lease2.append_vmrr(vmrr)
@@ -757,6 +754,11 @@
for rr in return_vmrr.post_rrs:
self.slottable.remove_reservation(rr)
+ for l in leases:
+ if l in scheduled:
+ self.logger.vdebug("Lease %i after rescheduling:" % l.id)
+ l.print_contents()
+
return return_vmrr, []
else:
return vmrr, preemptions
@@ -794,11 +796,21 @@
if min_future_start > dirtytime:
print "Ignoring after %s" % dirtytime
break
+
+ last_vmrr = l.get_last_vmrr()
+ if last_vmrr != None and last_vmrr.is_suspending():
+ override_state = Lease.STATE_SUSPENDED_PENDING
+ l_earliest_time = last_vmrr.post_rrs[-1].end
+ else:
+ override_state = None
+ l_earliest_time = earliest_time
+
for n in earliest:
- earliest[n].time = max(l.start.requested, nexttime)
+ earliest[n].time = l_earliest_time
+
self.logger.debug("Rescheduling lease %s" % l.id)
- dur = l.get_remaining_duration_at(earliest_time)
- vmrr, preemptions = self.__schedule_asap(l, dur, nexttime, earliest, allow_in_future = True)
+ dur = l.get_remaining_duration_at(l_earliest_time)
+ vmrr, preemptions = self.__schedule_asap(l, dur, nexttime, earliest, allow_in_future = True, override_state=override_state)
if vmrr.end - vmrr.start != dur or vmrr.end > l.deadline or len(preemptions) != 0:
raise NotSchedulableException, "Could not schedule before deadline without making other leases miss deadline"
More information about the Haizea-commit
mailing list