Author: toad
Date: 2006-08-12 23:41:50 +0000 (Sat, 12 Aug 2006)
New Revision: 10056
Modified:
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/Version.java
trunk/freenet/src/freenet/support/SimpleFieldSet.java
trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java
trunk/freenet/src/freenet/support/math/TimeDecayingRunningAverage.java
Log:
940: All load limiting related data is now persistent.
Also up build number for previous changes.
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2006-08-12 23:34:17 UTC (rev
10055)
+++ trunk/freenet/src/freenet/node/Node.java 2006-08-12 23:41:50 UTC (rev
10056)
@@ -1214,23 +1214,23 @@
Logger.minor(this, "Read throttleFS:\n"+throttleFS);
// Guesstimates. Hopefully well over the reality.
- localChkFetchBytesSentAverage = new
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE);
- localSskFetchBytesSentAverage = new
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE);
- localChkInsertBytesSentAverage = new
TimeDecayingRunningAverage(32768, 180000, 0.0, Long.MAX_VALUE);
- localSskInsertBytesSentAverage = new
TimeDecayingRunningAverage(2048, 180000, 0.0, Long.MAX_VALUE);
- localChkFetchBytesReceivedAverage = new
TimeDecayingRunningAverage(32768, 180000, 0.0, Long.MAX_VALUE);
- localSskFetchBytesReceivedAverage = new
TimeDecayingRunningAverage(2048, 180000, 0.0, Long.MAX_VALUE);
- localChkInsertBytesReceivedAverage = new
TimeDecayingRunningAverage(1024, 180000, 0.0, Long.MAX_VALUE);
- localSskInsertBytesReceivedAverage = new
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE);
+ localChkFetchBytesSentAverage = new
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE, throttleFS == null
? null : throttleFS.subset("LocalChkFetchBytesSentAverage"));
+ localSskFetchBytesSentAverage = new
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE, throttleFS == null
? null : throttleFS.subset("LocalSskFetchBytesSentAverage"));
+ localChkInsertBytesSentAverage = new
TimeDecayingRunningAverage(32768, 180000, 0.0, Long.MAX_VALUE, throttleFS ==
null ? null : throttleFS.subset("LocalChkInsertBytesSentAverage"));
+ localSskInsertBytesSentAverage = new
TimeDecayingRunningAverage(2048, 180000, 0.0, Long.MAX_VALUE, throttleFS ==
null ? null : throttleFS.subset("LocalSskInsertBytesSentAverage"));
+ localChkFetchBytesReceivedAverage = new
TimeDecayingRunningAverage(32768, 180000, 0.0, Long.MAX_VALUE, throttleFS ==
null ? null : throttleFS.subset("LocalChkFetchBytesReceivedAverage"));
+ localSskFetchBytesReceivedAverage = new
TimeDecayingRunningAverage(2048, 180000, 0.0, Long.MAX_VALUE, throttleFS ==
null ? null : throttleFS.subset("LocalSskFetchBytesReceivedAverage"));
+ localChkInsertBytesReceivedAverage = new
TimeDecayingRunningAverage(1024, 180000, 0.0, Long.MAX_VALUE, throttleFS ==
null ? null : throttleFS.subset("LocalChkInsertBytesReceivedAverage"));
+ localSskInsertBytesReceivedAverage = new
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE, throttleFS == null
? null : throttleFS.subset("LocalChkInsertBytesReceivedAverage"));
- remoteChkFetchBytesSentAverage = new
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE);
- remoteSskFetchBytesSentAverage = new
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE);
- remoteChkInsertBytesSentAverage = new
TimeDecayingRunningAverage(32768+32768+1024, 180000, 0.0, Long.MAX_VALUE);
- remoteSskInsertBytesSentAverage = new
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE);
- remoteChkFetchBytesReceivedAverage = new
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE);
- remoteSskFetchBytesReceivedAverage = new
TimeDecayingRunningAverage(2048+500, 180000, 0.0, Long.MAX_VALUE);
- remoteChkInsertBytesReceivedAverage = new
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE);
- remoteSskInsertBytesReceivedAverage = new
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE);
+ remoteChkFetchBytesSentAverage = new
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE,
throttleFS == null ? null :
throttleFS.subset("RemoteChkFetchBytesSentAverage"));
+ remoteSskFetchBytesSentAverage = new
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE,
throttleFS == null ? null :
throttleFS.subset("RemoteSskFetchBytesSentAverage"));
+ remoteChkInsertBytesSentAverage = new
TimeDecayingRunningAverage(32768+32768+1024, 180000, 0.0, Long.MAX_VALUE,
throttleFS == null ? null :
throttleFS.subset("RemoteChkInsertBytesSentAverage"));
+ remoteSskInsertBytesSentAverage = new
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE,
throttleFS == null ? null :
throttleFS.subset("RemoteSskInsertBytesSentAverage"));
+ remoteChkFetchBytesReceivedAverage = new
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE,
throttleFS == null ? null :
throttleFS.subset("RemoteChkFetchBytesReceivedAverage"));
+ remoteSskFetchBytesReceivedAverage = new
TimeDecayingRunningAverage(2048+500, 180000, 0.0, Long.MAX_VALUE, throttleFS ==
null ? null : throttleFS.subset("RemoteSskFetchBytesReceivedAverage"));
+ remoteChkInsertBytesReceivedAverage = new
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE,
throttleFS == null ? null :
throttleFS.subset("RemoteChkInsertBytesReceivedAverage"));
+ remoteSskInsertBytesReceivedAverage = new
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE,
throttleFS == null ? null :
throttleFS.subset("RemoteSskInsertBytesReceivedAverage"));
clientCore = new NodeClientCore(this, config, nodeConfig,
nodeDir, portNumber, sortOrder, throttleFS == null ? null :
throttleFS.subset("RequestStarters"));
@@ -2820,6 +2820,23 @@
private SimpleFieldSet persistThrottlesToFieldSet() {
SimpleFieldSet fs = new SimpleFieldSet();
fs.put("RequestStarters",
clientCore.requestStarters.persistToFieldSet());
+ fs.put("RemoteChkFetchBytesSentAverage",
remoteChkFetchBytesSentAverage.exportFieldSet());
+ fs.put("RemoteSskFetchBytesSentAverage",
remoteSskFetchBytesSentAverage.exportFieldSet());
+ fs.put("RemoteChkInsertBytesSentAverage",
remoteChkInsertBytesSentAverage.exportFieldSet());
+ fs.put("RemoteSskInsertBytesSentAverage",
remoteSskInsertBytesSentAverage.exportFieldSet());
+ fs.put("RemoteChkFetchBytesReceivedAverage",
remoteChkFetchBytesReceivedAverage.exportFieldSet());
+ fs.put("RemoteSskFetchBytesReceivedAverage",
remoteSskFetchBytesReceivedAverage.exportFieldSet());
+ fs.put("RemoteChkInsertBytesReceivedAverage",
remoteChkInsertBytesReceivedAverage.exportFieldSet());
+ fs.put("RemoteSskInsertBytesReceivedAverage",
remoteSskInsertBytesReceivedAverage.exportFieldSet());
+ fs.put("LocalChkFetchBytesSentAverage",
localChkFetchBytesSentAverage.exportFieldSet());
+ fs.put("LocalSskFetchBytesSentAverage",
localSskFetchBytesSentAverage.exportFieldSet());
+ fs.put("LocalChkInsertBytesSentAverage",
localChkInsertBytesSentAverage.exportFieldSet());
+ fs.put("LocalSskInsertBytesSentAverage",
localSskInsertBytesSentAverage.exportFieldSet());
+ fs.put("LocalChkFetchBytesReceivedAverage",
localChkFetchBytesReceivedAverage.exportFieldSet());
+ fs.put("LocalSskFetchBytesReceivedAverage",
localSskFetchBytesReceivedAverage.exportFieldSet());
+ fs.put("LocalChkInsertBytesReceivedAverage",
localChkInsertBytesReceivedAverage.exportFieldSet());
+ fs.put("LocalSskInsertBytesReceivedAverage",
localSskInsertBytesReceivedAverage.exportFieldSet());
+
// FIXME persist the rest
return fs;
}
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-08-12 23:34:17 UTC (rev
10055)
+++ trunk/freenet/src/freenet/node/Version.java 2006-08-12 23:41:50 UTC (rev
10056)
@@ -18,7 +18,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 939;
+ private static final int buildNumber = 940;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 920;
Modified: trunk/freenet/src/freenet/support/SimpleFieldSet.java
===================================================================
--- trunk/freenet/src/freenet/support/SimpleFieldSet.java 2006-08-12
23:34:17 UTC (rev 10055)
+++ trunk/freenet/src/freenet/support/SimpleFieldSet.java 2006-08-12
23:41:50 UTC (rev 10056)
@@ -475,4 +475,8 @@
}
}
+ public boolean getBoolean(String key, boolean def) {
+ return Fields.stringToBool(get(key), def);
+ }
+
}
Modified:
trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java
===================================================================
---
trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java
2006-08-12 23:34:17 UTC (rev 10055)
+++
trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java
2006-08-12 23:41:50 UTC (rev 10056)
@@ -149,7 +149,7 @@
return reports;
}
- public SimpleFieldSet exportFieldSet() {
+ public synchronized SimpleFieldSet exportFieldSet() {
SimpleFieldSet fs = new SimpleFieldSet();
fs.put("Type", "BootstrappingDecayingRunningAverage");
fs.put("CurrentValue", currentValue);
Modified: trunk/freenet/src/freenet/support/math/TimeDecayingRunningAverage.java
===================================================================
--- trunk/freenet/src/freenet/support/math/TimeDecayingRunningAverage.java
2006-08-12 23:34:17 UTC (rev 10055)
+++ trunk/freenet/src/freenet/support/math/TimeDecayingRunningAverage.java
2006-08-12 23:41:50 UTC (rev 10056)
@@ -5,6 +5,7 @@
import java.io.IOException;
import freenet.support.Logger;
+import freenet.support.SimpleFieldSet;
/**
* Time decaying running average.
@@ -64,6 +65,31 @@
new Exception("debug"));
}
+ public TimeDecayingRunningAverage(double defaultValue, long halfLife,
+ double min, double max, SimpleFieldSet fs) {
+ curValue = defaultValue;
+ this.defaultValue = defaultValue;
+ started = false;
+ this.halfLife = halfLife;
+ createdTime = lastReportTime = System.currentTimeMillis();
+ this.minReport = min;
+ this.maxReport = max;
+ totalReports = 0;
+ logDEBUG = Logger.shouldLog(Logger.DEBUG, this);
+ if(logDEBUG)
+ Logger.debug(this, "Created "+this,
+ new Exception("debug"));
+ if(fs != null) {
+ started = fs.getBoolean("Started", false);
+ if(started) {
+ curValue = fs.getDouble("CurrentValue", curValue);
+ totalReports = fs.getLong("TotalReports", 0);
+ long uptime = fs.getLong("Uptime", 0);
+ createdTime = System.currentTimeMillis() - uptime;
+ }
+ }
+ }
+
public TimeDecayingRunningAverage(double defaultValue, double halfLife,
double min, double max, DataInputStream dis) throws IOException {
int m = dis.readInt();
if(m != MAGIC) throw new IOException("Invalid magic "+m);
@@ -168,4 +194,14 @@
public synchronized long lastReportTime() {
return lastReportTime;
}
+
+ public synchronized SimpleFieldSet exportFieldSet() {
+ SimpleFieldSet fs = new SimpleFieldSet();
+ fs.put("Type", "TimeDecayingRunningAverage");
+ fs.put("CurrentValue", curValue);
+ fs.put("Started", started);
+ fs.put("TotalReports", totalReports);
+ fs.put("Uptime", System.currentTimeMillis() - createdTime);
+ return fs;
+ }
}