Hi,
On Sat, 5 Feb 2005, Julian Anastasov wrote:
On Sat, 5 Feb 2005, Wensong Zhang wrote:
After mark->cw is reset with zero, the server with mark->nw will be picked
up for next new request, instead of the server with weight >= (mark->mw -
mark->di).
I see other dangerous problems. WRR (not checked other
schedulers) is not ready at all for dynamic changes of the
IP_VS_DEST_F_OVERLOAD flag, even for changes during edit where
mw does not take into account the overloaded flag (may be because
it can be dynamically changed).
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.
BTW, WRR in kernel 2.4 should be OK, sorry that I made a mistake last
time.
Thanks,
Wensong
|