Ограничение ресурсов в Slurm

Для ограничения ресурсов необходимо включить в slurm.conf строку:

AccountingStorageEnforce=limits

TRES

Ресурсы, который можно отслеживать и использовать для ограничения, называются TRES. TRES - это комбинация типа и имени. В настоящий момент используются следующие типы TRES:

  • пакетные буферы - burst buffers (BB)
  • ЦПУ (CPU)
  • энергия (Energy)
  • GRES
  • лицензии (License)
  • память (Mem)
  • узлы (Node)
  • вычисляемый (Billing)

Вычисляемый TRES рассчитывается из TRESBillingWeights раздела. Он предварительно вычисляется во время планирования для каждого раздела, чтобы обеспечить соблюдение лимитов. После завершения задачи он пересчитывается по реально использованным ресурсам. Пример TRESBillingWeights:

TRESBillingWeights="CPU=1.0,Mem=0.25G,GRES/gpu=2.0"

Установка ограничений на пользователя:

sacctmgr modify user xxx set MaxTRES=cpu=1000 MaxTRESMinsPerJob=6000 GrpTRESMins=60000

Ограничения с префиксом Max - обозначают максимальный ресурс на одну задачу, с префиксом Grp - суммарное количество ресурсов на все задачи, когда либо запущенные пользователем (на самом деле, история потихоньку очищается и предел не является абсолютным) . В данном примере задано ограничение счёта одной задачи в 100 часов на 1000 процессорах и суммарное время в 1000 часов.

QOS

Качество обслуживания (QOS) объединяет несколько ограничений на TRES. Конфигурация QOS должна иметь как минимум стандартное значение QOS с названием normal. Дополнительные QOS'ы могут переопределять ограничения.

Например, QOS high256 с высоким приоритетом и ограничением на количество ЦПУ :

sacctmgr add qos high256 priority=10 MaxTRESPerUser=cpu=256

Просмотр существующих QOS:

sacctmgr show qos 

Назначение пользователю DefaultQOS:

sacctmgr -i modify user where name=XXXX set DefaultQOS=normal

Назначение дополнительных QOS пользователю:

sacctmgr -i modify user where name=XXXX set QOS=normal,high
sacctmgr -i modify user where name=XXXX set QOS+=high

Для того, чтобы воспользоваться дополнительным QOS пользователи должны указывать его в параметрах sbatch, например:

sbatch --qos=high256 ... 

Иерархия ограничений

Ограничения Slurm применяются в следующем порядке:

  1. QOS раздела (partition)
  2. QOS задания
  3. Ограничение ассоциации пользователя (user+account+cluster)
  4. Ограничение ассоциации учетной группы (account+cluster), по возрастанию иерархии
  5. Ассоциация root_account+cluster
  6. Ограничения раздела
  7. Нет ограничений