Skip to content

Slurm Account Hierarchy

The ULHPC resources can be reserved and allocated for the execution of jobs scheduled on the platform thanks to a Resource and Job Management Systems (RJMS) - Slurm in practice. This tool is configured to collect accounting information for every job and job step executed -- see SchedMD accounting documentation.

ULHPC account (login) vs. Slurm [meta-]account
  • Your ULHPC account defines the UNIX user you can use to connect to the facility and make you known to our systems. They are managed by IPA and define your login.

  • Slurm accounts, refered to as meta-account in the sequel, are more loosely defined in Slurm, and should be seen as something similar to a UNIX group: it may contain other (set of) slurm account(s), multiple users, or just a single user. A user may belong to multiple slurm accounts, but MUST have a DefaultAccount, which is set to your line manager or principal investigator meta-account.

ULHPC Account Tree Hierarchy

Every user job runs under a group account, granting access to specific QOS levels. Such an account is unique within the account hierarchy. Accounting records are organized as a hierarchical tree according to 3 layers (slurm accounts) as depicted in the below figure (click to enlarge). At the leaf hierarchy stands the End user <login> from the IPA IdM database, bringing a total of 4 levels.

Level Account Type Description Example
L1 meta-account Top-level structure / organizations UL, CRP, Externals, Projects, Trainings
L2 meta-account Organizational Unit (Faculty, ICs, External partner, Funding program...) FSTM, LCSB, LIST...
L3 meta-account Principal investigators (PIs), project, courses/lectures <firstname>.<lastname>, <acronym>, <course>
L4 login End-users (staff, student): your ULHPC/IPA login yourlogin

Extracting your association tree

By default, you will be able to see only the account hierarchy you belongs too through the association(s) set with your login. You can extract it with:

$ sacctmgr show association where parent=root format="account,user%20,Share,QOS%50" withsubaccounts
   Account                 User     Share                                                QOS
---------------------- -------- ----------- --------------------------------------------------
                 <top>            <L1share>                   besteffort,debug,long,low,normal
             <orgunit>            <L2share>                   besteffort,debug,long,low,normal
<firstname>.<lastname>            <L3share>                   besteffort,debug,long,low,normal
<firstname>.<lastname>  <login>   <L4share>                   besteffort,debug,long,low,normal
(Admins) Extract the full hierarchy

The below commands assumes you have supervision rights on the root account.

To list available L1 accounts (Top-level structure / organizations), use

sacctmgr show association where parent=root format="cluster,account,Share,QOS%50"
To list L2 accounts:

sacctmgr show association where parent=UL format="cluster,account,Share,QOS%50"
sacctmgr show association where parent=CRP format="cluster,account,Share,QOS%50"
sacctmgr show association where parent=externals format="cluster,account,Share,QOS%50"
sacctmgr show association where parent=projects format="cluster,account,Share,QOS%50"
sacctmgr show association where parent=trainings format="cluster,account,Share,QOS%50"

To quickly list L3 accounts and its subaccounts: sassoc <account>, or

sacctmgr show association where accounts=<L3account> format="account%20,user%20,Share,QOS%50"
To quickly list End User (L4) associations, use sassoc <login>, or
sacctmgr show association where users=<login> format="account%20,user%20,Share,QOS%50"

Default account vs. multiple associations

A given user <login> can be associated to multiple accounts, but have a single DefaultAccount (a meta-account at L3 level reflecting your line manager (Format: <firstname>.<lastname>).

To get information about your account information in the hierarchy, use the custom acct helper function, typically as acct $USER.

Get ULHPC account information with acct <login>

# /!\ ADAPT <login> accordingly
$ acct <login>
# sacctmgr show user where name="<login>" format=user,account%20,DefaultAccount%20,share,qos%50 withassoc
     User                Account             Def Acct       Share                                     QOS
  ------- ----------------------- ----------------------  ------- ---------------------------------------
  <login>         project_<name1> <firstname>.<lastname>        1        besteffort,debug,long,low,normal
  <login>         project_<name2> <firstname>.<lastname>        1   besteffort,debug,high,long,low,normal
  <login>  <firstname>.<lastname> <firstname>.<lastname>        1        besteffort,debug,long,low,normal
# ==> <login> Default account: <firstname>.<lastname>
In the above example, the user <login> is associated to 3 meta-accounts at the L3 level of the hierarchy (his PI <firstname>.<lastname> and two projects account), each granting access to potentially different QOS. The account used upon job submission can be set with the -A <account> option. With the above example:
$ sbatch|srun|... [...]                     # Use default account: <firstname>.<lastname>
$ sbatch|srun|... -A project_<name1> [...]  # Use account project_<name1>
$ sbatch|srun|... -A project_<name2> --qos high [...] # Use account project_<name2>, granting access to high QOS
$ sbatch|srun|... -A anotheraccount [...]   # Error: non-existing association between <login> and anotheraccount

To list all associations for a given user or meta-account, use the sassoc helper function:

# /!\ ADAPT <login> accordingly
$ sassoc <login>
You may use more classically the sacctmgr show [...] command:

  • User information: sacctmgr show user where name=<login> [withassoc] (use the withassoc attribute to list all associations).
  • Default account: sacctmgr show user where name="<login>" format=DefaultAccount -P -n
  • Get the parent account: sacctmgr show account where name=ulhpc format=Org -n -P

To get the current association tree: add withsubaccounts to see ALL sub accounts

# L1,L2 or L3 account /!\ ADAPT <name> accordingly
sacctmgr show association tree where accounts=<name> format=account,share
# End user (L4)
sacctmgr show association where users=$USER  format=account,User,share,Partition,QOS
No association, no job!

It is mandatory to have your login registered within at least one association toward a meta-account (PI, project name) to be able to schedule jobs on the

Impact on FairSharing and Job Accounting

Every node in the above-mentioned tree hierarchy is associated with a weight defining its Raw Share in the FairSharing mechanism in place. Different rules are applied to define these weights/shares depending on the level in the hierarchy:

  • L1 (Organizational Unit): arbitrary shares to dedicate at least 85% of the platform to serve UL needs and projects
  • L2: function of the out-degree of the tree nodes, reflecting also the past year funding
  • L3: a function reflecting the budget contribution of the PI/project (normalized on a per-month basis) for the year in exercise.
  • L4 (ULHPC/IPA login): efficiency score, giving incentives for a more efficient usage of the platform.

More details are given on this page.

Default vs. Project accounts

Default account associations are defined as follows:

  • For UL staff or external partners: your direct Line Manager firstname.lastname within the institution (Faculty, IC, Company) you belong too.
  • For students: the lecture/course they are registered too
    • Guest student/training accounts are associated to the Students meta-account.

In addition, your user account (ULHPC login) may be associated to other meta-accounts such as projects or specific training events.

To establish job accounting against these extra specific accounts, use:

{sbatch|srun} -A project_<name> [...]

For more details, see Project accounts.

  1. restrictions applies and do not permit to reveal all information for other accounts than yours. 

Last update: April 1, 2021