Advanced Research Computing
  • About
    • Overview
    • Details
    • Terms of Service
    • FAQs
    • Our Team
    • Testimonials
  • Services
    • ARC Support Bot
    • Coffee/Office Hours
    • Data Portal »
    • Pricing
    • Secure Computing
    • Service Requests
      • Request an Account
      • Request Classroom Access
      • Request Software
      • Request Storage
  • Resources
    • Documentation »
    • Workshops
    • Web Apps
      • Doppler (NAU only)
      • Metrics (NAU only)
      • OnDemand
      • XDMod
      • XDMoD Reports
  • Research
    • Current Projects
    • Publications
  • Collaboration
    • Arizona Research Computing
    • CRN
    • External
  • IN
  • ARC
  • Resource Allocation

Resource Allocation

Resource allocation in HPC is the set of resources you are given to use for your jobs. A resource in this context is defined as a given number of CPU cores or GPUs, a certain amount of CPU or GPU usage per second, or a given amount of RAM.

There are several approaches to ensuring fair resource management, which include:

  • First In, First Out (FIFO)
  • Backfill (smallest job first)
  • Fairshare, which dynamically adjusts priority based on users’ recent usage.

Slurm

Resource allocation on Monsoon is handled by a system called slurm. Slurm grants access to resources over a given block of time, called an allocation. When you submit a job to Monsoon, you are actually requesting a given set of resources (e.g 1 CPU core, 1GB of RAM, and 1 GPU) over a given time span (e.g 1 hour). Slurm then schedules these blocks through a priority system, described below.

If a job is canceled or finishes early, a gap is created in the schedule between that job and the one that follows it. Depending on the job, this means Slurm can sometimes place a job into a much sooner time slot than it was originally scheduled for. This process is known as backfilling.

Fairshare

Fairshare is a value between 0 and 1 that is calculated based on a user’s recent resource usage. The higher the fairshare value is, the higher the priority for scheduling jobs. The more resources a user has used recently, the lower their fairshare value will be. This means that users who have used fewer resources recently will have a higher priority for their jobs to be scheduled.

More information on the fairshare algorithm can be found in the slurm documentation.

LevelFS

LevelFS is a value that represents the level of fairness in resource allocation. The ranges of LevelFS levels and their meanings are as follows:

  • LevelFS < 1: High priority for scheduling jobs
  • LevelFS 1 – 10: Moderate priority for scheduling jobs
  • LevelFS > 10: Low priority for scheduling jobs

TRESRunMins

Separately from fairshare, Monsoon also implements a system for limiting jobs called TRESRunMins, which determines the upper bound on how many CPU-minutes a given Slurm account (e.g faculty member or classroom) can use.

This is a variable in Slurm that represents a number assigned to an account (or QoS) which limits the total number of remaining CPU minutes which your running jobs can occupy. Having this feature enabled on Monsoon helps with:

  • Flexible resource limiting
  • Staggering jobs
  • Increasing cluster utilization
  • More accurate resource requests

The current value for the limit is 3,000,000. This value is sometimes increased as cluster utilization drops, which allows folks to use the idle cores. To calculate the TRESRunMins for your jobs, multiply the number of CPUs being used by the time limit remaining, then multiply that number by the total number of jobs you are running, like so:

tresrunmins = sumofjobs( cpus * time remaining )

Examples:

500000 = 24x 1cpu, 2 week jobs

500000 = 49x 1 cpu, 1 week jobs

500000 = 347x 1 cpu, 1 day jobs

500000 = 21x 16 cpu, 1 day jobs

500000 = 130x 16 cpu, 4 hr jobs

500000 = 520x 4 cpu, 4 hr jobs

To see the current TRESRunMins for a single account or all accounts, use

sshare -l -A <account name> # single account
sshare -l # all accounts

In the output, the pertinent column will be labeled CPURunMins and will be the farthest to the right. This number changes dynamically as jobs change state.

Checking your Fairshare and LevelFS

The sshare command can be used to check your fairshare and LevelFS values. This command provides information about the resource usage and priority of users in the SLURM system.

$ sshare -Po user,fairshare,levelfs | grep $USER
abc123|0.456209|4.588063

In this example, abc123 has a fairshare value of 0.456209 and a LevelFS value of 4.588063.

A fairshare value of 0.456209 means a moderate amount of resources were used recently. A LevelFS value of 4.588063 indicates a moderate priority for scheduling jobs.