CSC 456 Fall 2013/4a bc: Difference between revisions
Jump to navigation
Jump to search
Line 14: | Line 14: | ||
<code> | <code> | ||
server_load_vec_desc = sort_descending(server_load_vec); | |||
server_load_vec_asc = sort_ascending(server_load_vec); | |||
while (server_load_vec_desc[0].deviation > DEVIATION_THRESHOLD) { | server_load_vec_desc = sort_descending(server_load_vec); | ||
server_load_vec_asc = sort_ascending(server_load_vec); | |||
while (server_load_vec_desc[0].deviation > DEVIATION_THRESHOLD) { | |||
populate_range_load_vector(server_load_vec_desc[0].server_name); | |||
sort descending range_load_vec; | |||
i=0; | |||
while (server_load_vec_desc[0].deviation > DEVIATION_THRESHOLD && | |||
i < range_load_vec.size()) { | |||
if (moving range_load_vec[i] from server_load_vec_desc[0] to server_load_vec_asc[0] reduces deviation) { | |||
add range_load_vec[i] to balance plan | |||
partial_deviation = range_load_vec[i].loadestimate * loadavg_per_loadestimate; | |||
server_load_vec_desc[0].loadavg -= partial_deviation; | |||
server_load_vec_desc[0].deviation -= partial_deviation; | |||
server_load_vec_asc[0].loadavg += partial_deviation; | |||
server_load_vec_asc[0].deviation += partial_deviation; | |||
server_load_vec_asc = sort_ascending(server_load_vec_asc); | |||
} | |||
i++; | |||
} | |||
if (i == range_load_vec.size()) | |||
} | remove server_load_vec_desc[0] and corresponding entry in server_load_vec_asc | ||
server_load_vec_desc = sort_descending(server_load_vec_desc); | |||
} | |||
</code> | </code> |
Revision as of 15:44, 8 October 2013
Load Balancing
Static Vs. Dynamic Techniques
Static Load balancing
Dynamic Load Balancing
Real World applications of Load Balancing
Examples of Load Balancing in action
Server Load balancing pseudocode
server_load_vec_desc = sort_descending(server_load_vec);
server_load_vec_asc = sort_ascending(server_load_vec);
while (server_load_vec_desc[0].deviation > DEVIATION_THRESHOLD) {
populate_range_load_vector(server_load_vec_desc[0].server_name);
sort descending range_load_vec;
i=0;
while (server_load_vec_desc[0].deviation > DEVIATION_THRESHOLD &&
i < range_load_vec.size()) {
if (moving range_load_vec[i] from server_load_vec_desc[0] to server_load_vec_asc[0] reduces deviation) {
add range_load_vec[i] to balance plan
partial_deviation = range_load_vec[i].loadestimate * loadavg_per_loadestimate;
server_load_vec_desc[0].loadavg -= partial_deviation;
server_load_vec_desc[0].deviation -= partial_deviation;
server_load_vec_asc[0].loadavg += partial_deviation;
server_load_vec_asc[0].deviation += partial_deviation;
server_load_vec_asc = sort_ascending(server_load_vec_asc);
}
i++;
}
if (i == range_load_vec.size())
remove server_load_vec_desc[0] and corresponding entry in server_load_vec_asc
server_load_vec_desc = sort_descending(server_load_vec_desc);
}