Compute and storage quota

Objectives

  • Understand what quota is

  • Be aware about how quota is consumed

  • Know what issues may arise from exceeding the allocated quota

  • Be able to resolve issues revolving from exceeding quotas

  • Be able to use quota effictively by planning ahead

Demo/discussion time

We have great documentation about compute and storage quota and there is no point repeating it here. Let’s go through the documentation and examples together:

Big-picture overview of storage areas

We also have a more detailed overview page but here is the big picture:

  • /cluster/home/

    • very limited quota

    • for scripts, source code, small data files

  • /cluster/projects/

    • much more quota

    • run your calculations here

    • keep your conda environments here

  • /cluster/work/

    • basically unlimited

    • files older than 21 days are automatically deleted

    • good for temporary files and testing


Instructor note

  • Teaching: 20 min

  • Discussion: 10 min

Demonstrating going beyond space quota:

  • Instructor shows dusage directly on the cluster. The reason is that the output is colored and we can then also try to troubleshoot problems together.

  • The instructor prepares a situation by creating a big file before the course which exceeds quota so that we can see how error messages look and also together discuss how to solve the problem. This can be done for instance using head -c 1GB /dev/urandom > large-file.bin

  • On Saga and Fram it can be interesting to demonstrate that moving the files may not be enough. This can be demonstrated with moving, followed by a comparison of du vs. dusage mismatch if group permissions have not been adjusted.

Demonstrating going beyond inode quota:

  • The instructor can use the following environment.yml file:

    name: myproject
    channels:
      - defaults
    dependencies:
      - python=3.10
      - numpy
      - pandas
      - scipy
      - matplotlib
    
  • And the following install script:

    #!/usr/bin/env bash
    
    # settings to catch errors in bash scripts
    set -euf -o pipefail
    
    module load Mamba/23.1.0-4
    
    # this is not a good setting but we use it to demonstrate a problem
    my_conda_storage=${HOME}/tmp/conda
    
    export CONDA_PKGS_DIRS=${my_conda_storage}/package-cache
    mamba env create --prefix ${my_conda_storage}/myproject --file environment.yml
    
  • This installs in seconds.