Uniform Airflow Migration Strategy

Uniform Airflow Migration Strategy


display name: uniform_airflow

goal: airflow_optimization

[PoC]Uniform Airflow using live migration


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.


  • 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


  • 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  

Cluster data model

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

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).


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.


  • 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

Efficacy Indicator



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

How to use it ?

$ 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
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.