added memory usage graph
authorForrest Voight <forrest@forre.st>
Mon, 7 Jan 2013 20:57:24 +0000 (15:57 -0500)
committerForrest Voight <forrest@forre.st>
Mon, 7 Jan 2013 20:57:24 +0000 (15:57 -0500)
p2pool/util/memory.py [new file with mode: 0644]
p2pool/web.py
web-static/graphs.html

diff --git a/p2pool/util/memory.py b/p2pool/util/memory.py
new file mode 100644 (file)
index 0000000..b7be340
--- /dev/null
@@ -0,0 +1,14 @@
+import gc
+import os
+
+_scale = {'kB': 1024, 'mB': 1024*1024,
+    'KB': 1024, 'MB': 1024*1024}
+
+def resident():
+    gc.collect()
+    with open('/proc/%d/status' % os.getpid()) as f:
+        v = f.read()
+    i = v.index('VmRSS:')
+    v = v[i:].split(None, 3)
+    #assert len(v) == 3, v
+    return float(v[1]) * _scale[v[2]]
index 1843858..983ccb8 100644 (file)
@@ -5,6 +5,7 @@ import json
 import os
 import sys
 import time
+import traceback
 
 from twisted.internet import defer, task
 from twisted.python import log
@@ -13,7 +14,7 @@ from twisted.web import resource, static
 import p2pool
 from bitcoin import data as bitcoin_data
 from . import data as p2pool_data
-from util import deferred_resource, graph, math, pack, variable
+from util import deferred_resource, graph, math, memory, pack, variable
 
 def _atomic_read(filename):
     try:
@@ -392,6 +393,7 @@ def get_web_root(wb, datadir_path, bitcoind_warning_var, stop_event=variable.Eve
             multivalue_undefined_means_0=True, default_func=build_desired_rates),
         'traffic_rate': graph.DataStreamDescription(dataview_descriptions, is_gauge=False, multivalues=True),
         'getwork_latency': graph.DataStreamDescription(dataview_descriptions),
+        'memory_usage': graph.DataStreamDescription(dataview_descriptions),
     }, hd_obj)
     x = task.LoopingCall(lambda: _atomic_write(hd_path, json.dumps(hd.to_obj())))
     x.start(100)
@@ -438,6 +440,11 @@ def get_web_root(wb, datadir_path, bitcoind_warning_var, stop_event=variable.Eve
         vs_total = sum(vs.itervalues())
         hd.datastreams['desired_versions'].add_datum(t, dict((str(k), v/vs_total) for k, v in vs.iteritems()))
         hd.datastreams['desired_version_rates'].add_datum(t, dict((str(k), v/vs_total*pool_total) for k, v in vs.iteritems()))
+        try:
+            hd.datastreams['memory_usage'].add_datum(t, memory.resident())
+        except:
+            if p2pool.DEBUG:
+                traceback.print_exc()
     x = task.LoopingCall(add_point)
     x.start(5)
     stop_event.watch(x.stop)
index a279afd..caba7a2 100644 (file)
@@ -59,6 +59,9 @@
         <h2>Bitcoind GetBlockTemplate Latency</h2>
         <svg id="getwork_latency"></svg>
         
+        <h2>Memory Usage</h2>
+        <svg id="memory_usage"></svg>
+        
         <script type="text/javascript">
             function compose() {
                 var funcs = arguments;
                 plot_later(d3.select("#getwork_latency"), "s", null, [
                     {"url": "/web/graph_data/getwork_latency/last_" + lowerperiod, "color": "#FF0000", "label": "Getwork Latency"}
                 ], false);
+                
+                plot_later(d3.select("#memory_usage"), "s", null, [
+                    {"url": "/web/graph_data/memory_usage/last_" + lowerperiod, "color": "#FF0000", "label": "Memory Usage"}
+                ], false);
             }
             
             d3.json('/local_stats', function(local_stats) {