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"