[haizea-commit] r765 - branches/1.1/src/haizea/core/scheduler

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Fri Jan 15 00:23:15 CST 2010


Author: borja
Date: 2010-01-15 00:23:15 -0600 (Fri, 15 Jan 2010)
New Revision: 765

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 05:20:03 UTC (rev 764)
+++ branches/1.1/src/haizea/core/scheduler/lease_scheduler.py	2010-01-15 06:23:15 UTC (rev 765)
@@ -821,13 +821,13 @@
                 cancel = True
             else:
                 if preempt_vmrr == None:
-                    self.logger.debug("Lease was set to start in the middle of the preempting lease.")
+                    self.logger.debug("Lease %i was set to start in the middle of the preempting lease." % lease_to_preempt.id)
                     cancel = True
                 else:
                     can_suspend = self.vm_scheduler.can_suspend_at(lease_to_preempt, preemption_time)
                     
                     if not can_suspend:
-                        self.logger.debug("Suspending the lease does not meet scheduling threshold.")
+                        self.logger.debug("Suspending lease %i does not meet scheduling threshold." % lease_to_preempt.id)
                         cancel = True
                         
             after_vmrrs = lease_to_preempt.get_vmrr_after(preemption_time)
@@ -885,10 +885,12 @@
                     last_vmrr = lease_to_preempt.get_last_vmrr()
                     if last_vmrr != None and last_vmrr.is_suspending():
                         override_state = Lease.STATE_SUSPENDED_PENDING
+                        earliest_time = last_vmrr.post_rrs[-1].end
                     else:
                         override_state = None
+                        earliest_time = nexttime
                     for node in node_ids:
-                        earliest[node] = EarliestStartingTime(nexttime, EarliestStartingTime.EARLIEST_NOPREPARATION)                
+                        earliest[node] = EarliestStartingTime(earliest_time, EarliestStartingTime.EARLIEST_NOPREPARATION)                
                     (new_vmrr, preemptions) = self.vm_scheduler.reschedule_deadline(lease_to_preempt, dur, nexttime, earliest, override_state)
                 else:
                     for node in node_ids:
@@ -913,7 +915,7 @@
                 # Post-VM RRs (if any)
                 for rr in new_vmrr.post_rrs:
                     self.slottable.add_reservation(rr)                    
-            except:
+            except NotSchedulableException:
                 feasible = False
                 break
 

Modified: branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/vm_scheduler.py	2010-01-15 05:20:03 UTC (rev 764)
+++ branches/1.1/src/haizea/core/scheduler/vm_scheduler.py	2010-01-15 06:23:15 UTC (rev 765)
@@ -626,12 +626,13 @@
                 self.logger.debug("Trying to schedule lease #%i as an advance reservation..." % lease.id)
                 vmrr, preemptions = self.__schedule_exact(lease, duration, nexttime, earliest)
                 return vmrr, preemptions
-            except:
+            except NotSchedulableException:
                 self.logger.debug("Lease #%i cannot be scheduled as an advance reservation, trying as best-effort..." % lease.id)
                 vmrr, preemptions = self.__schedule_asap(lease, duration, nexttime, earliest, allow_in_future = True, override_state=override_state)
                 if vmrr.end - vmrr.start != duration or vmrr.end > lease.deadline or len(preemptions)>0:
+                    vmrr = None
                     self.logger.debug("Lease #%i cannot be scheduled before deadline using best-effort." % lease.id)
-                    raise NotSchedulableException, "Could not schedule before deadline without making other leases miss deadline"
+                    #raise NotSchedulableException, "Could not schedule before deadline without making other leases miss deadline"
                 else:
                     return vmrr, preemptions
         else:



More information about the Haizea-commit mailing list