Transform KB into MB and normalize CPU
This patch set normalizes CPU for hardware.cpu.util meter and transform KB into MB fetched from hardware.memory.used meter. Change-Id: I6dd1d053e81f06c3adb6fb256ac77bbf55a07f3e
This commit is contained in:
@@ -25,6 +25,7 @@ import random
|
||||
import oslo_cache
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log
|
||||
import oslo_utils
|
||||
|
||||
from watcher._i18n import _LI, _
|
||||
from watcher.common import exception
|
||||
@@ -201,6 +202,8 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy):
|
||||
if avg_meter is None:
|
||||
raise exception.NoMetricValuesForInstance(
|
||||
resource_id=instance_uuid, metric_name=meter)
|
||||
if meter == 'cpu_util':
|
||||
avg_meter /= float(100)
|
||||
instance_load[meter] = avg_meter
|
||||
return instance_load
|
||||
|
||||
@@ -236,6 +239,10 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy):
|
||||
raise exception.NoSuchMetricForHost(
|
||||
metric=self.instance_metrics[metric],
|
||||
host=node_id)
|
||||
if self.instance_metrics[metric] == 'hardware.memory.used':
|
||||
avg_meter /= oslo_utils.units.Ki
|
||||
if self.instance_metrics[metric] == 'hardware.cpu.util':
|
||||
avg_meter /= 100
|
||||
hosts_load[node_id][metric] = avg_meter
|
||||
return hosts_load
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
import random
|
||||
|
||||
import oslo_utils
|
||||
|
||||
|
||||
class FakerMetricsCollector(object):
|
||||
def __init__(self):
|
||||
@@ -68,11 +70,12 @@ class FakerMetricsCollector(object):
|
||||
|
||||
def get_usage_node_ram(self, uuid):
|
||||
mock = {}
|
||||
mock['Node_0'] = 7
|
||||
mock['Node_1'] = 5
|
||||
mock['Node_2'] = 29
|
||||
mock['Node_3'] = 8
|
||||
mock['Node_4'] = 4
|
||||
# Ceilometer returns hardware.memory.used samples in KB.
|
||||
mock['Node_0'] = 7*oslo_utils.units.Ki
|
||||
mock['Node_1'] = 5*oslo_utils.units.Ki
|
||||
mock['Node_2'] = 29*oslo_utils.units.Ki
|
||||
mock['Node_3'] = 8*oslo_utils.units.Ki
|
||||
mock['Node_4'] = 4*oslo_utils.units.Ki
|
||||
|
||||
if uuid not in mock.keys():
|
||||
# mock[uuid] = random.randint(1, 4)
|
||||
@@ -136,11 +139,11 @@ class FakerMetricsCollector(object):
|
||||
# node 4
|
||||
mock['INSTANCE_7_hostname_7'] = 4
|
||||
|
||||
mock['Node_0'] = 0.07
|
||||
mock['Node_1'] = 0.05
|
||||
mock['Node_2'] = 0.1
|
||||
mock['Node_3'] = 0.04
|
||||
mock['Node_4'] = 0.02
|
||||
mock['Node_0'] = 7
|
||||
mock['Node_1'] = 5
|
||||
mock['Node_2'] = 10
|
||||
mock['Node_3'] = 4
|
||||
mock['Node_4'] = 2
|
||||
|
||||
if uuid not in mock.keys():
|
||||
# mock[uuid] = random.randint(1, 4)
|
||||
|
||||
@@ -86,7 +86,7 @@ class TestWorkloadStabilization(base.TestCase):
|
||||
self.m_model.return_value = self.fake_cluster.generate_scenario_1()
|
||||
instance_0_dict = {
|
||||
'uuid': 'INSTANCE_0', 'vcpus': 10,
|
||||
'cpu_util': 7, 'memory.resident': 2}
|
||||
'cpu_util': 0.07, 'memory.resident': 2}
|
||||
self.assertEqual(
|
||||
instance_0_dict, self.strategy.get_instance_load("INSTANCE_0"))
|
||||
|
||||
@@ -106,9 +106,8 @@ class TestWorkloadStabilization(base.TestCase):
|
||||
|
||||
def test_get_hosts_load(self):
|
||||
self.m_model.return_value = self.fake_cluster.generate_scenario_1()
|
||||
self.assertEqual(
|
||||
self.strategy.get_hosts_load(),
|
||||
self.hosts_load_assert)
|
||||
self.assertEqual(self.strategy.get_hosts_load(),
|
||||
self.hosts_load_assert)
|
||||
|
||||
def test_get_sd(self):
|
||||
test_cpu_sd = 0.027
|
||||
@@ -128,11 +127,12 @@ class TestWorkloadStabilization(base.TestCase):
|
||||
|
||||
def test_calculate_migration_case(self):
|
||||
self.m_model.return_value = self.fake_cluster.generate_scenario_1()
|
||||
self.assertEqual(
|
||||
self.strategy.calculate_migration_case(
|
||||
self.hosts_load_assert, "INSTANCE_5",
|
||||
"Node_2", "Node_1")[-1]["Node_1"],
|
||||
{'cpu_util': 2.55, 'memory.resident': 21, 'vcpus': 40})
|
||||
result = self.strategy.calculate_migration_case(
|
||||
self.hosts_load_assert, "INSTANCE_5", "Node_2", "Node_1")[-1][
|
||||
"Node_1"]
|
||||
result['cpu_util'] = round(result['cpu_util'], 3)
|
||||
self.assertEqual(result, {'cpu_util': 0.075, 'memory.resident': 21,
|
||||
'vcpus': 40})
|
||||
|
||||
def test_simulate_migrations(self):
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
@@ -174,7 +174,7 @@ class TestWorkloadStabilization(base.TestCase):
|
||||
)
|
||||
with mock.patch.object(self.strategy, 'migrate') as mock_migrate:
|
||||
self.strategy.do_execute()
|
||||
self.assertEqual(mock_migrate.call_count, 1)
|
||||
self.assertEqual(mock_migrate.call_count, 2)
|
||||
|
||||
def test_execute_nothing_to_migrate(self):
|
||||
self.m_model.return_value = self.fake_cluster.generate_scenario_1()
|
||||
|
||||
Reference in New Issue
Block a user