summaryrefslogtreecommitdiffstats
path: root/venv/lib/python3.9/site-packages/pympler/templates/tracker.tpl
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.9/site-packages/pympler/templates/tracker.tpl')
-rw-r--r--venv/lib/python3.9/site-packages/pympler/templates/tracker.tpl127
1 files changed, 127 insertions, 0 deletions
diff --git a/venv/lib/python3.9/site-packages/pympler/templates/tracker.tpl b/venv/lib/python3.9/site-packages/pympler/templates/tracker.tpl
new file mode 100644
index 00000000..8533e9eb
--- /dev/null
+++ b/venv/lib/python3.9/site-packages/pympler/templates/tracker.tpl
@@ -0,0 +1,127 @@
+%include('header', category='Tracker', title='Tracked objects')
+
+%from pympler.util.stringutils import pp, pp_timestamp
+%from json import dumps
+
+<h1>Tracked objects</h1>
+
+%if snapshots:
+
+ <h2>Memory distribution over time</h2>
+
+ <div id="memory_chart_flot" style="width:100%; height: 400px"></div>
+
+ <script type="text/javascript" src="/static/jquery.flot.min.js"></script>
+ <script type="text/javascript" src="/static/jquery.flot.stack.min.js"></script>
+ <script type="text/javascript" src="/static/jquery.flot.tooltip.min.js"></script>
+ <script type="text/javascript">
+ function format_size(value) {
+ var val = Math.round(value / (1000*1000));
+ return val.toLocaleString() + ' MB';
+ };
+
+ $(document).ready(function() {
+ var timeseries = {{!timeseries}};
+ var options = {
+ xaxis: {
+ show: false,
+ },
+ yaxis: {
+ tickFormatter: format_size
+ },
+ grid: {
+ hoverable: true
+ },
+ tooltip: true,
+ tooltipOpts: {
+ content: "%s | %y"
+ },
+ legend: {
+ position: "nw"
+ },
+ series: {
+ bars: {
+ show: true,
+ barWidth: .9,
+ fillColor: { colors: [ { opacity: 0.9 }, { opacity: 0.9 } ] },
+ align: "center"
+ },
+ stack: true
+ }
+ };
+ $.plot($('#memory_chart_flot'), timeseries, options);
+ });
+ </script>
+
+ <h2>Snapshots statistics</h2>
+
+ %for sn in snapshots:
+ <h3>{{sn.desc or 'Untitled'}} snapshot at {{pp_timestamp(sn.timestamp)}}</h3>
+ <table class="tdata">
+ <thead>
+ <tr>
+ <th width="20%">Class</th>
+ <th width="20%" class="num">Instance #</th>
+ <th width="20%" class="num">Total</th>
+ <th width="20%" class="num">Average size</th>
+ <th width="20%" class="num">Share</th>
+ </tr>
+ </thead>
+ <tbody>
+ %cnames = list(sn.classes.keys())
+ %cnames.sort()
+ %for cn in cnames:
+ %data = sn.classes[cn]
+ <tr>
+ <td><a href="/tracker/class/{{cn}}">{{cn}}</a></td>
+ <td class="num">{{data['active']}}</td>
+ <td class="num">{{pp(data['sum'])}}</td>
+ <td class="num">{{pp(data['avg'])}}</td>
+ <td class="num">{{'%3.2f%%' % data['pct']}}</td>
+ </tr>
+ %end
+ </tbody>
+ </table>
+
+ %if sn.system_total.available:
+ <h4>Process memory</h4>
+
+ <table class="tdata">
+ <thead>
+ <tr>
+ <th>Type</th>
+ <th class="num">Size</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Virtual memory size</td>
+ <td class="num">{{pp(sn.system_total.vsz)}}</td>
+ </tr>
+ <tr>
+ <td>Resident set size</td>
+ <td class="num">{{pp(sn.system_total.rss)}}</td>
+ </tr>
+ <tr>
+ <td>Pagefaults</td>
+ <td class="num">{{sn.system_total.pagefaults}}</td>
+ </tr>
+ %for key, value in sn.system_total.os_specific:
+ <tr>
+ <td>{{key}}</td>
+ <td class="num">{{value}}</td>
+ </tr>
+ %end
+ </tbody>
+ </table>
+ %end
+ %end
+
+%else:
+
+ <p>No objects are currently tracked. Consult the Pympler documentation for
+ instructions of how to use the classtracker module.</p>
+
+%end
+
+%include('footer')