Merge "Add doc for vm_workload_consolidation strategy"
This commit is contained in:
100
doc/source/strategies/vm_workload_consolidation.rst
Normal file
100
doc/source/strategies/vm_workload_consolidation.rst
Normal file
@@ -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
|
||||||
@@ -16,6 +16,42 @@
|
|||||||
# implied.
|
# implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# 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
|
from oslo_log import log
|
||||||
import six
|
import six
|
||||||
@@ -31,54 +67,7 @@ LOG = log.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
||||||
"""VM Workload Consolidation Strategy.
|
"""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*
|
|
||||||
|
|
||||||
<None>
|
|
||||||
|
|
||||||
*Spec URL*
|
|
||||||
|
|
||||||
https://github.com/openstack/watcher-specs/blob/master/specs/mitaka/implemented/zhaw-load-consolidation.rst
|
|
||||||
""" # noqa
|
|
||||||
|
|
||||||
def __init__(self, config, osc=None):
|
def __init__(self, config, osc=None):
|
||||||
super(VMWorkloadConsolidation, self).__init__(config, osc)
|
super(VMWorkloadConsolidation, self).__init__(config, osc)
|
||||||
|
|||||||
Reference in New Issue
Block a user