Ian Clarke wrote:

Interesting, but the issue is that the tFailure used in the current NGR algorithm is not the time required to receive the failure, tFailure is the time required to receive the failure PLUS THE ESTIMATED TIME TO REREQUEST THE DATA FROM SOMEWHERE ELSE AND GET IT. Lets call that globalTReceive.

I'll rename globalTReceive to tGlobalSuccess. The formula you come up with is:


estimate=pSuccess+tSuccess
         +pFailure*(tFailure+tGlobalSuccess)

Okay, here's my problem with that: It's correct only if we are sure that we would actually get a successful result from some other node. But what if no other nodes return data, and we only get DNFs?

Considering this possiblity, I would guess this formula would be better:

estimate=pSuccess+tSuccess
         +pFailure*(tFailure
                    +pGlobalSuccess*tGlobalSuccess
                    +pGlobalFailure*tGlobalFailure)

> So far as I can tell, the current scheme achieves what we want already
> - can you demonstrate otherwise?

To illustrate how we might be going wrong in the current scheme, consider a key which figures to take a short time to retrieve when actually found, but is also hard to find. Then, our current globalEstimator would be low (optimistic) and lead us to towards trying more hares (fast but unlikely to succeed) than tortoises (slow but likely to succeed).

Instead, with a hard-to-find key, we should be more inclined towards the tortoises, and this would happen if globalEstimator were raised to take into account the time we will spend trying and failing on other nodes.

-Martin


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

Reply via email to