[haizea-commit] r538 - trunk/src/haizea/resourcemanager
haizea-commit at mailman.cs.uchicago.edu
haizea-commit at mailman.cs.uchicago.edu
Thu Nov 6 10:49:10 CST 2008
Author: borja
Date: 2008-11-06 10:49:05 -0600 (Thu, 06 Nov 2008)
New Revision: 538
Modified:
trunk/src/haizea/resourcemanager/datastruct.py
trunk/src/haizea/resourcemanager/scheduler.py
Log:
Changed VM RR data structure so that instead of including information on suspend/resume VMs, they include information on pre/post RRs (this will allow us to include other types of post RRs, such as shutdowns and live migrations)
Modified: trunk/src/haizea/resourcemanager/datastruct.py
===================================================================
--- trunk/src/haizea/resourcemanager/datastruct.py 2008-10-20 16:50:12 UTC (rev 537)
+++ trunk/src/haizea/resourcemanager/datastruct.py 2008-11-06 16:49:05 UTC (rev 538)
@@ -337,8 +337,8 @@
ResourceReservation.__init__(self, lease, start, end, res)
self.nodes = nodes
self.backfill_reservation = backfill_reservation
- self.resm_rrs = []
- self.susp_rrs = []
+ self.pre_rrs = []
+ self.post_rrs = []
# ONLY for simulation
self.__update_prematureend()
@@ -366,10 +366,10 @@
self.prematureend = None
def is_suspending(self):
- return len(self.susp_rrs) > 0
+ return len(self.post_rrs) > 0 and isinstance(self.post_rrs[0], SuspensionResourceReservation)
def print_contents(self, loglevel=LOGLEVEL_VDEBUG):
- for resmrr in self.resm_rrs:
+ for resmrr in self.pre_rrs:
resmrr.print_contents(loglevel)
self.logger.log(loglevel, "--")
self.logger.log(loglevel, "Type : VM")
@@ -377,7 +377,7 @@
if self.prematureend != None:
self.logger.log(loglevel, "Premature end : %s" % self.prematureend)
ResourceReservation.print_contents(self, loglevel)
- for susprr in self.susp_rrs:
+ for susprr in self.post_rrs:
self.logger.log(loglevel, "--")
susprr.print_contents(loglevel)
@@ -402,10 +402,10 @@
ResourceReservation.print_contents(self, loglevel)
def is_first(self):
- return (self == self.vmrr.susp_rrs[0])
+ return (self == self.vmrr.post_rrs[0])
def is_last(self):
- return (self == self.vmrr.susp_rrs[-1])
+ return (self == self.vmrr.post_rrs[-1])
# TODO: Suspension RRs should be preemptible, but preempting a suspension RR
# has wider implications (with a non-trivial handling). For now, we leave them
@@ -429,10 +429,10 @@
self.logger.log(loglevel, "Type : RESUME")
def is_first(self):
- return (self == self.vmrr.resm_rrs[0])
+ return (self == self.vmrr.pre_rrs[0])
def is_last(self):
- return (self == self.vmrr.resm_rrs[-1])
+ return (self == self.vmrr.pre_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-10-20 16:50:12 UTC (rev 537)
+++ trunk/src/haizea/resourcemanager/scheduler.py 2008-11-06 16:49:05 UTC (rev 538)
@@ -402,16 +402,16 @@
# TODO: migrations
- # Resumptions (if any)
- for resmrr in vmrr.resm_rrs:
- self.slottable.addReservation(resmrr)
+ # Post-VM RRs (if any)
+ for rr in vmrr.pre_rrs:
+ self.slottable.addReservation(rr)
# VM
self.slottable.addReservation(vmrr)
- # Suspensions (if any)
- for susprr in vmrr.susp_rrs:
- self.slottable.addReservation(susprr)
+ # Post-VM RRs (if any)
+ for rr in vmrr.post_rrs:
+ self.slottable.addReservation(rr)
if in_future:
self.numbesteffortres += 1
@@ -879,7 +879,7 @@
vmrr.update_start(resm_end)
for resmrr in resume_rrs:
- vmrr.resm_rrs.append(resmrr)
+ vmrr.pre_rrs.append(resmrr)
def __schedule_suspension(self, vmrr, suspend_by):
@@ -913,12 +913,12 @@
# If we're already suspending, remove previous susprrs
if vmrr.is_suspending():
- for susprr in vmrr.susp_rrs:
+ for susprr in vmrr.post_rrs:
self.slottable.removeReservation(susprr)
- vmrr.susp_rrs = []
+ vmrr.post_rrs = []
for susprr in suspend_rrs:
- vmrr.susp_rrs.append(susprr)
+ vmrr.post_rrs.append(susprr)
def __compute_suspend_resume_time(self, mem, rate):
time = float(mem) / rate
@@ -1202,7 +1202,7 @@
if vmrr.backfill_reservation == True:
self.numbesteffortres -= 1
if vmrr.is_suspending():
- for susprr in vmrr.susp_rrs:
+ for susprr in vmrr.post_rrs:
self.slottable.removeReservation(susprr)
lease.remove_vmrr(vmrr)
self.slottable.removeReservation(vmrr)
@@ -1220,7 +1220,7 @@
old_end = vmrr.end
self.__schedule_suspension(vmrr, preemption_time)
self.slottable.update_reservation_with_key_change(vmrr, old_start, old_end)
- for susprr in vmrr.susp_rrs:
+ for susprr in vmrr.post_rrs:
self.slottable.addReservation(susprr)
@@ -1252,7 +1252,7 @@
old_end = vmrr.end
nodes = vmrr.nodes.values()
if lease.state == Lease.STATE_SUSPENDED:
- originalstart = vmrr.resm_rrs[0].start
+ originalstart = vmrr.pre_rrs[0].start
else:
originalstart = vmrr.start
cp = self.slottable.findChangePointsAfter(after=earliest, until=originalstart, nodes=nodes)
@@ -1273,7 +1273,7 @@
else:
diff = originalstart - newstart
if lease.state == Lease.STATE_SUSPENDED:
- for resmrr in vmrr.resm_rrs:
+ for resmrr in vmrr.pre_rrs:
resmrr_old_start = resmrr.start
resmrr_old_end = resmrr.end
resmrr.start -= diff
@@ -1286,9 +1286,9 @@
remdur = lease.duration.get_remaining_duration()
if vmrr.is_suspending() and vmrr.end - newstart >= remdur:
vmrr.update_end(vmrr.start + remdur)
- for susprr in vmrr.susp_rrs:
+ for susprr in vmrr.post_rrs:
self.slottable.removeReservation(susprr)
- vmrr.susp_rrs = []
+ vmrr.post_rrs = []
else:
vmrr.update_end(vmrr.end - diff)
@@ -1365,7 +1365,7 @@
self.logger.info("LEASE-%i The VM has ended prematurely." % l.id)
self._handle_end_rr(l, vmrr)
if vmrr.is_suspending():
- for susprr in vmrr.susp_rrs:
+ for susprr in vmrr.post_rrs:
self.slottable.removeReservation(susprr)
vmrr.end = get_clock().get_time()
self._handle_end_vm(l, vmrr, enact=enact)
More information about the Haizea-commit
mailing list