📘 Определение:
SLURM (Simple Linux Utility for Resource Management) — это open-source система управления заданиями и ресурсами (job scheduler + resource manager), используемая в высокопроизводительных вычислительных кластерах (HPC-кластерах).
🧭 Основное предназначение SLURM:
-
Управление очередями заданий: пользователи могут запускать, планировать и останавливать задачи.
-
Распределение ресурсов: SLURM выделяет CPU, GPU, память и время выполнения в соответствии с заявками.
-
Мониторинг и контроль: слежение за статусом задач, состоянием узлов, сбор логов и статистики.
-
Оптимизация использования кластера: очереди, приоритеты, квоты, preemption и резервирование ресурсов.
🔧 Где используется:
-
Научные центры (NASA, CERN)
-
Университетские суперкомпьютеры
-
Компании с ML/AI-инфраструктурой
-
Большие визуализационные фермы (рендеринг и т.п.)
💡 Зачем нужен:
Без SLURM все пользователи кластера запускали бы задачи вручную, конфликтуя за ресурсы. SLURM автоматизирует:
-
Очереди и приоритеты
-
Балансировку нагрузки
-
Повтор запуска при сбое
-
Учёт времени и биллинг
🧪 Пример использования:
обучение модели на GPU:
`sbatch train_model.sh`
SLURM:
-
Поставит задачу в очередь
-
Дождётся свободной GPU-ноды
-
Запустит задачу
-
Сохранит логи и результаты
-
Обновит статистику использования
Расшифровка шагов:
-
👨💻 Пользователь вызывает
sbatch train_model.sh
-
🧠
slurmctld
проверяет квоты и права доступа (через БД) -
📋 Регистрирует задание в системе учёта через
slurmdbd
-
🗓 Планировщик решает, когда и на каком узле выполнить задачу
-
🚀 При наступлении времени — отправляет задачу на
slurmd
демона на выбранной ноде -
🧾 Узел запускает
train_model.sh
и следит за выполнением -
✅ После завершения — слежение за логами, запись статистики в БД, вывод пользователю
- 👨💻 Пользователь вызывает команду
srun
, например:
srun --gres=gpu:1 --pty bash
-
📋
slurmctld
проверяет права, доступные ресурсы, и выделяет слот. -
🚀 Контроллер отправляет команду на нужный
slurmd
, чтобы начать интерактивный процесс. -
🖥️ На узле запускается интерактивная сессия (обычно shell), соединённая напрямую с пользователем.
-
🔁 Пользователь может выполнять команды в реальном времени: запускать Python, отлаживать скрипт и т.д.
-
🛑 После выхода из shell задача считается завершённой, и
slurmctld
освобождает ресурсы.
Когда srun
полезнее sbatch
?
srun | sbatch |
---|---|
Интерактивная работа | Batch-процессы, не требующие присутствия |
Отладка скриптов | Массовый запуск экспериментов |
Использование Jupyter на кластере | Запуск большого pipeline по расписанию |