aboutsummaryrefslogtreecommitdiffstats
path: root/metrics-proxy/src/main
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-14 15:27:03 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-10-14 15:32:25 +0200
commit40cb32ae00e8d4adf56dfbdf2e369bd2b87b5ea3 (patch)
treea7bb2e441af63461df9b5a3751e0c1a0f6bacd00 /metrics-proxy/src/main
parent27e48af5403b99793561ee8185961b4bf1cfc474 (diff)
Prevent division by zero
Diffstat (limited to 'metrics-proxy/src/main')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java
index c68e8214abf..0788ff9feb5 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java
@@ -51,8 +51,13 @@ public class SystemPoller {
this.jiffies = jiffies;
this.cpus = Math.max(1, cpus);
}
- long normalizedJiffies() {
- return jiffies / cpus;
+ /** 1.0 = 1 busy core Ranke = [0.0, #cores] */
+ double ratioSingleCoreJiffies(long partJiffies) {
+ return (double)(partJiffies * cpus) / Math.max(1.0, jiffies);
+ }
+ /** Range = [0.0, 1.0] */
+ double ratioJiffies(long partJiffies) {
+ return (double)(partJiffies) / Math.max(1.0, jiffies);
}
JiffiesAndCpus diff(JiffiesAndCpus prev) {
return (cpus == prev.cpus)
@@ -173,8 +178,8 @@ public class SystemPoller {
long diff = procJiffies - last;
if (diff >= 0) {
- metrics.add(new Metric(CPU, 100 * ((double) diff) / sysJiffiesDiff.normalizedJiffies(), timeStamp));
- metrics.add(new Metric(CPU_UTIL, 100 * ((double) diff) / sysJiffiesDiff.jiffies, timeStamp));
+ metrics.add(new Metric(CPU, 100 * sysJiffiesDiff.ratioSingleCoreJiffies(diff), timeStamp));
+ metrics.add(new Metric(CPU_UTIL, 100 * sysJiffiesDiff.ratioJiffies(diff), timeStamp));
}
lastCpuJiffiesMetrics.put(s, procJiffies);
s.setSystemMetrics(metrics);