job_container/tmpfs

Overview

job_container/tmpfs is an optional plugin that provides job-specific, private temporary file system space.

When enabled on the cluster, each job will have its own /tmp and /dev/shm directory, separate from every other job as well as the system. These are mapped in the job as "/tmp" and "/dev/shm". The directories used to mount in a private name space can be configured with the Dirs= option in job_container.conf

Installation

This plugin is built and installed as part of the default build, no extra installation steps are required.

Setup

Slurm must be configured to load the job container plugin by adding JobContainerType=job_container/tmpfs and PrologFlags=contain in slurm.conf. Additional configuration must be done in the "job_container.conf" file, which should be placed in the same directory as the slurm.conf.

Job containers can be configured for all nodes, or for a subset of nodes. As an example, if all nodes will be configured the same way, you would put the following in your job_container.conf:

AutoBasePath=true
BasePath=/var/nvme/storage

A full description of the parameters available in the job_container.conf file can be found here.

Initial Testing

An easy way to verify that the container is working is to run a job and ensure that the /tmp directory is empty (since it normally has some other files) and that "." is owned by the user that submitted the job.

tim@slurm-ctld:~$ srun ls -al /tmp
total 8
drwx------  2 tim    root 4096 Feb 10 17:14 .
drwxr-xr-x 21 root   root 4096 Nov 15 08:46 ..

Spank

This plugin interfaces with the SPANK api, and automatically joins the job's container in the following functions:

  • spank_task_init_privileged()
  • spank_task_init()

In addition to the job itself, The TaskProlog will also be executed inside the container.

Last modified 26 July 2022