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


📦 Для чего нужен partition:

  • Разделение ресурсов по типам (например: gpu, cpu, long, short)

  • Управление политиками доступа (разрешить доступ только определённым пользователям/группам)

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

  • Создание приоритетов и SLA: у каждой partition может быть свой priority_weight


🔧 Пример из slurm.conf:

PartitionName=gpu Nodes=gpu[01-10] Default=NO MaxTime=12:00:00 State=UP PartitionName=short Nodes=cpu[01-20] Default=YES MaxTime=01:00:00 State=UP PartitionName=long Nodes=cpu[21-40] Default=NO MaxTime=7-00:00:00 State=UP

🏁 Как пользователь указывает partition:

	sbatch --partition=gpu job.sh

Если не указать — задача попадёт в partition с Default=YES.


💡 Аналогии:

SLURM TermАналогия
partitionочередь печати / очередь задач
nodeсервер / исполнитель задачи
jobзадание в очереди

🧩 Как SLURM выбирает partition:

  1. Указана явно (--partition=gpu) → только она используется

  2. Не указана → берётся partition с Default=YES

  3. Проверяется:

    • 💡 Пользователь имеет доступ?

    • --time меньше MaxTime?

    • 💻 Есть доступные узлы?

  4. Если условия не подходят — задача отклоняется или висит в ожидании (PD)


📈 Что влияет на приоритет задач:

SLURM использует модель multifactor priority, которая может учитывать:

  • Partition PriorityWeight

  • Время в очереди (age)

  • Fairshare (справедливость)

  • Кол-во ранее выполненных задач

  • Размер запрашиваемых ресурсов