2015-10-12 2 views
0

Я пишу программу, которая выполняет ряд задач, написанных на Java, которые затем выполняются на машинах в одной и той же локальной сети (подробности того, как это происходит, не входит в эту область вопросов).Какой алгоритм планирования я должен использовать?

Задачи будут сразу переданы программе, означающей, что основная часть работы разбивает задачи и назначает задачи машинам в сети. Я предполагаю, что это будет сделано с каким-то алгоритмом планирования.

E.g. Программа получает 50 заданий, она имеет 3 компьютера в локальной сети, каждая из которых имеет 4 ядра. Как должны планироваться задачи? Может ли это быть сделано путем разделения задач на число машин, факторизующих в количестве ядер, которые имеет машина?

Предполагая, что у меня есть аппаратная спецификация этих машин, какой алгоритм я должен использовать для планирования этих задач?

+0

Какие еще требования у вас есть? Есть ли какая-то причина не просто использовать первую очередь? – azurefrog

+0

Некоторые детали отсутствуют. Например. технические характеристики оборудования абсолютно бесполезны, если вы не можете определить ок. количество требуемых операций/необходимое пространство и т. д. Также вам нужно знать, сколько времени требуется машинам для связи по времени, затрачиваемому на выполнение задач. – fabian

+0

@azurefrog Я обновил вопрос - я рассмотрел использование алгоритма FCFS, однако время выполнения может различаться между задачами, означающими, что если я отправлю группу задач, содержащих большую задачу, на машину с низкими ресурсами, которую потребуется навсегда для завершения. Однако этот проект находится на ранних стадиях развития, поэтому он хотел понять, что было там больше, чем любое событие. – Tom

ответ

0

После выполнения еще нескольких исследований я решил, что моя проблема связана скорее с проблемой балансировки нагрузки, чем с проблемой планирования. Задачи должны быть правильно сбалансированы между доступными сетевыми ресурсами, взвешенными по количеству ядер на каждой машине.