When marshalling the information about a host, include the sum of all the CPU instances (not entirely accurate, but still better than just reporting the first instance)
If lease is in state SUSPENDED_SCHEDULED, don't remove its files when it is cancelled.
Fixed bug in how cp_list is constructed
Suspend/Resume RRs should consume CPU
Fixed bug in weird corner case where a lease could be scheduled in such a way that the shutdown, and not the VM, would have to be suspended (which is not possible).
Saner migration scheduling
- Allow a lease in preparing state to be preempted- Multiple minor fixes to preparation scheduler (mostly avoid referring to leases by their ID, and simply store the lease object directly)
- Another fix to image transfer scheduling for ARs- Added sanity check to make sure image transfers are not scheduled incorrectly.
Extra check
Not sure why this was commented out (maybe a stopgap measure?) but it shouldn't be commented out.
Extra logging
Not entirely sure what's the root of this, but when using image transfers the availability window doesn't seem to get properly cached. This fix seems to shave ~30% off the time it takes to run the simulations that involve image transfers.
Preparation scheduling for AR leases was broken. THere were cases when it would schedule an image transfer that was actually infeasible.
Since preparation scheduling can result in an infeasible lease, preemptions should be done after the preparation has been scheduled.
- Modified LWF generator so it won't have an empty ramp-up period.- Minor fixes here and there.
Fixed bug when determining the "first start" of a VMRR. Shouldn't include the migration RRs.
Fix bug in availability window optimization
Fixed some bugs in optimization. Added a flag to turn it off (albeit in a kludgy way), because otherwise the slottable unit tests get confused.
More optimizations
A few optimizations (still need to be polished a bit)
Fixed uninitialized variable
Bug: lease/lease.id confusion
- In some cases an error was carried over in the estimated migration times that would result in the sanity check failing.- Migration bandwidth was hardcoded; now taken from configuration file.
Minor fixes
More small bug fixes
Small bug fixes
Miscellaneous small bug fixes.
Fixed bug in creation of resource tuples with multi-instance resources where the original Capacity object doesn't specify a value for the multi-instance resource.
Pushing a bunch of minor changes.
Reschedule leases after a premature end
Fixed: When rescheduling, can't schedule earlier than the requested start time
When scheduling deadline leases, do the preemptions when mapping (fixes the problem that the preemption policy could select leases that "looked" preemptable because of their slack, but turned out not to be because they couldn't be rescheduled).
Allow the slottable to be saved more than once (using a stack)
Catch exception from schedule_asap
When scheduling as soon as possible, don't bother to look at changepoints that don't allow the deadline to be met.
Multiple small fixes
This kludge is no longer necessary now that we handle premature ends more sanely.
Fix to bug that showed up when running Haizea with larger workloads.
Lists of reservations returned by the slottable have to be sorted before they can be used.
Add option to perform a sanity check at every timestep.
Determining if a lease can be suspended should also take into account the current time.
Saner handling of premature ends in simulations.
Fixes to several bugs that showed up when running Haizea with larger workloads.
- Optimized rescheduling of deadline leases- Allow leases to be preempted at any point, not just at the "last vm" - Enable rescheduling of deadline leases when a lease ends prematurely
More fixes to corner-case bugs arising when running on long workloads.
Minor bugs
Fixes to pricing when preempting-but-not-suspending
Take into account that deadline leases can also be preempted without suspension.
Terminology change: "rate" instead of "fair price" and "markup"
Miscellaneous fixes to deadline scheduling. Added pricing of surcharge from preempted leases.
Corrections to deadline scheduling with preemption.
Beginnings of preemption support in deadline scheduling
Add parameter to the mapper to specify if preemption is allowed.
Move suspension/resumption time estimation methods from VMScheduler to Lease
- Leases should be sorted by stretch factor, not absolute deadline- The earliest starting time can't be earlier than the current time
Replaced deadline scheduling algorithm with slightly better one.
Add methods to save and restore slottable state. Useful to test a new schedule without modifying the current one.
Save the fair price when the lease is rejected as non-schedulable
Plugging a few more potential memory leaks (explicitly remove circular references between VM RR and other RRs)
Miscellaneous changes to supporte REJECTED_BY_USER state
Miscellaneous minor bug fixes.
Add method to pricing policies that allows the scheduler to provide "feedback" to the policy module (needed for adaptive policies)
Don't set value of lease.price unless the lease is accepted.
Added a very basic, but also very inefficient, deadline scheduler.
- Added support for pluggable pricing policies- Added support for "extra attributes" in leases. These are ignored by Haizea, but may be used by policies.
Merge changes in trunk
Added scaffolding for new type of lease: "deadlined leases".Added unit tests for deadlined leases.
Created branch for 1.2 beta (doing it right this time)
Fixed: Estimating suspend/resume times with global filesystem still used old method to access requested memory
Fixed: Haizea would crash when fetching nodes for which OpenNebula had not yet collected monitoring information. This fix also has the pleasant side effect of allowing Haizea to detect new hosts added in OpenNebula without having to restart Haizea.
Switched to a saner implementation for Singleton classes. Required multiple changes all around (which had the indirect side effect of making constructors less dependent on the get_config() function)
Miscellaneous pylint-induced code cleanup.
Fixed whitespace that, while ok to Python, made epydoc barf.
Minor fixes for issues detected when running unit tests after last commits. Also removed several print statements that shouldn't be there.
Modified the accounting code so information is gathered using "probes" instead of inserting hardcoded statements throughout the Haizea code. Now, collecting additional information involves writing a pluggable probe, instructing the accounting module when the probe must be run (currently this can be at every timestep, when a lease is requested, or when a lease is done). Thus, gathering additional information doesn't require modifying the core Haizea code....
- Data persistence is implemented. It still needs some work (and has to be made configurable so it can be switched off during simulations), but it's working.- Started to clean up the accounting code so it will collect data using "probes" instead of hard-coded statements.
Updated copyright notices.
Merged TP2.0/0.9 branch into trunk.