VmAllocationPolicyMigrationLocalRegression

public class VmAllocationPolicyMigrationLocalRegression extends VmAllocationPolicyMigrationDynamicUpperThresholdFirstFit

A VM allocation policy that uses Local Regression (LR) to predict host utilization (load) and define if a host is overloaded or not. It’s a Best Fit policy which selects the Host with most efficient power usage to place a given VM. Such a behaviour can be overridden by sub-classes.

If you are using any algorithms, policies or workload included in the power package please cite the following paper:

Author:Anton Beloglazov

Constructors

VmAllocationPolicyMigrationLocalRegression

public VmAllocationPolicyMigrationLocalRegression(PowerVmSelectionPolicy vmSelectionPolicy)

Creates a VmAllocationPolicyMigrationLocalRegression with a safety parameter equals to 0 and no fallback policy.

Parameters:
  • vmSelectionPolicy – the policy that defines how VMs are selected for migration

VmAllocationPolicyMigrationLocalRegression

public VmAllocationPolicyMigrationLocalRegression(PowerVmSelectionPolicy vmSelectionPolicy, double safetyParameter, VmAllocationPolicyMigration fallbackVmAllocationPolicy)

Creates a VmAllocationPolicyMigrationLocalRegression.

Parameters:
  • vmSelectionPolicy – the policy that defines how VMs are selected for migration
  • safetyParameter – the safety parameter
  • fallbackVmAllocationPolicy – the fallback VM allocation policy to be used when the over utilization host detection doesn’t have data to be computed

Methods

computeHostUtilizationMeasure

public double computeHostUtilizationMeasure(Host host)

Computes a Local Regression of the host utilization history to estimate the current host utilization. Such a value is used to generate the host over utilization threshold.

Parameters:
  • host – the host
Throws:
  • {@inheritDoc}
Returns:

the host utilization Local Regression

getMaximumVmMigrationTime

protected double getMaximumVmMigrationTime(Host host)

Gets the maximum vm migration time.

Parameters:
  • host – the host
Returns:

the maximum vm migration time

getOverUtilizationThreshold

public double getOverUtilizationThreshold(Host host)

{@inheritDoc}. In this case, this is a predicted value based on Local Regression of the utilization history.

Parameters:
  • host – the host to get the over utilization threshold prediction
Returns:

{@inheritDoc} or Double.MAX_VALUE if the threshold could not be computed

getParameterEstimates

protected double[] getParameterEstimates(double... utilizationHistoryReversed)

Gets utilization estimates.

Parameters:
  • utilizationHistoryReversed – the utilization history in reverse order
Returns:

the utilization estimates

getSchedulingInterval

public double getSchedulingInterval()

Gets the scheduling interval that defines the periodicity of VM migrations.

Returns:the scheduling interval

isHostOverloaded

public boolean isHostOverloaded(Host host)

Checks if a host is over utilized based on estimation of CPU over utilization threshold computed using Local Regression.

Parameters:
  • host – the host
Returns:

true, if is host over utilized; false otherwise

setSchedulingInterval

public final VmAllocationPolicyMigrationLocalRegression setSchedulingInterval(double schedulingInterval)

Sets the scheduling interval that defines the periodicity of VM migrations.

Parameters:
  • schedulingInterval – the new scheduling interval