Для ограничения ресурсов необходимо включить в slurm.conf
строку:
AccountingStorageEnforce=limits
Ресурсы, который можно отслеживать и использовать для ограничения, называются TRES. TRES - это комбинация типа и имени. В настоящий момент используются следующие типы TRES:
Вычисляемый 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) объединяет несколько ограничений на 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 применяются в следующем порядке: