Для ограничения ресурсов необходимо включить в 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 применяются в следующем порядке:
- QOS раздела (partition)
- QOS задания
- Ограничение ассоциации пользователя (user+account+cluster)
- Ограничение ассоциации учетной группы (account+cluster), по возрастанию иерархии
- Ассоциация root_account+cluster
- Ограничения раздела
- Нет ограничений