Load balancing currently is designed to avoid overloading; current 
statistics  show great discrepancies between the requests different 
nodes receive.  Ian had calculated the stddev to be around 7000.  I am 
very interested in analyzing in depth possible additions and improvments 
to the load balancing that will more specifically strive to level the 
differences in incoming Queries.

Ideas that don't require change in protocol:
* add some miniscule bias against nodes who are way above the global 
average _before_ they QueryReject.  Add same bias towards nodes that are 
way below global average (this bias could also depend on the local 
average of the requesting node)
* have highly popular nodes "help out" the very unpopular ones by 
forking a pending request to them every few hours until they get 
integrated.  That request will most probably be unsuccesful, but it will 
help the new node.  Of course this only works if there are "few" highly 
popular nodes as opposed to "many" non-popular.

Changing protocol slightly:
    * add field for average of the EstimatedLoad (jobs/maxjobs) when 
reporting the queries load.  That should not affect anonymity and could 
help in deciding the above bias

Changing the protocol not-so-slightly:
    * send info about EstimatedLoad to every neighboring node.  There 
are many algorithms out there that are designed for nodes that report 
their load.  Will this impact anonymity?  If so, then a node could send 
inform its neighbors only when its about to queryReject.  Or it could 
send an estimated probability of queryReject in the next n minutes, or 
something like that.

Last and least, the crazy idea of nodes announcing on behalf of other 
nodes - there must be something (morally) wrong with it.  What exactly?

_______________________________________________
devl mailing list
devl at freenetproject.org
http://hawk.freenetproject.org:8080/cgi-bin/mailman/listinfo/devl

Reply via email to