[haizea-commit] r760 - in branches/1.1/src/haizea: core core/scheduler pluggable/policies

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Tue Jan 12 19:36:21 CST 2010


Author: borja
Date: 2010-01-12 19:36:21 -0600 (Tue, 12 Jan 2010)
New Revision: 760

Modified:
   branches/1.1/src/haizea/core/leases.py
   branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
   branches/1.1/src/haizea/pluggable/policies/pricing.py
Log:
Fixes to pricing when preempting-but-not-suspending

Modified: branches/1.1/src/haizea/core/leases.py
===================================================================
--- branches/1.1/src/haizea/core/leases.py	2010-01-13 01:12:54 UTC (rev 759)
+++ branches/1.1/src/haizea/core/leases.py	2010-01-13 01:36:21 UTC (rev 760)
@@ -729,6 +729,7 @@
                                                      (Lease.STATE_FAIL,       "")],
                                                      
                    Lease.STATE_ACTIVE:              [(Lease.STATE_SUSPENDING, ""),
+                                                     (Lease.STATE_READY,     ""),
                                                      (Lease.STATE_QUEUED,     ""),
                                                      (Lease.STATE_DONE,       ""),
                                                      (Lease.STATE_CANCELLED,  ""),

Modified: branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/lease_scheduler.py	2010-01-13 01:12:54 UTC (rev 759)
+++ branches/1.1/src/haizea/core/scheduler/lease_scheduler.py	2010-01-13 01:36:21 UTC (rev 760)
@@ -780,6 +780,11 @@
                 lease_to_preempt.remove_vmrr(preempt_vmrr)
                 self.vm_scheduler.cancel_vm(preempt_vmrr)       
                 cancelled.append(lease_to_preempt.id)
+                
+                if lease_to_preempt.get_state() == Lease.STATE_SUSPENDED_SCHEDULED:
+                    lease.set_state(Lease.STATE_SUSPENDED_READY)
+                else:
+                    lease.set_state(Lease.STATE_READY)                
 
         for lease_to_preempt in preempted_leases:
             if lease.id in cancelled:

Modified: branches/1.1/src/haizea/pluggable/policies/pricing.py
===================================================================
--- branches/1.1/src/haizea/pluggable/policies/pricing.py	2010-01-13 01:12:54 UTC (rev 759)
+++ branches/1.1/src/haizea/pluggable/policies/pricing.py	2010-01-13 01:36:21 UTC (rev 760)
@@ -25,6 +25,7 @@
 from haizea.core.scheduler.policy import PricingPolicy
 from haizea.common.utils import get_config
 from haizea.common.stats import percentile
+import haizea.common.constants as constants
 
 import random
 
@@ -70,6 +71,8 @@
         return (lease.duration.requested.seconds / 3600.0) * lease.numnodes * rate 
    
     def get_surcharge(self, preempted_leases):
+        if get_config().get("suspension") == constants.SUSPENSION_NONE:
+            return 0
         surcharge = 0
         for l in preempted_leases:
             suspend_time = l.estimate_suspend_time()
@@ -155,8 +158,8 @@
         lease -- Lease that is being scheduled.
         preempted_leases -- Leases that would have to be preempted to support this lease.
         """
-        rate = float(lease.extras["simul_userrate"])
-        return self.get_base_price(lease, rate)
+        self.rate = float(lease.extras["simul_userrate"])
+        return self.get_base_price(lease)
     
 class UserInfo(object):
     def __init__(self):
@@ -190,7 +193,7 @@
         lease -- Lease that is being scheduled.
         preempted_leases -- Leases that would have to be preempted to support this lease.
         """
-        return self.get_price(lease)
+        return self.get_price(lease, preempted_leases)
     
     def feedback(self, lease):
         """Called after a lease has been accepted or rejected, to provide



More information about the Haizea-commit mailing list