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

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