The watcher.decision_engine.strategy.strategies.workload_stabilization Module

The watcher.decision_engine.strategy.strategies.workload_stabilization Module

class watcher.decision_engine.strategy.strategies.workload_stabilization.WorkloadStabilization(config, osc=None)[source]

Bases: watcher.decision_engine.strategy.strategies.base.WorkloadStabilizationBaseStrategy

Workload Stabilization control using live migration

This is workload stabilization strategy based on standard deviation algorithm. The goal is to determine if there is an overload in a cluster and respond to it by migrating VMs to stabilize the cluster.

This strategy has been tested in a small (32 nodes) cluster.

It assumes that live migrations are possible in your cluster.

MEMOIZE()
add_migration(resource_id, migration_type, source_node, destination_node)[source]
calculate_migration_case(hosts, instance, src_node, dst_node)[source]

Calculate migration case

Return list of standard deviation values, that appearing in case of migration of instance from source host to destination host :param hosts: hosts with their workload :param instance: the virtual machine :param src_node: the source node :param dst_node: the destination node :return: list of standard deviation values

calculate_weighted_sd(sd_case)[source]

Calculate common standard deviation among meters on host

check_threshold()[source]

Check if cluster is needed in balancing

create_migration_instance(mig_instance, mig_source_node, mig_destination_node)[source]

Create migration VM

do_execute()[source]

Strategy execution phase

This phase is where you should put the main logic of your strategy.

fill_solution()[source]
get_available_nodes()[source]
classmethod get_config_opts()[source]

Defines the configuration options to be associated to this loadable

Returns:A list of configuration options relative to this Loadable
Return type:list of oslo_config.cfg.Opt instances
get_current_weighted_sd(hosts_load)[source]

Calculate current weighted sd

classmethod get_display_name()[source]

The goal display name for the strategy

get_hosts_load()[source]

Get load of every available host by gathering instances load

get_instance_load(**kw)[source]

Gathering instance load through ceilometer/gnocchi statistic.

Parameters:instance – instance for which statistic is gathered.
Returns:dict
classmethod get_name()[source]

The name of the strategy

classmethod get_schema()[source]

Defines a Schema that the input parameters shall comply to

Returns:A jsonschema format (mandatory default setting)
Return type:dict
get_sd(hosts, meter_name)[source]

Get standard deviation among hosts by specified meter

classmethod get_translatable_display_name()[source]

The translatable msgid of the strategy

migrate(instance_uuid, src_host, dst_host)[source]
normalize_hosts_load(hosts)[source]
post_execute()[source]

Post-execution phase

This can be used to compute the global efficacy

pre_execute()[source]

Pre-execution phase

This can be used to fetch some pre-requisites or data.

simulate_migrations(hosts)[source]

Make sorted list of pairs instance:dst_host

transform_instance_cpu(instance_load, host_vcpus)[source]

Transform instance cpu utilization to overall host cpu utilization.

Parameters:
  • instance_load – dict that contains instance uuid and utilization info.
  • host_vcpus – int
Returns:

float value

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.