# Uniform Airflow Migration Strategy

## Synopsis

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.

## Requirements

This strategy has a dependency on the server having Intel’s Power Node Manager 3.0 or later enabled.

### Metrics

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.

### Actions

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.

> Note

> Nova API version must be 2.56 or above if destination_node parameter is given.

### Planner

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.

## Configuration

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

None

## Algorithm

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

## External Links

- Intel Power Node Manager 3.0

this page last updated: 2026-04-01 21:51:00

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

found an error? report a bug