[haizea-commit] r801 - in branches/1.1/src/haizea/core/scheduler: . preparation_schedulers
haizea-commit at mailman.cs.uchicago.edu
haizea-commit at mailman.cs.uchicago.edu
Tue Jun 22 09:54:50 CDT 2010
Author: borja
Date: 2010-06-22 09:54:47 -0500 (Tue, 22 Jun 2010)
New Revision: 801
Modified:
branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
branches/1.1/src/haizea/core/scheduler/preparation_schedulers/imagetransfer.py
branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
Log:
Small bug fixes
Modified: branches/1.1/src/haizea/core/scheduler/lease_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/lease_scheduler.py 2010-06-19 20:20:51 UTC (rev 800)
+++ branches/1.1/src/haizea/core/scheduler/lease_scheduler.py 2010-06-22 14:54:47 UTC (rev 801)
@@ -468,7 +468,9 @@
## END NOT-FIT-FOR-PRODUCTION CODE
for l in future_best_effort:
# We can only reschedule leases in the following four states
- if l.get_state() in (Lease.STATE_PREPARING, Lease.STATE_READY, Lease.STATE_SCHEDULED, Lease.STATE_SUSPENDED_SCHEDULED):
+ # TODO: Leases in PREPARING state should be rescheduleable.
+ if l.get_state() in (Lease.STATE_READY, Lease.STATE_SCHEDULED, Lease.STATE_SUSPENDED_SCHEDULED):
+ #if l.get_state() in (Lease.STATE_PREPARING, Lease.STATE_READY, Lease.STATE_SCHEDULED, Lease.STATE_SUSPENDED_SCHEDULED):
# For each reschedulable lease already scheduled in the
# future, we cancel the lease's preparation and
# the last scheduled VM.
Modified: branches/1.1/src/haizea/core/scheduler/preparation_schedulers/imagetransfer.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/preparation_schedulers/imagetransfer.py 2010-06-19 20:20:51 UTC (rev 800)
+++ branches/1.1/src/haizea/core/scheduler/preparation_schedulers/imagetransfer.py 2010-06-22 14:54:47 UTC (rev 801)
@@ -105,8 +105,11 @@
bandwidth = self.resourcepool.info.get_migration_bandwidth()
migr_rrs = []
for m in migrations:
- mb_to_migrate = lease.software.image_size * len(m.keys())
- migr_time = estimate_transfer_time(mb_to_migrate, bandwidth)
+ mb_per_physnode = {}
+ for vnode, (pnode_from, pnode_to) in m.items():
+ mb_per_physnode[pnode_from] = mb_per_physnode.setdefault(pnode_from, 0) + lease.software.image_size
+ max_mb_to_migrate = max(mb_per_physnode.values())
+ migr_time = estimate_transfer_time(max_mb_to_migrate, bandwidth)
end = start + migr_time
res = {}
for (origin,dest) in m.values():
@@ -130,7 +133,7 @@
images_in_pnode = dict([(pnode,0) for pnode in set(vmrr.nodes.values())])
for (vnode,pnode) in vmrr.nodes.items():
images_in_pnode[pnode] += lease.software.image_size
- max_to_transfer = max(images_in_pnode.values())
+ max_to_transfer = max(images_in_pnode.values()) * 2 # Kludge
bandwidth = self.resourcepool.info.get_migration_bandwidth()
return estimate_transfer_time(max_to_transfer, bandwidth)
elif migration == constants.MIGRATE_YES_NOTRANSFER:
Modified: branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/vm_scheduler.py 2010-06-19 20:20:51 UTC (rev 800)
+++ branches/1.1/src/haizea/core/scheduler/vm_scheduler.py 2010-06-22 14:54:47 UTC (rev 801)
@@ -134,11 +134,13 @@
migration = get_config().get("migration")
if migration == constants.MIGRATE_YES:
vmrr = lease.get_last_vmrr()
- mem_in_pnode = dict([(pnode,0) for pnode in set(vmrr.nodes.values())])
+ #mem_in_pnode = dict([(pnode,0) for pnode in set(vmrr.nodes.values())])
+ max_mem_to_transfer = 0
for pnode in vmrr.nodes.values():
mem = vmrr.resources_in_pnode[pnode].get_by_type(constants.RES_MEM)
- mem_in_pnode[pnode] += mem
- max_mem_to_transfer = max(mem_in_pnode.values()) * 2 # Kludge
+ max_mem_to_transfer += mem
+ #mem_in_pnode[pnode] += mem
+ #max_mem_to_transfer = max(mem_in_pnode.values()) * 2 # Kludge
bandwidth = self.resourcepool.info.get_migration_bandwidth()
return estimate_transfer_time(max_mem_to_transfer, bandwidth)
elif migration == constants.MIGRATE_YES_NOTRANSFER:
@@ -605,7 +607,7 @@
# If the mapper couldn't find a mapping for the full duration
# of the lease, then we need to schedule a suspension.
- mustsuspend = (vmrr.end - vmrr.start) < remaining_duration
+ mustsuspend = (vmrr.end - vmrr.start) - shutdown_time < remaining_duration
if mustsuspend:
self.__schedule_suspension(vmrr, end)
else:
More information about the Haizea-commit
mailing list