From 5abe88b469e2f97f2b3bb5be68991076f0279eda Mon Sep 17 00:00:00 2001 From: Forrest Voight Date: Mon, 7 Jan 2013 15:57:24 -0500 Subject: [PATCH] added memory usage graph --- p2pool/util/memory.py | 14 ++++++++++++++ p2pool/web.py | 9 ++++++++- web-static/graphs.html | 7 +++++++ 3 files changed, 29 insertions(+), 1 deletions(-) create mode 100644 p2pool/util/memory.py diff --git a/p2pool/util/memory.py b/p2pool/util/memory.py new file mode 100644 index 0000000..b7be340 --- /dev/null +++ b/p2pool/util/memory.py @@ -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]] diff --git a/p2pool/web.py b/p2pool/web.py index 1843858..983ccb8 100644 --- a/p2pool/web.py +++ b/p2pool/web.py @@ -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) diff --git a/web-static/graphs.html b/web-static/graphs.html index a279afd..caba7a2 100644 --- a/web-static/graphs.html +++ b/web-static/graphs.html @@ -59,6 +59,9 @@

Bitcoind GetBlockTemplate Latency

+

Memory Usage

+ +