Реклама:

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

В простейшей модели планировщику заданий достаточно знать, сколько процессоров требуется для выполнения каждого задания. В этой модели задания выстраиваются строго в порядке FIFO (рис. 8.38, а). Когда первое задание начинает выполняться, планировщик проверяет, достаточно ли процессоров для выполнения следующего по порядку задания. Если да, то оно тоже начинает выполняться, и т. д. Если нет, то система ждет, пока не освободится достаточное количество процессоров. В нашем примере кластер содержит 8 процессоров, но он вполне мог бы содержать 128 в блоках по 16 штук (получилось бы 8 групп процессоров), или в какой-нибудь другой комбинации.

Планирование

Рис. 8.38. Выполнение заданий в кластере (серым цветом показаны простаивающие процессоры): в порядке FIFO (а); без блокирования начала очереди (б); путем заполнения прямоугольника в системе координат процессоры - время (в)

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

Еще более сложный алгоритм требует, чтобы заранее было известно, сколько процессоров нужно для выполнения каждого задания и сколько времени на это потребуется. Располагая этой информацией, планировщик заданий может попытаться заполнить заданиями прямоугольник в системе координат процессоры - время (рис. 8.38, в). Это особенно эффективно, когда задания получены днем, а выполняться должны ночью. В этом случае планировщик заданий получает всю необходимую информацию заранее, и может выполнять задания в оптимальном порядке.

Коммуникационное программное обеспечение для мультикомпьютеров || Оглавление || Общая память на прикладном уровне