You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arthas/en/profiler.html

436 lines
21 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>profiler &mdash; Arthas 3.1.7 documentation</title>
<link rel="shortcut icon" href="_static/favicon.ico"/>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/overrides.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="cat" href="cat.html" />
<link rel="prev" title="tt" href="tt.html" />
<script src="_static/center_page.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/github.min.css">
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Arthas
</a>
<div class="version">
3.1.7
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference external" href="https://alibaba.github.io/arthas/arthas-tutorials?language=en">Online tutorials(Recommend)</a></li>
<li class="toctree-l1"><a class="reference internal" href="install-detail.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="download.html">Download</a></li>
<li class="toctree-l1"><a class="reference internal" href="quick-start.html">Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="advanced-use.html">Advanced usage</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="commands.html">Commands</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="dashboard.html">dashboard</a></li>
<li class="toctree-l2"><a class="reference internal" href="thread.html">thread</a></li>
<li class="toctree-l2"><a class="reference internal" href="jvm.html">jvm</a></li>
<li class="toctree-l2"><a class="reference internal" href="sysprop.html">sysprop</a></li>
<li class="toctree-l2"><a class="reference internal" href="sysenv.html">sysenv</a></li>
<li class="toctree-l2"><a class="reference internal" href="vmoption.html">vmoption</a></li>
<li class="toctree-l2"><a class="reference internal" href="logger.html">logger</a></li>
<li class="toctree-l2"><a class="reference internal" href="mbean.html">mbean</a></li>
<li class="toctree-l2"><a class="reference internal" href="getstatic.html">getstatic</a></li>
<li class="toctree-l2"><a class="reference internal" href="ognl.html">ognl</a></li>
<li class="toctree-l2"><a class="reference internal" href="sc.html">sc</a></li>
<li class="toctree-l2"><a class="reference internal" href="sm.html">sm</a></li>
<li class="toctree-l2"><a class="reference internal" href="dump.html">dump</a></li>
<li class="toctree-l2"><a class="reference internal" href="heapdump.html">heapdump</a></li>
<li class="toctree-l2"><a class="reference internal" href="jad.html">jad</a></li>
<li class="toctree-l2"><a class="reference internal" href="classloader.html">classloader</a></li>
<li class="toctree-l2"><a class="reference internal" href="mc.html">mc</a></li>
<li class="toctree-l2"><a class="reference internal" href="redefine.html">redefine</a></li>
<li class="toctree-l2"><a class="reference internal" href="monitor.html">monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="watch.html">watch</a></li>
<li class="toctree-l2"><a class="reference internal" href="trace.html">trace</a></li>
<li class="toctree-l2"><a class="reference internal" href="stack.html">stack</a></li>
<li class="toctree-l2"><a class="reference internal" href="tt.html">tt</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">profiler</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#start-profiler">Start profiler</a></li>
<li class="toctree-l3"><a class="reference internal" href="#get-the-number-of-samples-collected">Get the number of samples collected</a></li>
<li class="toctree-l3"><a class="reference internal" href="#view-profiler-status">View profiler status</a></li>
<li class="toctree-l3"><a class="reference internal" href="#stop-profiler">Stop profiler</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#generate-svg-format-results">Generate svg format results</a></li>
<li class="toctree-l4"><a class="reference internal" href="#generating-html-format-results">Generating html format results</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#view-profiler-results-under-arthas-output-via-browser">View profiler results under arthas-output via browser</a></li>
<li class="toctree-l3"><a class="reference internal" href="#profiler-supported-events">Profiler supported events</a></li>
<li class="toctree-l3"><a class="reference internal" href="#resume-sampling">Resume sampling</a></li>
<li class="toctree-l3"><a class="reference internal" href="#use-execute-action-to-execute-complex-commands">Use <code class="docutils literal notranslate"><span class="pre">execute</span></code> action to execute complex commands</a></li>
<li class="toctree-l3"><a class="reference internal" href="#view-all-supported-actions">View all supported actions</a></li>
<li class="toctree-l3"><a class="reference internal" href="#view-version">View version</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="cat.html">cat</a></li>
<li class="toctree-l2"><a class="reference internal" href="grep.html">grep</a></li>
<li class="toctree-l2"><a class="reference internal" href="pwd.html">pwd</a></li>
<li class="toctree-l2"><a class="reference internal" href="options.html">options</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#basic-arthas-commands">Basic Arthas Commands</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="web-console.html">WebConsole</a></li>
<li class="toctree-l1"><a class="reference internal" href="docker.html">Docker</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/issues?q=label%3Auser-case">User cases</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/issues?q=label%3Aquestion-answered">Questions and answers</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas">Fork me at GitHub</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md#">Compile and debug/CONTRIBUTING</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/releases">Release Notes</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Arthas</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li><a href="commands.html">All Commands</a> &raquo;</li>
<li>profiler</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/alibaba/arthas/blob/master/site/src/site/sphinx/en/profiler.md" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="profiler">
<h1>profiler<a class="headerlink" href="#profiler" title="Permalink to this headline"></a></h1>
<blockquote>
<div><p>Generate a flame graph using <a class="reference external" href="https://github.com/jvm-profiling-tools/async-profiler">async-profiler</a></p>
</div></blockquote>
<p>The <code class="docutils literal notranslate"><span class="pre">profiler</span></code> command supports generate flame graph for application hotspots.</p>
<p>The basic usage of the <code class="docutils literal notranslate"><span class="pre">profiler</span></code> command is <code class="docutils literal notranslate"><span class="pre">profiler</span> <span class="pre">action</span> <span class="pre">[actionArg]</span></code></p>
<div class="section" id="start-profiler">
<h2>Start profiler<a class="headerlink" href="#start-profiler" title="Permalink to this headline"></a></h2>
<div class="highlight-default notranslate"><pre class="literal-block">$ profiler start
Started [cpu] profiling</pre>
</div>
<blockquote>
<div><p>By default, the sample event is <code class="docutils literal notranslate"><span class="pre">cpu</span></code>. Can be specified with the <code class="docutils literal notranslate"><span class="pre">--event</span></code> parameter.</p>
</div></blockquote>
</div>
<div class="section" id="get-the-number-of-samples-collected">
<h2>Get the number of samples collected<a class="headerlink" href="#get-the-number-of-samples-collected" title="Permalink to this headline"></a></h2>
<div class="highlight-default notranslate"><pre class="literal-block">$ profiler getSamples
23</pre>
</div>
</div>
<div class="section" id="view-profiler-status">
<h2>View profiler status<a class="headerlink" href="#view-profiler-status" title="Permalink to this headline"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler status
[cpu] profiling is running for 4 seconds</pre></div>
</div>
<p>Can view which <code class="docutils literal notranslate"><span class="pre">event</span></code> and sampling time.</p>
</div>
<div class="section" id="stop-profiler">
<h2>Stop profiler<a class="headerlink" href="#stop-profiler" title="Permalink to this headline"></a></h2>
<div class="section" id="generate-svg-format-results">
<h3>Generate svg format results<a class="headerlink" href="#generate-svg-format-results" title="Permalink to this headline"></a></h3>
<div class="highlight-default notranslate"><pre class="literal-block">$ profiler stop
profiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK</pre>
</div>
<p>By default, the generated results are saved to the <code class="docutils literal notranslate"><span class="pre">arthas-output</span></code> directory under the applications <code class="docutils literal notranslate"><span class="pre">working</span> <span class="pre">directory</span></code>. The output result path can be specified by the <code class="docutils literal notranslate"><span class="pre">--file</span></code> parameter. such as:</p>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler stop --file /tmp/output.svg
profiler output file: /tmp/output.svg
OK</pre></div>
</div>
</div>
<div class="section" id="generating-html-format-results">
<h3>Generating html format results<a class="headerlink" href="#generating-html-format-results" title="Permalink to this headline"></a></h3>
<p>By default, the result file is <code class="docutils literal notranslate"><span class="pre">svg</span></code> format. If you want to generate the <code class="docutils literal notranslate"><span class="pre">html</span></code> format, you can specify it with the <code class="docutils literal notranslate"><span class="pre">--format</span></code> parameter:</p>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler stop --format html
profiler output file: /tmp/test/arthas-output/20191125-143329.html
OK</pre></div>
</div>
<p>Or use the file name name format in the <code class="docutils literal notranslate"><span class="pre">--file</span></code> parameter. For example, <code class="docutils literal notranslate"><span class="pre">--file</span> <span class="pre">/tmp/result.html</span></code>.</p>
</div>
</div>
<div class="section" id="view-profiler-results-under-arthas-output-via-browser">
<h2>View profiler results under arthas-output via browser<a class="headerlink" href="#view-profiler-results-under-arthas-output-via-browser" title="Permalink to this headline"></a></h2>
<p>By default, arthas uses port 3658, which can be opened: <a class="reference external" href="http://localhost:3658/arthas-output/">http://localhost:3658/arthas-output/</a> View the <code class="docutils literal notranslate"><span class="pre">arthas-output</span></code> directory below Profiler results:</p>
<p><img alt="_images/arthas-output.jpg" src="_images/arthas-output.jpg" /></p>
<p>Click to view specific results:</p>
<p><img alt="_images/arthas-output-svg.jpg" src="_images/arthas-output-svg.jpg" /></p>
<blockquote>
<div><p>If using the chrome browser, may need to be refreshed multiple times.</p>
</div></blockquote>
</div>
<div class="section" id="profiler-supported-events">
<h2>Profiler supported events<a class="headerlink" href="#profiler-supported-events" title="Permalink to this headline"></a></h2>
<p>Under different platforms and different OSs, the supported events are different. For example, under macos:</p>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler list
Basic events:
cpu
alloc
lock
wall
itimer</pre></div>
</div>
<p>Under linux</p>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler list
Basic events:
cpu
alloc
lock
wall
itimer
Perf events:
page-faults
context-switches
cycles
instructions
cache-references
cache-misses
branches
branch-misses
bus-cycles
L1-dcache-load-misses
LLC-load-misses
dTLB-load-misses
mem:breakpoint
trace:tracepoint</pre></div>
</div>
<p>If you encounter the permissions/configuration issues of the OS itself and then missing some events, you can refer to the <a class="reference external" href="https://github.com/jvm-profiling-tools/async-profiler">async-profiler</a> documentation.</p>
<p>You can use the <code class="docutils literal notranslate"><span class="pre">--event</span></code> parameter to specify the event to sample, such as sampling the <code class="docutils literal notranslate"><span class="pre">alloc</span></code> event:</p>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler start --event alloc</pre></div>
</div>
</div>
<div class="section" id="resume-sampling">
<h2>Resume sampling<a class="headerlink" href="#resume-sampling" title="Permalink to this headline"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler resume
Started [cpu] profiling</pre></div>
</div>
<p>The difference between <code class="docutils literal notranslate"><span class="pre">start</span></code> and <code class="docutils literal notranslate"><span class="pre">resume</span></code> is: <code class="docutils literal notranslate"><span class="pre">start</span></code> is the new start sampling, <code class="docutils literal notranslate"><span class="pre">resume</span></code> will retain the data of the last <code class="docutils literal notranslate"><span class="pre">stop</span></code>.</p>
<p>You can verify the number of samples by executing <code class="docutils literal notranslate"><span class="pre">profiler</span> <span class="pre">getSamples</span></code>.</p>
</div>
<div class="section" id="use-execute-action-to-execute-complex-commands">
<h2>Use <code class="docutils literal notranslate"><span class="pre">execute</span></code> action to execute complex commands<a class="headerlink" href="#use-execute-action-to-execute-complex-commands" title="Permalink to this headline"></a></h2>
<p>For example, start sampling:</p>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">profiler execute &#x27;start&#x27;</pre></div>
</div>
<p>Stop sampling and save to the specified file:</p>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">profiler execute &#x27;stop,file=/tmp/result.svg&#x27;</pre></div>
</div>
<p>Specific format reference: <a class="reference external" href="https://github.com/jvm-profiling-tools/async-profiler/blob/v1.6/src/arguments.cpp#L34">arguments.cpp#L34</a></p>
</div>
<div class="section" id="view-all-supported-actions">
<h2>View all supported actions<a class="headerlink" href="#view-all-supported-actions" title="Permalink to this headline"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler actions
Supported Actions: [resume, dumpCollapsed, getSamples, start, list, execute, version, stop, load, dumpFlat, actions, dumpTraces, status]</pre></div>
</div>
</div>
<div class="section" id="view-version">
<h2>View version<a class="headerlink" href="#view-version" title="Permalink to this headline"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">$ profiler version
Async-profiler 1.6 built on Sep 9 2019
Copyright 2019 Andrei Pangin</pre></div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="cat.html" class="btn btn-neutral float-right" title="cat" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="tt.html" class="btn btn-neutral float-left" title="tt" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018-2019, Alibaba Middleware Group, and contributors
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<div class="github-fork-ribbon-wrapper right">
<div class="github-fork-ribbon">
<a href="https://github.com/alibaba/arthas" target="_blank">Fork me at GitHub</a>
</div>
</div>
<script type="text/javascript" src="_static/add_badges.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.5.0/highlightjs-line-numbers.min.js"></script>
<script>
document.querySelectorAll('div.hljs > pre').forEach(function(block) {
hljs.highlightBlock(block);
hljs.lineNumbersBlock(block);
});
</script>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>