From bfbbcb3e68e019da4657ef0da22b889de656ae3f Mon Sep 17 00:00:00 2001 From: Luck Date: Tue, 28 Dec 2021 18:12:33 +0000 Subject: Include platform and system statistics in profiler viewer payload --- .../src/main/resources/linux/libasyncProfiler.so | Bin 398099 -> 0 bytes .../src/main/resources/macosx/libasyncProfiler.so | Bin 599568 -> 0 bytes .../src/main/resources/spark/linux/libasyncProfiler.so | Bin 0 -> 398099 bytes .../main/resources/spark/macosx/libasyncProfiler.so | Bin 0 -> 599568 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 spark-common/src/main/resources/linux/libasyncProfiler.so delete mode 100755 spark-common/src/main/resources/macosx/libasyncProfiler.so create mode 100755 spark-common/src/main/resources/spark/linux/libasyncProfiler.so create mode 100755 spark-common/src/main/resources/spark/macosx/libasyncProfiler.so (limited to 'spark-common/src/main/resources') diff --git a/spark-common/src/main/resources/linux/libasyncProfiler.so b/spark-common/src/main/resources/linux/libasyncProfiler.so deleted file mode 100755 index ddee900..0000000 Binary files a/spark-common/src/main/resources/linux/libasyncProfiler.so and /dev/null differ diff --git a/spark-common/src/main/resources/macosx/libasyncProfiler.so b/spark-common/src/main/resources/macosx/libasyncProfiler.so deleted file mode 100755 index 75daf6e..0000000 Binary files a/spark-common/src/main/resources/macosx/libasyncProfiler.so and /dev/null differ diff --git a/spark-common/src/main/resources/spark/linux/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/libasyncProfiler.so new file mode 100755 index 0000000..ddee900 Binary files /dev/null and b/spark-common/src/main/resources/spark/linux/libasyncProfiler.so differ diff --git a/spark-common/src/main/resources/spark/macosx/libasyncProfiler.so b/spark-common/src/main/resources/spark/macosx/libasyncProfiler.so new file mode 100755 index 0000000..75daf6e Binary files /dev/null and b/spark-common/src/main/resources/spark/macosx/libasyncProfiler.so differ -- cgit From 530610afda0697536bb0d103d95f8e4ebf73b7c8 Mon Sep 17 00:00:00 2001 From: Luck Date: Tue, 22 Feb 2022 21:09:32 +0000 Subject: Update async-profiler, add support for linux/aarch64 (#181) --- spark-common/build.gradle | 2 +- .../common/sampler/async/AsyncProfilerAccess.java | 18 ++++++++++-------- .../spark/common/sampler/async/jfr/JfrReader.java | 18 ++++++++++++++++++ .../resources/spark/linux/aarch64/libasyncProfiler.so | Bin 0 -> 318936 bytes .../resources/spark/linux/amd64/libasyncProfiler.so | Bin 0 -> 332431 bytes .../main/resources/spark/linux/libasyncProfiler.so | Bin 398099 -> 0 bytes .../main/resources/spark/macos/libasyncProfiler.so | Bin 0 -> 670944 bytes .../main/resources/spark/macosx/libasyncProfiler.so | Bin 599568 -> 0 bytes 8 files changed, 29 insertions(+), 9 deletions(-) create mode 100755 spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so create mode 100755 spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so delete mode 100755 spark-common/src/main/resources/spark/linux/libasyncProfiler.so create mode 100755 spark-common/src/main/resources/spark/macos/libasyncProfiler.so delete mode 100755 spark-common/src/main/resources/spark/macosx/libasyncProfiler.so (limited to 'spark-common/src/main/resources') diff --git a/spark-common/build.gradle b/spark-common/build.gradle index aa0f409..554eec2 100644 --- a/spark-common/build.gradle +++ b/spark-common/build.gradle @@ -8,7 +8,7 @@ license { dependencies { api project(':spark-api') - implementation 'com.github.jvm-profiling-tools:async-profiler:v2.5' + implementation 'com.github.jvm-profiling-tools:async-profiler:v2.7' implementation 'org.ow2.asm:asm:9.1' implementation 'com.google.protobuf:protobuf-javalite:3.15.6' implementation 'com.squareup.okhttp3:okhttp:3.14.1' diff --git a/spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java b/spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java index d1c8393..d642a53 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java +++ b/spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java @@ -20,8 +20,8 @@ package me.lucko.spark.common.sampler.async; -import com.google.common.collect.ImmutableSetMultimap; -import com.google.common.collect.Multimap; +import com.google.common.collect.ImmutableTable; +import com.google.common.collect.Table; import me.lucko.spark.common.SparkPlatform; import me.lucko.spark.common.util.TemporaryFiles; @@ -108,18 +108,20 @@ public enum AsyncProfilerAccess { String os = System.getProperty("os.name").toLowerCase(Locale.ROOT).replace(" ", ""); String arch = System.getProperty("os.arch").toLowerCase(Locale.ROOT); - Multimap supported = ImmutableSetMultimap.builder() - .put("linux", "amd64") - .put("macosx", "amd64") - .put("macosx", "aarch64") + Table supported = ImmutableTable.builder() + .put("linux", "amd64", "linux/amd64") + .put("linux", "aarch64", "linux/aarch64") + .put("macosx", "amd64", "macos") + .put("macosx", "aarch64", "macos") .build(); - if (!supported.containsEntry(os, arch)) { + String libPath = supported.get(os, arch); + if (libPath == null) { throw new UnsupportedSystemException(os, arch); } // extract the profiler binary from the spark jar file - String resource = "spark/" + os + "/libasyncProfiler.so"; + String resource = "spark/" + libPath + "/libasyncProfiler.so"; URL profilerResource = AsyncProfilerAccess.class.getClassLoader().getResource(resource); if (profilerResource == null) { throw new IllegalStateException("Could not find " + resource + " in spark jar file"); diff --git a/spark-common/src/main/java/me/lucko/spark/common/sampler/async/jfr/JfrReader.java b/spark-common/src/main/java/me/lucko/spark/common/sampler/async/jfr/JfrReader.java index a705f2d..e0cc4e9 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/sampler/async/jfr/JfrReader.java +++ b/spark-common/src/main/java/me/lucko/spark/common/sampler/async/jfr/JfrReader.java @@ -59,6 +59,7 @@ public class JfrReader implements Closeable { public final Dictionary stackFrames = new Dictionary<>(); // spark public final Map frameTypes = new HashMap<>(); public final Map threadStates = new HashMap<>(); + public final Map settings = new HashMap<>(); private int executionSample; private int nativeMethodSample; @@ -67,6 +68,8 @@ public class JfrReader implements Closeable { private int allocationSample; private int monitorEnter; private int threadPark; + private int activeSetting; + private boolean activeSettingHasStack; public JfrReader(Path path) throws IOException { // spark - Path instead of String this.ch = FileChannel.open(path, StandardOpenOption.READ); // spark - Path instead of String @@ -129,6 +132,8 @@ public class JfrReader implements Closeable { if (cls == null || cls == ContendedLock.class) return (E) readContendedLock(false); } else if (type == threadPark) { if (cls == null || cls == ContendedLock.class) return (E) readContendedLock(true); + } else if (type == activeSetting) { + readActiveSetting(); } if ((pos += size) <= buf.limit()) { @@ -170,6 +175,17 @@ public class JfrReader implements Closeable { return new ContendedLock(time, tid, stackTraceId, duration, classId); } + private void readActiveSetting() { + long time = getVarlong(); + long duration = getVarlong(); + int tid = getVarint(); + if (activeSettingHasStack) getVarint(); + long id = getVarlong(); + String name = getString(); + String value = getString(); + settings.put(name, value); + } + private boolean readChunk(int pos) throws IOException { if (pos + CHUNK_HEADER_SIZE > buf.limit() || buf.getInt(pos) != CHUNK_SIGNATURE) { throw new IOException("Not a valid JFR file"); @@ -424,6 +440,8 @@ public class JfrReader implements Closeable { allocationSample = getTypeId("jdk.ObjectAllocationSample"); monitorEnter = getTypeId("jdk.JavaMonitorEnter"); threadPark = getTypeId("jdk.ThreadPark"); + activeSetting = getTypeId("jdk.ActiveSetting"); + activeSettingHasStack = activeSetting >= 0 && typesByName.get("jdk.ActiveSetting").field("stackTrace") != null; } private int getTypeId(String typeName) { diff --git a/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so new file mode 100755 index 0000000..bd920cd Binary files /dev/null and b/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so differ diff --git a/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so new file mode 100755 index 0000000..714ed4b Binary files /dev/null and b/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so differ diff --git a/spark-common/src/main/resources/spark/linux/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/libasyncProfiler.so deleted file mode 100755 index ddee900..0000000 Binary files a/spark-common/src/main/resources/spark/linux/libasyncProfiler.so and /dev/null differ diff --git a/spark-common/src/main/resources/spark/macos/libasyncProfiler.so b/spark-common/src/main/resources/spark/macos/libasyncProfiler.so new file mode 100755 index 0000000..2a1019e Binary files /dev/null and b/spark-common/src/main/resources/spark/macos/libasyncProfiler.so differ diff --git a/spark-common/src/main/resources/spark/macosx/libasyncProfiler.so b/spark-common/src/main/resources/spark/macosx/libasyncProfiler.so deleted file mode 100755 index 75daf6e..0000000 Binary files a/spark-common/src/main/resources/spark/macosx/libasyncProfiler.so and /dev/null differ -- cgit From 4fa21179b38a176c54b134295ae1c3a5e38f2288 Mon Sep 17 00:00:00 2001 From: Luck Date: Thu, 5 May 2022 21:18:40 +0100 Subject: Update linux amd64 async-profiler binary (#198) --- .../spark/linux/amd64/libasyncProfiler.so | Bin 332431 -> 342177 bytes 1 file changed, 0 insertions(+), 0 deletions(-) (limited to 'spark-common/src/main/resources') diff --git a/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so index 714ed4b..ec08696 100755 Binary files a/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so and b/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so differ -- cgit From c92099d289ec764ddb41c4c03d236ccb7825d5f4 Mon Sep 17 00:00:00 2001 From: Luck Date: Thu, 12 May 2022 20:05:22 +0100 Subject: Update async-profiler to v2.8 --- .../spark/linux/aarch64/libasyncProfiler.so | Bin 318936 -> 328432 bytes .../spark/linux/amd64/libasyncProfiler.so | Bin 342177 -> 342239 bytes .../main/resources/spark/macos/libasyncProfiler.so | Bin 670944 -> 688400 bytes 3 files changed, 0 insertions(+), 0 deletions(-) (limited to 'spark-common/src/main/resources') diff --git a/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so index bd920cd..35f83b2 100755 Binary files a/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so and b/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so differ diff --git a/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so index ec08696..edbf103 100755 Binary files a/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so and b/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so differ diff --git a/spark-common/src/main/resources/spark/macos/libasyncProfiler.so b/spark-common/src/main/resources/spark/macos/libasyncProfiler.so index 2a1019e..ab818e9 100755 Binary files a/spark-common/src/main/resources/spark/macos/libasyncProfiler.so and b/spark-common/src/main/resources/spark/macos/libasyncProfiler.so differ -- cgit