--- /dev/null
+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]]
import os
import sys
import time
+import traceback
from twisted.internet import defer, task
from twisted.python import log
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:
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)
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)
<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) {