Closed Alwayswannalol closed 4 weeks ago
Выбрать один алгоритм, описать его тут (можно на псевдокоде изначально) и написать данные, которые нужно собрать с узла для подсчета метрик
Weight Least Connections - алгоритм балансировки нагрузки на узлах. С его помощью узел-мастер сможет понять, какой из оставшихся узлов справится с задачей быстрее. Его особенность заключается в том, что он учитывает как характеристики самих узлов (загруженность CPU, количество свободной оперативной памяти, вычислительная мощность узла), так и их текущую загруженность. Т.е. количество задач, которые уже предстоит выполнить узлу. Основные этапы алгоритма представлены ниже:
//максимально возможные показатели в системе
float max_RAM;
float max_power_CPU;
float weight_node (load_CPU, RAM, power_CPU){
float weight_load = 0.3;
float weight_RAM = 0.2;
float weight_power = 0.5;
float weight = weight_load *(load_CPU/100) + weight_RAM *( RAM/max_RAM) + weight_power *
(power_CPU/max_power_CPU);
return weight;
}
На данном этапе для каждого узла вычисляется вес, учитывая каждую из его характеристик. Формула веса представляет из себя взвешенную сумму характеристик, деленных на максимальные показатели в системе. Весовые коэффициенты - величина того, насколько характеристики важна при выполнении данного типа задач.
float select_node(count_queue, weight){
priority = count_queue/weight;
return priority ;
}
На данном этапе для каждого узла вычисляется значения приоритета, с помощью которого узел-мастер выберет целевой узел. Выбор узла:
float min_priority = infinity;
for (node in node_list){
if (node_priority < min_priority) {
min_priority = node_priority ;
select_node = node;
}
}
Таким образом с помощью алгоритма Weight Least Connections узел-мастер выбрал узел, на который стоит отправить пришедшую задачу.
Определиться с метриками, как мы будем оценивать состояние узла и время выполнения таски на узле в зависимости от CPU и Memory