📘 Определение:

SLURM (Simple Linux Utility for Resource Management) — это open-source система управления заданиями и ресурсами (job scheduler + resource manager), используемая в высокопроизводительных вычислительных кластерах (HPC-кластерах).


🧭 Основное предназначение SLURM:

  1. Управление очередями заданий: пользователи могут запускать, планировать и останавливать задачи.

  2. Распределение ресурсов: SLURM выделяет CPU, GPU, память и время выполнения в соответствии с заявками.

  3. Мониторинг и контроль: слежение за статусом задач, состоянием узлов, сбор логов и статистики.

  4. Оптимизация использования кластера: очереди, приоритеты, квоты, preemption и резервирование ресурсов.


🔧 Где используется:

  • Научные центры (NASA, CERN)

  • Университетские суперкомпьютеры

  • Компании с ML/AI-инфраструктурой

  • Большие визуализационные фермы (рендеринг и т.п.)


💡 Зачем нужен:

Без SLURM все пользователи кластера запускали бы задачи вручную, конфликтуя за ресурсы. SLURM автоматизирует:

  • Очереди и приоритеты

  • Балансировку нагрузки

  • Повтор запуска при сбое

  • Учёт времени и биллинг


🧪 Пример использования:

обучение модели на GPU:

`sbatch train_model.sh`

SLURM:

  • Поставит задачу в очередь

  • Дождётся свободной GPU-ноды

  • Запустит задачу

  • Сохранит логи и результаты

  • Обновит статистику использования

Расшифровка шагов:

  1. 👨‍💻 Пользователь вызывает sbatch train_model.sh

  2. 🧠 slurmctld проверяет квоты и права доступа (через БД)

  3. 📋 Регистрирует задание в системе учёта через slurmdbd

  4. 🗓 Планировщик решает, когда и на каком узле выполнить задачу

  5. 🚀 При наступлении времени — отправляет задачу на slurmd демона на выбранной ноде

  6. 🧾 Узел запускает train_model.sh и следит за выполнением

  7. ✅ После завершения — слежение за логами, запись статистики в БД, вывод пользователю

  • 👨‍💻 Пользователь вызывает команду srun, например:
	srun --gres=gpu:1 --pty bash
  • 📋 slurmctld проверяет права, доступные ресурсы, и выделяет слот.

  • 🚀 Контроллер отправляет команду на нужный slurmd, чтобы начать интерактивный процесс.

  • 🖥️ На узле запускается интерактивная сессия (обычно shell), соединённая напрямую с пользователем.

  • 🔁 Пользователь может выполнять команды в реальном времени: запускать Python, отлаживать скрипт и т.д.

  • 🛑 После выхода из shell задача считается завершённой, и slurmctld освобождает ресурсы.

Когда srun полезнее sbatch?

srunsbatch
Интерактивная работаBatch-процессы, не требующие присутствия
Отладка скриптовМассовый запуск экспериментов
Использование Jupyter на кластереЗапуск большого pipeline по расписанию