2006-04-15 jrandom
* Adjust the proactive tunnel request dropping so we will reject what we can instead of dropping so much (but still dropping if we get too far overloaded)
This commit is contained in:
@ -1,4 +1,9 @@
|
|||||||
$Id: history.txt,v 1.457 2006/04/14 13:07:15 jrandom Exp $
|
$Id: history.txt,v 1.458 2006/04/14 15:24:07 jrandom Exp $
|
||||||
|
|
||||||
|
2006-04-15 jrandom
|
||||||
|
* Adjust the proactive tunnel request dropping so we will reject what we
|
||||||
|
can instead of dropping so much (but still dropping if we get too far
|
||||||
|
overloaded)
|
||||||
|
|
||||||
2006-04-14 jrandom
|
2006-04-14 jrandom
|
||||||
* 0 isn't very random
|
* 0 isn't very random
|
||||||
|
@ -15,9 +15,9 @@ import net.i2p.CoreVersion;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class RouterVersion {
|
public class RouterVersion {
|
||||||
public final static String ID = "$Revision: 1.397 $ $Date: 2006/04/14 13:06:40 $";
|
public final static String ID = "$Revision: 1.398 $ $Date: 2006/04/14 15:24:53 $";
|
||||||
public final static String VERSION = "0.6.1.15";
|
public final static String VERSION = "0.6.1.15";
|
||||||
public final static long BUILD = 3;
|
public final static long BUILD = 4;
|
||||||
public static void main(String args[]) {
|
public static void main(String args[]) {
|
||||||
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
|
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
|
||||||
System.out.println("Router ID: " + RouterVersion.ID);
|
System.out.println("Router ID: " + RouterVersion.ID);
|
||||||
|
@ -414,15 +414,19 @@ class BuildHandler {
|
|||||||
|
|
||||||
int proactiveDrops = countProactiveDrops();
|
int proactiveDrops = countProactiveDrops();
|
||||||
long recvDelay = System.currentTimeMillis()-state.recvTime;
|
long recvDelay = System.currentTimeMillis()-state.recvTime;
|
||||||
if ( (response == 0) && ( (recvDelay > BuildRequestor.REQUEST_TIMEOUT) || (proactiveDrops > MAX_PROACTIVE_DROPS) ) ) {
|
if (response == 0) {
|
||||||
|
float pDrop = recvDelay / (BuildRequestor.REQUEST_TIMEOUT/2);
|
||||||
|
pDrop = (float)Math.pow(pDrop, 16);
|
||||||
|
if (_context.random().nextFloat() < pDrop) { // || (proactiveDrops > MAX_PROACTIVE_DROPS) ) ) {
|
||||||
_context.statManager().addRateData("tunnel.rejectOverloaded", recvDelay, proactiveDrops);
|
_context.statManager().addRateData("tunnel.rejectOverloaded", recvDelay, proactiveDrops);
|
||||||
if (true || (proactiveDrops < MAX_PROACTIVE_DROPS*2))
|
if (true || (proactiveDrops < MAX_PROACTIVE_DROPS*2))
|
||||||
response = TunnelHistory.TUNNEL_REJECT_TRANSIENT_OVERLOAD;
|
response = TunnelHistory.TUNNEL_REJECT_TRANSIENT_OVERLOAD;
|
||||||
else
|
else
|
||||||
response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH;
|
response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH;
|
||||||
} else if (response == 0) {
|
} else {
|
||||||
_context.statManager().addRateData("tunnel.acceptLoad", recvDelay, recvDelay);
|
_context.statManager().addRateData("tunnel.acceptLoad", recvDelay, recvDelay);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (_log.shouldLog(Log.DEBUG))
|
if (_log.shouldLog(Log.DEBUG))
|
||||||
_log.debug("Responding to " + state.msg.getUniqueId() + "/" + ourId
|
_log.debug("Responding to " + state.msg.getUniqueId() + "/" + ourId
|
||||||
@ -592,7 +596,7 @@ class BuildHandler {
|
|||||||
for (int i = 0; i < _inboundBuildMessages.size(); i++) {
|
for (int i = 0; i < _inboundBuildMessages.size(); i++) {
|
||||||
BuildMessageState cur = (BuildMessageState)_inboundBuildMessages.get(i);
|
BuildMessageState cur = (BuildMessageState)_inboundBuildMessages.get(i);
|
||||||
long age = System.currentTimeMillis() - cur.recvTime;
|
long age = System.currentTimeMillis() - cur.recvTime;
|
||||||
if (age >= BuildRequestor.REQUEST_TIMEOUT/2) {
|
if (age >= BuildRequestor.REQUEST_TIMEOUT) {
|
||||||
_inboundBuildMessages.remove(i);
|
_inboundBuildMessages.remove(i);
|
||||||
i--;
|
i--;
|
||||||
dropped++;
|
dropped++;
|
||||||
@ -605,7 +609,7 @@ class BuildHandler {
|
|||||||
} else {
|
} else {
|
||||||
int queueTime = estimateQueueTime(_inboundBuildMessages.size());
|
int queueTime = estimateQueueTime(_inboundBuildMessages.size());
|
||||||
float pDrop = queueTime/((float)BuildRequestor.REQUEST_TIMEOUT/2);
|
float pDrop = queueTime/((float)BuildRequestor.REQUEST_TIMEOUT/2);
|
||||||
pDrop = pDrop * pDrop * pDrop;
|
pDrop = (float)Math.pow(pDrop, 16); // steeeep
|
||||||
float f = _context.random().nextFloat();
|
float f = _context.random().nextFloat();
|
||||||
if ( (pDrop > f) && (allowProactiveDrop()) ) {
|
if ( (pDrop > f) && (allowProactiveDrop()) ) {
|
||||||
_context.statManager().addRateData("tunnel.dropLoadProactive", queueTime, _inboundBuildMessages.size());
|
_context.statManager().addRateData("tunnel.dropLoadProactive", queueTime, _inboundBuildMessages.size());
|
||||||
@ -647,9 +651,9 @@ class BuildHandler {
|
|||||||
decryptTime = (int)avg;
|
decryptTime = (int)avg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int estimatedQueueTime = numPendingMessages * decryptTime;
|
float estimatedQueueTime = numPendingMessages * decryptTime;
|
||||||
estimatedQueueTime *= 2; // lets leave some cpu to spare, 'eh?
|
estimatedQueueTime *= 1.2f; // lets leave some cpu to spare, 'eh?
|
||||||
return estimatedQueueTime;
|
return (int)estimatedQueueTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user