Перейти к основному содержимому
Версия: 6.1

Балансировщик расписания

Общее описание

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

Балансировка выполняется интерактивно: система только предлагает новое распределение, а изменения применяются после подтверждения пользователем.

Открытие балансировщика

Перейдите Навигационное меню - Параметры системы - Настройка модулей и на открывшейся странице выберите пункт JOB SCHEDULER - Балансировщик расписания.

Пункт меню балансировщика

Откроется страница Балансировщик расписания с графиком распределения запусков за сутки. Под графиком расположен фильтр Периодичность, а список задач появляется после выбора интервала на графике.

Страница балансировщика

Просмотр распределения и выбор задач

График распределения запусков

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

Пояснение к графику доступно по значку рядом с подписью Пиковая нагрузка.

Интервал агрегации переключается кнопками 5 мин., 15 мин. и 30 мин. в правой части панели. По умолчанию выбран интервал 5 мин. - меньшее значение недоступно.

Переключение интервала агрегации

При наведении курсора на график отображается точка ближайшего интервала и подсказка со временем и значением пиковой нагрузки.

Подсказка точки графика

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

Масштабирование графика

Задачи интервала

Нажатие на точку графика открывает панель со списком задач выбранного интервала. В заголовке панели отображаются дата и время интервала, а также количество задач в нем.

Список задач интервала

Панель содержит:

  • поле Поиск по названию задачи для поиска внутри интервала
  • флажок Выбрать весь интервал для выбора всех задач списка
  • колонки Задача и Клиенты; вторая заполняется для SP-задач, выполняющихся на нескольких клиентах
  • постраничную навигацию с выбором количества строк на странице

Рядом с названием задачи отображается бейдж типа (например, Локальная), а под названием - периодичность запуска и признак участия в балансировке:

  • Балансируемая - задача с регулярным расписанием, время ее запуска может быть изменено
  • Небалансируемая - задача с нерегулярным расписанием, время ее запуска не изменяется

Пояснение к признаку Небалансируемая доступно по значку рядом с подписью.

Выбор задач для балансировки

Балансировать можно весь список, отдельные задачи или задачи с определенной периодичностью:

  • весь список - установите флажок Выбрать все задачи
  • по интервалу - нажмите на точку графика и в открывшейся панели установите флажок Выбрать весь интервал или отметьте отдельные задачи флажками
  • по периодичности - используйте фильтр Периодичность: нажатие на период (например, 1 мин. или 5 мин.) выбирает все балансируемые задачи с этим периодом

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

Фильтр периодичности

Счетчик Выбрано в левой верхней части страницы показывает количество выбранных задач относительно общего числа. Для отмены выбора задач используйте кнопку Сбросить выбор.

Счетчик выбранных задач и сброс выбора

Обратите внимание!

Кнопка Сбалансировать активна только при наличии выбранных задач.

Предпросмотр и применение

После нажатия кнопки Сбалансировать система выполняет поиск оптимального расписания и переводит страницу в режим предпросмотра. На графике отображаются две линии:

  • Текущее расписание - пунктирная линия с текущим распределением запусков
  • Сбалансированное расписание - сплошная зеленая линия с предложенным распределением

Предпросмотр предложенного распределения

В левой верхней части страницы значения Было и Стало показывают пиковую нагрузку до и после балансировки. Пояснение доступно по значку рядом со значениями.

Под графиком расположена таблица Изменения расписания с колонками Название, Текущее расписание и Сбалансированное расписание. В колонках расписания указаны cron-выражение и его расшифровка, а для задач с запуском каждую минуту дополнительно отображается значение смещения, например Смещение: 30 сек. По умолчанию флажками отмечены все задачи - снимите отметку с тех задач, расписание которых менять не требуется.

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

Таблица изменений расписания

Дальнейшие действия:

  • Сохранить - применить предложенное расписание к отмеченным задачам
  • Назад - вернуться к выбору задач без применения изменений

Если для выбранных задач изменения не требуются, вместо таблицы отображается сообщение Расписание уже сбалансировано — никаких изменений не требуется.

Балансировка не выполняется автоматически

Расписание задач изменяется только после нажатия кнопки Сохранить. Уход со страницы на любом шаге не вносит изменений.

Как формируется новое расписание

Балансировщик подбирает для каждой задачи новое время запуска. При этом действуют следующие правила:

  • новое время запуска записывается в cron-выражение расписания задачи
  • задачи с запуском каждую минуту разводятся по секундам внутри минуты - сдвиг записывается в поле задачи Смещение в секундах
  • задачи с нерегулярным расписанием (разовые, по конкретным датам или дням недели) не балансируются, но учитываются как нагрузка
  • SP-задачи, выполняющиеся на нескольких SP-клиентах, учитываются с весом, равным количеству клиентов, и распределяются группой - как единое целое

Поле Смещение в секундах также доступно для ручной настройки в секции Расписание при редактировании карточки задачи. Подробнее о настройке заданий - в статье Планировщик задач.

Механика распределения

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

Временная ось разбивается на слоты фиксированного шага. Горизонт анализа выбирается как наименьшее общее кратное периодов всех задач (с ограничением сверху), и для каждого слота подсчитывается количество одновременных запусков в нем. Задачи с нерегулярным расписанием учитываются как неподвижная нагрузка - балансируемые задачи размещаются в свободные от них слоты.

Для каждой балансируемой задачи смещение (offset) подбирается в диапазоне от 0 до период - 1. Задача со смещением s стартует в слотах s, s + период, s + 2 × период и так далее до конца горизонта, поэтому для каждого варианта смещения оценивается самый загруженный из этих слотов, а выбирается вариант с минимальным пиком.

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

Небалансируемые задачи

Задачи с нерегулярным расписанием в балансировке не участвуют - их время запуска не изменяется. При этом они учитываются как нагрузка при расчете нового расписания для остальных задач.

Ограничения

  • балансировщик учитывает только задачи Планировщика задач - нагрузка от других компонентов Smart Monitor при анализе не рассматривается
  • балансировщик учитывает только активные задачи - отключенные задачи не попадают в анализ расписания
  • минимальный интервал агрегации графика - 5 минут

Полезные ссылки