display name: Uniform airflow migration strategy
goal: airflow_optimization
[PoC]Uniform Airflow using live migration
Description
It is a migration strategy based on the airflow of physical servers. It generates solutions to move VM whenever a server’s airflow is higher than the specified threshold.Requirements
- Hardware: compute node with NodeManager 3.0 support
- Software: Ceilometer component ceilometer-agent-compute running in each compute node, and Ceilometer API can report such telemetry “airflow, system power, inlet temperature” 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 assumes that live migrations are possible.
This strategy has a dependency on the server having Intel’s Power Node Manager 3.0 or later enabled.
The uniform_airflow strategy requires the following metrics:
metric | service name | plugins | comment |
---|---|---|---|
hardware.ipmi.node.airflow |
ceilometer | IPMI | |
hardware.ipmi.node.temperature |
ceilometer | IPMI | |
hardware.ipmi.node.power |
ceilometer | IPMI |
Default Watcher’s Compute cluster data model:
Nova cluster data model collector
The Nova cluster data model collector creates an in-memory representation of the resources exposed by the compute service.
Default Watcher’s actions:
action description migration
Migrates a server to a destination nova-compute host
This action will allow you to migrate a server to another compute destination host. Migration type ‘live’ can only be used for migrating active VMs. Migration type ‘cold’ can be used for migrating non-active VMs as well active VMs, which will be shut down while migrating.
The action schema is:
schema = Schema({ 'resource_id': str, # should be a UUID 'migration_type': str, # choices -> "live", "cold" 'destination_node': str, 'source_node': str, })The resource_id is the UUID of the server to migrate. The source_node and destination_node parameters are respectively the source and the destination compute hostname (list of available compute hosts is returned by this command:
nova service-list --binary nova-compute
).Note
Nova API version must be 2.56 or above if destination_node parameter is given.
Default Watcher’s planner:
Weight planner implementation
This implementation builds actions with parents in accordance with weights. Set of actions having a higher weight will be scheduled before the other ones. There are two config options to configure: action_weights and parallelization.
Limitations
- This planner requires to have action_weights and parallelization configs tuned well.
Strategy parameters are:
parameter | type | default Value | description |
---|---|---|---|
threshold_airflow |
Number | 400.0 | Airflow threshold for migration Unit is 0.1CFM |
threshold_inlet_t |
Number | 28.0 | Inlet temperature threshold for migration decision |
threshold_power |
Number | 350.0 | System power threshold for migration decision |
period |
Number | 300 | Aggregate time period of ceilometer |
None
For more information on the Uniform Airflow Migration Strategy please refer to: https://specs.openstack.org/openstack/watcher-specs/specs/newton/implemented/uniform-airflow-migration-strategy.html
$ openstack optimize audittemplate create \
at1 airflow_optimization --strategy uniform_airflow
$ openstack optimize audit create -a at1 -p threshold_airflow=410 \
-p threshold_inlet_t=29.0 -p threshold_power=355.0 -p period=310
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.