Improve vm_consolidation logging
We're adding a few info log messages in order to trace the "vm consolidation" strategy more easily. Change-Id: I8ce1a9dd173733f1b801839d3ad0c1269c4306bb
This commit is contained in:
@@ -307,6 +307,8 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
|||||||
node_cpu_util += instance_util['cpu']
|
node_cpu_util += instance_util['cpu']
|
||||||
node_ram_util += instance_util['ram']
|
node_ram_util += instance_util['ram']
|
||||||
node_disk_util += instance_util['disk']
|
node_disk_util += instance_util['disk']
|
||||||
|
LOG.debug("instance utilization: %s %s",
|
||||||
|
instance, instance_util)
|
||||||
|
|
||||||
return dict(cpu=node_cpu_util, ram=node_ram_util,
|
return dict(cpu=node_cpu_util, ram=node_ram_util,
|
||||||
disk=node_disk_util)
|
disk=node_disk_util)
|
||||||
@@ -388,8 +390,15 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
|||||||
instance_utilization = self.get_instance_utilization(instance)
|
instance_utilization = self.get_instance_utilization(instance)
|
||||||
metrics = ['cpu', 'ram', 'disk']
|
metrics = ['cpu', 'ram', 'disk']
|
||||||
for m in metrics:
|
for m in metrics:
|
||||||
if (instance_utilization[m] + node_utilization[m] >
|
fits = (instance_utilization[m] + node_utilization[m] <=
|
||||||
node_capacity[m] * cc[m]):
|
node_capacity[m] * cc[m])
|
||||||
|
LOG.debug(
|
||||||
|
"Instance fits: %s, metric: %s, instance: %s, "
|
||||||
|
"node: %s, instance utilization: %s, "
|
||||||
|
"node utilization: %s, node capacity: %s, cc: %s",
|
||||||
|
fits, m, instance, node, instance_utilization[m],
|
||||||
|
node_utilization[m], node_capacity[m], cc[m])
|
||||||
|
if not fits:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -424,6 +433,9 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
|||||||
for a in actions:
|
for a in actions:
|
||||||
self.solution.actions.remove(a)
|
self.solution.actions.remove(a)
|
||||||
self.number_of_migrations -= 1
|
self.number_of_migrations -= 1
|
||||||
|
LOG.info("Optimized migrations: %s. "
|
||||||
|
"Source: %s, destination: %s", actions,
|
||||||
|
src_name, dst_name)
|
||||||
src_node = self.compute_model.get_node_by_name(src_name)
|
src_node = self.compute_model.get_node_by_name(src_name)
|
||||||
dst_node = self.compute_model.get_node_by_name(dst_name)
|
dst_node = self.compute_model.get_node_by_name(dst_name)
|
||||||
instance = self.compute_model.get_instance_by_uuid(
|
instance = self.compute_model.get_instance_by_uuid(
|
||||||
@@ -460,6 +472,8 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
|||||||
key=lambda x: self.get_instance_utilization(
|
key=lambda x: self.get_instance_utilization(
|
||||||
x)['cpu']
|
x)['cpu']
|
||||||
):
|
):
|
||||||
|
LOG.info("Node %s overloaded, attempting to reduce load.",
|
||||||
|
node)
|
||||||
# skip exclude instance when migrating
|
# skip exclude instance when migrating
|
||||||
if instance.watcher_exclude:
|
if instance.watcher_exclude:
|
||||||
LOG.debug("Instance is excluded by scope, "
|
LOG.debug("Instance is excluded by scope, "
|
||||||
@@ -468,11 +482,19 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
|||||||
for destination_node in reversed(sorted_nodes):
|
for destination_node in reversed(sorted_nodes):
|
||||||
if self.instance_fits(
|
if self.instance_fits(
|
||||||
instance, destination_node, cc):
|
instance, destination_node, cc):
|
||||||
|
LOG.info("Offload: found fitting "
|
||||||
|
"destination (%s) for instance: %s. "
|
||||||
|
"Planning migration.",
|
||||||
|
destination_node, instance.uuid)
|
||||||
self.add_migration(instance, node,
|
self.add_migration(instance, node,
|
||||||
destination_node)
|
destination_node)
|
||||||
break
|
break
|
||||||
if not self.is_overloaded(node, cc):
|
if not self.is_overloaded(node, cc):
|
||||||
|
LOG.info("Node %s no longer overloaded.", node)
|
||||||
break
|
break
|
||||||
|
else:
|
||||||
|
LOG.info("Node still overloaded (%s), "
|
||||||
|
"continuing offload phase.", node)
|
||||||
|
|
||||||
def consolidation_phase(self, cc):
|
def consolidation_phase(self, cc):
|
||||||
"""Perform consolidation phase.
|
"""Perform consolidation phase.
|
||||||
@@ -508,6 +530,10 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
|||||||
break
|
break
|
||||||
if self.instance_fits(
|
if self.instance_fits(
|
||||||
instance, destination_node, cc):
|
instance, destination_node, cc):
|
||||||
|
LOG.info("Consolidation: found fitting "
|
||||||
|
"destination (%s) for instance: %s. "
|
||||||
|
"Planning migration.",
|
||||||
|
destination_node, instance.uuid)
|
||||||
self.add_migration(instance, node,
|
self.add_migration(instance, node,
|
||||||
destination_node)
|
destination_node)
|
||||||
break
|
break
|
||||||
|
|||||||
Reference in New Issue
Block a user