Update of /cvsroot/freenet/freenet/src/freenet/node/rt
In directory sc8-pr-cvs1:/tmp/cvs-serv18179/src/freenet/node/rt

Modified Files:
        NGRouting.java NodeEstimatorFactory.java NGRoutingTable.java 
        StandardNodeEstimator.java NodeEstimator.java 
Log Message:
6317:
Make most xfer rates bytes/sec, fix conversion errors leading to crazy estimates, 
change transferSucceeded arguments.
Add min/max xfer rates to node RT status summary page.
Logging.

Index: NGRouting.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/NGRouting.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -w -r1.22 -r1.23
--- NGRouting.java      5 Nov 2003 22:36:39 -0000       1.22
+++ NGRouting.java      7 Nov 2003 18:17:14 -0000       1.23
@@ -185,13 +185,13 @@
     public void transferSucceeded(long searchTime, int htl, long size, 
                                  long transferTime) {
     didNotQuicklyRNF = true;
-       last.transferSucceeded(key, searchTime, htl, size, transferTime);
        long stdFileSize;
        if(node.dir.countKeys() > 16)
            stdFileSize = (Node.storeSize - node.dir.available()) / 
                node.dir.countKeys();
        else stdFileSize = 100000;
        long normalizedTime = searchTime + (transferTime*stdFileSize/size);
+       // searchSuccessTime is valid anyway
        Core.diagnostics.occurrenceContinuous("normalizedSuccessTime", 
                                              normalizedTime);
        Core.diagnostics.occurrenceContinuous("successSearchTime",
@@ -201,15 +201,24 @@
                        diffSearchTime);
        Core.diagnostics.occurrenceContinuous("absDiffSearchSuccessTime",
                        Math.abs(diffSearchTime));
-       if(size > 16384) { // more than one segment
-           double rate = ((double)size * 1000) / ((double)transferTime);
+       double rate;
+       if(size > 16384 /* must be multi-segment */ 
+               && transferTime > 10 /* sanity check */) {
+               rate = ((double)size * 1000) / ((double)transferTime);
            double diffRate = rate - (lastEstimate.transferRate*1000);
            Core.diagnostics.occurrenceContinuous("diffTransferRate", diffRate);
            Core.diagnostics.occurrenceContinuous("absDiffTransferRate",
                        Math.abs(diffRate));
-           ngrt.reportRate(rate);
            Core.diagnostics.occurrenceContinuous("successTransferRate", rate);
+           ngrt.reportRate(rate);
+       } else {
+               rate = -1.0;
+               Core.logger.log(this, "Not logging transfer rate because size="+
+                                               size+", transferTime="+transferTime,
+                                               new Exception("debug"), 
+                                               size > 4096 ? Logger.NORMAL : 
Logger.MINOR);
        }
+       last.transferSucceeded(key, searchTime, htl, rate);
        terminate(true, true);
     }
     

Index: NodeEstimatorFactory.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/NodeEstimatorFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -w -r1.3 -r1.4
--- NodeEstimatorFactory.java   30 Oct 2003 01:34:06 -0000      1.3
+++ NodeEstimatorFactory.java   7 Nov 2003 18:17:14 -0000       1.4
@@ -21,6 +21,9 @@
     NodeEstimator create(RoutingMemory mem, NodeReference ref,
                                                 DataObjectPending e,
                                                 boolean needConnection) throws 
IOException;
+    /** Create a NodeEstimator
+     * @param rate the initial transfer rate in bytes per second
+     */
     NodeEstimator create(RoutingMemory mem, NodeReference ref,
                                                 Key k, double rate, boolean 
needConnection);
        TimeEstimator createGlobalTimeEstimator();

Index: NGRoutingTable.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/NGRoutingTable.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -w -r1.30 -r1.31
--- NGRoutingTable.java 6 Nov 2003 01:41:16 -0000       1.30
+++ NGRoutingTable.java 7 Nov 2003 18:17:14 -0000       1.31
@@ -64,9 +64,9 @@
        public void reportRate(double rate) {
                if(rate > fastestTransferSeen) {
                        fastestTransferSeen = rate;
-                       if(Core.logger.shouldLog(Logger.DEBUG, this))
-                               Core.logger.log(this,"New fastest rate seen: "+rate,
-                                               Logger.NORMAL);
+                       if(Core.logger.shouldLog(Logger.NORMAL, this))
+                               Core.logger.log(this,"New fastest rate seen: "+rate+
+                                               " bytes per second", Logger.NORMAL);
                }
        }
        

Index: StandardNodeEstimator.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/StandardNodeEstimator.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -w -r1.26 -r1.27
--- StandardNodeEstimator.java  6 Nov 2003 01:41:16 -0000       1.26
+++ StandardNodeEstimator.java  7 Nov 2003 18:17:14 -0000       1.27
@@ -101,6 +101,7 @@
         * Create one from scratch for a completely new node, using insanely
         * optimistic defaults
         * @argument k the initial specialization
+        * @argument initTransferRate initial transfer rate in bytes per second
         */
        public StandardNodeEstimator(NGRoutingTable ngrt, NodeReference ref,
                                                                 RoutingMemory mem, 
RunningAverageFactory raf,
@@ -124,7 +125,7 @@
                epDNFGivenConnectionAndNotRejectedOrSearchFailed = 
                        rtef.createZero();
                etSuccessSearch = rtef.createZero();
-               etTransferRate = rtef.createInitTransfer(initTransferRate);
+               etTransferRate = rtef.createInitTransfer(initTransferRate/1000);
                etDNF = rtef.createZero();
                this.needConnection = needConnection;
                lastAccessedTime = System.currentTimeMillis();
@@ -284,11 +285,11 @@
        }
        
        public void transferSucceeded(Key key, long searchTime, int htl,
-                                                                 long size, long 
transferTime) {
+                                                                 double rate) {
                boolean logDEBUG = Core.logger.shouldLog(Logger.DEBUG,this);
                if(logDEBUG)
                        Core.logger.log(this, "transferSucceeded("+key+","+searchTime+
-                                       ","+htl+","+size+","+transferTime, 
Logger.DEBUG);
+                                       ","+htl+","+rate+") on "+this, Logger.DEBUG);
                synchronized(this) {
                        successes++;
                }
@@ -299,20 +300,11 @@
                etSuccessSearch.reportTime(key, searchTime);
                rpSearchFailed.report(0); // the search succeeded
                rpTransferFailed.report(0); // the transfer succeeded
-               if(size > 16384 /* must be multi-segment */ 
-                               && transferTime > 10 /* sanity check */) {
-                       double rate = ((double)size) / (double)transferTime;
+               if(rate > 0.0) {
                        if(logDEBUG) Core.logger.log(this, "Logging transfer rate of 
"+rate+
-                                               " bytes per millisecond", rate > 100 ? 
Logger.NORMAL : Logger.DEBUG);
-                       etTransferRate.reportTransferRate(key, rate);
-               } else {
-                       Core.logger.log(this, "Not logging transfer rate because 
size="+
-                                                       size+", 
transferTime="+transferTime,
-                                                       new Exception("debug"), 
-                                                       size > 4096 ? Logger.NORMAL : 
Logger.MINOR);
+                                               " bytes per second", rate > 10000 ? 
Logger.NORMAL : Logger.DEBUG);
+                       etTransferRate.reportTransferRate(key, rate*0.001); // convert 
to bytes per millisecond
                }
-               if(logDEBUG) Core.logger.log(this, "Transfer succeeded in 
"+transferTime+
-                                               "ms on "+ref, Logger.DEBUG);
                lastAccessedTime = System.currentTimeMillis();
        }
        
@@ -395,7 +387,8 @@
          "Connection Success Time", "NodeReference", "Node Version", 
          "Search died probability", "Transfer died probability", 
          "Search died time", 
-         "Open Outbound Connections", "Open Inbound Connections" };
+         "Open Outbound Connections", "Open Inbound Connections",
+         "Minimum Transfer Rate", "Maximum Transfer Rate" };
        
        static class MyComparableStringMap 
            extends SimpleStringMap implements ComparableStringMap {
@@ -463,6 +456,9 @@
                        new Integer(ngrt.countOutboundConnections(ref.getIdentity()));
                values[16] = 
                        new Integer(ngrt.countInboundConnections(ref.getIdentity()));
+               TimeEstimator.HTMLReportTool reportTool = 
etTransferRate.getHTMLReportingTool();
+               values[17] = reportTool.lowestString(TimeEstimator.TRANSFER_RATE);
+               values[18] = reportTool.highestString(TimeEstimator.TRANSFER_RATE);
                return new MyComparableStringMap(values);
        }
        

Index: NodeEstimator.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/NodeEstimator.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -w -r1.11 -r1.12
--- NodeEstimator.java  4 Nov 2003 20:29:18 -0000       1.11
+++ NodeEstimator.java  7 Nov 2003 18:17:14 -0000       1.12
@@ -67,9 +67,10 @@
     abstract public void transferFailed(Key key, long time, long size); 
        // failure in the middle of a transfer
     
-    // Full blown successful request
-    abstract public void transferSucceeded(Key key, long searchTime, int htl, 
-                                                                                  
long size, long transferTime);
+    /** Full blown successful request
+     * @param rate the transfer rate, bytes/second, negative if we don't want to 
report it.
+     */
+    abstract public void transferSucceeded(Key key, long searchTime, int htl, double 
rate);
        
     abstract public void dataNotFound(Key key, long searchTime, int htl);
        

_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to