Во всю историю вычислительной техники не было момента, чтобы уровня развития вычислительной техники было достаточно для решения всех стоящих перед человечеством задач. Постоянно ставятся новые, все более сложные задачи, требующие все более мощных вычислительных ресурсов для своего решения. Актуальность данной работы заключается в том, что с каждым днем вычисления становятся массивнее, соответственно, спрос и цена на оборудование неумолимо растет, и есть необходимость искать достойную замену среди доступных широкому кругу пользователей аналогов. В связи с этим развитие вычислительной техники пошло по экстенсивному пути, основанному на дублировании вычислительных устройств, которые в параллели могут работать над общей задачей. Вместе с этим родилось параллельное программирование. Уже сегодня разработчики программных систем используют параллелизм на всех уровнях, начиная от нескольких конвейеров суперскалярных процессоров, и заканчивая параллельно работающими вычислительными узлами в GRID.
Отдельный класс параллельных архитектур представляют кластерные системы. Объектом разработки выступает вычислительный кластер – совокупность нескольких вычислительных узлов. Параллельное приложение для кластерной системы представляет собой несколько процессов, которые сообщаются друг с другом по сети. Таким образом, если пользователь сумеет эффективно распределить свою задачу между несколькими процессорами на узлах кластера, то он может получить выигрыш в скорости работы, пропорциональный числу процессоров.
Как правило, кластерные системы крайне интенсивно используются именно для проведения вычислений. Предприятия и организации чаще всего приобретают кластеры для решения потока задач. И зачастую потребности желающих воспользоваться вычислительными ресурсами превосходят доступный объем ресурсов, поэтому к кластерам можно наблюдать очереди. Ситуация очень похожа на ту, что существовала с мэйнфреймами на заре компьютерной эпохи. В таком случае, предметом разработки выступает повышение производительности компьютеров, путем их объединения в кластер, и проведения параллельных вычислений, для работы с большими данными, которые, в свою очередь, на сегодняшний день являются неотъемлемой частью рыночных отношений во всем мире
Раньше для эффективного управления потоками задач создавались так называемые системы пакетной обработки. Пользователи помещали свои задачи в очередь этих систем, а за результатом приходили через нескольких часов, а иногда и дней. Примерно то же самое происходит сейчас на кластерах, поэтому правильное распределение нагрузки по вычислительным узлам кластера имеет очень большое значение. Этот вопрос приобретает еще большую важность в случае, если кластер имеет неоднородную структуру: различается мощность центральных процессоров, объем оперативной памяти, скорость участков локальной сети. Если не учитывать особенности аппаратуры, то можно наблюдать, как параллельное приложение простаивает, дожидаясь процесса, который был распределен на самый медленный вычислительный узел. Новизна данной работы заключается в том, что кластер собирается под конкретную задачу и из тех аппаратных составляющих, которые имеются в наличии.