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.

Attachment: signature.asc
Description: Digital signature

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

Reply via email to