hd = graph.HistoryDatabase.from_obj({
'local_hash_rate': graph.DataStreamDescription(False, dataview_descriptions),
'local_dead_hash_rate': graph.DataStreamDescription(False, dataview_descriptions),
+ 'pool_rate': graph.DataStreamDescription(True, dataview_descriptions),
+ 'pool_stale_rate': graph.DataStreamDescription(True, dataview_descriptions),
}, hd_obj)
def _atomic_write(filename, data):
open(filename + '.new', 'w').write(data)
hd.datastreams['local_hash_rate'].add_datum(t, work)
if dead:
hd.datastreams['local_dead_hash_rate'].add_datum(t, work)
+ def add_point():
+ if tracker.get_height(current_work.value['best_share_hash']) < 720:
+ return
+ nonstalerate = p2pool_data.get_pool_attempts_per_second(tracker, current_work.value['best_share_hash'], 720)
+ poolrate = nonstalerate / (1 - p2pool_data.get_average_stale_prop(tracker, current_work.value['best_share_hash'], 720))
+ t = time.time()
+ hd.datastreams['pool_rate'].add_datum(t, poolrate)
+ hd.datastreams['pool_stale_rate'].add_datum(t, poolrate - nonstalerate)
+ task.LoopingCall(add_point).start(5)
new_root.putChild('graph_data', WebInterface(lambda source, view: json.dumps(hd.datastreams[source].dataviews[view].get_data(time.time())), 'application/json'))
web_root.putChild('static', static.File(os.path.join(os.path.dirname(sys.argv[0]), 'web-static')))
<body>
<h1>P2Pool Graphs</h1>
- <h2>Last hour</h1>
- <div id="graph_hour"></div>
+ <h2>Local rate - Blue=All, Red=Dead</h2>
- <h2>Last day</h1>
- <div id="graph_day"></div>
+ <h3>Last hour</h3>
+ <div id="local_hour"></div>
- <h2>Last week</h1>
- <div id="graph_week"></div>
+ <h3>Last day</h3>
+ <div id="local_day"></div>
- <h2>Last month</h1>
- <div id="graph_month"></div>
+ <h3>Last week</h3>
+ <div id="local_week"></div>
+
+ <h3>Last month</h3>
+ <div id="local_month"></div>
+
+ <h2>Pool rate - Blue=All, Red=Stale</h2>
+
+ <h3>Last hour</h3>
+ <div id="pool_hour"></div>
+
+ <h3>Last day</h3>
+ <div id="pool_day"></div>
+
+ <h3>Last week</h3>
+ <div id="pool_week"></div>
+
+ <h3>Last month</h3>
+ <div id="pool_month"></div>
<script type="text/javascript">
function getData(url) {
return data;
}
- function plot(e, url) {
- data = getData("/web/graph_data/local_hash_rate/" + url);
- dead_data = getData("/web/graph_data/local_dead_hash_rate/" + url);
+ function plot(e, blue, red) {
+ data = getData("/web/graph_data/" + blue);
+ dead_data = getData("/web/graph_data/" + red);
var w = 640;
var h = 300;
.attr("text-anchor", "middle");
}
- function attachGraph(e, url) {
- plot(e, url);
- //setInterval(function() { plot(e, url); }, 5000);
+ function attachGraph(e, blue, red) {
+ plot(e, blue, red);
+ setInterval(function() { plot(e, blue, red); }, 5000);
}
- attachGraph(d3.select("#graph_hour"), "last_hour");
- attachGraph(d3.select("#graph_day"), "last_day");
- attachGraph(d3.select("#graph_week"), "last_week");
- attachGraph(d3.select("#graph_month"), "last_month");
+ periods = ["hour", "day", "week", "month"];
+ for(i = 0; i < periods.length; i++) {
+ attachGraph(d3.select("#local_" + periods[i]), "local_hash_rate/last_" + periods[i], "local_dead_hash_rate/last_" + periods[i]);
+ attachGraph(d3.select("#pool_" + periods[i]), "pool_rate/last_" + periods[i], "pool_stale_rate/last_" + periods[i]);
+ }
</script>
</body>
</html>