Пакетный режим выполнения
Пакетный режим выполнения — это способ организации вычислительного процесса, при котором команды, задачи или программы, объединённые в единый пакет (пакет работ), передаются на исполнение вычислительной системе без непосредственного участия пользователя в ходе обработки. В отличие от диалогового (интерактивного) режима, где пользователь последовательно вводит команды и получает результаты в реальном времени, в пакетном режиме управляющая программа (диспетчер пакетов, планировщик или операционная система) автоматически извлекает задания из очереди и выполняет их одно за другим или в порядке приоритета, сохраняя результаты для последующего анализа.
История
Истоки и эпоха перфокарт
Концепция пакетной обработки возникла на заре вычислительной техники в 1940–1950-х годах. Первые электронные компьютеры (например, ENIAC, UNIVAC I) программировались путём ручного соединения кабелей или переключения тумблеров, что было крайне медленным и подверженным ошибкам. В 1950-х годах, с появлением перфокарт и перфолент, возникла необходимость автоматизировать загрузку программ. Пользователи (чаще всего — научные сотрудники или инженеры) подготавливали стопку перфокарт с кодом и данными, затем передавали её оператору вычислительного центра. Оператор загружал весь пакет в память машины, запускал выполнение, а по завершении распечатывал на принтере результаты. Этот процесс получил название «пакетный режим».
Системы пакетной обработки (1950–1960-е)
К середине 1950-х годов были разработаны специализированные операционные системы (например, FORTRAN Monitor System, IBSYS), которые автоматизировали считывание с перфокарт, компиляцию, выполнение и вывод на печать. Появились понятия: «очередь заданий» (job queue), «планировщик» (scheduler) и «монитор» (monitor). Значительным шагом стало создание IBM OS/360 (1964 год) — первой массовой операционной системы с поддержкой многоуровневых очередей пакетной обработки. Пользователи отправляли задания с карт, а операционная система выполняла их без вмешательства человека, оптимизируя загрузку процессора.
Переход к пакетным и диалоговым системам (1970–1980-е)
С распространением компьютеров с разделением времени (time-sharing), таких как CTSS и Multics, интерактивный режим стал доминирующим для пользователей. Однако пакетный режим не исчез, а эволюционировал: крупные вычислительные центры (например, CERN, крупные банки) продолжали использовать пакетный режим для ресурсоёмких и фоновых задач. В СССР разработкой пакетных систем занимались в проектах «Эльбрус» и БЭСМ-6, где была внедрена система пакетной обработки ДИСПАК.
Современный этап (1990-е — настоящее время)
С развитием кластерных архитектур, облачных вычислений, конвейеров CI/CD (непрерывная интеграция / непрерывная доставка) и технологий контейнеризации (Docker, Kubernetes) пакетный режим стал неотъемлемой частью DevOps-практик. Современные планировщики (Slurm, PBS, AWS Batch, YARN) позволяют масштабировать пакетные задания на тысячи узлов с динамическим выделением ресурсов.
Виды и классификация
Пакетный режим выполнения классифицируют по нескольким признакам:
- По способу организации очереди:
- FIFO (First In, First Out) — задания выполняются в порядке поступления.
- С приоритетами — заданиям назначается приоритет, и система запускает их с учётом приоритета, возможно с вытеснением менее приоритетных.
- По таймслотам — заданиям выделяются фиксированные временные слоты (особенно в старых системах).
- По степени автоматизации:
- Ручной ввод — задания подготавливаются пользователем вручную (файлы скриптов, командные файлы).
- Автоматический запуск — задания запускаются по расписанию (cron, планировщик ОС) или при наступлении событий (триггеры).
- По целевому назначению:
- Научные и инженерные расчёты — симуляции, расчёт напряжений, моделирование.
- Бизнес-отчёты и ETL (Extract, Transform, Load) — формирование бухгалтерских отчётов, обработка логов, консолидация данных.
- Системное администрирование — резервное копирование, обновление баз данных, очистка дисков.
- Обработка мультимедиа — рендеринг видео, транскодирование, распознавание изображений.
Архитектура и компоненты
Типичная система пакетной обработки включает:
- Спейсер заданий (job submitter) — пользовательский процесс, который формирует и отправляет задание в очередь. Задание обычно содержит исполняемый код, параметры, командные файлы.
- Очередь заданий (job queue) — структура данных, хранящая задания в порядке, определённом планировщиком. Очереди могут быть разделены по степени важности или типу (обычные, приоритетные, фоновые).
- Планировщик (scheduler) — центральный компонент, который решает, какое задание запустить, на каких ресурсах (ядрах ЦП, объёме памяти, дисковом пространстве). Планировщик может учитывать зависимости между заданиями.
- Исполнительный модуль (executor) — агент на вычислительном узле, который запускает задание, отслеживает его состояние и сообщает о результатах.
- Хранилище результатов — результирующие файлы, логи, коды завершения (exit codes) сохраняются для последующего анализа.
Примеры программ для пакетного режима
| Название | Описание | Область применения |
|---|---|---|
| cron (Unix/Linux) | Планировщик заданий по времени, не требующий постоянного присутствия пользователя. | Регулярные задачи (бэкапы, обновления, генерация отчётов). |
| Slurm | Кластерный менеджер ресурсов и планировщик для суперкомпьютеров. | HPC (High-Throughput Computing), параллельные расчёты. |
| AWS Batch | Облачный сервис для выполнения пакетных заданий на инфраструктуре Amazon. | Масштабирование обработки данных в облаке. |
| JCL (Job Control Language) | Язык управления заданиями в IBM z/OS (мейнфреймы). | Крупные транзакционные системы (банки, госучреждения). |
| Windows Task Scheduler / AT | Встроенный планировщик Windows. | Запуск сценариев и приложений по расписанию. |
Применение
Высокопроизводительные вычисления (HPC)
В научных и инженерных центрах пакетный режим — стандартный способ загрузки вычислительных кластеров. С его помощью решаются задачи: молекулярной динамики (GROMACS, LAMMPS), аэродинамики (OpenFOAM), климатического моделирования (WRF) и другие.
Обработка больших данных (Big Data)
Фреймворки, такие как Hadoop, Spark (в пакетном режиме) и Flink, реализуют распределённую пакетную обработку: задания разбиваются на множество параллельных этапов, каждый из которых может выполняться на отдельном узле.
Автоматизация DevOps и CI/CD
В конвейерах сборки и развёртывания программного обеспечения пакетный режим используется для: автоматического тестирования (unit tests, интеграционных тестов), компиляции, упаковки контейнеров и деплоя. Например, Jenkins, GitLab CI, GitHub Actions запускают пакетные задания при каждом коммите.
Банковские и финансовые системы
Пакетная обработка применяется для ежедневного клиринга (расчётов и взаимозачётов), формирования выписок и расчёта процентов. Например, система АКС (Автоматизированный Клиринговый Сервер) в России обрабатывает транзакции в пакетном режиме в ночное время.
Образование и наука
В учебных центрах студенты отправляют лабораторные работы в виде пакетов, которые выполняются на сервере, а результаты затем проверяются преподавателем.
Преимущества и недостатки
Преимущества
- Эффективность использования ресурсов — компьютер можно загрузить работой на длительное время без простоев.
- Масштабируемость — пакетные задания легко распараллеливаются для выполнения на кластерах и облачных системах.
- Повторяемость — один и тот же пакет команд можно запускать многократно, что обеспечивает воспроизводимость результатов (важно для науки).
- Независимость от пользователя — задание не требует постоянного внимания; пользователь может отправить задание и заняться другими делами.
- Планирование с учётом ограничений — система может отложить ресурсоёмкую задачу на время минимальной активности (ночь, выходные).
Недостатки
- Отсутствие обратной связи в реальном времени — пользователь видит результаты только после завершения всего задания, что критично при длительных расчётах.
- Сложность отладки — если задание завершилось с ошибкой, часто приходится просматривать логи, а не взаимодействовать с программой интерактивно.
- Сбор информации о ходе выполнения — требуется настройка мониторинга и оповещений, иначе ошибка может остаться незамеченной до окончания.
- Риск тупиковых ситуаций — при неправильной настройке зависимостей или приоритетов возможна блокировка очереди.
Интересные факты
- Самый старый постоянно работающий пакетный процесс — это, вероятно, планировщик задач в IBM OS/360, который эксплуатируется на мейнфреймах некоторых банков с 1960-х годов без серьёзных изменений.
- В 1980-х годах в СССР существовали системы пакетной обработки, работавшие на перфокартах, — так называемые «форматные задания» на машинах БЭСМ-6. Пользователь получал результат через несколько часов или даже на следующий день.
- Современные пакетные системы (например, Slurm) умеют «вытеснять» задания — если приходит задание с более высоким приоритетом, система может приостановить низкоприоритетное задание и освободить ресурсы.
- Пакетный режим лёг в основу ранних суперкомпьютеров: Cray-1 (1976) работал почти исключительно в пакетном режиме, поскольку интерактивный режим требовал больших вычислительных затрат.
Источники
- Таненбаум Э., Бос Х. Современные операционные системы. — 4-е изд. — СПб.: Питер, 2015.
- Столлингс У. Операционные системы: внутреннее устройство и принципы проектирования. — М.: Вильямс, 2020.
- Официальная документация Slurm (SchedMD) — https://slurm.schedmd.com/.
- Ousterhout J. K. Scheduling for Parallel Machines // Proceedings of the IEEE, 1993.
- IBM z/OS MVS JCL Reference — IBM Corporation, 2018.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →