job_container.conf is an ASCII file which defines parameters used by Slurm's job_container/tmpfs plugin. The plugin reads the job_container.conf file to find out the configuration settings. Based on them it constructs a private mount namespace for the job and mounts /tmp and /dev/shm inside it. This gives the job a private view of /tmp and /dev/shm. /tmp is mounted inside a location that is specified as 'BasePath' in job_container.conf file.
The file location can be modified at system build time using the DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF environment variable. The file will always be located in the same directory as the slurm.conf file.
If using the job_container.conf file to define a namespace available to nodes the first parameter on the line should be NodeName. If configuring a namespace without specifying nodes, the first parameter on the line should be BasePath.
Parameter names are case insensitive. Any text following a "#" in the configuration file is treated as a comment through the end of that line. Changes to the configuration file take effect upon restart of Slurm daemons.
The following job_container.conf parameters are defined to control the behavior of the job_container/tmpfs plugin.
This determines if plugin should create the BasePath directory or not. Set it to the directory is created with permission 0755. Directory is not deleted during slurm shutdown. If set to 'false' or not specified, plugin would expect directory to exist. This option can be used on a global or per-line basis. This parameter is optional.
Specify the PATH that the tmpfs plugin should use to mount private /tmp to. This path must be readable and writable by the plugin. The plugin also constructs a directory for each job inside this path, which is then used for mounting. The basepath gets mounted as 'private' during slurmd start and remains mounted until shutdown.
Specify fully qualified pathname of an optional initialization script. This script is run before the namespace construction of a job. It can be used to make the job join additional namespaces prior to the construction of /tmp namespace or it can be used for any site-specific setup. This parameter is optional.
A NodeName specification can be used to permit one job_container.conf file to be used for all compute nodes in a cluster by specifying the node(s) that each line should apply to. The NodeName specification can use a Slurm hostlist specification as shown in the example below. This parameter is optional.
### # Sample job_container.conf file 1 # Define 2 basepaths # The first will only be on largemem[1-2] and it will automatically created. # The second will only be on gpu[1-10], will be expected to exist and will run # an initscript before each job. ### NodeName=largemem[1-2] AutoBasePath=true BasePath=/var/nvme/storage NodeName=gpu[1-10] BasePath=/var/nvme/storage InitScript=/etc/slurm/init.sh
### # Sample job_container.conf file 2 # Define 1 basepath that will be on all nodes and automatically created. ### AutoBasePath=true BasePath=/var/nvme/storage
These are the entries required in slurm.conf to activate the job_container/tmpfs plugin.
### # Slurm configuration need to use job_container/tmpfs plugin ### JobContainerType=job_container/tmpfs
If any parameters in job_container.conf are changed while slurm is running, then slurmd on the respective nodes will need to be restarted for changes to take effect. Additionally this can be disruptive to jobs already running on the node. So care must be taken to make sure no jobs are running if any changes to job_container.conf are deployed.
Restarting slurmd is safe and non-disruptive to running jobs, as long as job_container.conf is not changed between restarts in which case above point applies.
Copyright (C) 2021 Regents of the University of California Produced at Lawrence Berkeley National Laboratory
Copyright (C) 2021 SchedMD LLC.
This file is part of Slurm, a resource management program. For details, see <https://slurm.schedmd.com/>.
Slurm is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
Slurm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.