blob: 3ff5c3458913b79fc72a80187007773dcb4cbf4d [file] [log] [blame]
<!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>apache_beam.tools.fn_api_runner_microbenchmark module &mdash; Apache Beam documentation</title>
<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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="apache_beam.tools.sideinput_microbenchmark module" href="apache_beam.tools.sideinput_microbenchmark.html" />
<link rel="prev" title="apache_beam.tools.distribution_counter_microbenchmark module" href="apache_beam.tools.distribution_counter_microbenchmark.html" />
</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"> Apache Beam
</a>
<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 internal" href="apache_beam.coders.html">apache_beam.coders package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.dataframe.html">apache_beam.dataframe package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.internal.html">apache_beam.internal package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.io.html">apache_beam.io package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.metrics.html">apache_beam.metrics package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.ml.html">apache_beam.ml package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.options.html">apache_beam.options package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.portability.html">apache_beam.portability package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.runners.html">apache_beam.runners package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.testing.html">apache_beam.testing package</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="apache_beam.tools.html">apache_beam.tools package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="apache_beam.tools.html#submodules">Submodules</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="apache_beam.tools.coders_microbenchmark.html">apache_beam.tools.coders_microbenchmark module</a></li>
<li class="toctree-l3"><a class="reference internal" href="apache_beam.tools.distribution_counter_microbenchmark.html">apache_beam.tools.distribution_counter_microbenchmark module</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">apache_beam.tools.fn_api_runner_microbenchmark module</a></li>
<li class="toctree-l3"><a class="reference internal" href="apache_beam.tools.sideinput_microbenchmark.html">apache_beam.tools.sideinput_microbenchmark module</a></li>
<li class="toctree-l3"><a class="reference internal" href="apache_beam.tools.utils.html">apache_beam.tools.utils module</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.transforms.html">apache_beam.transforms package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.typehints.html">apache_beam.typehints package</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.utils.html">apache_beam.utils package</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.error.html">apache_beam.error module</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.pipeline.html">apache_beam.pipeline module</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.pvalue.html">apache_beam.pvalue module</a></li>
<li class="toctree-l1"><a class="reference internal" href="apache_beam.version.html">apache_beam.version module</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">Apache Beam</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="apache_beam.tools.html">apache_beam.tools package</a> &raquo;</li>
<li>apache_beam.tools.fn_api_runner_microbenchmark module</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/apache_beam.tools.fn_api_runner_microbenchmark.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="module-apache_beam.tools.fn_api_runner_microbenchmark">
<span id="apache-beam-tools-fn-api-runner-microbenchmark-module"></span><h1>apache_beam.tools.fn_api_runner_microbenchmark module<a class="headerlink" href="#module-apache_beam.tools.fn_api_runner_microbenchmark" title="Permalink to this headline"></a></h1>
<p>A microbenchmark for measuring changes in the critical path of FnApiRunner.
This microbenchmark attempts to measure the overhead of the main data paths
for the FnApiRunner. Specifically state, timers, and shuffling of data.</p>
<p>This runs a series of N parallel pipelines with M parallel stages each. Each
stage does the following:</p>
<ol class="arabic simple">
<li>Put all the PCollection elements in state</li>
<li>Set a timer for the future</li>
<li>When the timer fires, change the key and output all the elements downstream</li>
</ol>
<p>This executes the same codepaths that are run on the Fn API (and Dataflow)
workers, but is generally easier to run (locally) and more stable..</p>
<p>Run as</p>
<blockquote>
<div>python -m apache_beam.tools.fn_api_runner_microbenchmark</div></blockquote>
<p>The main metric to work with for this benchmark is Fixed Cost. This represents
the fixed cost of ovehead for the data path of the FnApiRunner.</p>
<p>Initial results were:</p>
<p>run 1 of 10, per element time cost: 3.6778 sec
run 2 of 10, per element time cost: 0.053498 sec
run 3 of 10, per element time cost: 0.0299434 sec
run 4 of 10, per element time cost: 0.0211154 sec
run 5 of 10, per element time cost: 0.0170031 sec
run 6 of 10, per element time cost: 0.0150809 sec
run 7 of 10, per element time cost: 0.013218 sec
run 8 of 10, per element time cost: 0.0119685 sec
run 9 of 10, per element time cost: 0.0107382 sec
run 10 of 10, per element time cost: 0.0103208 sec</p>
<p>Fixed cost 4.537164939085642
Per-element 0.005474923321695039
R^2 0.95189</p>
<dl class="class">
<dt id="apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer">
<em class="property">class </em><code class="descclassname">apache_beam.tools.fn_api_runner_microbenchmark.</code><code class="descname">BagInStateOutputAfterTimer</code><span class="sig-paren">(</span><em>*unused_args</em>, <em>**unused_kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/tools/fn_api_runner_microbenchmark.html#BagInStateOutputAfterTimer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="apache_beam.transforms.core.html#apache_beam.transforms.core.DoFn" title="apache_beam.transforms.core.DoFn"><code class="xref py py-class docutils literal notranslate"><span class="pre">apache_beam.transforms.core.DoFn</span></code></a></p>
<dl class="attribute">
<dt id="apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer.SET_STATE">
<code class="descname">SET_STATE</code><em class="property"> = SetStateSpec(buffer)</em><a class="headerlink" href="#apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer.SET_STATE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer.EMIT_TIMER">
<code class="descname">EMIT_TIMER</code><em class="property"> = TimerSpec(ts-emit_timer)</em><a class="headerlink" href="#apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer.EMIT_TIMER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer.process">
<code class="descname">process</code><span class="sig-paren">(</span><em>element</em>, <em>set_state=StateParam(buffer)</em>, <em>emit_timer=TimerParam(ts-emit_timer)</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/tools/fn_api_runner_microbenchmark.html#BagInStateOutputAfterTimer.process"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer.process" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer.emit_values">
<code class="descname">emit_values</code><span class="sig-paren">(</span><em>set_state=StateParam(buffer)</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/tools/fn_api_runner_microbenchmark.html#BagInStateOutputAfterTimer.emit_values"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.tools.fn_api_runner_microbenchmark.BagInStateOutputAfterTimer.emit_values" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="apache_beam.tools.fn_api_runner_microbenchmark.run_single_pipeline">
<code class="descclassname">apache_beam.tools.fn_api_runner_microbenchmark.</code><code class="descname">run_single_pipeline</code><span class="sig-paren">(</span><em>size</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/tools/fn_api_runner_microbenchmark.html#run_single_pipeline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.tools.fn_api_runner_microbenchmark.run_single_pipeline" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="apache_beam.tools.fn_api_runner_microbenchmark.run_benchmark">
<code class="descclassname">apache_beam.tools.fn_api_runner_microbenchmark.</code><code class="descname">run_benchmark</code><span class="sig-paren">(</span><em>starting_point</em>, <em>num_runs</em>, <em>num_elements_step</em>, <em>verbose</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/apache_beam/tools/fn_api_runner_microbenchmark.html#run_benchmark"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#apache_beam.tools.fn_api_runner_microbenchmark.run_benchmark" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="apache_beam.tools.sideinput_microbenchmark.html" class="btn btn-neutral float-right" title="apache_beam.tools.sideinput_microbenchmark module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="apache_beam.tools.distribution_counter_microbenchmark.html" class="btn btn-neutral float-left" title="apache_beam.tools.distribution_counter_microbenchmark module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright
</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>
</body>
</html>