diff --git a/doc/source/strategies/vm_workload_consolidation.rst b/doc/source/strategies/vm_workload_consolidation.rst new file mode 100644 index 000000000..bd04d428b --- /dev/null +++ b/doc/source/strategies/vm_workload_consolidation.rst @@ -0,0 +1,100 @@ +================================== +VM Workload Consolidation Strategy +================================== + +Synopsis +-------- + +**display name**: ``vm_workload_consolidation`` + +**goal**: ``vm_consolidation`` + + .. watcher-term:: watcher.decision_engine.strategy.strategies.vm_workload_consolidation + +Requirements +------------ + +Metrics +******* + +The *vm_workload_consolidation* strategy requires the following metrics: + +============================ ============ ======= ======= +metric service name plugins comment +============================ ============ ======= ======= +``memory`` ceilometer_ none +``disk.root.size`` ceilometer_ none +============================ ============ ======= ======= + +The following metrics are not required but increase the accuracy of +the strategy if available: + +============================ ============ ======= ======= +metric service name plugins comment +============================ ============ ======= ======= +``memory.usage`` ceilometer_ none +``cpu_util`` ceilometer_ none +============================ ============ ======= ======= + +.. _ceilometer: http://docs.openstack.org/admin-guide/telemetry-measurements.html#openstack-compute + +Cluster data model +****************** + +Default Watcher's Compute cluster data model: + + .. watcher-term:: watcher.decision_engine.model.collector.nova.NovaClusterDataModelCollector + +Actions +******* + +Default Watcher's actions: + + + .. list-table:: + :widths: 30 30 + :header-rows: 1 + + * - action + - description + * - ``migration`` + - .. watcher-term:: watcher.applier.actions.migration.Migrate + * - ``change_nova_service_state`` + - .. watcher-term:: watcher.applier.actions.change_nova_service_state.ChangeNovaServiceState + +Planner +******* + +Default Watcher's planner: + + .. watcher-term:: watcher.decision_engine.planner.default.DefaultPlanner + + +Efficacy Indicator +------------------ + +.. watcher-func:: + :format: literal_block + + watcher.decision_engine.goal.efficacy.specs.ServerConsolidation.get_global_efficacy_indicator + +Algorithm +--------- + +For more information on the VM Workload consolidation strategy please refer to: https://specs.openstack.org/openstack/watcher-specs/specs/mitaka/implemented/zhaw-load-consolidation.html + +How to use it ? +--------------- + +.. code-block:: shell + + $ openstack optimize audittemplate create \ + at1 vm_consolidation --strategy vm_workload_consolidation + + $ openstack optimize audit create -a at1 + +External Links +-------------- + +*Spec URL* +https://specs.openstack.org/openstack/watcher-specs/specs/mitaka/implemented/zhaw-load-consolidation.html diff --git a/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py b/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py index ca3bac519..247a9c3be 100644 --- a/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py +++ b/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py @@ -16,6 +16,42 @@ # implied. # See the License for the specific language governing permissions and # limitations under the License. +# +""" +*VM Workload Consolidation Strategy* + +A load consolidation strategy based on heuristic first-fit +algorithm which focuses on measured CPU utilization and tries to +minimize hosts which have too much or too little load respecting +resource capacity constraints. + +This strategy produces a solution resulting in more efficient +utilization of cluster resources using following four phases: + +* Offload phase - handling over-utilized resources +* Consolidation phase - handling under-utilized resources +* Solution optimization - reducing number of migrations +* Disability of unused compute nodes + +A capacity coefficients (cc) might be used to adjust optimization +thresholds. Different resources may require different coefficient +values as well as setting up different coefficient values in both +phases may lead to to more efficient consolidation in the end. +If the cc equals 1 the full resource capacity may be used, cc +values lower than 1 will lead to resource under utilization and +values higher than 1 will lead to resource overbooking. +e.g. If targeted utilization is 80 percent of a compute node capacity, +the coefficient in the consolidation phase will be 0.8, but +may any lower value in the offloading phase. The lower it gets +the cluster will appear more released (distributed) for the +following consolidation phase. + +As this strategy leverages VM live migration to move the load +from one compute node to another, this feature needs to be set up +correctly on all compute nodes within the cluster. +This strategy assumes it is possible to live migrate any VM from +an active compute node to any other active compute node. +""" from oslo_log import log import six @@ -31,54 +67,7 @@ LOG = log.getLogger(__name__) class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy): - """VM Workload Consolidation Strategy. - - *Description* - - A load consolidation strategy based on heuristic first-fit - algorithm which focuses on measured CPU utilization and tries to - minimize hosts which have too much or too little load respecting - resource capacity constraints. - - This strategy produces a solution resulting in more efficient - utilization of cluster resources using following four phases: - - * Offload phase - handling over-utilized resources - * Consolidation phase - handling under-utilized resources - * Solution optimization - reducing number of migrations - * Disability of unused compute nodes - - A capacity coefficients (cc) might be used to adjust optimization - thresholds. Different resources may require different coefficient - values as well as setting up different coefficient values in both - phases may lead to to more efficient consolidation in the end. - If the cc equals 1 the full resource capacity may be used, cc - values lower than 1 will lead to resource under utilization and - values higher than 1 will lead to resource overbooking. - e.g. If targeted utilization is 80 percent of a compute node capacity, - the coefficient in the consolidation phase will be 0.8, but - may any lower value in the offloading phase. The lower it gets - the cluster will appear more released (distributed) for the - following consolidation phase. - - As this strategy laverages VM live migration to move the load - from one compute node to another, this feature needs to be set up - correctly on all compute nodes within the cluster. - This strategy assumes it is possible to live migrate any VM from - an active compute node to any other active compute node. - - *Requirements* - - * You must have at least 2 physical compute nodes to run this strategy. - - *Limitations* - - - - *Spec URL* - - https://github.com/openstack/watcher-specs/blob/master/specs/mitaka/implemented/zhaw-load-consolidation.rst - """ # noqa + """VM Workload Consolidation Strategy""" def __init__(self, config, osc=None): super(VMWorkloadConsolidation, self).__init__(config, osc)