Skip to content

Commit f230947

Browse files
Improve JFR async profiler parser (#12777)
1 parent b6d1190 commit f230947

File tree

57 files changed

+625
-1933
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+625
-1933
lines changed

LICENSE

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,9 @@ The text of each license is the standard Apache 2.0 license.
225225
mvnw files from https://github.com/apache/maven-wrapper Apache 2.0
226226
svg files from skywalking-ui/src/assets/icons: https://github.com/google/material-design-icons Apache 2.0
227227
ZipkinQueryHandler.java reference from zipkin2.server.internal.ZipkinQueryApiV2: https://github.com/openzipkin/zipkin Apache 2.0
228-
async-profiler parser files in server-library/library-async-profiler-jfr-parser from https://github.com/async-profiler/async-profiler/tree/v3.0 Apache 2.0
228+
Arguments.java in server-library/library-async-profiler-jfr-parser reference from https://github.com/async-profiler/async-profiler/tree/master Apache 2.0
229+
CallStack.java in server-library/library-async-profiler-jfr-parser reference from https://github.com/async-profiler/async-profiler/tree/master Apache 2.0
230+
Classifier.java in server-library/library-async-profiler-jfr-parser reference from https://github.com/async-profiler/async-profiler/tree/master Apache 2.0
231+
Index.java in server-library/library-async-profiler-jfr-parser reference from https://github.com/async-profiler/async-profiler/tree/master Apache 2.0
232+
Frame.java in server-library/library-async-profiler-jfr-parser reference from https://github.com/async-profiler/async-profiler/tree/master Apache 2.0
233+
JFRConverter.java in server-library/library-async-profiler-jfr-parser reference from https://github.com/async-profiler/async-profiler/tree/master Apache 2.0

dist-material/release-docs/LICENSE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,7 @@ The text of each license is the standard Apache 2.0 license.
371371
https://mvnrepository.com/artifact/org.snakeyaml/snakeyaml-engine/2.6 Apache-2.0
372372
https://mvnrepository.com/artifact/org.xerial.snappy/snappy-java/1.1.8.4 Apache-2.0
373373
https://mvnrepository.com/artifact/org.yaml/snakeyaml/2.0 Apache-2.0
374+
https://mvnrepository.com/artifact/tools.profiler/async-profiler-converter/3.0 Apache-2.0
374375
https://npmjs.com/package/typescript/v/4.7.4 4.7.4 Apache-2.0
375376

376377
========================================================================

docs/en/setup/backend/configuration-vocabulary.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,9 @@ The Configuration Vocabulary lists all available configurations provided by `app
362362
| ai-pipeline | default | | | |
363363
| - | - | uriRecognitionServerAddr | The address of the URI recognition server. | SW_AI_PIPELINE_URI_RECOGNITION_SERVER_ADDR | - |
364364
| - | - | uriRecognitionServerPort | The port of the URI recognition server. | SW_AI_PIPELINE_URI_RECOGNITION_SERVER_PORT | 17128 |
365-
| receiver-async-profiler | default | gRPC services that accept async-profiler task status and data reporter. | - | - | |
366-
| - | - | jfrMaxSize | Used to manage the maximum size of the jfr file that can be received, the unit is Byte, default is 30M. | SW_RECEIVER_ASYNC_PROFILER_JFR_MAX_SIZE | 31457280 |
365+
| receiver-async-profiler | default | gRPC services that accept async-profiler task status and data reporter. | - | - | |
366+
| - | - | jfrMaxSize | Used to manage the maximum size of the jfr file that can be received, the unit is Byte, default is 30M. | SW_RECEIVER_ASYNC_PROFILER_JFR_MAX_SIZE | 31457280 |
367+
| - | - | memoryParserEnabled | Used to determine whether to receive jfr in memory file or physical file mode. | SW_RECEIVER_ASYNC_PROFILER_MEMORY_PARSER_ENABLED | true |
367368
## Note
368369

369370
¹ System Environment Variable name could be declared and changed in `application.yml`. The names listed here are simply

oap-server-bom/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
<consul.client.version>1.5.3</consul.client.version>
8080
<commons-net.version>3.9.0</commons-net.version>
8181
<maven-core.version>3.9.0</maven-core.version>
82+
<async-profiler-converter.version>3.0</async-profiler-converter.version>
8283
</properties>
8384

8485
<dependencyManagement>
@@ -672,6 +673,12 @@
672673
<version>${maven-core.version}</version>
673674
<scope>provided</scope>
674675
</dependency>
676+
677+
<dependency>
678+
<groupId>tools.profiler</groupId>
679+
<artifactId>async-profiler-converter</artifactId>
680+
<version>${async-profiler-converter.version}</version>
681+
</dependency>
675682
</dependencies>
676683
</dependencyManagement>
677684
</project>

oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/asyncprofiler/AsyncProfilerQueryService.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
import org.apache.skywalking.oap.server.core.storage.profiling.asyncprofiler.IAsyncProfilerTaskLogQueryDAO;
3232
import org.apache.skywalking.oap.server.core.storage.profiling.asyncprofiler.IAsyncProfilerTaskQueryDAO;
3333
import org.apache.skywalking.oap.server.core.storage.profiling.asyncprofiler.IJFRDataQueryDAO;
34-
import org.apache.skywalking.oap.server.library.jfr.parser.convert.FrameTree;
35-
import org.apache.skywalking.oap.server.library.jfr.parser.convert.JfrMergeBuilder;
36-
import org.apache.skywalking.oap.server.library.jfr.parser.type.event.JFREventType;
34+
import org.apache.skywalking.oap.server.library.jfr.type.FrameTree;
35+
import org.apache.skywalking.oap.server.library.jfr.type.JFREventType;
36+
import org.apache.skywalking.oap.server.library.jfr.parser.JFRMergeBuilder;
3737
import org.apache.skywalking.oap.server.library.module.ModuleManager;
3838
import org.apache.skywalking.oap.server.library.module.Service;
3939

@@ -61,7 +61,7 @@ private IAsyncProfilerTaskQueryDAO getTaskQueryDAO() {
6161
return taskQueryDAO;
6262
}
6363

64-
private IJFRDataQueryDAO getJfrDataQueryDAO() {
64+
private IJFRDataQueryDAO getJFRDataQueryDAO() {
6565
if (dataQueryDAO == null) {
6666
this.dataQueryDAO = moduleManager.find(StorageModule.NAME)
6767
.provider()
@@ -93,12 +93,12 @@ public List<AsyncProfilerTask> queryTask(String serviceId, Long startTime, Long
9393
return getTaskQueryDAO().getTaskList(serviceId, startTimeBucket, endTimeBucket, limit);
9494
}
9595

96-
public AsyncProfilerStackTree queryJfrData(String taskId, List<String> instanceIds, JFREventType eventType) throws IOException {
97-
List<JFRProfilingDataRecord> jfrDataList = getJfrDataQueryDAO().getByTaskIdAndInstancesAndEvent(taskId, instanceIds, eventType.name());
96+
public AsyncProfilerStackTree queryJFRData(String taskId, List<String> instanceIds, JFREventType eventType) throws IOException {
97+
List<JFRProfilingDataRecord> jfrDataList = getJFRDataQueryDAO().getByTaskIdAndInstancesAndEvent(taskId, instanceIds, eventType.name());
9898
List<FrameTree> trees = jfrDataList.stream()
9999
.map(data -> GSON.fromJson(new String(data.getDataBinary()), FrameTree.class))
100100
.collect(Collectors.toList());
101-
FrameTree resultTree = new JfrMergeBuilder()
101+
FrameTree resultTree = new JFRMergeBuilder()
102102
.merge(trees)
103103
.build();
104104
return new AsyncProfilerStackTree(eventType, resultTree);
@@ -111,7 +111,7 @@ public List<AsyncProfilerTaskLog> queryAsyncProfilerTaskLogs(String taskId) thro
111111

112112
private List<AsyncProfilerTaskLog> findMatchedLogs(final String taskID, final List<AsyncProfilerTaskLog> allLogs) {
113113
return allLogs.stream()
114-
.filter(l -> Objects.equals(l.getTaskId(), taskID))
114+
.filter(l -> Objects.equals(l.getId(), taskID))
115115
.map(this::extendTaskLog)
116116
.collect(Collectors.toList());
117117
}

oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/asyncprofiler/analyze/JFRAnalyzer.java

Lines changed: 0 additions & 82 deletions
This file was deleted.

oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/asyncprofiler/storage/JFRProfilingDataRecord.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity;
3030
import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage;
3131
import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder;
32-
import org.apache.skywalking.oap.server.library.jfr.parser.convert.FrameTree;
33-
import org.apache.skywalking.oap.server.library.jfr.parser.type.event.JFREventType;
32+
import org.apache.skywalking.oap.server.library.jfr.type.FrameTree;
33+
import org.apache.skywalking.oap.server.library.jfr.type.JFREventType;
3434

3535
import java.nio.charset.StandardCharsets;
3636

oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AsyncProfilerTaskLog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
@AllArgsConstructor
3232
@Builder
3333
public class AsyncProfilerTaskLog {
34+
// task id
3435
private String id;
35-
private String taskId;
3636

3737
// instance
3838
private String instanceId;

oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/AsyncProfilerAnalyzatonRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
import lombok.Getter;
2323
import lombok.Setter;
24-
import org.apache.skywalking.oap.server.library.jfr.parser.type.event.JFREventType;
24+
import org.apache.skywalking.oap.server.library.jfr.type.JFREventType;
2525

2626
import java.util.List;
2727

oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/AsyncProfilerStackTree.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import lombok.Getter;
2424
import lombok.NoArgsConstructor;
2525
import lombok.Setter;
26-
import org.apache.skywalking.oap.server.library.jfr.parser.convert.FrameTree;
27-
import org.apache.skywalking.oap.server.library.jfr.parser.type.event.JFREventType;
26+
import org.apache.skywalking.oap.server.library.jfr.type.FrameTree;
27+
import org.apache.skywalking.oap.server.library.jfr.type.JFREventType;
2828

2929
import java.util.List;
3030
import java.util.Objects;

0 commit comments

Comments
 (0)