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

Reply via email to