Author: toad
Date: 2009-01-09 17:33:42 +0000 (Fri, 09 Jan 2009)
New Revision: 24988
Modified:
trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
trunk/freenet/src/freenet/node/NodeClientCore.java
trunk/freenet/src/freenet/node/NodeStats.java
Log:
Track the average time taken by a successful vs unsuccessful vs any CHK request.
Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
2009-01-09 16:28:40 UTC (rev 24987)
+++ trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
2009-01-09 17:33:42 UTC (rev 24988)
@@ -217,6 +217,11 @@
successRateBox.addChild("div", "class",
"infobox-header", "Success rates");
HTMLNode successRateContent =
successRateBox.addChild("div", "class", "infobox-content");
stats.fillSuccessRateBox(successRateContent);
+
+ HTMLNode timeDetailBox =
nextTableCell.addChild("div", "class", "infobox");
+ timeDetailBox.addChild("div", "class",
"infobox-header", "Detailed timings (local CHK fetches)");
+ HTMLNode timingsContent =
timeDetailBox.addChild("div", "class", "infobox-content");
+ stats.fillDetailedTimingsBox(timingsContent);
}
}
Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java 2009-01-09 16:28:40 UTC
(rev 24987)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java 2009-01-09 17:33:42 UTC
(rev 24988)
@@ -653,6 +653,8 @@
// See below
requestStarters.rejectedOverload(false, false);
rejectedOverload = true;
+ long rtt =
System.currentTimeMillis() - startTime;
+
node.nodeStats.reportCHKTime(rtt, false);
}
} else
if(rs.hasForwarded() &&
@@ -667,6 +669,10 @@
requestStarters.requestCompleted(false, false, key.getNodeKey());
// Count towards RTT even if
got a RejectedOverload - but not if timed out.
requestStarters.chkRequestThrottle.successfulCompletion(rtt);
+
node.nodeStats.reportCHKTime(rtt, status == RequestSender.SUCCESS);
+ if(status ==
RequestSender.SUCCESS) {
+ Logger.minor(this,
"Successful CHK fetch took "+rtt);
+ }
}
if(rs.getStatus() == RequestSender.SUCCESS)
Modified: trunk/freenet/src/freenet/node/NodeStats.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStats.java 2009-01-09 16:28:40 UTC
(rev 24987)
+++ trunk/freenet/src/freenet/node/NodeStats.java 2009-01-09 17:33:42 UTC
(rev 24988)
@@ -133,6 +133,10 @@
final TrivialRunningAverage remoteFetchPSuccess;
final TrivialRunningAverage blockTransferPSuccess;
+ final TrivialRunningAverage successfulLocalCHKFetchTimeAverage;
+ final TrivialRunningAverage unsuccessfulLocalCHKFetchTimeAverage;
+ final TrivialRunningAverage localCHKFetchTimeAverage;
+
private long previous_input_stat;
private long previous_output_stat;
private long previous_io_stat_time;
@@ -342,6 +346,10 @@
remoteFetchPSuccess = new TrivialRunningAverage();
blockTransferPSuccess = new TrivialRunningAverage();
+ successfulLocalCHKFetchTimeAverage = new
TrivialRunningAverage();
+ unsuccessfulLocalCHKFetchTimeAverage = new
TrivialRunningAverage();
+ localCHKFetchTimeAverage = new TrivialRunningAverage();
+
requestOutputThrottle =
new TokenBucket(Math.max(obwLimit*60, 32768*20),
(int)((1000L*1000L*1000L) / (obwLimit)), 0);
requestInputThrottle =
@@ -1779,4 +1787,25 @@
}
return count;
}
+
+ public void reportCHKTime(long rtt, boolean successful) {
+ if(successful)
+ successfulLocalCHKFetchTimeAverage.report(rtt);
+ else
+ unsuccessfulLocalCHKFetchTimeAverage.report(rtt);
+ localCHKFetchTimeAverage.report(rtt);
+ }
+
+ public void fillDetailedTimingsBox(HTMLNode html) {
+ HTMLNode table = html.addChild("table");
+ HTMLNode row = table.addChild("tr");
+ row.addChild("td", "Successful");
+ row.addChild("td",
TimeUtil.formatTime((long)successfulLocalCHKFetchTimeAverage.currentValue(), 2,
true));
+ row = table.addChild("tr");
+ row.addChild("td", "Unsuccessful");
+ row.addChild("td",
TimeUtil.formatTime((long)unsuccessfulLocalCHKFetchTimeAverage.currentValue(),
2, true));
+ row = table.addChild("tr");
+ row.addChild("td", "Average");
+ row.addChild("td",
TimeUtil.formatTime((long)localCHKFetchTimeAverage.currentValue(), 2, true));
+ }
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs