You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2019/01/14 02:41:07 UTC

[servicecomb-java-chassis] 02/04: [SCB-1096]change the method calculate process cpu rate to same with top: fix junit

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 9db60ce21970b04f3464f539a015a87f24f130fa
Author: heyile <25...@qq.com>
AuthorDate: Wed Jan 9 22:45:03 2019 +0800

    [SCB-1096]change the method calculate process cpu rate to same with top: fix junit
---
 .../org/apache/servicecomb/metrics/core/meter/os/cpu/CpuUtils.java  | 6 ------
 .../apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java    | 1 -
 .../servicecomb/metrics/core/meter/os/cpu/ProcessCpuUsage.java      | 3 +++
 .../servicecomb/metrics/core/publish/DefaultLogPublisher.java       | 4 ++--
 .../org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java  | 4 ++--
 .../org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java   | 2 +-
 .../servicecomb/metrics/core/publish/TestDefaultLogPublisher.java   | 2 +-
 7 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/CpuUtils.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/CpuUtils.java
index 2519bb8..4ad9acf 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/CpuUtils.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/CpuUtils.java
@@ -63,10 +63,6 @@ public final class CpuUtils {
     return summary(stats, 1, 8);
   }
 
-  public static double readProcStatTotal(String[] stats) {
-    return summary(stats, 1, 8);
-  }
-
   private static double readUptimeTotal() {
     String[] uptime = readAndSplitFirstLine(UPTIME);
     return Double.parseDouble(uptime[0]);
@@ -97,7 +93,6 @@ public final class CpuUtils {
         continue;
       }
 
-      /* want under 0.1% error */
       if (0 == (long) ((up2 - up1) * 1000.0 / up1)) {
         break;
       }
@@ -105,7 +100,6 @@ public final class CpuUtils {
 
     seconds = (up1 + up2) / 2;
     long hz = Math.round(jiffies / seconds / Runtime.getRuntime().availableProcessors());
-    /* actual values used by 2.4 kernels: 32 64 100 128 1000 1024 1200 */
     /* S/390 (sometimes) */
     if (isBetween(hz, 9, 11)) {
       return 10;
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java
index 2ec1670..9b35bbe 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java
@@ -66,6 +66,5 @@ public class OsCpuUsage extends AbstractCpuUsage {
     if (usage > 1) {
       usage = 1;
     }
-    usage *= cpuCount;
   }
 }
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/ProcessCpuUsage.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/ProcessCpuUsage.java
index b0116bb..524951a 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/ProcessCpuUsage.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/ProcessCpuUsage.java
@@ -27,6 +27,8 @@ import com.netflix.spectator.api.Id;
  * pid  comm      state  ppid  pgrp  session  tty_nr  tpgid  flags     minflt  cminflt   majflt  cmajflt  utime   stime  cutime cstime
  * 0    1         2      3     4     5        6       7      8         9       10        11      12       13      14     15     16
  * busy = utime + stime
+ * CMD: /proc/uptime
+ * total = uptime[0] * cpuNum * userHZ
  *
  */
 public class ProcessCpuUsage extends AbstractCpuUsage {
@@ -59,5 +61,6 @@ public class ProcessCpuUsage extends AbstractCpuUsage {
     if (usage > 1) {
       usage = 1;
     }
+    usage *= cpuCount;
   }
 }
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
index 7b3b488..928971e 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
@@ -32,7 +32,6 @@ import org.apache.servicecomb.foundation.metrics.registry.GlobalRegistry;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.metrics.core.VertxMetersInitializer;
 import org.apache.servicecomb.metrics.core.meter.invocation.MeterInvocationConst;
-import org.apache.servicecomb.metrics.core.meter.os.CpuMeter;
 import org.apache.servicecomb.metrics.core.meter.os.NetMeter;
 import org.apache.servicecomb.metrics.core.meter.os.OsMeter;
 import org.apache.servicecomb.metrics.core.publish.model.DefaultPublishModel;
@@ -176,7 +175,8 @@ public class DefaultLogPublisher implements MetricsInitializer {
     double processRate = processNode.summary();
 
     appendLine(sb, "  cpu:");
-    appendLine(sb, "    all: %.2f%%    process: %.2f%%", allRate * 100, processRate * 100);
+    appendLine(sb, "    all: %.2f%%    process: %.2f%%    idle: %.2f%%", allRate * 100, processRate * 100,
+        (1 - allRate) * 100);
   }
 
 
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java
index 30cc412..b2f321d 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java
@@ -87,7 +87,7 @@ public class TestCpuMeter {
     };
     cpuMeter.update();
 
-    Assert.assertEquals(1.75, cpuMeter.getAllCpuUsage().getUsage(), 0.0);
+    Assert.assertEquals(0.875, cpuMeter.getAllCpuUsage().getUsage(), 0.0);
     Assert.assertEquals(0.5, cpuMeter.getProcessCpuUsage().getUsage(), 0.0);
   }
 
@@ -191,7 +191,7 @@ public class TestCpuMeter {
     Assert.assertEquals(2, measurements.size());
     Measurement measurement = measurements.get(0);
     Assert.assertEquals(0, measurement.timestamp());
-    Assert.assertEquals(1.75, measurement.value(), 0.0);
+    Assert.assertEquals(0.875, measurement.value(), 0.0);
     measurement = measurements.get(1);
     Assert.assertEquals(0, measurement.timestamp());
     Assert.assertEquals(0.5, measurement.value(), 0.0);
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java
index e93518a..994c3dd 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java
@@ -105,7 +105,7 @@ public class TestOsMeter {
     osMeter.calcMeasurements(1, 1);
     ArrayList<Measurement> measurements = Lists.newArrayList(osMeter.measure());
     Assert.assertEquals(6, measurements.size());
-    Assert.assertEquals(1.75, measurements.get(0).value(), 0.0);
+    Assert.assertEquals(0.875, measurements.get(0).value(), 0.0);
     Assert.assertEquals(0.5, measurements.get(1).value(), 0.0);
     Assert.assertEquals(1.0, measurements.get(2).value(), 0.0);
     Assert.assertEquals(1.0, measurements.get(3).value(), 0.0);
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
index 81f29dc..5687529 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
@@ -238,7 +238,7 @@ public class TestDefaultLogPublisher {
     Assert.assertEquals("\n"
             + "os:\n"
             + "  cpu:\n"
-            + "    all: 100.00%    process: 100.00%\n"
+            + "    all: 100.00%    process: 100.00%    idle: 0.00%\n"
             + "  net:\n"
             + "    send(Bps)    recv(Bps)    send(pps)    recv(pps)    interface\n"
             + "    1            1            1            1            eth0\n"