Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство программиста_администратора.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
551.89 Кб
Скачать

2.10. Планирование в OpenTs

Задача планировщика заключается в том, чтобы свести к минимуму время исполнения программы. Это означает, что в каждый момент времени каждый узел кластера занят какой-то работой. Узел простаивает, если его очередь пренатальных задач (ptq) пуста, а все исполняемые задачи находятся в ожидании ресурсов. Таким образом, главная задача планировщика — обеспечить наличие задач в очереди на каждом узле [43].

2.10.1. Постановка задачи

Имеется вычислительная система, состоящая из N узлов. На каждом узле есть множество задач. Задачи делятся на пренатальные и исполняемые (непренатальные). Пренатальные задачи могут перемещаться между узлами кластера, исполняемые — нет. Исполняемые задачи, в свою очередь, делятся на следующие:

  • ожидающие неготового значения;

  • готовые к исполнению (ожидающие процессорного времени).

Планировщик может предпринимать следующие действия:

  • переслать одну или несколько пренатальных задач на другие узлы;

  • продолжить одну из исполняемых задач;

  • запустить одну из пренатальных задач, тем самым, переводя ее в категорию исполняемых.

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

2.10.2. Алгоритм планирования

Каждый раз, когда планировщик получает управление, он производит следующие действия:

  • пересылку части пренатальных задач на другие узлы кластера;

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

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

С каждой задачей связывается набор из N+1 числа, характеризующий

  • вычислительную сложность задачи (1 значение);

  • создаваемую нагрузку на коммуникационные каналы (N значений, по одному для каждого узла).

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

Нагрузка на сеть (сетевая активность задачи) включает в себя две составляющие. Первая — это собственно размер задачи, т. е., объем данных, пересылаемых до ее запуска. Сюда входят аргументы Т-функции и некоторая служебная информация. Объем этих данных известен планировщику — это объем соответствующего задаче класса tfunImpl. Вторая составляющая — это пересылки, вызванные задачей во время ее исполнения. К ним относятся, например, обращения по Т-указателям внутри Т-функции (они могут привести к копированию содержимого Т-переменной с удаленного узла), а также — использование параметров, передаваемых «по указателю». Объем данных, составляющих вторую компоненту, неизвестен заранее и слабо поддается предсказанию (может сильно меняться в разных запусках одной Т-функции). С учетом этого обстоятельства, вторую компоненту разумно оценивать из других соображений, например, большинство Т-задач ведут наиболее интенсивный обмен данными с тем узлом, на котором они были созданы.

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

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

Таким образом, каждый узел имеет информацию T1,T2,...,TN о состоянии ptq (очереди пренатальных задач) на всех узлах кластера. В качестве характеристики распределения задач возьмем дисперсию (среднеквадратичное отклонение) этих значений: