Hello Julian,
On Sun, 6 Feb 2005, Julian Anastasov wrote:
On Mon, 7 Feb 2005, Wensong Zhang wrote:
If a server becomes overloaded mw easily goes out of sync
with dramatic results: no dest found. What should we do?
Every time when we don't find dest and cw > 0 because
cw > mw_not_overloaed we should set cw to mw_not_overloaed and
repeat the search from cl at level cw?
Good finding again. Maybe we can add additional condition (mark->cw ==
mark->di) into the check of back to the beginning, such as
if (mark->cl == p && mark->cw == mark->di) {
/* back to the start, and no dest is found.
It is only possible when all dests are OVERLOADED */
dest = NULL;
goto out;
}
Then WRR will only return NULL server when all the servers are
overloadded.
Yes, it is one of the possible variants, i'm not sure
how many times we will reduce cw with di before reaching the
server with max weight which is not overloaded. This can be a
problem when large weights are used but di is 1, this is the
worst case. May be we have to select the best server with max
weight (not overloaded) and to use its weight as mw until cw
reaches 0, then we again select such mw on miss, only when
thresholds are used.
Yes, it is only possible when connection thresholds feature (in kernel
2.6) is used. I understand the worst case. Usually, the weight
difference of servers should not be too much. Updating mw every time will
probably make the algorithm complicated.
I have to run to catch plane to go home for Chinese New Year vacation now.
Talk to you later.
Cheers,
Wensong
|