This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-java.git
The following commit(s) were added to refs/heads/main by this push:
new 97337063f8 Support jdk17 zgc (#541)
97337063f8 is described below
commit 97337063f8035f729c3262eff25fd957a108433e
Author: xu1009 <[email protected]>
AuthorDate: Thu Jun 1 13:06:15 2023 +0800
Support jdk17 zgc (#541)
---
CHANGES.md | 1 +
.../apm/agent/core/jvm/gc/CMSGCModule.java | 4 --
.../apm/agent/core/jvm/gc/G1GCModule.java | 4 --
.../skywalking/apm/agent/core/jvm/gc/GCModule.java | 17 ++------
.../apm/agent/core/jvm/gc/ParallelGCModule.java | 5 ---
.../apm/agent/core/jvm/gc/SerialGCModule.java | 4 --
.../apm/agent/core/jvm/gc/ZGCModule.java | 49 ++++++++++++++++------
7 files changed, 41 insertions(+), 43 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 5a18dc55a9..a641b1cb68 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -5,6 +5,7 @@ Release Notes.
8.17.0
------------------
+* Support Jdk17 ZGC metric collect
#### Documentation
diff --git
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java
index 521bf37e96..d1f6f058d8 100644
---
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java
+++
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/CMSGCModule.java
@@ -36,8 +36,4 @@ public class CMSGCModule extends GCModule {
return "ParNew";
}
- @Override
- protected String getNormalGCName() {
- return null;
- }
}
diff --git
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java
index c8b8666f35..733a031bb6 100644
---
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java
+++
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/G1GCModule.java
@@ -36,8 +36,4 @@ public class G1GCModule extends GCModule {
return "G1 Young Generation";
}
- @Override
- protected String getNormalGCName() {
- return null;
- }
}
diff --git
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java
index 50878f7c9e..73d54acfcc 100644
---
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java
+++
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/GCModule.java
@@ -18,11 +18,12 @@
package org.apache.skywalking.apm.agent.core.jvm.gc;
+import org.apache.skywalking.apm.network.language.agent.v3.GC;
+import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
+
import java.lang.management.GarbageCollectorMXBean;
import java.util.LinkedList;
import java.util.List;
-import org.apache.skywalking.apm.network.language.agent.v3.GC;
-import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
public abstract class GCModule implements GCMetricAccessor {
private List<GarbageCollectorMXBean> beans;
@@ -31,8 +32,6 @@ public abstract class GCModule implements GCMetricAccessor {
private long lastYGCCount = 0;
private long lastOGCCollectionTime = 0;
private long lastYGCCollectionTime = 0;
- private long lastNormalGCCount = 0;
- private long lastNormalGCTime = 0;
public GCModule(List<GarbageCollectorMXBean> beans) {
this.beans = beans;
@@ -64,15 +63,6 @@ public abstract class GCModule implements GCMetricAccessor {
long time = bean.getCollectionTime();
gcTime = time - lastOGCCollectionTime;
lastOGCCollectionTime = time;
- } else if (name.equals(getNormalGCName())) {
- phase = GCPhase.NORMAL;
- long collectionCount = bean.getCollectionCount();
- gcCount = collectionCount - lastNormalGCCount;
- lastNormalGCCount = collectionCount;
-
- long time = bean.getCollectionTime();
- gcTime = time - lastNormalGCTime;
- lastNormalGCTime = time;
} else {
continue;
}
@@ -87,5 +77,4 @@ public abstract class GCModule implements GCMetricAccessor {
protected abstract String getNewGCName();
- protected abstract String getNormalGCName();
}
diff --git
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
index 60e5325628..1773756e39 100644
---
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
+++
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
@@ -36,9 +36,4 @@ public class ParallelGCModule extends GCModule {
return "PS Scavenge";
}
- @Override
- protected String getNormalGCName() {
- return null;
- }
-
}
diff --git
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java
index 3279440a7c..7b5a5425ed 100644
---
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java
+++
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/SerialGCModule.java
@@ -36,8 +36,4 @@ public class SerialGCModule extends GCModule {
return "Copy";
}
- @Override
- protected String getNormalGCName() {
- return null;
- }
}
diff --git
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java
index 87f9f6537b..4c123fa45d 100644
---
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java
+++
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/gc/ZGCModule.java
@@ -18,27 +18,52 @@
package org.apache.skywalking.apm.agent.core.jvm.gc;
+import org.apache.skywalking.apm.network.language.agent.v3.GC;
+import org.apache.skywalking.apm.network.language.agent.v3.GCPhase;
+
import java.lang.management.GarbageCollectorMXBean;
+import java.util.LinkedList;
import java.util.List;
-public class ZGCModule extends GCModule {
+public class ZGCModule implements GCMetricAccessor {
+ private List<GarbageCollectorMXBean> beans;
+
+ private long lastNormalGCCount = 0;
+ private long lastNormalGCTime = 0;
public ZGCModule(List<GarbageCollectorMXBean> beans) {
- super(beans);
+ this.beans = beans;
}
@Override
- protected String getOldGCName() {
- return null;
- }
+ public List<GC> getGCList() {
+ List<GC> gcList = new LinkedList<GC>();
+ for (GarbageCollectorMXBean bean : beans) {
+ String name = bean.getName();
+ long gcCount = 0;
+ long gcTime = 0;
+ if (name.equals("ZGC")) {
+ long collectionCount = bean.getCollectionCount();
+ gcCount = collectionCount - lastNormalGCCount;
+ lastNormalGCCount = collectionCount;
- @Override
- protected String getNewGCName() {
- return null;
- }
+ long time = bean.getCollectionTime();
+ gcTime = time - lastNormalGCTime;
+ lastNormalGCTime = time;
+ } else if (name.equals("ZGC Cycles")) {
+ long collectionCount = bean.getCollectionCount();
+ gcCount = collectionCount - lastNormalGCCount;
+ lastNormalGCCount = collectionCount;
+ } else if (name.equals(" ZGC Pauses")) {
+ long time = bean.getCollectionTime();
+ gcTime = time - lastNormalGCTime;
+ lastNormalGCTime = time;
+ } else {
+ continue;
+ }
+
gcList.add(GC.newBuilder().setPhase(GCPhase.NORMAL).setCount(gcCount).setTime(gcTime).build());
+ }
- @Override
- protected String getNormalGCName() {
- return "ZGC";
+ return gcList;
}
}