Merge "Complete schema of workload_stabilization strategy"

This commit is contained in:
Zuul
2018-03-06 01:17:37 +00:00
committed by Gerrit Code Review

View File

@@ -23,6 +23,8 @@ This is workload stabilization strategy based on standard deviation
algorithm. The goal is to determine if there is an overload in a cluster 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. 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. It assumes that live migrations are possible in your cluster.
""" """
@@ -104,19 +106,47 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy):
"metrics": { "metrics": {
"description": "Metrics used as rates of cluster loads.", "description": "Metrics used as rates of cluster loads.",
"type": "array", "type": "array",
"default": ["cpu_util", "memory.resident"] "items": {
"type": "string",
"enum": ["cpu_util", "memory.resident"]
},
"default": ["cpu_util"]
}, },
"thresholds": { "thresholds": {
"description": "Dict where key is a metric and value " "description": "Dict where key is a metric and value "
"is a trigger value.", "is a trigger value.",
"type": "object", "type": "object",
"default": {"cpu_util": 0.2, "memory.resident": 0.2} "properties": {
"cpu_util": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"memory.resident": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"default": {"cpu_util": 0.1, "memory.resident": 0.1}
}, },
"weights": { "weights": {
"description": "These weights used to calculate " "description": "These weights used to calculate "
"common standard deviation. Name of weight" "common standard deviation. Name of weight"
" contains meter name and _weight suffix.", " contains meter name and _weight suffix.",
"type": "object", "type": "object",
"properties": {
"cpu_util_weight": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"memory.resident_weight": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"default": {"cpu_util_weight": 1.0, "default": {"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0} "memory.resident_weight": 1.0}
}, },
@@ -141,6 +171,7 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy):
"retry_count": { "retry_count": {
"description": "Count of random returned hosts", "description": "Count of random returned hosts",
"type": "number", "type": "number",
"minimum": 1,
"default": 1 "default": 1
}, },
"periods": { "periods": {
@@ -152,12 +183,23 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy):
"uses only the last period of all received" "uses only the last period of all received"
" ones.", " ones.",
"type": "object", "type": "object",
"properties": {
"instance": {
"type": "integer",
"minimum": 0
},
"node": {
"type": "integer",
"minimum": 0
},
},
"default": {"instance": 720, "node": 600} "default": {"instance": 720, "node": 600}
}, },
"granularity": { "granularity": {
"description": "The time between two measures in an " "description": "The time between two measures in an "
"aggregated timeseries of a metric.", "aggregated timeseries of a metric.",
"type": "number", "type": "number",
"minimum": 0,
"default": 300 "default": 300
}, },
} }