<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
{{> www/common-header.tmpl }}

<h2>Memory Usage</h2>

Memory consumption / limit: <strong>{{consumption}}</strong> / <strong>{{mem_limit}}</strong>

<h3>Breakdown</h3>
<pre>{{detailed}}</pre>

<h3>tcmalloc</h3>
<pre>{{overview}}</pre>

<h3>System</h3>
<pre>{{systeminfo}}</pre>

{{?aggregate_metrics}}
<h3>Process and system memory metrics</h3>
<table class='table table-bordered table-hover'>
  <tr>
    <th>Name</th>
    <th>Value</th>
    <th>Description</th>
  </tr>
{{/aggregate_metrics}}
{{#aggregate_metrics}}
  <tr>
    <td><tt>{{name}}</tt></td>
    {{! Is this a stats metric? }}
    {{?mean}}
    <td>
      Last (of {{count}}): <strong>{{last}}</strong>.
      Min: {{min}}, max: {{max}}, avg: {{mean}}</td>
    {{/mean}}
    {{^mean}}
    <td>
      {{human_readable}}
    </td>
    {{/mean}}
    <td>
      {{description}}
    </td>
  </tr>
{{/aggregate_metrics}}
{{?aggregate_metrics}}
</table>
{{/aggregate_metrics}}

{{?buffer_pool}}
<h3>Buffer pool memory metrics</h3>
<table class='table table-bordered table-hover'>
  <tr>
    <th>Name</th>
    <th>Value</th>
    <th>Description</th>
  </tr>
{{/buffer_pool}}
{{#buffer_pool}}
  <tr>
    <td><tt>{{name}}</tt></td>
    {{! Is this a stats metric? }}
    {{?mean}}
    <td>
      Last (of {{count}}): <strong>{{last}}</strong>.
      Min: {{min}}, max: {{max}}, avg: {{mean}}</td>
    {{/mean}}
    {{^mean}}
    <td>
      {{human_readable}}
    </td>
    {{/mean}}
    <td>
      {{description}}
    </td>
  </tr>
{{/buffer_pool}}
{{?buffer_pool}}
</table>
{{/buffer_pool}}

{{?jvm_total}}
<h3>JVM aggregate memory metrics</h3>
<table class='table table-bordered table-hover'>
  <tr>
    <th>Name</th>
    <th>Value</th>
    <th>Description</th>
  </tr>
{{/jvm_total}}
{{#jvm_total}}
  <tr>
    <td><tt>{{name}}</tt></td>
    {{! Is this a stats metric? }}
    {{?mean}}
    <td>
      Last (of {{count}}): <strong>{{last}}</strong>.
      Min: {{min}}, max: {{max}}, avg: {{mean}}</td>
    {{/mean}}
    {{^mean}}
    <td>
      {{human_readable}}
    </td>
    {{/mean}}
    <td>
      {{description}}
    </td>
  </tr>
{{/jvm_total}}
{{?jvm_total}}
</table>
{{/jvm_total}}


{{?jvm_heap}}
<h3>JVM heap memory metrics</h3>
<table class='table table-bordered table-hover'>
  <tr>
    <th>Name</th>
    <th>Value</th>
    <th>Description</th>
  </tr>
{{/jvm_heap}}
{{#jvm_heap}}
  <tr>
    <td><tt>{{name}}</tt></td>
    {{! Is this a stats metric? }}
    {{?mean}}
    <td>
      Last (of {{count}}): <strong>{{last}}</strong>.
      Min: {{min}}, max: {{max}}, avg: {{mean}}</td>
    {{/mean}}
    {{^mean}}
    <td>
      {{human_readable}}
    </td>
    {{/mean}}
    <td>
      {{description}}
    </td>
  </tr>
{{/jvm_heap}}
{{?jvm_heap}}
</table>
{{/jvm_heap}}

{{?jvm_non_heap}}
<h3>JVM non-heap memory metrics</h3>
<table class='table table-bordered table-hover'
  <tr>
    <th>Name</th>
    <th>Value</th>
    <th>Description</th>
  </tr>
{{/jvm_non_heap}}
{{#jvm_non_heap}}
  <tr>
    <td><tt>{{name}}</tt></td>
    {{! Is this a stats metric? }}
    {{?mean}}
    <td>
      Last (of {{count}}): <strong>{{last}}</strong>.
      Min: {{min}}, max: {{max}}, avg: {{mean}}</td>
    {{/mean}}
    {{^mean}}
    <td>
      {{human_readable}}
    </td>
    {{/mean}}
    <td>
      {{description}}
    </td>
  </tr>
{{/jvm_non_heap}}
{{?jvm_non_heap}}
</table>
{{/jvm_non_heap}}

{{> www/common-footer.tmpl }}
