Домой Бложек
en|ru

Заметки про SLURM

SLURM - система управления заданиями для суперкомпьютерных систем. Если это не то, что вы думали, то дальше читать нет смысла. Тут мои заметки по возможностям этой системы.

Reservations (резервы)

Полезные опции: duration=infinite duration=10-00:00:00, StartTime=now+1day, NodeCnt=10

Полезные флаги:

  • IGNORE_JOBS создать резерв, даже если не можем гарантировать, что нужные узлы (число узлов) освободится к его началу;
  • OVERLAP можно перекрывать другие резервы (аналогично MAINT);
  • REPLACE_DOWN автоматически добавить в резерв узлы взамен отключившихся или ушедших в DRAIN;
  • MAGNETIC если задача пользователя подходит под условия резерва, она автоматом запустится в резерве (не надо писать sbatch --reservation=...).

Опции slurm.conf: ResvProlog и ResvEpilog - пролог/эпилог для резервов.

Выделение ресурсов

За это отвечает опция SelectType в конфиге. В случае select/linear выделяются узлы целиком. Иначе - по ресурсам. select/cons_res и select/cons_tres похожи, тамм тоже можно включить выделение узла целиком, если в разделе включить OverSubscribe=Exclusive. Виды ресурсов, по которым будет вестись планирование, задаются параметром SelectTypeParameters. Для linear возможно указание памяти, как ресурса. Возможные варианты для res/tres:

  • CR_CPU Ресурс = CPU
  • CR_CPU_Memory Ресурс = память Рекомендуется выставить DefMemPerCPU.
  • CR_Core Ресурс = ядро
  • CR_Core_Memory Ресурсы = память+ядро
  • CR_ONE_TASK_PER_CORE Выделять ядра целиком
  • CR_CORE_DEFAULT_DIST_BLOCK Выделять ядра “блоками”
  • CR_LLN Занимать наименее занятые узлы
  • CR_Pack_Nodes “Заполнять” узлы максимально одной задачей по умолчанию вместо развномерного распределеняи по узлам. Можно отключить опцией srun --distribution NoPack.
  • CR_Socket Ресурс = сокет
  • CR_Socket_Memory Ресурсы = память+сокет
  • CR_Memory Ресурс = память

Для tres ещё два параметра:

  • DefCpuPerGPU - число CPU на один GPU
  • DefMemPerGPU - объём памяти на GPU

Параметры узла

Features - чезер запятую список произвольных характеристик, возможно с численными значениями. Они не счётные - или есть или нет. Запрашивать их можно параметром sbatch --constraint.

Gres - список ресурсов в формате <name>[:<type>][:no_consume]:<number>[K|M|G]. name должно быть в GresType. type - название модели и т.п. Пример: Gres=gpu:tesla:1,gpu:kepler:1,bandwidth:lustre:no_consume:4G.

Разное

Каталог для хранения состояния - /var/spool, может быть изменён StateSaveLocation.

TaskPlugin=task/affinity,task/cgroup - да, так можно и нужно.

en|ru
Домой Бложек
Nickname sergzhum is registered!