From 246ea6b38b8160c7a600be8f0279e34132ac8ef9 Mon Sep 17 00:00:00 2001 From: xbkaishui Date: Tue, 1 Sep 2020 17:47:35 +0800 Subject: [PATCH] Make the cpu usage percent always greater than 1 (#5422) * fix bug #5417, make the CPU usage percent always >= 1 --- .../oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java | 4 +++- .../agent/kafka/provider/handler/JVMMetricsHandlerTest.java | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java index 0db68dce2..f1ab7b955 100644 --- a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java +++ b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java @@ -77,7 +77,9 @@ public class JVMSourceDispatcher { serviceInstanceJVMCPU.setName(serviceInstance); serviceInstanceJVMCPU.setServiceId(serviceId); serviceInstanceJVMCPU.setServiceName(service); - serviceInstanceJVMCPU.setUsePercent(cpu.getUsagePercent()); + // If the cpu usage percent is less than 1, will set to 1 + double adjustedCpuUsagePercent = Math.max(cpu.getUsagePercent(), 1.0); + serviceInstanceJVMCPU.setUsePercent(adjustedCpuUsagePercent); serviceInstanceJVMCPU.setTimeBucket(timeBucket); sourceReceiver.receive(serviceInstanceJVMCPU); } diff --git a/oap-server/server-fetcher-plugin/kafka-fetcher-plugin/src/test/java/org/apache/skywalking/oap/server/analyzer/agent/kafka/provider/handler/JVMMetricsHandlerTest.java b/oap-server/server-fetcher-plugin/kafka-fetcher-plugin/src/test/java/org/apache/skywalking/oap/server/analyzer/agent/kafka/provider/handler/JVMMetricsHandlerTest.java index 4ea6f7380..a9ff2f046 100644 --- a/oap-server/server-fetcher-plugin/kafka-fetcher-plugin/src/test/java/org/apache/skywalking/oap/server/analyzer/agent/kafka/provider/handler/JVMMetricsHandlerTest.java +++ b/oap-server/server-fetcher-plugin/kafka-fetcher-plugin/src/test/java/org/apache/skywalking/oap/server/analyzer/agent/kafka/provider/handler/JVMMetricsHandlerTest.java @@ -46,6 +46,8 @@ import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; +import static org.hamcrest.CoreMatchers.is; + public class JVMMetricsHandlerTest { private static final String TOPIC_NAME = "skywalking-metrics"; private JVMMetricsHandler handler = null; @@ -59,6 +61,8 @@ public class JVMMetricsHandlerTest { @Override protected void verify(final List sourceList) throws Throwable { Assert.assertTrue(sourceList.get(0) instanceof ServiceInstanceJVMCPU); + ServiceInstanceJVMCPU serviceInstanceJVMCPU = (ServiceInstanceJVMCPU) sourceList.get(0); + Assert.assertThat(serviceInstanceJVMCPU.getUsePercent(), is(1.0)); Assert.assertTrue(sourceList.get(1) instanceof ServiceInstanceJVMMemory); Assert.assertTrue(sourceList.get(2) instanceof ServiceInstanceJVMMemoryPool); Assert.assertTrue(sourceList.get(3) instanceof ServiceInstanceJVMGC);