Учетные записи в Slurm

Пользователи и учёт

В Slurm есть две системы учёта пользователей. Первая система основана на системных учётных записях, хранит в служебных файлах обобщённую статистику истории запуска задач и используется для простой системы вычисления приоритетов - share. Вторая система - полноценная система биллинга использует БД для хранения полной истории запуска задач, системы учётных групп (account), ограничений ресурсов (QOS) и т.п.

Первая система не требует использования БД и сохраняет текущую информацию в файлах в каталоге, заданном параметром StateSaveLocation:

assoc_mgr_state, assoc_usage, clustername, dbd.messages,
fed_mgr_state,  job_state, last_config_lite, layouts_state_base,
node_state, part_state, priority_last_decay_ran, qos_usage, resv_state, trigger_state

Для запуска задач в первой системе достаточно завести пользователя на уровне ОС. Для второй системы необходимо зарегистрировать его в БД:

sacctmgr -i add user testuser DefaultAccount=root 

Ассоциация (Association)

Учёт ресурсов в Slurm ведётся на основе учётных ассоциаций, каждая из которых объединяет четыре понятия:

  • кластер;
  • учетную группу (account);
  • имя пользователя;
  • необязательное имя раздела (partition).

Существует порядок создания учетных ассоциаций. Сначала описываются кластеры, потом учетные группы, и лишь потом пользователи. Пользователь при создании ассоциируется с существующей учетной группой, и эта ассоциация применяется по умолчанию для учета его задач.

Создание кластера

Кластер описывается в двух местах: в конфигурации Slurm и в учётной базе данных.

slurm.conf

AccountingStorageType=accounting_storage/slurmdbd
AccountingStoreJobComment=YES
ClusterName=uran

Создание записи в базе:

sacctmgr add cluster uran

Создание учетных групп

  • Учетная группа (account) используется для подсчёта ресурсов, использованных для запуска задач в рамках какого-либо договора, проекта и т.п.;
  • Накопленные данные об использованных ресурсах влияют на приоритет задач, запускаемых от имени учетной группы;
  • Учетная группа может быть использована для установки уровня обслуживания (QOS) задач, запускаемых от имени учетной группы;
  • С учетной группой может быть связано произвольное количество пользователей, в том числе ни одного;
  • Учетные группы могут быть организованы в иерархическое дерево путём назначения группе родительской группы;
  • Верхний уровень иерархии имеет стандартное имя root;
  • Имя учетной группы должно быть уникальным и не может быть использовано повторно в другой ветви иерархии учетных групп;
  • При подсчете приоритетов учитывается положение группы в иерархии;
  • Пользователь может связан с несколькими учетными группами, но должен иметь группу по умолчанию (DefaultAccount).

Примеры команд для создания иерархии организации и иерархии внешних пользователей, работающих по договорам:

sacctmgr add account imm Description="Институт математики и механики" Organization=imm
sacctmgr add account imm_opo Description="Отдел программного обеспечения" Organization=imm_opo parent=imm
sacctmgr add account imm_opo_sector_1 Description="Сектор системного программирования" Organization=imm_opo parent=imm_opo

sacctmgr add account external Description="Внешние пользователи" Organization=external
sacctmgr add account dogovor_10 Description="Договор N10" Organization=external
sacctmgr add account dogovor_11 Description="Договор N11" Organization=external

Отображение созданных учетных записей:

sacctmgr show account
sacctmgr show account -s   # Показывает ассоциации связанные с аккаунтами

При добавлении или изменении учетной группы доступны следующие параметры:

  • Cluster= добавить учетную группу в указанные кластеры. По умолчанию учетная группа добавляется ко всем существующим кластерам.
  • Description= описание учетной группы. (По умолчанию - имя учетной группы)
  • Name= имя учетной записи.
  • Organization= организация на которую зарегистрирована учетная группа. По умолчанию это организация родительской учетной группы, если родительская учетная группа не является корневой. Если родитель root, то при создании по умолчанию используется имя учетной группы.
  • Parent= сделать эту учетную группу дочерним элементом другой учетной группы (уже существующей).

Создание пользователей

Создание пользователя Slurm с именем xxx и учетной группой по умолчанию (обязательно) yyy:

sacctmgr create user name=xxx DefaultAccount=yyy

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

sacctmgr add user xxx Account=zzzz

Имя учетной группы может указываться в пакетных заданиях пользователя, например, с помощью sbatch :

-A <account> или --account=<account> 

Список пользователей:

sacctmgr show user #показывает пользователей и их учетные группы по умолчанию
sacctmgr show user -s #показывает пользователей и все их ассоциации
sacctmgr show user -s test_user #выдает учетные группы пользователя test_user

При добавлении или изменении пользователя доступны следующие параметры:

  • Account= Учетная группа(ы) для добавления пользователя (см. также DefaultAccount ).
  • AdminLevel= Это поле используется, чтобы позволить пользователю добавлять учетные привилегии этому пользователю. Возможные варианты:
    • None
    • Operator - может добавлять/изменять/удалять любой объект базы данных (пользователь, учетная запись и т. Д.) и добавлять других операторов. На SlurmDBD, обслуживаемом slurmctld, эти пользователи могут: просматривать информацию, которая блокируется для регулярного использования флагом PrivateData; создавать/изменять/удалять бронирование.
    • Admin - эти пользователи имеют тот же уровень привилегий, что и оператор в базе данных. Они также могут изменять что-либо в slurmctld, как если бы они были пользователем slurm или root.
  • Cluster= добавлять к ассоциациям только на этих кластерах (по умолчанию все кластеры)
  • DefaultAccount= учетная группа по умолчанию. (обязательный параметр).
  • DefaultWCKey= пользовательский ключ по умолчанию для пользователя, используемый, когда не указан WCkey при отправке задания. (Используется только при отслеживании WCkey .)
  • Name= имя пользователя
  • Partition= Название раздела Slurm, к которому относится данная ассоциация.

Изменение и удаление объектов

При изменении свойств объектов и при их удалении можно задавать параметры в стиле SQL, используя ключевые слова WERE и SET. Некоторые параметры, например имя объекта, изменить нельзя. Типичная команда имеет следующий вид:

sacctmgr modify <entity> set <options> where <options>

Например:

sacctmgr modify user set DefaultAccount=none where DefaultAccount=test

меняет у пользователей учетную группу по умолчанию "test" на "none".

Удаление пользователя из учетной группы:

sacctmgr remove user brian where Account=imm_opo

Удаление пользователей означает, в первую очередь, удаление ассоциаций.

После того, как объект был добавлен, изменен или удален, соответствующие изменения отправляются соответствующим демонам Slurm и мгновенно становятся доступными для использования.

Примечание. В большинстве случаев удаленные объекты сохраняются, но помечены как удаленные. Если объект существовал менее 1 дня, то он будет удален полностью. Такое поведение предназначено для защиты от опечаток.

Печать объектов

sacctmgr show cluster|account|user [-s] format=account%20,description%40  [<name>]
sacctmgr show cluster|account|user [-s] [-n] -p [<name>]
  • -s показывает связанные объекты
  • format= задает список полей и количество символов, отводимых на поле
  • -n - без строки заголовка
  • -p - формат удобный для программного разбора

Использованы материалы со страницы https://wiki.fysik.dtu.dk/niflheim/Slurm_accounting