blob: 37aefde275b2c4b72919f788d7db5484944b03ed [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>Impala: impala::QueryResourceMgr Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Impala
</div>
<div id="projectbrief">Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classimpala_1_1QueryResourceMgr.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classimpala_1_1QueryResourceMgr-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">impala::QueryResourceMgr Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Only CPU-heavy threads need be managed using this class.
<a href="classimpala_1_1QueryResourceMgr.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for impala::QueryResourceMgr:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classimpala_1_1QueryResourceMgr__coll__graph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a70fd20e3113f5d57944f17dae0054511"><td class="memItemLeft" align="right" valign="top">typedef boost::function&lt; void()&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a70fd20e3113f5d57944f17dae0054511">VcoreAvailableCb</a></td></tr>
<tr class="separator:a70fd20e3113f5d57944f17dae0054511"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8b83e88776213d3bc9c1a8ae1de6812a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a8b83e88776213d3bc9c1a8ae1de6812a">QueryResourceMgr</a> (const TUniqueId &amp;reservation_id, const TNetworkAddress &amp;local_resource_location, const TUniqueId &amp;<a class="el" href="namespaceimpala.html#af9bbe2e7657f31e00eb4adbf126c2ce1">query_id</a>)</td></tr>
<tr class="separator:a8b83e88776213d3bc9c1a8ae1de6812a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b75c55f1e81093a971665211c5d99ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a6b75c55f1e81093a971665211c5d99ff">InitVcoreAcquisition</a> (int32_t init_vcores)</td></tr>
<tr class="separator:a6b75c55f1e81093a971665211c5d99ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47ef4439f5e58096de5403ffe66f7ae7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a47ef4439f5e58096de5403ffe66f7ae7">IsVcoreOverSubscribed</a> ()</td></tr>
<tr class="separator:a47ef4439f5e58096de5403ffe66f7ae7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fbd0b722ff0c7ac21a965fabcadebf0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a6fbd0b722ff0c7ac21a965fabcadebf0">NotifyThreadUsageChange</a> (int delta)</td></tr>
<tr class="separator:a6fbd0b722ff0c7ac21a965fabcadebf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88c3279b6bbe8d782bf272ec4756df07"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a88c3279b6bbe8d782bf272ec4756df07">AddVcoreAvailableCb</a> (const <a class="el" href="classimpala_1_1QueryResourceMgr.html#a70fd20e3113f5d57944f17dae0054511">VcoreAvailableCb</a> &amp;callback)</td></tr>
<tr class="separator:a88c3279b6bbe8d782bf272ec4756df07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03784ec11fcb18de5edfb28a481949ef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a03784ec11fcb18de5edfb28a481949ef">RemoveVcoreAvailableCb</a> (int32_t callback_id)</td></tr>
<tr class="memdesc:a03784ec11fcb18de5edfb28a481949ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes the callback with the given ID. <a href="#a03784ec11fcb18de5edfb28a481949ef">More...</a><br/></td></tr>
<tr class="separator:a03784ec11fcb18de5edfb28a481949ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a174aae4b50f2577d6608a2d709658da1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a174aae4b50f2577d6608a2d709658da1">CreateExpansionRequest</a> (int64_t memory_mb, int64_t vcores, TResourceBrokerExpansionRequest *request)</td></tr>
<tr class="separator:a174aae4b50f2577d6608a2d709658da1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e522ace9edb5b4d956cdec70e4be121"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a8e522ace9edb5b4d956cdec70e4be121">Shutdown</a> ()</td></tr>
<tr class="separator:a8e522ace9edb5b4d956cdec70e4be121"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a120ac55fc791fbea24db9e76444a8f77"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a120ac55fc791fbea24db9e76444a8f77">~QueryResourceMgr</a> ()</td></tr>
<tr class="memdesc:a120ac55fc791fbea24db9e76444a8f77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits for the VCore acquisition thread to stop. <a href="#a120ac55fc791fbea24db9e76444a8f77">More...</a><br/></td></tr>
<tr class="separator:a120ac55fc791fbea24db9e76444a8f77"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:a89c2dc9fe4a18b8d559eae15730fa486"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_map<br class="typebreak"/>
&lt; int32_t, <a class="el" href="classimpala_1_1QueryResourceMgr.html#a70fd20e3113f5d57944f17dae0054511">VcoreAvailableCb</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a89c2dc9fe4a18b8d559eae15730fa486">CallbackMap</a></td></tr>
<tr class="memdesc:a89c2dc9fe4a18b8d559eae15730fa486"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of callbacks to notify when a new VCore resource is available. <a href="#a89c2dc9fe4a18b8d559eae15730fa486">More...</a><br/></td></tr>
<tr class="separator:a89c2dc9fe4a18b8d559eae15730fa486"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ad570e3ce975997e94bc5bc68fca7a76a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#ad570e3ce975997e94bc5bc68fca7a76a">AcquireVcoreResources</a> (boost::shared_ptr&lt; <a class="el" href="classimpala_1_1AtomicInt.html">AtomicInt</a>&lt; int16_t &gt; &gt; thread_in_expand, boost::shared_ptr&lt; <a class="el" href="classimpala_1_1AtomicInt.html">AtomicInt</a>&lt; int16_t &gt; &gt; early_exit)</td></tr>
<tr class="separator:ad570e3ce975997e94bc5bc68fca7a76a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a787bfa8a6ea43e0a0b1185932cd18127"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a787bfa8a6ea43e0a0b1185932cd18127">AboveVcoreSubscriptionThreshold</a> ()</td></tr>
<tr class="separator:a787bfa8a6ea43e0a0b1185932cd18127"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5962e3717bf3f357e5c7073a3f2c3220"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a5962e3717bf3f357e5c7073a3f2c3220">ShouldExit</a> ()</td></tr>
<tr class="memdesc:a5962e3717bf3f357e5c7073a3f2c3220"><td class="mdescLeft">&#160;</td><td class="mdescRight">Notifies acquire_cpu_thread_ that it should terminate. Does not block. <a href="#a5962e3717bf3f357e5c7073a3f2c3220">More...</a><br/></td></tr>
<tr class="separator:a5962e3717bf3f357e5c7073a3f2c3220"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a52a3c04f04788be93866deaf6309b44a"><td class="memItemLeft" align="right" valign="top">TUniqueId&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a52a3c04f04788be93866deaf6309b44a">reservation_id_</a></td></tr>
<tr class="memdesc:a52a3c04f04788be93866deaf6309b44a"><td class="mdescLeft">&#160;</td><td class="mdescRight">ID of the single reservation corresponding to this query. <a href="#a52a3c04f04788be93866deaf6309b44a">More...</a><br/></td></tr>
<tr class="separator:a52a3c04f04788be93866deaf6309b44a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab52333a16e143bce561d056f36f8a609"><td class="memItemLeft" align="right" valign="top">TUniqueId&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#ab52333a16e143bce561d056f36f8a609">query_id_</a></td></tr>
<tr class="memdesc:ab52333a16e143bce561d056f36f8a609"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query ID of the query this class manages resources for. <a href="#ab52333a16e143bce561d056f36f8a609">More...</a><br/></td></tr>
<tr class="separator:ab52333a16e143bce561d056f36f8a609"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b32dc607712d540a47085e9395efe38"><td class="memItemLeft" align="right" valign="top">TNetworkAddress&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a2b32dc607712d540a47085e9395efe38">local_resource_location_</a></td></tr>
<tr class="separator:a2b32dc607712d540a47085e9395efe38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa268ca963b06b52a72f8f8e2f257f463"><td class="memItemLeft" align="right" valign="top">boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#aa268ca963b06b52a72f8f8e2f257f463">exit_lock_</a></td></tr>
<tr class="memdesc:aa268ca963b06b52a72f8f8e2f257f463"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used to control shutdown of AcquireCpuResources(). <a href="#aa268ca963b06b52a72f8f8e2f257f463">More...</a><br/></td></tr>
<tr class="separator:aa268ca963b06b52a72f8f8e2f257f463"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f57f77ffadbe9de80222dbee4e71602"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a5f57f77ffadbe9de80222dbee4e71602">exit_</a></td></tr>
<tr class="separator:a5f57f77ffadbe9de80222dbee4e71602"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88a5c03e7cf068424d7db0786384758e"><td class="memItemLeft" align="right" valign="top">boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a88a5c03e7cf068424d7db0786384758e">callbacks_lock_</a></td></tr>
<tr class="memdesc:a88a5c03e7cf068424d7db0786384758e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Protects callbacks_ and callbacks_it_. <a href="#a88a5c03e7cf068424d7db0786384758e">More...</a><br/></td></tr>
<tr class="separator:a88a5c03e7cf068424d7db0786384758e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a519c6f01d964a8e3b2d46900bd665528"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a89c2dc9fe4a18b8d559eae15730fa486">CallbackMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a519c6f01d964a8e3b2d46900bd665528">callbacks_</a></td></tr>
<tr class="separator:a519c6f01d964a8e3b2d46900bd665528"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb0baff7dd5ffc9df898c24d2c0b472e"><td class="memItemLeft" align="right" valign="top">CallbackMap::iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#afb0baff7dd5ffc9df898c24d2c0b472e">callbacks_it_</a></td></tr>
<tr class="memdesc:afb0baff7dd5ffc9df898c24d2c0b472e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Round-robin iterator to notify callbacks about new VCores one at a time. <a href="#afb0baff7dd5ffc9df898c24d2c0b472e">More...</a><br/></td></tr>
<tr class="separator:afb0baff7dd5ffc9df898c24d2c0b472e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1235cb65b3b55db534301daaeb138ebc"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a1235cb65b3b55db534301daaeb138ebc">callback_count_</a></td></tr>
<tr class="separator:a1235cb65b3b55db534301daaeb138ebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad53f4d4d0e96e60fb81b5e67647ee6ea"><td class="memItemLeft" align="right" valign="top">boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#ad53f4d4d0e96e60fb81b5e67647ee6ea">threads_running_lock_</a></td></tr>
<tr class="memdesc:ad53f4d4d0e96e60fb81b5e67647ee6ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Protects threads_running_, threads_changed_cv_ and vcores_. <a href="#ad53f4d4d0e96e60fb81b5e67647ee6ea">More...</a><br/></td></tr>
<tr class="separator:ad53f4d4d0e96e60fb81b5e67647ee6ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b3954e2ba70da252f96b734ba61a0fe"><td class="memItemLeft" align="right" valign="top">boost::condition_variable&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a1b3954e2ba70da252f96b734ba61a0fe">threads_changed_cv_</a></td></tr>
<tr class="memdesc:a1b3954e2ba70da252f96b734ba61a0fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waited on by AcquireCpuResources(), and notified by <a class="el" href="classimpala_1_1QueryResourceMgr.html#a6fbd0b722ff0c7ac21a965fabcadebf0">NotifyThreadUsageChange()</a>. <a href="#a1b3954e2ba70da252f96b734ba61a0fe">More...</a><br/></td></tr>
<tr class="separator:a1b3954e2ba70da252f96b734ba61a0fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affd052e7e921b2685fc5e74f3278aa87"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#affd052e7e921b2685fc5e74f3278aa87">threads_running_</a></td></tr>
<tr class="memdesc:affd052e7e921b2685fc5e74f3278aa87"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of threads we know to be running on behalf of this query. <a href="#affd052e7e921b2685fc5e74f3278aa87">More...</a><br/></td></tr>
<tr class="separator:affd052e7e921b2685fc5e74f3278aa87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5447f64f910edc628fb5e258a507289"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#aa5447f64f910edc628fb5e258a507289">vcores_</a></td></tr>
<tr class="memdesc:aa5447f64f910edc628fb5e258a507289"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of VCores acquired for this node for this query. <a href="#aa5447f64f910edc628fb5e258a507289">More...</a><br/></td></tr>
<tr class="separator:aa5447f64f910edc628fb5e258a507289"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2826351b009db29e80a4452cca727c55"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a2826351b009db29e80a4452cca727c55">max_vcore_oversubscription_ratio_</a></td></tr>
<tr class="separator:a2826351b009db29e80a4452cca727c55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1554ae6f6f3faee9bc82a82d59c7c305"><td class="memItemLeft" align="right" valign="top">boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Thread.html">Thread</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a1554ae6f6f3faee9bc82a82d59c7c305">acquire_vcore_thread_</a></td></tr>
<tr class="memdesc:a1554ae6f6f3faee9bc82a82d59c7c305"><td class="mdescLeft">&#160;</td><td class="mdescRight">Runs <a class="el" href="classimpala_1_1QueryResourceMgr.html#ad570e3ce975997e94bc5bc68fca7a76a">AcquireVcoreResources()</a> after <a class="el" href="classimpala_1_1QueryResourceMgr.html#a6b75c55f1e81093a971665211c5d99ff">InitVcoreAcquisition()</a> is called. <a href="#a1554ae6f6f3faee9bc82a82d59c7c305">More...</a><br/></td></tr>
<tr class="separator:a1554ae6f6f3faee9bc82a82d59c7c305"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a951a2b1bbb52218964c7209343b09e57"><td class="memItemLeft" align="right" valign="top">boost::shared_ptr&lt; <a class="el" href="classimpala_1_1AtomicInt.html">AtomicInt</a><br class="typebreak"/>
&lt; int16_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a951a2b1bbb52218964c7209343b09e57">early_exit_</a></td></tr>
<tr class="separator:a951a2b1bbb52218964c7209343b09e57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0ab13828f77267b6c5138e3f4d7acba"><td class="memItemLeft" align="right" valign="top">boost::shared_ptr&lt; <a class="el" href="classimpala_1_1AtomicInt.html">AtomicInt</a><br class="typebreak"/>
&lt; int16_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1QueryResourceMgr.html#aa0ab13828f77267b6c5138e3f4d7acba">thread_in_expand_</a></td></tr>
<tr class="separator:aa0ab13828f77267b6c5138e3f4d7acba"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Only CPU-heavy threads need be managed using this class. </p>
<p>Tracks all the state necessary to create expansion requests for all fragments of a single query on a single node. Code that might need to expand the memory reservation for this query (i.e. <a class="el" href="classimpala_1_1MemTracker.html" title="This class is thread-safe. ">MemTracker</a>) can use this class to construct expansion requests that may then be submitted to the <a class="el" href="classimpala_1_1ResourceBroker.html">ResourceBroker</a>. If InitCpuAcquisition() is called, this class will monitor the thread token to VCore ratio (thread consumers must use <a class="el" href="classimpala_1_1QueryResourceMgr.html#a6fbd0b722ff0c7ac21a965fabcadebf0">NotifyThreadUsageChange()</a> to update the thread consumption count). If the ratio gets too high (see <a class="el" href="classimpala_1_1QueryResourceMgr.html#a787bfa8a6ea43e0a0b1185932cd18127">AboveVcoreSubscriptionThreshold()</a> for details), we will try to acquire more VCore resources from Llama asynchronously. If the ratio passes a higher threshold (see <a class="el" href="classimpala_1_1QueryResourceMgr.html#a47ef4439f5e58096de5403ffe66f7ae7">IsVcoreOverSubscribed()</a>), we say that the query fragments are currently oversubscribing their VCore resources. Threads are typically handed to a fragment by the thread resource manager, which deals in tokens. When a fragment wants to use a token to start a thread, it should only do so if the ratio of threads to VCores (which map directly onto cgroup shares) is not too large. If it is too large - i.e. the VCores are oversubscribed - the fragment should wait to spin up a new threads until more VCore resources are acquired as above. To help with this, each fragment may register one or more callbacks with their <a class="el" href="classimpala_1_1QueryResourceMgr.html" title="Only CPU-heavy threads need be managed using this class. ">QueryResourceMgr</a>; when more VCore resources are acquired the callbacks are invoked in round-robin fashion. The callback should try and re-acquire the previously untaken thread token, and then a new thread may be started.TODO: Handle reducing the number of VCores when threads finish. TODO: Consider combining more closely with <a class="el" href="classimpala_1_1ThreadResourceMgr.html">ThreadResourceMgr</a>. TODO: Add counters to <a class="el" href="classimpala_1_1RuntimeProfile.html">RuntimeProfile</a> to track VCores allocated etc. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00094">94</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="a89c2dc9fe4a18b8d559eae15730fa486"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef boost::unordered_map&lt;int32_t, <a class="el" href="classimpala_1_1QueryResourceMgr.html#a70fd20e3113f5d57944f17dae0054511">VcoreAvailableCb</a>&gt; <a class="el" href="classimpala_1_1QueryResourceMgr.html#a89c2dc9fe4a18b8d559eae15730fa486">impala::QueryResourceMgr::CallbackMap</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>List of callbacks to notify when a new VCore resource is available. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00161">161</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
</div>
</div>
<a class="anchor" id="a70fd20e3113f5d57944f17dae0054511"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef boost::function&lt;void ()&gt; <a class="el" href="classimpala_1_1QueryResourceMgr.html#a70fd20e3113f5d57944f17dae0054511">impala::QueryResourceMgr::VcoreAvailableCb</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>All callbacks registered here are called in round-robin fashion when more VCores are acquired. Returns a unique ID that can be used as an argument to <a class="el" href="classimpala_1_1QueryResourceMgr.html#a03784ec11fcb18de5edfb28a481949ef" title="Removes the callback with the given ID. ">RemoveVcoreAvailableCb()</a>. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00122">122</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a8b83e88776213d3bc9c1a8ae1de6812a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">QueryResourceMgr::QueryResourceMgr </td>
<td>(</td>
<td class="paramtype">const TUniqueId &amp;&#160;</td>
<td class="paramname"><em>reservation_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TNetworkAddress &amp;&#160;</td>
<td class="paramname"><em>local_resource_location</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TUniqueId &amp;&#160;</td>
<td class="paramname"><em>query_id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00076">76</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00186">max_vcore_oversubscription_ratio_</a>.</p>
</div>
</div>
<a class="anchor" id="a120ac55fc791fbea24db9e76444a8f77"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">QueryResourceMgr::~QueryResourceMgr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Waits for the VCore acquisition thread to stop. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00252">252</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00189">acquire_vcore_thread_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00196">early_exit_</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00229">ShouldExit()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00234">Shutdown()</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00201">thread_in_expand_</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a787bfa8a6ea43e0a0b1185932cd18127"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> QueryResourceMgr::AboveVcoreSubscriptionThreshold </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>True if thread:VCore subscription is too high, meaning more VCores are required. Must be called holding threads_running_ lock. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00136">136</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00186">max_vcore_oversubscription_ratio_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00178">threads_running_</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00181">vcores_</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00140">NotifyThreadUsageChange()</a>.</p>
</div>
</div>
<a class="anchor" id="ad570e3ce975997e94bc5bc68fca7a76a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void QueryResourceMgr::AcquireVcoreResources </td>
<td>(</td>
<td class="paramtype">boost::shared_ptr&lt; <a class="el" href="classimpala_1_1AtomicInt.html">AtomicInt</a>&lt; int16_t &gt; &gt;&#160;</td>
<td class="paramname"><em>thread_in_expand</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boost::shared_ptr&lt; <a class="el" href="classimpala_1_1AtomicInt.html">AtomicInt</a>&lt; int16_t &gt; &gt;&#160;</td>
<td class="paramname"><em>early_exit</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Run as a thread owned by acquire_cpu_thread_. Waits for notification from <a class="el" href="classimpala_1_1QueryResourceMgr.html#a6fbd0b722ff0c7ac21a965fabcadebf0">NotifyThreadUsageChange()</a>, then checks the subscription level to decide if more VCores are needed, and starts a new expansion request if so. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00162">162</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8cc_source.html#l00136">AboveVcoreSubscriptionThreshold()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00162">callbacks_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00165">callbacks_it_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00158">callbacks_lock_</a>, <a class="el" href="exec-env_8h_source.html#l00088">impala::ExecEnv::cgroups_mgr()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00107">CreateExpansionRequest()</a>, <a class="el" href="resource-broker_8cc_source.html#l00503">impala::ResourceBroker::Expand()</a>, <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="exec-env_8h_source.html#l00063">impala::ExecEnv::GetInstance()</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="debug-util_8cc_source.html#l00097">impala::PrintId()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00146">query_id_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00143">reservation_id_</a>, <a class="el" href="exec-env_8h_source.html#l00095">impala::ExecEnv::resource_broker()</a>, <a class="el" href="cgroups-mgr_8cc_source.html#l00101">impala::CgroupsMgr::SetCpuShares()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00229">ShouldExit()</a>, <a class="el" href="time_8cc_source.html#l00021">impala::SleepForMs()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00175">threads_changed_cv_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00172">threads_running_lock_</a>, <a class="el" href="cgroups-mgr_8cc_source.html#l00054">impala::CgroupsMgr::UniqueIdToCgroup()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00181">vcores_</a>, <a class="el" href="cgroups-mgr_8cc_source.html#l00059">impala::CgroupsMgr::VirtualCoresToCpuShares()</a>, and <a class="el" href="logging_8h_source.html#l00057">VLOG_QUERY</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00084">InitVcoreAcquisition()</a>.</p>
</div>
</div>
<a class="anchor" id="a88c3279b6bbe8d782bf272ec4756df07"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t QueryResourceMgr::AddVcoreAvailableCb </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classimpala_1_1QueryResourceMgr.html#a70fd20e3113f5d57944f17dae0054511">VcoreAvailableCb</a> &amp;&#160;</td>
<td class="paramname"><em>callback</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00147">147</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00169">callback_count_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00162">callbacks_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00165">callbacks_it_</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00158">callbacks_lock_</a>.</p>
<p>Referenced by <a class="el" href="hdfs-scan-node_8cc_source.html#l00511">impala::HdfsScanNode::Open()</a>.</p>
</div>
</div>
<a class="anchor" id="a174aae4b50f2577d6608a2d709658da1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> QueryResourceMgr::CreateExpansionRequest </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>memory_mb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>vcores</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">TResourceBrokerExpansionRequest *&#160;</td>
<td class="paramname"><em>request</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates an expansion request for the reservation corresponding to this resource context. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00107">107</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8cc_source.html#l00037">DEFAULT_EXPANSION_REQUEST_TIMEOUT_MS</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00049">impala::ResourceResolver::GetResourceHostport()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00151">local_resource_location_</a>, <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00143">reservation_id_</a>, and <a class="el" href="network-util_8cc_source.html#l00126">impala::TNetworkAddressToString()</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, and <a class="el" href="mem-tracker_8cc_source.html#l00294">impala::MemTracker::ExpandRmReservation()</a>.</p>
</div>
</div>
<a class="anchor" id="a6b75c55f1e81093a971665211c5d99ff"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void QueryResourceMgr::InitVcoreAcquisition </td>
<td>(</td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>init_vcores</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Must be called only once. Starts a separate thread to monitor thread consumption, which asks for more VCores from Llama periodically. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00084">84</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00189">acquire_vcore_thread_</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00196">early_exit_</a>, <a class="el" href="debug-util_8cc_source.html#l00097">impala::PrintId()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00146">query_id_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00201">thread_in_expand_</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00181">vcores_</a>.</p>
</div>
</div>
<a class="anchor" id="a47ef4439f5e58096de5403ffe66f7ae7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::QueryResourceMgr::IsVcoreOverSubscribed </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Should be used to check if another thread token may be acquired by this query. Fragments may ignore this when acquiring a new CPU token, but the result will be a larger thread:VCore ratio. Note that this threshold is larger than the one in <a class="el" href="classimpala_1_1QueryResourceMgr.html#a787bfa8a6ea43e0a0b1185932cd18127">AboveVcoreSubscriptionThreshold()</a>. We want to start acquiring more VCore allocations before we get so oversubscribed that adding new threads is considered a bad idea. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00110">110</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00186">max_vcore_oversubscription_ratio_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00178">threads_running_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00172">threads_running_lock_</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00181">vcores_</a>.</p>
<p>Referenced by <a class="el" href="hdfs-scan-node_8cc_source.html#l00729">impala::HdfsScanNode::ThreadTokenAvailableCb()</a>.</p>
</div>
</div>
<a class="anchor" id="a6fbd0b722ff0c7ac21a965fabcadebf0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void QueryResourceMgr::NotifyThreadUsageChange </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>delta</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called when thread consumption goes up or down. If the total consumption goes above a subscription threshold, the acquisition thread will be woken to ask for more VCores. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00140">140</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8cc_source.html#l00136">AboveVcoreSubscriptionThreshold()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00175">threads_changed_cv_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00178">threads_running_</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00172">threads_running_lock_</a>.</p>
<p>Referenced by <a class="el" href="hdfs-scan-node_8cc_source.html#l00797">impala::HdfsScanNode::ScannerThread()</a>, and <a class="el" href="hdfs-scan-node_8cc_source.html#l00729">impala::HdfsScanNode::ThreadTokenAvailableCb()</a>.</p>
</div>
</div>
<a class="anchor" id="a03784ec11fcb18de5edfb28a481949ef"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void QueryResourceMgr::RemoveVcoreAvailableCb </td>
<td>(</td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>callback_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes the callback with the given ID. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00154">154</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00162">callbacks_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00165">callbacks_it_</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00158">callbacks_lock_</a>.</p>
<p>Referenced by <a class="el" href="hdfs-scan-node_8cc_source.html#l00622">impala::HdfsScanNode::Close()</a>.</p>
</div>
</div>
<a class="anchor" id="a5962e3717bf3f357e5c7073a3f2c3220"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> QueryResourceMgr::ShouldExit </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Notifies acquire_cpu_thread_ that it should terminate. Does not block. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00229">229</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00155">exit_</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00154">exit_lock_</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00252">~QueryResourceMgr()</a>.</p>
</div>
</div>
<a class="anchor" id="a8e522ace9edb5b4d956cdec70e4be121"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void QueryResourceMgr::Shutdown </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the exit flag for the VCore acquisiton thread, but does not block. Also clears the set of callbacks, so that after <a class="el" href="classimpala_1_1QueryResourceMgr.html#a8e522ace9edb5b4d956cdec70e4be121">Shutdown()</a> has returned, no callback will be invoked. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8cc_source.html#l00234">234</a> of file <a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a>.</p>
<p>References <a class="el" href="query-resource-mgr_8h_source.html#l00162">callbacks_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00158">callbacks_lock_</a>, <a class="el" href="resource-broker_8cc_source.html#l00636">impala::ResourceBroker::ClearRequests()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00155">exit_</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00154">exit_lock_</a>, <a class="el" href="exec-env_8h_source.html#l00063">impala::ExecEnv::GetInstance()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00143">reservation_id_</a>, <a class="el" href="exec-env_8h_source.html#l00095">impala::ExecEnv::resource_broker()</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00175">threads_changed_cv_</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00252">~QueryResourceMgr()</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a1554ae6f6f3faee9bc82a82d59c7c305"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::scoped_ptr&lt;<a class="el" href="classimpala_1_1Thread.html">Thread</a>&gt; impala::QueryResourceMgr::acquire_vcore_thread_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Runs <a class="el" href="classimpala_1_1QueryResourceMgr.html#ad570e3ce975997e94bc5bc68fca7a76a">AcquireVcoreResources()</a> after <a class="el" href="classimpala_1_1QueryResourceMgr.html#a6b75c55f1e81093a971665211c5d99ff">InitVcoreAcquisition()</a> is called. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00189">189</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00084">InitVcoreAcquisition()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00252">~QueryResourceMgr()</a>.</p>
</div>
</div>
<a class="anchor" id="a1235cb65b3b55db534301daaeb138ebc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int32_t impala::QueryResourceMgr::callback_count_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Total number of callbacks that were ever registered. Used to give each callback a unique ID so that they can be removed. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00169">169</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00147">AddVcoreAvailableCb()</a>.</p>
</div>
</div>
<a class="anchor" id="a519c6f01d964a8e3b2d46900bd665528"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1QueryResourceMgr.html#a89c2dc9fe4a18b8d559eae15730fa486">CallbackMap</a> impala::QueryResourceMgr::callbacks_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00162">162</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00147">AddVcoreAvailableCb()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00154">RemoveVcoreAvailableCb()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00234">Shutdown()</a>.</p>
</div>
</div>
<a class="anchor" id="afb0baff7dd5ffc9df898c24d2c0b472e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">CallbackMap::iterator impala::QueryResourceMgr::callbacks_it_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Round-robin iterator to notify callbacks about new VCores one at a time. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00165">165</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00147">AddVcoreAvailableCb()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00154">RemoveVcoreAvailableCb()</a>.</p>
</div>
</div>
<a class="anchor" id="a88a5c03e7cf068424d7db0786384758e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::mutex impala::QueryResourceMgr::callbacks_lock_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Protects callbacks_ and callbacks_it_. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00158">158</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00147">AddVcoreAvailableCb()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00154">RemoveVcoreAvailableCb()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00234">Shutdown()</a>.</p>
</div>
</div>
<a class="anchor" id="a951a2b1bbb52218964c7209343b09e57"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::shared_ptr&lt;<a class="el" href="classimpala_1_1AtomicInt.html">AtomicInt</a>&lt;int16_t&gt; &gt; impala::QueryResourceMgr::early_exit_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Signals to the vcore acquisition thread that it should exit after it exits from any pending Expand() call. Is a shared_ptr so that it will remain valid even after the parent <a class="el" href="classimpala_1_1QueryResourceMgr.html" title="Only CPU-heavy threads need be managed using this class. ">QueryResourceMgr</a> has been destroyed. TODO: Combine with <a class="el" href="classimpala_1_1QueryResourceMgr.html#a5962e3717bf3f357e5c7073a3f2c3220" title="Notifies acquire_cpu_thread_ that it should terminate. Does not block. ">ShouldExit()</a>, and replace with AtomicBool when we have such a thing. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00196">196</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00084">InitVcoreAcquisition()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00252">~QueryResourceMgr()</a>.</p>
</div>
</div>
<a class="anchor" id="a5f57f77ffadbe9de80222dbee4e71602"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::QueryResourceMgr::exit_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00155">155</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00229">ShouldExit()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00234">Shutdown()</a>.</p>
</div>
</div>
<a class="anchor" id="aa268ca963b06b52a72f8f8e2f257f463"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::mutex impala::QueryResourceMgr::exit_lock_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Used to control shutdown of AcquireCpuResources(). </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00154">154</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00229">ShouldExit()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00234">Shutdown()</a>.</p>
</div>
</div>
<a class="anchor" id="a2b32dc607712d540a47085e9395efe38"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">TNetworkAddress impala::QueryResourceMgr::local_resource_location_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Network address of the local service registered with Llama. Usually corresponds to &lt;local-address&gt;:0, unless a pseudo-dstributed Llama is being used (see <a class="el" href="classimpala_1_1ResourceResolver.html#a8f6643c91e9f67880d082693744db578">ResourceResolver::CreateLocalLlamaNodeMapping()</a>). </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00151">151</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00107">CreateExpansionRequest()</a>.</p>
</div>
</div>
<a class="anchor" id="a2826351b009db29e80a4452cca727c55"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float impala::QueryResourceMgr::max_vcore_oversubscription_ratio_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set to FLAGS_max_vcore_oversubscription_ratio in the constructor. If the ratio of threads to VCores exceeds this number, no more threads may be executed by this query until more VCore resources are acquired. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00186">186</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00136">AboveVcoreSubscriptionThreshold()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00110">IsVcoreOverSubscribed()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00076">QueryResourceMgr()</a>.</p>
</div>
</div>
<a class="anchor" id="ab52333a16e143bce561d056f36f8a609"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">TUniqueId impala::QueryResourceMgr::query_id_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Query ID of the query this class manages resources for. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00146">146</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00084">InitVcoreAcquisition()</a>.</p>
</div>
</div>
<a class="anchor" id="a52a3c04f04788be93866deaf6309b44a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">TUniqueId impala::QueryResourceMgr::reservation_id_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>ID of the single reservation corresponding to this query. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00143">143</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00107">CreateExpansionRequest()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00234">Shutdown()</a>.</p>
</div>
</div>
<a class="anchor" id="aa0ab13828f77267b6c5138e3f4d7acba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::shared_ptr&lt;<a class="el" href="classimpala_1_1AtomicInt.html">AtomicInt</a>&lt;int16_t&gt; &gt; impala::QueryResourceMgr::thread_in_expand_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Signals to the destructor that the vcore acquisition thread is currently in an Expand() RPC. If so, the destructor does not need to wait for the acquisition thread to exit. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00201">201</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00084">InitVcoreAcquisition()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00252">~QueryResourceMgr()</a>.</p>
</div>
</div>
<a class="anchor" id="a1b3954e2ba70da252f96b734ba61a0fe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::condition_variable impala::QueryResourceMgr::threads_changed_cv_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Waited on by AcquireCpuResources(), and notified by <a class="el" href="classimpala_1_1QueryResourceMgr.html#a6fbd0b722ff0c7ac21a965fabcadebf0">NotifyThreadUsageChange()</a>. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00175">175</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00140">NotifyThreadUsageChange()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00234">Shutdown()</a>.</p>
</div>
</div>
<a class="anchor" id="affd052e7e921b2685fc5e74f3278aa87"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::QueryResourceMgr::threads_running_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of threads we know to be running on behalf of this query. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00178">178</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00136">AboveVcoreSubscriptionThreshold()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00110">IsVcoreOverSubscribed()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00140">NotifyThreadUsageChange()</a>.</p>
</div>
</div>
<a class="anchor" id="ad53f4d4d0e96e60fb81b5e67647ee6ea"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::mutex impala::QueryResourceMgr::threads_running_lock_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Protects threads_running_, threads_changed_cv_ and vcores_. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00172">172</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, <a class="el" href="query-resource-mgr_8h_source.html#l00110">IsVcoreOverSubscribed()</a>, and <a class="el" href="query-resource-mgr_8cc_source.html#l00140">NotifyThreadUsageChange()</a>.</p>
</div>
</div>
<a class="anchor" id="aa5447f64f910edc628fb5e258a507289"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::QueryResourceMgr::vcores_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of VCores acquired for this node for this query. </p>
<p>Definition at line <a class="el" href="query-resource-mgr_8h_source.html#l00181">181</a> of file <a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a>.</p>
<p>Referenced by <a class="el" href="query-resource-mgr_8cc_source.html#l00136">AboveVcoreSubscriptionThreshold()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00162">AcquireVcoreResources()</a>, <a class="el" href="query-resource-mgr_8cc_source.html#l00084">InitVcoreAcquisition()</a>, and <a class="el" href="query-resource-mgr_8h_source.html#l00110">IsVcoreOverSubscribed()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>be/src/statestore/<a class="el" href="query-resource-mgr_8h_source.html">query-resource-mgr.h</a></li>
<li>be/src/statestore/<a class="el" href="query-resource-mgr_8cc_source.html">query-resource-mgr.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceimpala.html">impala</a></li><li class="navelem"><a class="el" href="classimpala_1_1QueryResourceMgr.html">QueryResourceMgr</a></li>
<li class="footer">Generated on Thu May 7 2015 16:10:50 for Impala by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
</div>
</body>
</html>