Service Units (SU)
Overview¶
Service Units (SUs) are the core accounting mechanism used to track and allocate compute usage on Wulver. Each job you run consumes a certain number of SUs based on the resources you request and the duration of your job.
SUs help us ensure fair usage of the HPC system and monitor consumption across different users, departments, or projects.
Since resources are limited, each faculty PI is allocated 300,000 Service Units (SUs) per year upon request at no cost. These SUs can be used via the standard priority on the SLURM job scheduler. One SU is defined as 1 CPU hour or 4 GB of RAM per hour.
Important information on SU
- The SU allocation is per PI group, not per individual student.
- The allocation resets each fiscal year.
- Students are expected to use SUs efficiently, as excessive usage may deplete their group's SU balance quickly.
If a group exhausts its SU allocation early, the PI has the option to purchase additional SUs or leverage higher priority queues through investment. For more details, refer to the Wulver Policies and Condo Policies. See the table below to see SU will be charged for different partitions.
Partition | Service Unit (SU) Charge |
---|---|
--partition=general |
MAX(CPUs, RAM/4G) SU |
--partition=gpu |
16 * (GPU Memory requested)/80G + MAX(CPUs, RAM/4G) SU |
--partition=bigmem |
MAX(1.5 *CPUs, RAM/16G) SU |
--partition=debug |
No charges, must be used with --qos=debug |
Memory request via job scheduler
Please note that in the above SU calculation, MAX(CPUs, RAM/4GB) in the general
and gpu
partition — this represents the maximum of the number of CPUs requested and the memory requested divided by 4GB. in bigmem
it's 16 GB.
- If you do not specify
--mem
in your SLURM job script, the job will be allocated the default 4GB of memory per core (16GB/core inbigmem
), and you will be charged based on the number of CPUs requested. - If you do specify
--mem
to request more memory, the SU charge will be based on the maximum of CPU count and memory/4GB (memory/16GB inbigmem
). Requesting more memory than the default will result in higher SU charges than if you had only specified CPUs.
Therefore, please be mindful of the --mem
setting. Requesting more memory than necessary can significantly increase your SU usage.
Example of SU Charges
SLURM Directive | SU | Explaination |
---|---|---|
4 CPUs | MAX(4, 4*4G/4G) = 4 | Since no memory requireemnt is specified, SU is charged based on the same number of CPUs |
4 CPUs + --mem=64G |
MAX(4, 64G/4G) = 16 | Since 64G memory is specified, the MAX function the evaluates the maximum of 4 CPUS, and 64G/4G= 16, resulting in a charge of 16 SUs |
4 CPUs + --mem=4G |
MAX(4, 4G/4G) = 4 | MAX function the evaluates the maximum of 4 CPUS, and 4G/4G= 1, resulting in a charge of 4 SUs |
4 CPUs + --mem-per-cpu=8G |
MAX(4, 8G*4/4G) = 8 | MAX function the evaluates the maximum of 4 CPUS, and 8G*4CPUs/4G = 8 , resulting in a charge of 8 SUs |
SLURM Directive | SU | Explaination |
---|---|---|
4 CPUs | MAX(4*1.5, 4*16G/16G) = 6 | On bigmem partion the usage factor is 1.5 |
4 CPUs + --mem=64G |
MAX(4*1.5, 64G/16G) = 6 | Since 64G memory is specified, the MAX function the evaluates the maximum of 4*1.5= 6 SUs, and 64G/16G= 4 SUs, resulting in a charge of 4 SUs |
4 CPUs + --mem=128G |
MAX(4*1.5, 128G/16G) = 8 | MAX function the evaluates the maximum of 4*1.5= 6 SUs, and 128G/16G= 8 SU, resulting in a charge of 8 SUs |
4 CPUs + --mem-per-cpu=8G |
MAX(4*1.5, 8G*4/16G) = 6 | MAX function the evaluates the maximum of 4*1.5= 6 SUs, and 8G*4CPUs/16G = 2 SUs , resulting in a charge of 6 SUs |
SLURM Directive | SU | Explaination |
---|---|---|
4 CPUs + 10MIG | MAX(4, 4*4G/4G) + 16 * (10G/80G) = 6 | Since no memory requireemnt is specified, SU is charged based on the same number of CPUs and 10G of GPU memory |
4 CPUs + 20MIG | MAX(4, 4G/4G) + 16 * (20G/80G) = 8 | SU is charged based on the same number of CPUs and 20G of GPU memory |
4 CPUs + 40MIG | MAX(4, 4G/4G) + 16 * (40G/80G) = 12 | SU is charged based on the same number of CPUs and 40G of GPU memory |
4 CPUs + Full GPU | MAX(4, 4G/4G) + 16 * (80G/80G) = 20 | SU is charged based on the same number of CPUs and 80G of GPU (A full GPU) memory |
4 CPUs + --mem=64G + Full GPU |
MAX(4, 64G/4G) + 16 * (80G/80G) = 32 | The MAX function the evaluates the maximum of 4 SUs (from CPUs), and 64G/4G= 16 SUs (from memory). In addition, 16 SUs are charged from 80G of GPU (A full GPU) memory, bringing the total SU charge to 32 SUs |
Check Quota¶
Users can check the SUs utilization in --qos=standard
, and space usage via quota_info UCID
command.
1 2 3 4 5 6 7 8 9 10 |
|
xy1234
represents the UCID of the PI, and "SLURM Service Units (CPU Hours): 277557 (300000 Quota)" indicates that members of the PI group have already utilized 277,557 CPU hours out of the allocated 300,000 SUs, and the user xy1234
utilized 1703 CPU Hours out of 277,557 CPU Hours. This command also displays the storage usage of directories such as $HOME
, /project
, and /scratch
. Users can view both the group usage and individual usage of each storage. In the given example, the group usage from the 2TB project quota is 867 GB, with the user's usage being 11 GB out of that 867 GB. For more details file system quota, see Wulver Filesystem.