blob: f05ea2411a3e457ebad19e5e4190f152c7e022b0 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<link rel="canonical" href="https://ignite.apache.org/releases/1.0.0-rc3/javadoc/org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadProbe.html" />
<!-- Generated by javadoc (version 1.7.0_21) on Tue Mar 24 10:27:32 MSK 2015 -->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>AdaptiveLoadProbe (Ignite 1.0.0-RC3)</title>
<meta name="date" content="2015-03-24">
<link rel="stylesheet" type="text/css" href="../../../../../../javadoc.css" title="Style">
<link rel='shortcut icon' href='http://gridgain.com/wp-content/uploads/2014/09/favicon.ico'/>
<link type='text/css' rel='stylesheet' href='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css'/>
<link type='text/css' rel='stylesheet' href='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css'/>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shLegacy.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPlain.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushBash.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushScala.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGroovy.js'></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</script></head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AdaptiveLoadProbe (Ignite 1.0.0-RC3)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AdaptiveLoadProbe.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Apache Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadBalancingSpiMBean.html" title="interface in org.apache.ignite.spi.loadbalancing.adaptive"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveProcessingTimeLoadProbe.html" title="class in org.apache.ignite.spi.loadbalancing.adaptive"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadProbe.html" target="_top">Frames</a></li>
<li><a href="AdaptiveLoadProbe.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.ignite.spi.loadbalancing.adaptive</div>
<h2 title="Interface AdaptiveLoadProbe" class="title">Interface AdaptiveLoadProbe</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveCpuLoadProbe.html" title="class in org.apache.ignite.spi.loadbalancing.adaptive">AdaptiveCpuLoadProbe</a>, <a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveJobCountLoadProbe.html" title="class in org.apache.ignite.spi.loadbalancing.adaptive">AdaptiveJobCountLoadProbe</a>, <a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveProcessingTimeLoadProbe.html" title="class in org.apache.ignite.spi.loadbalancing.adaptive">AdaptiveProcessingTimeLoadProbe</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">AdaptiveLoadProbe</span></pre>
<div class="block">Pluggable implementation of node load probing. Implementations
of this can be configured to be used with <a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadBalancingSpi.html" title="class in org.apache.ignite.spi.loadbalancing.adaptive"><code>AdaptiveLoadBalancingSpi</code></a>
by setting <a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadBalancingSpi.html#setLoadProbe(org.apache.ignite.spi.loadbalancing.adaptive.AdaptiveLoadProbe)"><code>AdaptiveLoadBalancingSpi.setLoadProbe(AdaptiveLoadProbe)</code></a>
configuration parameter.
<p>
Note that if <a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadProbe.html#getLoad(org.apache.ignite.cluster.ClusterNode, int)"><code>getLoad(org.apache.ignite.cluster.ClusterNode, int)</code></a> returns a value of <code>0</code>,
then implementation will assume that load value is simply not available and
will try to calculate an average of load values for other nodes. If such
average cannot be obtained (all node load values are <code>0</code>), then a value
of <code>1</code> will be used.
<p>
By default, <a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveCpuLoadProbe.html" title="class in org.apache.ignite.spi.loadbalancing.adaptive"><code>AdaptiveCpuLoadProbe</code></a> probing implementation is used.
<p>
<h1 class="header">Example</h1>
Here is an example of how probing can be implemented to use
number of active and waiting jobs as probing mechanism:
<pre name="code" class="java">
public class FooBarLoadProbe implements GridAdaptiveLoadProbe {
// Flag indicating whether to use average value or current.
private int useAvg = true;
public FooBarLoadProbe(boolean useAvg) {
this.useAvg = useAvg;
}
// Calculate load based on number of active and waiting jobs.
public double getLoad(GridNode node, int jobsSentSinceLastUpdate) {
GridNodeMetrics metrics = node.getMetrics();
if (useAvg) {
double load = metrics.getAverageActiveJobs() + metrics.getAverageWaitingJobs();
if (load > 0) {
return load;
}
}
return metrics.getCurrentActiveJobs() + metrics.getCurrentWaitingJobs();
}
}
</pre>
Below is an example of how a probe shown above would be configured with <a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadBalancingSpi.html" title="class in org.apache.ignite.spi.loadbalancing.adaptive"><code>AdaptiveLoadBalancingSpi</code></a>
SPI:
<pre name="code" class="xml">
&lt;property name="loadBalancingSpi"&gt;
&lt;bean class="org.apache.ignite.spi.loadBalancing.adaptive.GridAdaptiveLoadBalancingSpi"&gt;
&lt;property name="loadProbe"&gt;
&lt;bean class="foo.bar.FooBarLoadProbe"&gt;
&lt;constructor-arg value="true"/&gt;
&lt;/bean&gt;
&lt;/property&gt;
&lt;/bean&gt;
&lt;/property&gt;
</pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadProbe.html#getLoad(org.apache.ignite.cluster.ClusterNode, int)">getLoad</a></strong>(<a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a>&nbsp;node,
int&nbsp;jobsSentSinceLastUpdate)</code>
<div class="block">Calculates load value for a given node.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getLoad(org.apache.ignite.cluster.ClusterNode, int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getLoad</h4>
<pre>double&nbsp;getLoad(<a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a>&nbsp;node,
int&nbsp;jobsSentSinceLastUpdate)</pre>
<div class="block">Calculates load value for a given node. Specific implementations would
usually take into account some of the values provided by
<a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html#metrics()"><code>ClusterNode.metrics()</code></a> method. For example, load can be calculated
based on job execution time or number of active jobs, or CPU/Heap utilization.
<p>
Note that if this method returns a value of <code>0</code>,
then implementation will assume that load value is simply not available and
will try to calculate an average of load values for other nodes. If such
average cannot be obtained (all node load values are <code>0</code>), then a value
of <code>1</code> will be used.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>node</code> - Grid node to calculate load for.</dd><dd><code>jobsSentSinceLastUpdate</code> - Number of jobs sent to this node since
last metrics update. This parameter may be useful when
implementation takes into account the current job count on a node.</dd>
<dt><span class="strong">Returns:</span></dt><dd>Non-negative load value for the node (zero and above).</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AdaptiveLoadProbe.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Apache Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadBalancingSpiMBean.html" title="interface in org.apache.ignite.spi.loadbalancing.adaptive"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveProcessingTimeLoadProbe.html" title="class in org.apache.ignite.spi.loadbalancing.adaptive"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/spi/loadbalancing/adaptive/AdaptiveLoadProbe.html" target="_top">Frames</a></li>
<li><a href="AdaptiveLoadProbe.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><table width="100%" border="0" cellspacing=0 cellpadding=0 style="padding: 5px"> <tr> <td> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <a target=_blank href="https://incubator.apache.org/projects/ignite.html"><nobr>2015 Copyright &#169; Apache Software Foundation</nobr></a> </td> </tr> </tbody> </table> </td> <td width="100%" align="right" valign="center"> <a href="https://twitter.com/ApacheIgnite" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @ApacheIgnite</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </td> </tr> <tr> <td colspan="2" valign="top" align="left"> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <b>Apache Ignite Fabric</b> </td> <td>:&nbsp;&nbsp; ver. <strong>1.0.0-RC3</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; March 24 2015 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
<!--FOOTER--><script type='text/javascript'>SyntaxHighlighter.all();dp.SyntaxHighlighter.HighlightAll('code');</script>
</body>
</html>