AImageLab-HPC

Budget and Accounting

Last updated: March 29, 2026


Checking your Budget - susage

The susage command gives a quick overview of budget allocation and consumption for all projects you are associated with:

susage

Example output:

                 Project    Total Budget    Total usage    Total usage (%)    Budget 2026    Usage 2026    Usage 2026 (%)
-------------------------  --------------  -------------  -----------------  -------------  ------------  ----------------
               ai4a2026         60065.0          194.9                0.3        60000.4         130.3               0.2
             ai4bio2025         60000.0        18030.0               30.0        60000.0       18030.0              30.0
          ammagamma_phd         76176.0        46247.1               60.7        30000.5          71.5               0.2
Column Description
Project Project account name
Total Budget Total budget allocated across all years (standard hours)
Total usage Total usage consumed across all years (standard hours)
Total usage (%) Percentage of total budget consumed
Budget YYYY Budget allocated for the current year
Usage YYYY Budget consumed in the current year
Usage YYYY (%) Percentage of the current year’s budget consumed

Billing Policy

Budget consumption is measured in standard hours (stdh) and is calculated based on the resources allocated to a job and its elapsed wall-clock time.

Billing Formula

For each node allocated to a job, the billed units are determined by the most resource-intensive TRES (Trackable RESource) requested, weighted as follows:

Resource Weight
CPU 0.4 stdh per CPU
Memory 0.08 stdh per GB
GPU 6.0 stdh per GPU

The billed amount for a job is:

billed_hours = max(CPUs × 0.4, MemGB × 0.08, GPUs × 6.0) × elapsed_hours

For multi-node jobs, the per-node billing is summed across all allocated nodes.

This means the resource that occupies the largest fraction of a node’s cost determines the billing. Requesting even a single GPU is sufficient to make the GPU term dominant in nearly all realistic cases.

Example

A job requesting 1 GPU, 6 CPUs, and 18 GB of RAM (the defaults when allocating 1 GPU) running for 2 hours:

  • CPU contribution: 6 × 0.4 = 2.4
  • Memory contribution: 18 × 0.08 = 1.44
  • GPU contribution: 1 × 6.0 = 6.0 ← maximum

Billed hours = 6.0 × 2 h = 12.0 stdh

Free Partition

The all_serial partition - used for interactive work on the login nodes - has all billing weights set to zero. Usage on this partition is free of charge and does not consume any project budget.

Budget Linearization

To ensure fair access across all projects and users, AImageLab-HPC uses a fairshare-based scheduling priority.

How it works

Each project is assigned a yearly budget, refreshed on January 1st each year. The scheduler continuously tracks usage over a rolling 30-day window and compares it against each project’s expected consumption rate (yearly_budget ÷ 12).

  • Projects and users that have consumed less than their expected share in the last 30 days receive higher scheduling priority.
  • Projects and users that have consumed more receive lower scheduling priority.

This is a soft mechanism: jobs are never blocked or cancelled, but their position in the queue is adjusted based on recent usage relative to budget.

Two-level fairshare

Priority is computed at two levels:

  1. Account level: projects with a larger budget share and lower recent usage are favoured.
  2. User level (within a project): among users of the same project, those who have consumed less recently are scheduled first.

Practical advice

  • Spread computations evenly over time rather than submitting large bursts - sustained usage close to your monthly share keeps your priority stable.
  • If you have exceeded your recent share, your jobs will still run, just with lower priority relative to other users.
  • Unused budget does not carry over: on January 1st, each project’s yearly allocation is reset to its assigned value.