From c0a834aeff6def6afe2aedbb5644c7f53d045c28 Mon Sep 17 00:00:00 2001 From: Forrest Voight Date: Thu, 25 Oct 2012 12:35:53 -0400 Subject: [PATCH] getwork latency graph --- p2pool/bitcoin/helper.py | 5 +++++ p2pool/web.py | 4 ++++ web-static/graphs.html | 7 +++++++ 3 files changed, 16 insertions(+), 0 deletions(-) diff --git a/p2pool/bitcoin/helper.py b/p2pool/bitcoin/helper.py index 3d5810b..07d18a7 100644 --- a/p2pool/bitcoin/helper.py +++ b/p2pool/bitcoin/helper.py @@ -26,11 +26,15 @@ def getwork(bitcoind, use_getblocktemplate=False): else: return bitcoind.rpc_getmemorypool() try: + start = time.time() work = yield go() + end = time.time() except jsonrpc.Error_for_code(-32601): # Method not found use_getblocktemplate = not use_getblocktemplate try: + start = time.time() work = yield go() + end = time.time() except jsonrpc.Error_for_code(-32601): # Method not found print >>sys.stderr, 'Error: Bitcoin version too old! Upgrade to v0.5 or newer!' raise deferral.RetrySilentlyException() @@ -51,6 +55,7 @@ def getwork(bitcoind, use_getblocktemplate=False): height=work['height'], last_update=time.time(), use_getblocktemplate=use_getblocktemplate, + latency=end - start, )) @deferral.retry('Error submitting primary block: (will retry)', 10, 10) diff --git a/p2pool/web.py b/p2pool/web.py index 3e97a5d..8251149 100644 --- a/p2pool/web.py +++ b/p2pool/web.py @@ -386,6 +386,7 @@ def get_web_root(wb, datadir_path, bitcoind_warning_var): 'desired_version_rates': graph.DataStreamDescription(dataview_descriptions, multivalues=True, 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), }, hd_obj) task.LoopingCall(lambda: _atomic_write(hd_path, json.dumps(hd.to_obj()))).start(100) @wb.pseudoshare_received.watch @@ -431,6 +432,9 @@ def get_web_root(wb, datadir_path, bitcoind_warning_var): 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())) task.LoopingCall(add_point).start(5) + @node.bitcoind_work.changed.watch + def _(new_work): + hd.datastreams['getwork_latency'].add_datum(time.time(), new_work['latency']) new_root.putChild('graph_data', WebInterface(lambda source, view: hd.datastreams[source].dataviews[view].get_data(time.time()))) web_root.putChild('static', static.File(os.path.join(os.path.dirname(sys.argv[0]), 'web-static'))) diff --git a/web-static/graphs.html b/web-static/graphs.html index f7d38f3..bc44a68 100644 --- a/web-static/graphs.html +++ b/web-static/graphs.html @@ -56,6 +56,9 @@

Traffic rate

+

Getwork Latency

+ +