NAME¶
cgroup.conf - Slurm configuration file for the cgroup support
DESCRIPTION¶
cgroup.conf is an ASCII file which defines parameters used by Slurm's
Linux cgroup related plugins. 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.
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,
daemon receipt of the SIGHUP signal, or execution of the command
"scontrol reconfigure" unless otherwise noted.
For general Slurm Cgroups information, see the Cgroups Guide at
<
http://slurm.schedmd.com/cgroups.html>.
The following cgroup.conf parameters are defined to control the general behavior
of Slurm cgroup plugins.
- CgroupMountpoint=PATH
- Specify the PATH under which cgroups should be mounted. This should
be a writable directory which will contain cgroups mounted one per
subsystem. The default PATH is /cgroup.
- CgroupAutomount=<yes|no>
- Slurm cgroup plugins require valid and functional cgroup subsystem to be
mounted under /cgroup/<subsystem_name>. When launched, plugins check
their subsystem availability. If not available, the plugin launch fails
unless CgroupAutomount is set to yes. In that case, the plugin will first
try to mount the required subsystems.
- CgroupReleaseAgentDir=<path_to_release_agent_directory>
- Used to tune the cgroup system behavior. This parameter identifies the
location of the directory containing Slurm cgroup release_agent files.
TASK/CGROUP PLUGIN¶
The following cgroup.conf parameters are defined to control the behavior of this
particular plugin:
- ConstrainCores=<yes|no>
- If configured to "yes" then constrain allowed cores to the
subset of allocated resources. It uses the cpuset subsystem. The default
value is "no".
- TaskAffinity=<yes|no>
- If configured to "yes" then set a default task affinity to bind
each step task to a subset of the allocated cores using
sched_setaffinity. The default value is "no". Note: This
feature requires the Portable Hardware Locality (hwloc) library to be
installed.
- AllowedRAMSpace=<number>
- Constrain the job cgroup RAM to this percentage of the allocated memory.
The percentage supplied may be expressed as floating point number, e.g.
98.5. If the AllowedRAMSpace limit is exceeded, the job steps will
be killed and a warning message will be written to standard error. Also
see ConstrainRAMSpace. The default value is 100.
- AllowedSwapSpace=<number>
- Constrain the job cgroup swap space to this percentage of the allocated
memory. The default value is 0, which means that RAM+Swap will be limited
to AllowedRAMSpace. The supplied percentage may be expressed as a
floating point number, e.g. 50.5. If the limit is exceeded, the job steps
will be killed and a warning message will be written to standard error.
Also see ConstrainSwapSpace.
- ConstrainRAMSpace=<yes|no>
- If configured to "yes" then constrain the job's RAM usage. The
default value is "no", in which case the job's RAM limit will be
set to its swap space limit. Also see AllowedSwapSpace,
AllowedRAMSpace and ConstrainSwapSpace.
- ConstrainSwapSpace=<yes|no>
- If configured to "yes" then constrain the job's swap space
usage. The default value is "no". Note that when set to
"yes" and ConstrainRAMSpace is set to "no",
AllowedRAMSpace is automatically set to 100% in order to limit the
RAM+Swap amount to 100% of job's requirement plus the percent of allowed
swap space. This amount is thus set to both RAM and RAM+Swap limits. This
means that in that particular case, ConstrainRAMSpace is automatically
enabled with the same limit than the one used to constrain swap space.
Also see AllowedSwapSpace.
- MaxRAMPercent=PERCENT
- Set an upper bound in percent of total RAM on the RAM constraint for a
job. This will be the memory constraint applied to jobs that are not
explicitly allocated memory by Slurm (i.e. Slurm's select plugin is not
configured to manage memory allocations). The PERCENT may be an
arbitrary floating point number. The default value is 100.
- MaxSwapPercent=PERCENT
- Set an upper bound (in percent of total RAM) on the amount of RAM+Swap
that may be used for a job. This will be the swap limit applied to jobs on
systems where memory is not being explicitly allocated to job. The
PERCENT may be an arbitrary floating point number between 0 and
100. The default value is 100.
- MinRAMSpace=<number>
- Set a lower bound (in MB) on the memory limits defined by
AllowedRAMSpace and AllowedSwapSpace. This prevents
accidentally creating a memory cgroup with such a low limit that
slurmstepd is immediately killed due to lack of RAM. The default limit is
30M.
- ConstrainDevices=<yes|no>
- If configured to "yes" then constrain the job's allowed devices
based on GRES allocated resources. It uses the devices subsystem for that.
The default value is "no".
- AllowedDevicesFile=<path_to_allowed_devices_file>
- If the ConstrainDevices field is set to "yes" then this file has
to be used to declare the devices that need to be allowed by default for
all the jobs. The current implementation of cgroup devices subsystem works
as a whitelist of entries, which means that in order to isolate the access
of a job upon particular devices we need to allow the access on all the
devices, supported by default and then deny on those that the job does not
have the permission to use. The default value is
"/etc/slurm/cgroup_allowed_devices_file.conf". The syntax of the
file accepts one device per line and it permits lines like /dev/sda* or
/dev/cpu/*/*. See also an example of this file in
etc/allowed_devices_file.conf.example.
DISTRIBUTION-SPECIFIC NOTES¶
Debian and derivatives (e.g. Ubuntu) usually exclude the memory and memsw (swap)
cgroups by default. To include them, add the following parameters to the
kernel command line:
cgroup_enable=memory swapaccount=1
This can usually be placed in /etc/default/grub inside the
GRUB_CMDLINE_LINUX variable. A command such as update-grub must be run
after updating the file.
EXAMPLE¶
###
# Slurm cgroup support configuration file
###
CgroupAutomount=yes
CgroupReleaseAgentDir="/etc/slurm/cgroup"
ConstrainCores=yes
#
COPYING¶
Copyright (C) 2010-2012 Lawrence Livermore National Security. Produced at
Lawrence Livermore National Laboratory (cf, DISCLAIMER).
Copyright (C) 2010-2013 SchedMD LLC.
This file is part of SLURM, a resource management program. For details, see
<
http://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.
SEE ALSO¶
slurm.conf(5)