This has been applied in 6219; I suspect it will be a better fit with NGRouting than the old reject everything or reject nothing technique.
----- Forwarded message from Benny Amorsen <[EMAIL PROTECTED]> ----- From: Benny Amorsen <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Subject: [freenet-dev] Probabilistic rejection X-BeenThere: [EMAIL PROTECTED] X-Mailman-Version: 2.1.2 Reply-To: Discussion of development issues <[EMAIL PROTECTED]> List-Id: Discussion of development issues <devl.freenetproject.org> List-Unsubscribe: <http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl>, <mailto:[EMAIL PROTECTED]> List-Archive: <http://dodo.freenetproject.org/pipermail/devl> List-Post: <mailto:[EMAIL PROTECTED]> List-Help: <mailto:[EMAIL PROTECTED]> List-Subscribe: <http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl>, <mailto:[EMAIL PROTECTED]> (This is a slightly changed retransmission) When a freenet node hits overloadLow, it starts rejecting requests. It will reject anything that doesn't fit ((ft.contains(searchKey) || ds.contains(searchKey)). This is a rather rough approach. Instead I have decided to be gentler, and give requests another chance. When load hits overloadLow (which I have personally set low, at 0.5), requests that do not fit the above expression still have a chance to get through; a high chance if the load is just over overloadLow, and a low chance if load is close to overloadHigh. Once load passes overloadHigh, requests that do not fit the above expression are simply rejected. The rest still have a chance, unless load becomes 1 (which, alas, happens much too often). Again the chance gets smaller as load increases. In theory this kinder, gentler approach should lead to a smoother performance with fewer load spikes, as well as world peace. The code is attached, sf CVS is still broken. A test jar for the curious is available at http://amorsen.dk/freenet-probabilistic-4.jar The jar includes modifications to NewRequest.java, to make rejection easier and more efficient. (In freenet, rejection is hardest on the one doing the rejecting...) A patch to build 6162 is attached. /Benny --- freenet-orig/src/freenet/node/Node.java 2003-08-23 02:06:59.000000000 +0200 +++ freenet/src/freenet/node/Node.java 2003-08-22 20:34:39.000000000 +0200 @@ -2420,15 +2428,36 @@ return true; } - // Node is slightly overloaded - if ((load < overloadHigh) && - (ft.contains(searchKey) || - ds.contains(searchKey))) { - if (inboundRequests != null) { - inboundRequests.incSuccesses(diagAddr); + // Node is loaded + if (load < overloadHigh) { + if ((ft.contains(searchKey) || ds.contains(searchKey))) { + if (inboundRequests != null) { + inboundRequests.incSuccesses(diagAddr); + } + return true; + } else { + // Give the request another chance + if (Math.random() * (overloadHigh - overloadLow) + overloadLow < load) { + if (inboundRequests != null) { + inboundRequests.incSuccesses(diagAddr); + } + return true; + } } - return true; - } + return false; + } + + // Node is seriously loaded + if (load < 1) { + if ((ft.contains(searchKey) || ds.contains(searchKey))) { + if (Math.random() * (1 - overloadHigh) + overloadHigh < load) { + if (inboundRequests != null) { + inboundRequests.incSuccesses(diagAddr); + } + return true; + } + } + } // Node is overloaded return false; _______________________________________________ Devl mailing list [EMAIL PROTECTED] http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl ----- End forwarded message ----- -- Matthew J Toseland - [EMAIL PROTECTED] Freenet Project Official Codemonkey - http://freenetproject.org/ ICTHUS - Nothing is impossible. Our Boss says so.
signature.asc
Description: Digital signature
_______________________________________________ Devl mailing list [EMAIL PROTECTED] http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl