В 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
Учёт ресурсов в Slurm ведётся на основе учётных ассоциаций, каждая из которых объединяет четыре понятия:
Существует порядок создания учетных ассоциаций. Сначала описываются кластеры, потом учетные группы, и лишь потом пользователи. Пользователь при создании ассоциируется с существующей учетной группой, и эта ассоциация применяется по умолчанию для учета его задач.
Кластер описывается в двух местах: в конфигурации Slurm и в учётной базе данных.
slurm.conf
AccountingStorageType=accounting_storage/slurmdbd
AccountingStoreJobComment=YES
ClusterName=uran
Создание записи в базе:
sacctmgr add cluster uran
Примеры команд для создания иерархии организации и иерархии внешних пользователей, работающих по договорам:
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 format=Account%30,Description%60
sacctmgr show account -s # Показывает ассоциации связанные с аккаунтами
При добавлении или изменении учетной группы доступны следующие параметры:
Создание пользователя 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
При добавлении или изменении пользователя доступны следующие параметры:
При изменении свойств объектов и при их удалении можно задавать параметры в стиле 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>]
Использованы материалы со страницы https://wiki.fysik.dtu.dk/niflheim/Slurm_accounting