Система автоматизации процессов#

Система автоматизации процессов является центральным звеном Astra Automation, поэтому планирование ресурсов платформы критично для обеспечения общей производительности. Обычно она представляет собой кластер, состоящий из управляющих и исполняющих узлов. Приводимые расчеты и рекомендации помогают оценить требуемое количество узлов и их характеристики в зависимости от объема выполняемых заданий автоматизации.

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

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

Общие принципы расчета производительности#

Astra Automation использует capacity-based модель, в которой доступные ресурсы CPU и памяти определяют, сколько процессов выполнения заданий узел может обрабатывать одновременно. Параметр forks влияет на уровень параллельности внутри каждого задания и учитывается при планировании мощности.

Этот подход применяется ко всем типам узлов – как управляющим, так и исполняющим.

Расчет по памяти#

Следующая формула показывает, сколько параллельных задач узел может поддерживать с учетом объема оперативной памяти:

\[mem\_capacity = \frac{mem - 2048}{mem\_per\_fork}\]

Здесь:

  • mem – общий объем оперативной памяти узла в мегабайтах;

  • 2048 – память зарезервированная для системных служб и фоновых процессов;

  • mem_per_fork – объем памяти, потребляемый одной задачей (по умолчанию 100 МБ).

Например, узел с 16 ГБ памяти способен выполнять следующее количество параллельных задач:

\[(16384 - 2048) / 100 = 143\]

Расчет по CPU#

Следующая формула показывает, сколько задач узел может выполнять одновременно, исходя из числа доступных ядер:

\[cpu\_capacity = cpus \times fork\_per\_cpu\]

Здесь:

  • cpus – количество ядер;

  • fork_per_cpu – количество задач, допускаемых на одно ядро (по умолчанию 4).

Например, узел с 4 ядрами способен выполнять следующее количество параллельных задач:

\[4 \times 4 = 16\]

Итоговая мощность узла#

Следующая формула объединяет показатели CPU и памяти, учитывая баланс между ними через коэффициент capacity_adjustment:

\[final\_capacity = cpu\_capacity + (mem\_capacity - cpu\_capacity) \times capacity\_adjustment\]

Здесь:

  • cpu_capacity – рассчитанная мощность по CPU;

  • mem_capacity – рассчитанная мощность по памяти;

  • capacity_adjustment – коэффициент баланса (0.0–1.0):

    • 0.0 – учитывать только CPU;

    • 1.0 – учитывать только память;

    • промежуточные значения определяют смешанный расчет.

    Примечание

    В большинстве случаев используется расчет по памяти (capacity_adjustment = 1.0), но при высоком числе задач, нагружающих процессор, значение можно уменьшить до 0.5.

Например, при capacity_adjustment = 1.0 итоговая мощность узла рассчитывается по следующей формуле:

\[16 + (143 - 16) \times 1.0 = 143\]

Оценка ресурсов и количества управляющих узлов#

Управляющие узлы Astra Automation планируют задания, обрабатывают события, координируют кластер и обеспечивают работу пользовательского интерфейса (UI и API).

Минимальные системные требования#

Приведенные параметры задают минимальную конфигурацию виртуальной машины для стабильной работы управляющего узла:

Характеристика

Значение

Объем RAM, ГБ

16

Количество ядер CPU

4

Дисковое пространство, ГБ

40 (не менее 20 под каталог /var/lib/awx)

Производительность, IOPS

3000

Производительность управляющего узла#

Для типовой конфигурации: 4 CPU, 16 ГБ RAM и 3000 IOPS, теоретическая мощность управляющего узла составляет 143 forks (см. расчет). Однако часть ресурсов постоянно занята фоновыми процессами: PostgreSQL, Redis, API, UI, receptor и так далее. Эти процессы потребляют около 5–10 % общей мощности узла. С учетом этих расходов эффективная производительность снижается до 130–140 forks. Для расчетов используется усредненное значение 137 forks, которое отражает практическую мощность типового управляющего узла Astra Automation.

При типовой конфигурации достигаются следующие показатели:

  • примерная мощность – 137 задач или событий, обрабатываемых одновременно;

  • скорость обработки событий при 100% загрузке – 1100–1600 событий/сек;

  • рекомендуемое соотношение – 1 управляющий узел на каждые 5 исполняющих узлов, что обеспечивает сбалансированную производительность и устойчивость системы.

Расчет числа управляющих узлов#

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

\[number\_of\_control\_nodes = \frac{peak\_concurrent\_jobs}{control\_final\_capacity}\]

Здесь:

  • peak_concurrent_jobs – максимальное количество заданий, выполняющихся одновременно;

  • control_final_capacity – мощность одного управляющего узла (в среднем 137).

Например, для 10 одновременных заданий необходимо следующее количество управляемых узлов:

\[10 / 137 = 0.08\]

Полученное значение следует округлить в большую сторону. В этом случае минимальное количество управляющих узлов равно 1, но для обеспечения высокой доступности (HA) рекомендуется использовать 2 узла.

Оценка ресурсов и количества исполняющих узлов#

Исполняющие узлы Astra Automation выполняют задания, запущенные управляющим узлом.

Минимальные системные требования#

Приведенные параметры задают минимальную конфигурацию виртуальной машины для стабильной работы исполняющего узла:

Характеристика

Значение

Объем RAM, ГБ

16

Количество ядер CPU

4

Дисковое пространство, ГБ

60

Производительность, IOPS

3000

Расход производительности по типам задач#

Каждое задание, выполняемое на исполняющем узле, потребляет часть его вычислительных ресурсов. Это потребление выражается в единицах производительности (capacity units) – условных числах, которые используются системой планирования Astra Automation для расчета доступной мощности узлов.

Если доступных единиц производительности на узле недостаточно, новое задание ставится в очередь. Ниже приведены типовые значения, показывающие, сколько единиц производительности расходуется на выполнение разных типов заданий:

Тип задания

Значение

Описание

Задания наборов сценариев

min(forks, number_of_hosts) + 1

Основной тип задания. Один управляющий процесс и до forks параллельных процессов выполнения задач на узлах

Обновление инвентаря

1

Служебное задание, использующее один процесс

Обновление проекта

1

Служебное задание для синхронизации проекта из SCM

Системные задания

5

Административные или технические процессы, такие как очистка журналов, обновление репозиториев и прочее

Например, если задание набора сценариев содержит forks = 5 и запускается на 10 управляемых узлах, единицы производительности рассчитываются по следующей формуле:

\[capacity\_units = min(5, 10) + 1 = 5 + 1 = 6\]

Расчет необходимого числа исполняющих узлов#

Для расчета числа исполняющих узлов выполните следующие действия:

  1. Определите рабочую нагрузку. Для корректного расчета необходимо собрать следующие исходные данные:

    • количество управляемых узлов;

    • частота выполнения задач;

    • максимальное количество одновременных заданий;

    • количество параллельных задач (forks);

    • скорость обработки событий.

    Пример исходных данных:

    Параметр

    Значение

    Управляемые узлы

    300

    Частота выполнения задач

    ≈ 200 заданий в день

    Одновременные задания

    10

    Forks

    5

  2. Вычислите требуемую производительность:

    \[execution\_capacity\_required = (concurrent\_jobs \times forks) + (concurrent\_jobs \times 1)\]

    Здесь:

    • concurrent_jobs – максимальное количество одновременных заданий;

    • concurrent_jobs × forks – рабочие процессы;

    • concurrent_jobs × 1 – управляющие процессы каждого задания.

    Например, для исходных данных, приведенных выше, производительность рассчитывается по следующей формуле:

    \[(10 \times 5) + (10 \times 1) = 50 + 10 = 60\]
  3. Рассчитайте количество узлов:

    \[number\_of\_execution\_nodes = \frac{execution\_capacity\_required}{final\_capacity}\]

    Здесь:

    • execution_capacity_required – производительность исполняющего узла;

    • final_capacity – мощность одного исполняющего узла.

    Примечание

    Несмотря на одинаковую базовую формулу расчета мощности, реальные значения final_capacity для управляющих и исполняющих узлов различаются:

    • Для исполняющего узла при конфигурации 4 CPU и 16 ГБ RAM теоретическая мощность составляет около 143 единиц.

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

    Например, для исходных данных, приведенных выше, количество узлов рассчитывается по следующей формуле:

    \[60 / 143 = 0.42\]

    Полученное значение следует округлить в большую сторону. В этом случае минимальное количество исполняющих узлов равно 1, но для обеспечения высокой доступности (HA) рекомендуется использовать 2 узла.