watcher/doc/source/strategies/workload-stabilization.rst
licanwei 90291923a1 Update strategy doc
Ceilometer removed cpu_util metric in [1].
Another metric compute.node.cpu.percent need to set
compute_monitors option to cpu.virt_driver in the
nova.conf, we should remind user about these.
[1]: https://review.opendev.org/#/c/580709/

Change-Id: I89306ef7c26fa2927945bd4f3ee88b670511d147
2019-06-20 10:57:05 +08:00

5.9 KiB

Watcher Overload standard deviation algorithm

Synopsis

display name: Workload stabilization

goal: workload_balancing

watcher.decision_engine.strategy.strategies.workload_stabilization.WorkloadStabilization

Requirements

Metrics

The workload_stabilization strategy requires the following metrics:

metric service name plugins comment

compute.node.cpu.percent

hardware.memory.used

ceilometer

ceilometer

none

SNMP

need to set the compute_monitors option to cpu.virt_driver in the nova.conf.

cpu_util

memory.resident

ceilometer

ceilometer

none

none

cpu_util has been removed since Stein.

Cluster data model

Default Watcher's Compute cluster data model:

watcher.decision_engine.model.collector.nova.NovaClusterDataModelCollector

Actions

Default Watcher's actions:

action description
migration

watcher.applier.actions.migration.Migrate

Planner

Default Watcher's planner:

watcher.decision_engine.planner.weight.WeightPlanner

Configuration

Strategy parameters are:

parameter type default Value description

metrics

array

["cpu_util", "memory.resident"]

Metrics used as rates of cluster loads.

thresholds

object

{"cpu_util": 0.2, "memory.resident": 0.2}

Dict where key is a metric and value is a trigger value.

weights

object

{"cpu_util_weight": 1.0, "memory.resident_weight": 1.0}

These weights used to calculate common standard deviation. Name of weight contains meter name and _weight suffix.

instance_metrics

object

{"cpu_util": "compute.node.cpu.percent", "memory.resident": "hardware.memory.used"}

Mapping to get hardware statistics using instance metrics.

host_choice

string

retry

Method of host's choice. There are cycle, retry and fullsearch methods. Cycle will iterate hosts in cycle. Retry will get some hosts random (count defined in retry_count option). Fullsearch will return each host from list.

retry_count

number

1

Count of random returned hosts.

periods

object

{"instance": 720, "node": 600}

These periods are used to get statistic aggregation for instance and host metrics. The period is simply a repeating interval of time into which the samples are grouped for aggregation. Watcher uses only the last period of all received ones.

Efficacy Indicator

watcher.decision_engine.goal.efficacy.specs.ServerConsolidation.get_global_efficacy_indicator

Algorithm

You can find description of overload algorithm and role of standard deviation here: https://specs.openstack.org/openstack/watcher-specs/specs/newton/implemented/sd-strategy.html

How to use it ?

$ openstack optimize audittemplate create \
  at1 workload_balancing --strategy workload_stabilization

$ openstack optimize audit create -a at1 \
  -p thresholds='{"memory.resident": 0.05}' \
  -p metrics='["memory.resident"]'