The watcher.decision_engine.strategy.strategies.workload_balance
Module¶
-
class
watcher.decision_engine.strategy.strategies.workload_balance.
WorkloadBalance
(config, osc=None)[source]¶ Bases:
watcher.decision_engine.strategy.strategies.base.WorkloadStabilizationBaseStrategy
[PoC]Workload balance using live migration
Description
It is a migration strategy based on the VM workload of physical servers. It generates solutions to move a workload whenever a server’s CPU utilization % is higher than the specified threshold. The VM to be moved should make the host close to average workload of all compute nodes.Requirements
- Hardware: compute node should use the same physical CPUs
- Software: Ceilometer component ceilometer-agent-compute running in each compute node, and Ceilometer API can report such telemetry “cpu_util” successfully.
- You must have at least 2 physical compute nodes to run this strategy
Limitations
- This is a proof of concept that is not meant to be used in production
- We cannot forecast how many servers should be migrated. This is the reason why we only plan a single virtual machine migration at a time. So it’s better to use this algorithm with CONTINUOUS audits.
- It assume that live migrations are possible
-
calculate_used_resource
(node, cap_cores, cap_mem, cap_disk)[source]¶ Calculate the used vcpus, memory and disk based on VM flavors
-
choose_instance_to_migrate
(hosts, avg_workload, workload_cache)[source]¶ Pick up an active instance instance to migrate from provided hosts
Parameters: - hosts – the array of dict which contains node object
- avg_workload – the average workload value of all nodes
- workload_cache – the map contains instance to workload mapping
-
do_execute
()[source]¶ Strategy execution phase
This phase is where you should put the main logic of your strategy.
-
filter_destination_hosts
(hosts, instance_to_migrate, avg_workload, workload_cache)[source]¶ Only return hosts with sufficient available resources