Введение
Алгоритм В компьютерной науке, групповое планирование - это алгоритм планирования для параллельных систем, который планирует связанные потоки или процессы для одновременного выполнения на разных процессорах. Обычно это будут потоки, все принадлежащие к одному процессу, но они также могут быть из разных процессов, где процессы могут иметь отношения производителя-потребителя или исходить из одной и той же программы MPI. Gang scheduling используется для обеспечения того, чтобы, если две или более потоки или процессы общаются друг с другом, они все были готовы к общению в одно и то же время. Если бы они не были запланированы группой, то можно было бы подождать, чтобы отправить или получить сообщение другому, пока он спит, и наоборот. Когда процессоры переподписываются, а групповое планирование не используется в группе процессов или потоков, которые общаются друг с другом, каждое событие связи может страдать от нагрузки контекстного переключателя. Расписание банды основано на структуре данных, называемой матрицей Остерхаута. В этой матрице каждый ряд представляет собой отрезок времени, а каждый столбец - процессор. Нити или процессы каждой работы упакованы в один ряд матрицы. Во время выполнения координированное переключение контекста выполняется во всех узлах для переключения от процессов в одном ряду к процессам в следующем ряду. Расписание банды строже, чем расписание коша. Он требует, чтобы все потоки одного и того же процесса работали одновременно, в то время как коспланирование позволяет использовать фрагменты, которые представляют собой набор потоков, которые не работают одновременно с остальной частью группы. Групповое планирование было реализовано и использовано в режиме производства на нескольких параллельных машинах, в первую очередь на Connection Machine CM 5.
In computer science, gang scheduling is a scheduling algorithm for parallel systems that schedules related threads or processes to run simultaneously on different processors. Usually these will be threads all belonging to the same process, but they may also be from different processes, where the processes could have a producer consumer relationship or come from the same MPI program. Gang scheduling is used to ensure that if two or more threads or processes communicate with each other, they will all be ready to communicate at the same time. If they were not gang scheduled, then one could wait to send or receive a message to another while it is sleeping, and vice versa. When processors are over subscribed and gang scheduling is not used within a group of processes or threads which communicate with each other, each communication event could suffer the overhead of a context switch. Gang scheduling is based on a data structure called the Ousterhout matrix. In this matrix each row represents a time slice, and each column a processor. The threads or processes of each job are packed into a single row of the matrix. During execution, coordinated context switching is performed across all nodes to switch from the processes in one row to those in the next row. Gang scheduling is stricter than coscheduling. It requires all threads of the same process to run concurrently, while coscheduling allows for fragments, which are sets of threads that do not run concurrently with the rest of the gang. Gang scheduling was implemented and used in production mode on several parallel machines, most notably the Connection Machine CM 5.
Сумка банды (BoG)
В групповом планировании происходит соотношение один к одному, что означает, что каждая задача будет соотнесена с процессором. Обычно работы рассматриваются как независимые банды, но с помощью схемы "сумка банд" все банды могут быть объединены и отправлены вместе в систему. Когда задания выполняются в системе, выполнение никогда не может быть завершено до тех пор, пока все банды, принадлежащие к той же BoG, не завершат свои исполнения. Время отклика еще больше влияет, когда прибывает приоритетная работа. Всякий раз, когда в систему поступает приоритетная задача, ей будет предоставлен приоритет по отношению ко всем другим задачам, даже по сравнению с теми, которые в настоящее время выполняются на процессорах. В этом случае, когда приходит приоритетная задача, подгруппа, которая в настоящее время выполняет работу в системе, будет остановлена, и весь достигнутый прогресс будет потерян и необходимо сделать заново. Это прерывание работы еще больше задержит общее время отклика Банка Германии.
Самая большая банда, которую сначала обслужили (LGFS)
В вышеуказанной схеме выполнения задачи, которые соответствуют увеличению размера задания, помещаются в очередь, причем задачи, принадлежащие самой большой группе, планируются первыми, но этот метод выполнения, как правило, приводит к истощению ресурсов меньших заданий и, следовательно, не подходит для выполнения в системах, где количество обработчиков сравнительно мало. Случай блокировки: процессоры, назначенные для прерванных заданий, заблокированы и не могут выполнять другие задания в своей очереди, пока задания с поврежденных процессоров не будут удалены.
Алгоритмы лево-право
Этот алгоритм является модифицированной версией алгоритма наилучшего соответствия. В алгоритме наилучшего соответствия ПЭ распределяются в последовательном порядке, но в этом алгоритме ПЭ могут быть вставлены с обоих направлений, чтобы уменьшить совпадение между различными наборами ПЭ, назначенными на различные задачи. 1. Второй. Слева направо по размеру. Здесь ПЭ могут быть вставлены в последовательном порядке и в обратном последовательном порядке в зависимости от размера задания. Если размер задания мал, то ПЭ вставляются слева направо, а если задание велико, то ПЭ вставляются справа налево. Второй. Слева направо от слотов. В отличие от предыдущего алгоритма, где выбор основывался на размере задания, здесь выбор зависит от слота. Теперь слоты указываются как заполненные, т.е. заполненные слева или справа. ЭП распределяются по заданию в том же порядке. Количество слотов с обеих сторон примерно равно, поэтому при открытии нового слота направление указывается на основе количества слотов в обоих направлениях.
Алгоритмы на основе нагрузки
Как алгоритмы, основанные на мощности, так и алгоритмы, основанные на левом и правом, не учитывают нагрузку на отдельные ПЭ. Алгоритмы на основе нагрузки учитывают нагрузку на отдельные ПЭ, отслеживая перекрытие между наборами ПЭ, назначенными на различные задачи. 1. Второй. Минимальная максимальная нагрузка. В этой схеме ПЭ сортируются на основе нагрузки на них, которую будет иметь каждая работа на ПЭ. Наличие свободных ПЭ в слоте определяет емкость слота. Предположим, что ПЭ распределены на работу, которая имеет нитки, ПЭ в порядке нагрузки (последний) будет определять максимальную нагрузку, которую может иметь любой ПЭ, который доступен в слоте. Выбирается слот с наименьшей максимальной нагрузкой на любой ПЭ, и в слоте используется ряд свободных ПЭ с наименьшей нагрузкой. Второй. Минимальная средняя нагрузка. В отличие от предыдущей схемы, в которой слоты выбирались на основе минимальной максимальной нагрузки на ПЭ, в данной схеме слоты выбираются на основе средней нагрузки на ПЭ с наименьшей нагрузкой.
Алгоритм на основе друзей
В этом алгоритме ПЭ распределяются в кластерах, а не по отдельности. Сначала ПЭ разделяются на группы, которые являются степенью двух. Каждому члену группы будет назначен контроллер, и когда приходит работа размером n, она присваивается контроллеру размером 2[lg 2] (маленькая степень к 2, которая больше или равна n). Контроллер присваивается, сначала сортируя все используемые слоты, а затем идентифицируя группы из 2[lg 2] соседних свободных процессоров. Если контролер имеет все свободные ПЭ в некоторых слотах, то только новая работа будет назначена этому контролеру. В противном случае открывается новый слот.
Алгоритм на основе миграции
Во всех вышеупомянутых алгоритмах политика первоначального трудоустройства фиксирована, и рабочие места распределяются между предприятиями на основе этого. Однако эта схема переносит рабочие места из одного набора предприятий в другой набор предприятий, что, в свою очередь, улучшает пропускную способность системы.