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