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:
Lucian Petrut
2023-10-10 16:22:27 +03:00
parent 922478fbda
commit ec90891636

View File

@@ -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