From 0c27046fbe927fb0383fe4bbe86a64767cd7615a Mon Sep 17 00:00:00 2001 From: Brad Klein Date: Wed, 21 Sep 2016 10:57:14 -0600 Subject: [PATCH] Change cpu load averages to be normalized by core count Change-Id: I856eb41f9c4fa7bccfada29e7ec4be715b4ab5b5 --- docs/Plugins.md | 6 +++--- monasca_agent/collector/checks_d/load.py | 15 +++++++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/Plugins.md b/docs/Plugins.md index 70d7bba2..b5e22cd9 100644 --- a/docs/Plugins.md +++ b/docs/Plugins.md @@ -342,9 +342,9 @@ This section documents the system metrics that are sent by the Agent. ### Load | Metric Name | Dimensions | Semantics | | ----------- | ---------- | --------- | -| load.avg_1_min | | The average system load over a 1 minute period -| load.avg_5_min | | The average system load over a 5 minute period -| load.avg_15_min | | The average system load over a 15 minute period +| load.avg_1_min | | The normalized (by number of logical cores) average system load over a 1 minute period +| load.avg_5_min | | The normalized (by number of logical cores) average system load over a 5 minute period +| load.avg_15_min | | The normalized (by number of logical cores) average system load over a 15 minute period ### Memory | Metric Name | Dimensions | Semantics | diff --git a/monasca_agent/collector/checks_d/load.py b/monasca_agent/collector/checks_d/load.py index 8291ccdf..2ac7f968 100644 --- a/monasca_agent/collector/checks_d/load.py +++ b/monasca_agent/collector/checks_d/load.py @@ -50,14 +50,21 @@ class Load(checks.AgentCheck): dimensions = self._set_dimensions(None) + # + # Normalize the load averages by number of cores + # so the metric is useful for alarming across + # hosts with varying core numbers + # + num_cores = psutil.cpu_count(logical=True) + self.gauge('load.avg_1_min', - float(load[0]), + round((float(load[0]) / num_cores), 3), dimensions=dimensions) self.gauge('load.avg_5_min', - float(load[1]), + round((float(load[1]) / num_cores), 3), dimensions=dimensions) self.gauge('load.avg_15_min', - float(load[2]), + round((float(load[2]) / num_cores), 3), dimensions=dimensions) - log.debug('Collected 3 load metrics') + log.debug("Collected 3 load metrics (normalized by {} cores)".format(num_cores))