From 818d83c11c9912e317d15150ac3536336f48ecf8 Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Sun, 10 Nov 2019 00:26:23 +0800 Subject: [PATCH] support AsyncProfiler. #923 --- async-profiler/libasyncProfiler-linux-x64.so | Bin 0 -> 211761 bytes async-profiler/libasyncProfiler-mac-x64.so | Bin 0 -> 164636 bytes .../core/command/BuiltinCommandPack.java | 4 +- .../command/monitor200/ProfilerCommand.java | 344 ++++++++++++++++++ .../main/java/one/profiler/AsyncProfiler.java | 160 ++++++++ .../one/profiler/AsyncProfilerMXBean.java | 43 +++ core/src/main/java/one/profiler/Counter.java | 25 ++ core/src/main/java/one/profiler/Events.java | 28 ++ .../main/java/one/profiler/package-info.java | 5 + packaging/src/main/assembly/assembly.xml | 6 + 10 files changed, 614 insertions(+), 1 deletion(-) create mode 100755 async-profiler/libasyncProfiler-linux-x64.so create mode 100755 async-profiler/libasyncProfiler-mac-x64.so create mode 100644 core/src/main/java/com/taobao/arthas/core/command/monitor200/ProfilerCommand.java create mode 100644 core/src/main/java/one/profiler/AsyncProfiler.java create mode 100644 core/src/main/java/one/profiler/AsyncProfilerMXBean.java create mode 100644 core/src/main/java/one/profiler/Counter.java create mode 100644 core/src/main/java/one/profiler/Events.java create mode 100644 core/src/main/java/one/profiler/package-info.java diff --git a/async-profiler/libasyncProfiler-linux-x64.so b/async-profiler/libasyncProfiler-linux-x64.so new file mode 100755 index 0000000000000000000000000000000000000000..4f9232e1174b08070cb54383a125a600cc2f03af GIT binary patch literal 211761 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 Fe*tVihHL-; literal 0 HcmV?d00001 diff --git a/async-profiler/libasyncProfiler-mac-x64.so b/async-profiler/libasyncProfiler-mac-x64.so new file mode 100755 index 0000000000000000000000000000000000000000..9429b514337c9c6971ff387eb0b746d121f75d3b GIT binary patch literal 164636 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 d8oX_>#E9wLmu_XX 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%0A3^x*znA}Y6yATu|DU3E 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�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 literal 0 HcmV?d00001 diff --git a/core/src/main/java/com/taobao/arthas/core/command/BuiltinCommandPack.java b/core/src/main/java/com/taobao/arthas/core/command/BuiltinCommandPack.java index a1a01a62f..7b86d1ff1 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/BuiltinCommandPack.java +++ b/core/src/main/java/com/taobao/arthas/core/command/BuiltinCommandPack.java @@ -33,6 +33,7 @@ import com.taobao.arthas.core.command.monitor200.HeapDumpCommand; import com.taobao.arthas.core.command.monitor200.JvmCommand; import com.taobao.arthas.core.command.monitor200.MBeanCommand; import com.taobao.arthas.core.command.monitor200.MonitorCommand; +import com.taobao.arthas.core.command.monitor200.ProfilerCommand; import com.taobao.arthas.core.command.monitor200.StackCommand; import com.taobao.arthas.core.command.monitor200.ThreadCommand; import com.taobao.arthas.core.command.monitor200.TimeTunnelCommand; @@ -100,6 +101,7 @@ public class BuiltinCommandPack implements CommandResolver { commands.add(Command.create(CatCommand.class)); commands.add(Command.create(PwdCommand.class)); commands.add(Command.create(MBeanCommand.class)); - commands.add(Command.create(GrepCommand.class)); + commands.add(Command.create(GrepCommand.class)); + commands.add(Command.create(ProfilerCommand.class)); } } diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/ProfilerCommand.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/ProfilerCommand.java new file mode 100644 index 000000000..dbf3490e4 --- /dev/null +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/ProfilerCommand.java @@ -0,0 +1,344 @@ +package com.taobao.arthas.core.command.monitor200; + +import java.io.File; +import java.io.IOException; +import java.security.CodeSource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.taobao.arthas.common.OSUtils; +import com.taobao.arthas.core.command.Constants; +import com.taobao.arthas.core.shell.cli.CliToken; +import com.taobao.arthas.core.shell.cli.Completion; +import com.taobao.arthas.core.shell.cli.CompletionUtils; +import com.taobao.arthas.core.shell.command.AnnotatedCommand; +import com.taobao.arthas.core.shell.command.CommandProcess; +import com.taobao.arthas.core.util.LogUtil; +import com.taobao.middleware.cli.annotations.Argument; +import com.taobao.middleware.cli.annotations.DefaultValue; +import com.taobao.middleware.cli.annotations.Description; +import com.taobao.middleware.cli.annotations.Name; +import com.taobao.middleware.cli.annotations.Option; +import com.taobao.middleware.cli.annotations.Summary; +import com.taobao.middleware.logger.Logger; + +import one.profiler.AsyncProfiler; +import one.profiler.Counter; + +/** + * + * @author hengyunabc 2019-10-31 + * + */ +@Name("profiler") +@Summary("Profiler") +@Description("\nExamples:\n" + " mbean\n" + " mbean -m java.lang:type=Threading\n" + + " mbean java.lang:type=Threading\n" + " mbean java.lang:type=Threading *Count\n" + + " mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount\n" + + " mbean -i 1000 java.lang:type=Threading *Count\n" + Constants.WIKI + Constants.WIKI_HOME + "profiler") +public class ProfilerCommand extends AnnotatedCommand { + private static final Logger logger = LogUtil.getArthasLogger(); + + private String action; + private String actionArg; + + private String event; + + private String file; + /** + * output file format, default value is svg. + */ + private String format; + + /** + * sampling interval in ns (default: 10'000'000, i.e. 10 ms) + */ + private Long interval; + + private boolean threads; + + private static String libPath; + private static AsyncProfiler profiler = null; + + static { + String profierSoPath = null; + if (OSUtils.isMac()) { + profierSoPath = "async-profiler/libasyncProfiler-mac-x64.so"; + } + if (OSUtils.isLinux()) { + profierSoPath = "async-profiler/libasyncProfiler-linux-x64.so"; + } + + if (profierSoPath != null) { + CodeSource codeSource = ProfilerCommand.class.getProtectionDomain().getCodeSource(); + if (codeSource != null) { + try { + File bootJarPath = new File(codeSource.getLocation().toURI().getSchemeSpecificPart()); + File soFile = new File(bootJarPath.getParentFile(), profierSoPath); + if (soFile.exists()) { + libPath = soFile.getAbsolutePath(); + } + } catch (Throwable e) { + logger.error("arthas", "can not find libasyncProfiler so", e); + } + } + } + + } + + @Argument(argName = "action", index = 0, required = true) + @Description("Action to execute") + public void setAction(String action) { + this.action = action; + } + + @Argument(argName = "actionArg", index = 1, required = false) + @Description("Attribute name pattern.") + public void setActionArg(String actionArg) { + this.actionArg = actionArg; + } + + @Option(shortName = "i", longName = "interval") + @Description("sampling interval in ns (default: 10'000'000, i.e. 10 ms)") + @DefaultValue("10000000") + public void setInterval(long interval) { + this.interval = interval; + } + + @Option(shortName = "f", longName = "file") + @Description("dump output to ") + public void setFile(String file) { + this.file = file; + } + + @Option(longName = "format") + @Description("dump output file format(svg, html, jfr), default valut is svg") + @DefaultValue("svg") + public void setFormat(String format) { + this.format = format; + } + + @Option(shortName = "e", longName = "event") + @Description("which event to trace (cpu, alloc, lock, cache-misses etc.), default value is cpu") + @DefaultValue("cpu") + public void setEvent(String event) { + this.event = event; + } + + @Option(longName = "threads") + @Description("profile different threads separately") + public void setThreads(boolean threads) { + this.threads = threads; + } + + private AsyncProfiler profilerInstance() { + if (profiler != null) { + return profiler; + } + + // try to load from special path + if ("load".equals(action)) { + profiler = AsyncProfiler.getInstance(this.actionArg); + } + + if (libPath != null) { + // load from arthas directory + profiler = AsyncProfiler.getInstance(libPath); + } else { + if (OSUtils.isLinux() || OSUtils.isLinux()) { + throw new IllegalStateException("Can not find libasyncProfiler so, please check the arthas directory."); + } else { + throw new IllegalStateException("Current OS do not support AsyncProfiler."); + } + } + + return profiler; + } + + enum ProfilerAction { + execute, start, stop, resume, list, version, status, + + dumpCollapsed, dumpFlat, dumpTraces, getSamples, + } + + private String executeArgs(ProfilerAction action) { + StringBuilder sb = new StringBuilder(); + + // start - start profiling + // resume - start or resume profiling without resetting collected data + // stop - stop profiling + sb.append(action).append(','); + + if (this.event != null) { + sb.append("event=").append(this.event).append(','); + } + if (this.file != null) { + sb.append("file=").append(this.file).append(','); + } + if (this.interval != null) { + sb.append("interval=").append(this.interval).append(','); + } + if (this.threads) { + sb.append("threads").append(','); + } + + return sb.toString(); + } + + private static String execute(AsyncProfiler asyncProfiler, String arg) + throws IllegalArgumentException, IOException { + String result = asyncProfiler.execute(arg); + if (!result.endsWith("\n")) { + result += "\n"; + } + return result; + } + + @Override + public void process(CommandProcess process) { + int status = 0; + try { + AsyncProfiler asyncProfiler = this.profilerInstance(); + + ProfilerAction profilerAction = ProfilerAction.valueOf(action); + + if (ProfilerAction.execute.equals(profilerAction)) { + String result = execute(asyncProfiler, this.actionArg); + process.write(result); + } else if (ProfilerAction.start.equals(profilerAction)) { + String executeArgs = executeArgs(ProfilerAction.start); + String result = execute(asyncProfiler, executeArgs); + process.write(result); + } else if (ProfilerAction.stop.equals(profilerAction)) { + if (this.file == null) { + this.file = new File("arthas-output", + new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date()) + "." + this.format) + .getAbsolutePath(); + } + process.write("profiler output file: " + new File(this.file).getAbsolutePath() + "\n"); + String executeArgs = executeArgs(ProfilerAction.stop); + String result = execute(asyncProfiler, executeArgs); + process.write(result); + } else if (ProfilerAction.resume.equals(profilerAction)) { + String executeArgs = executeArgs(ProfilerAction.resume); + String result = execute(asyncProfiler, executeArgs); + process.write(result); + } else if (ProfilerAction.list.equals(profilerAction)) { + String result = asyncProfiler.execute("list"); + process.write(result); + } else if (ProfilerAction.version.equals(profilerAction)) { + String result = asyncProfiler.execute("version"); + process.write(result); + } else if (ProfilerAction.status.equals(profilerAction)) { + String result = asyncProfiler.execute("status"); + process.write(result); + } else if (ProfilerAction.dumpCollapsed.equals(profilerAction)) { + if (actionArg == null) { + actionArg = "TOTAL"; + } + actionArg = actionArg.toUpperCase(); + System.err.println("actionArg: " + actionArg + ", " + "TOTAL".equals(actionArg)); + if ("TOTAL".equals(actionArg) || "SAMPLES".equals(actionArg)) { + String result = asyncProfiler.dumpCollapsed(Counter.valueOf(actionArg)); + process.write(result); + } else { + process.write("ERROR: dumpCollapsed argumment should be TOTAL or SAMPLES. \n"); + status = 1; + } + } else if (ProfilerAction.dumpFlat.equals(profilerAction)) { + int maxMethods = 0; + if (actionArg != null) { + maxMethods = Integer.valueOf(actionArg); + } + String result = asyncProfiler.dumpFlat(maxMethods); + process.write(result); + } else if (ProfilerAction.dumpTraces.equals(profilerAction)) { + int maxTraces = 0; + if (actionArg != null) { + maxTraces = Integer.valueOf(actionArg); + } + String result = asyncProfiler.dumpTraces(maxTraces); + process.write(result); + } else if (ProfilerAction.getSamples.equals(profilerAction)) { + String result = "" + asyncProfiler.getSamples() + "\n"; + process.write(result); + } + } catch (Throwable e) { + process.write(e.getMessage()).write("\n"); + logger.error("arthas", "AsyncProfiler error", e); + status = 1; + } finally { + process.end(status); + } + } + + private List events() { + List result = new ArrayList(); + + String execute; + try { + /** + *
+               Basic events:
+                  cpu
+                  alloc
+                  lock
+                  wall
+                  itimer
+             * 
+ */ + execute = this.profilerInstance().execute("list"); + } catch (Throwable e) { + // ignore + return result; + } + String lines[] = execute.split("\\r?\\n"); + + if (lines != null) { + for (String line : lines) { + if (line.startsWith(" ")) { + result.add(line.trim()); + } + } + } + return result; + } + + @Override + public void complete(Completion completion) { + List tokens = completion.lineTokens(); + String token = tokens.get(tokens.size() - 1).value(); + + if (tokens.size() >= 2) { + CliToken cliToken_1 = tokens.get(tokens.size() - 1); + CliToken cliToken_2 = tokens.get(tokens.size() - 2); + if (cliToken_1.isBlank()) { + String token_2 = cliToken_2.value(); + if (token_2.equals("-e") || token_2.equals("--event")) { + CompletionUtils.complete(completion, events()); + return; + } else if (token_2.equals("-f") || token_2.equals("--format")) { + CompletionUtils.complete(completion, Arrays.asList("svg", "html", "jfr")); + return; + } + } + } + + if (token.startsWith("-")) { + super.complete(completion); + return; + } + + Set values = new HashSet(); + for (ProfilerAction action : ProfilerAction.values()) { + values.add(action.toString()); + } + CompletionUtils.complete(completion, values); + } + +} \ No newline at end of file diff --git a/core/src/main/java/one/profiler/AsyncProfiler.java b/core/src/main/java/one/profiler/AsyncProfiler.java new file mode 100644 index 000000000..17be8e56d --- /dev/null +++ b/core/src/main/java/one/profiler/AsyncProfiler.java @@ -0,0 +1,160 @@ +/* + * Copyright 2018 Andrei Pangin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package one.profiler; + +/** + * Java API for in-process profiling. Serves as a wrapper around + * async-profiler native library. This class is a singleton. + * The first call to {@link #getInstance()} initiates loading of + * libasyncProfiler.so. + */ +public class AsyncProfiler implements AsyncProfilerMXBean { + private static AsyncProfiler instance; + + private final String version; + + private AsyncProfiler() { + this.version = version0(); + } + + public static AsyncProfiler getInstance() { + return getInstance(null); + } + + public static synchronized AsyncProfiler getInstance(String libPath) { + if (instance != null) { + return instance; + } + + if (libPath == null) { + System.loadLibrary("asyncProfiler"); + } else { + System.load(libPath); + } + + instance = new AsyncProfiler(); + return instance; + } + + /** + * Start profiling + * + * @param event Profiling event, see {@link Events} + * @param interval Sampling interval, e.g. nanoseconds for Events.CPU + * @throws IllegalStateException If profiler is already running + */ + @Override + public void start(String event, long interval) throws IllegalStateException { + start0(event, interval, true); + } + + /** + * Start or resume profiling without resetting collected data. + * Note that event and interval may change since the previous profiling session. + * + * @param event Profiling event, see {@link Events} + * @param interval Sampling interval, e.g. nanoseconds for Events.CPU + * @throws IllegalStateException If profiler is already running + */ + @Override + public void resume(String event, long interval) throws IllegalStateException { + start0(event, interval, false); + } + + /** + * Stop profiling (without dumping results) + * + * @throws IllegalStateException If profiler is not running + */ + @Override + public void stop() throws IllegalStateException { + stop0(); + } + + /** + * Get the number of samples collected during the profiling session + * + * @return Number of samples + */ + @Override + public native long getSamples(); + + /** + * Get profiler agent version, e.g. "1.0" + * + * @return Version string + */ + @Override + public String getVersion() { + return version; + } + + /** + * Execute an agent-compatible profiling command - + * the comma-separated list of arguments described in arguments.cpp + * + * @param command Profiling command + * @return The command result + * @throws IllegalArgumentException If failed to parse the command + * @throws java.io.IOException If failed to create output file + */ + @Override + public String execute(String command) throws IllegalArgumentException, java.io.IOException { + return execute0(command); + } + + /** + * Dump profile in 'collapsed stacktraces' format + * + * @param counter Which counter to display in the output + * @return Textual representation of the profile + */ + @Override + public String dumpCollapsed(Counter counter) { + return dumpCollapsed0(counter.ordinal()); + } + + /** + * Dump collected stack traces + * + * @param maxTraces Maximum number of stack traces to dump. 0 means no limit + * @return Textual representation of the profile + */ + @Override + public String dumpTraces(int maxTraces) { + return dumpTraces0(maxTraces); + } + + /** + * Dump flat profile, i.e. the histogram of the hottest methods + * + * @param maxMethods Maximum number of methods to dump. 0 means no limit + * @return Textual representation of the profile + */ + @Override + public String dumpFlat(int maxMethods) { + return dumpFlat0(maxMethods); + } + + private native void start0(String event, long interval, boolean reset) throws IllegalStateException; + private native void stop0() throws IllegalStateException; + private native String execute0(String command) throws IllegalArgumentException, java.io.IOException; + private native String dumpCollapsed0(int counter); + private native String dumpTraces0(int maxTraces); + private native String dumpFlat0(int maxMethods); + private native String version0(); +} diff --git a/core/src/main/java/one/profiler/AsyncProfilerMXBean.java b/core/src/main/java/one/profiler/AsyncProfilerMXBean.java new file mode 100644 index 000000000..0bc24bf7e --- /dev/null +++ b/core/src/main/java/one/profiler/AsyncProfilerMXBean.java @@ -0,0 +1,43 @@ +/* + * Copyright 2018 Andrei Pangin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package one.profiler; + +/** + * AsyncProfiler interface for JMX server. + * How to register AsyncProfiler MBean: + * + *
{@code
+ *     ManagementFactory.getPlatformMBeanServer().registerMBean(
+ *             AsyncProfiler.getInstance(),
+ *             new ObjectName("one.profiler:type=AsyncProfiler")
+ *     );
+ * }
+ */ +public interface AsyncProfilerMXBean { + void start(String event, long interval) throws IllegalStateException; + void resume(String event, long interval) throws IllegalStateException; + void stop() throws IllegalStateException; + + long getSamples(); + String getVersion(); + + String execute(String command) throws IllegalArgumentException, java.io.IOException; + + String dumpCollapsed(Counter counter); + String dumpTraces(int maxTraces); + String dumpFlat(int maxMethods); +} diff --git a/core/src/main/java/one/profiler/Counter.java b/core/src/main/java/one/profiler/Counter.java new file mode 100644 index 000000000..489053b72 --- /dev/null +++ b/core/src/main/java/one/profiler/Counter.java @@ -0,0 +1,25 @@ +/* + * Copyright 2018 Andrei Pangin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package one.profiler; + +/** + * Which metrics to use when generating profile in collapsed stack traces format. + */ +public enum Counter { + SAMPLES, + TOTAL +} diff --git a/core/src/main/java/one/profiler/Events.java b/core/src/main/java/one/profiler/Events.java new file mode 100644 index 000000000..1731122c7 --- /dev/null +++ b/core/src/main/java/one/profiler/Events.java @@ -0,0 +1,28 @@ +/* + * Copyright 2018 Andrei Pangin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package one.profiler; + +/** + * Predefined event names to use in {@link AsyncProfiler#start(String, long)} + */ +public class Events { + public static final String CPU = "cpu"; + public static final String ALLOC = "alloc"; + public static final String LOCK = "lock"; + public static final String WALL = "wall"; + public static final String ITIMER = "itimer"; +} diff --git a/core/src/main/java/one/profiler/package-info.java b/core/src/main/java/one/profiler/package-info.java new file mode 100644 index 000000000..8430f25e7 --- /dev/null +++ b/core/src/main/java/one/profiler/package-info.java @@ -0,0 +1,5 @@ + +/** + * from https://github.com/jvm-profiling-tools/async-profiler + */ +package one.profiler; diff --git a/packaging/src/main/assembly/assembly.xml b/packaging/src/main/assembly/assembly.xml index a871e65d4..e612888f4 100644 --- a/packaging/src/main/assembly/assembly.xml +++ b/packaging/src/main/assembly/assembly.xml @@ -50,4 +50,10 @@ ../bin/as-service.bat + + + + ../async-profiler + +