FMS does bad things to limit load: Rather than queueing every key at 
MaxRetries=-1, it does all the scheduling itself, doing simple ClientGet's 
with no maxretries and no priority (hence prio 2), in order to enforce a 
maximum number of parallel requests. Other client apps probably do similar 
things. MiniChat presumably does the opposite, constantly requesting keys, 
starting a new request for the same key when the last one has finished 
(saces: is this true?).

The reason that FMS's behaviour is a problem is that ULPRs rely on nodes 
knowing which keys they are interested in. ULPRs are the main network level 
optimisation for SSK polling/chat/WoT apps, so this is potentially a big 
source of problems - excessive load, slow propagation of messages etc.

Possible solutions:

DontFetch=true : if set, a request would be purely passive: no requests would 
be started as a result of that request, but the node would know it wants 
those blocks, and if the blocks do come in, the request would progress. 
Suggested usage is that a client app would set up DontFetch requests for 
everything it is interested in, with Verbosity sufficiently high, and then 
poll using whatever load heuristics they want. When a block (typically an SSK 
block when polling SSK outqueues) is found, either the request succeeds, 
fatally fails, or it is a redirect. If it is a redirect, the client would get 
a SimpleProgress and would schedule a normal request to fetch the rest of the 
key. (This should be fairly easy to implement)

Client configurable cooldown: Running a request with MaxRetries=-1 means 
fetching it 3 times every half hour. We could make the half hour bit 
configurable, and maybe the 3 times too. Note that it is quite likely that we 
will eventually impose network level limits on polling (e.g. using 
RecentlyFailed), so setting this low will not necessarily (in the long run) 
yield better performance. (This should be moderately easy to implement)

Any other ideas? Is this the right approach? IMHO we can implement whatever 
API fairly easily, but maybe there are some other ideas?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 835 bytes
Desc: This is a digitally signed message part.
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20090408/08e35e0d/attachment.pgp>

Reply via email to