hello,
I've read some documents about the load balancing algorithm.
And I am very interested in Wengong's description about the
algorithm in the piranha code:
>I uses the following algorithm in the piranha code,
>
> weight <- weight + A * pow(1-load, 1/3) when load!=1
> where A is the scale of weight adjustment, load is server loadavg
>
> eight is not changed, when load is 1.
>
>It was addded probably two years ago, I don't remember exactly.
>
>
>It might be better to replace the load variable with the aggregate_load,
>
> weight <- weight + A * pow(1-aggregate_load, 1/3)
>
> aggregate_load = R1*LOADAVG + R2*RESPONSE + R3*DISK + ...
> where the sum of Ri is 1, and these variables (LOADAVG,RESPONSE..)
> should be normalized into an interval (such as [0,8])
> aggregate_load > 1 means that server is overloaded.
> aggregate_load < 1 means that server is under loaded.
>
>The parameter Ri can give users opportunity to adapt to their
>applications, such as CPU-intensive, or IO-intensive applications.
the quoted text above is from
http://marc.theaimsgroup.com/?l=linux-virtual-server&m=100766070922962&w=2
I think the aggregate load is a great idea. But I can hardly find any articles
in detail.So I'd like to ask some questions here:
1. what't the meaning of "aggregate_load > 1 means that server is overloaded"
viz. is it relatively overloaded to other realserver or really overloaded?
2. what exactly the variables (LOADAVG,RESPONSE..) are
Take the CPU load for example, is length of the task queue a good choice?
3. how the variable load is normalized in the piranha code
Best regs,
Chenny
2002-07-16
|