From: Forrest Voight Date: Thu, 25 Oct 2012 16:35:53 +0000 (-0400) Subject: getwork latency graph X-Git-Tag: 9.0~34 X-Git-Url: https://git.novaco.in/?a=commitdiff_plain;h=c0a834aeff6def6afe2aedbb5644c7f53d045c28;hp=0ade6273da9492fbb6e889fa8ce38bfaefbe69cc;p=p2pool.git getwork latency graph --- 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

+ +