    \fBcgroup.conf\fP 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 \fBslurm.conf\fP file.
    .LP
    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.

    .LP
    For general Slurm Cgroups information, see the Cgroups Guide at
    <https://slurm.schedmd.com/cgroups.html>.

    .LP
    The following cgroup.conf parameters are defined to control the general behavior
    of Slurm cgroup plugins.

    .TP
    \fBCgroupAutomount\fR=<yes|no>
    Slurm cgroup plugins require valid and functional cgroup subsystem to be mounted
    under /sys/fs/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.

    .TP
    \fBCgroupMountpoint\fR=\fIPATH\fR
    Specify the \fIPATH\fR under which cgroups should be mounted. This
    should be a writable directory which will contain cgroups mounted
    one per subsystem. The default \fIPATH\fR is /sys/fs/cgroup.

    .SH "TASK/CGROUP PLUGIN"

    .LP
    The following cgroup.conf parameters are defined to control the behavior
    of this particular plugin:

    .TP
    \fBAllowedKmemSpace\fR=<number>
    Constrain the job cgroup kernel memory to this amount of the allocated memory,
    specified in bytes. The \fBAllowedKmemSpace\fR must be between the upper and
    lower memory limits, specified by \fBMaxKmemPercent\fR and \fBMinKmemSpace\fR,
    respectively. If \fBAllowedKmemSpace\fR goes beyond the upper or lower limit,
    it will be reset to that upper or lower limit, whichever has been exceeded.

    .TP
    \fBAllowedRAMSpace\fR=<number>

    .TP
    \fBAllowedSwapSpace\fR=<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 \fBAllowedRAMSpace\fR. 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 \fBConstrainSwapSpace\fR.
    NOTE: Setting AllowedSwapSpace to 0 does not restrict the Linux kernel from
    using swap space. To control how the kernel uses swap space, see
    \fBMemorySwappiness\fR.

    .TP
    \fBConstrainCores\fR=<yes|no>
    If configured to "yes" then constrain allowed cores to the subset of
    allocated resources. This functionality makes use of the cpuset subsystem.
    Due to a bug fixed in version 1.11.5 of HWLOC, the task/affinity plugin may be
    required in addition to task/cgroup for this to function properly.
    The default value is "no".

    .TP
    \fBConstrainDevices\fR=<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".

    .TP
    \fBConstrainKmemSpace\fR=<yes|no>
    If configured to "yes" then constrain the job's Kmem RAM usage in addition to
    RAM usage. Only takes effect if ConstrainRAMSpace is set to "yes". The default
    value is "no". If set to yes, the job's Kmem limit will be set to
    AllowedKmemSpace if set; otherwise, the job's Kmem limit will be set to its RAM
    limit.
    Also see \fBAllowedKmemSpace\fR.

    .TP
    \fBConstrainRAMSpace\fR=<yes|no>
    If configured to "yes" then constrain the job's RAM usage by setting
    the memory soft limit to the allocated memory and the hard limit to
    the allocated memory * \fBAllowedRAMSpace\fR.  The default value is "no", in
    which case the job's RAM limit will be set to its swap space limit if
    \fBConstrainSwapSpace\fR is set to "yes".
    Also see \fBAllowedSwapSpace\fR, \fBAllowedRAMSpace\fR and
    \fBConstrainSwapSpace\fR.
    NOTE: When enabled, ConstrainRAMSpace can lead to a noticeable decline in
    per-node job throughout. Sites with high-throughput requirements should
    carefully weigh the tradeoff between per-node throughput, versus potential
    problems that can arise from unconstrained memory usage on the node. See
    <https://slurm.schedmd.com/high_throughput.html> for further discussion.

    .TP
    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 \fIPERCENT\fR may be an arbitrary floating
    point number. The default value is 100.

    .TP
    \fBMaxSwapPercent\fR=\fIPERCENT\fR
    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
    \fIPERCENT\fR may be an arbitrary floating point number between 0 and 100.
    The default value is 100.

    .TP
    \fBMaxKmemPercent\fR=\fIPERCENT\fR
    Set an upper bound in percent of total Kmem for a job. The \fIPERCENT\fR may be an
    arbitrary floating point number. The default value is 100.

    .TP
    \fBMemorySwappiness\fR=<number>
    Configure the kernel's priority for swapping out anonymous pages (such as
    program data) verses file cache pages for the job cgroup. Valid values are
    between 0 and 100, inclusive. A value of 0 prevents the kernel from swapping
    out program data. A value of 100 gives equal priorioty to swapping out file
    cache or anonymous pages. If not set, then the kernel's default swappiness
    value will be used. Either \fBConstrainRAMSpace\fR or \fBConstrainSwapSpace\fR
    must be set to \fByes\fR in order for this parameter to be applied.

    .TP
    \fBMinKmemSpace\fR=<number>
    Set a lower bound (in MB) on the memory limits defined by
    \fBAllowedKmemSpace\fR. The default limit is 30M.

    .TP
    \fBMinRAMSpace\fR=<number>
    Set a lower bound (in MB) on the memory limits defined by
    \fBAllowedRAMSpace\fR and \fBAllowedSwapSpace\fR. 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.

    .TP
    \fBTaskAffinity\fR=<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 \fBsched_setaffinity\fP.
    The default value is "no".
    Note: This feature requires the Portable Hardware Locality (hwloc) library
    to be installed.

    .SH "DISTRIBUTION\-SPECIFIC NOTES"

    .LP
    Debian and derivatives (e.g. Ubuntu) usually exclude the memory and memsw (swap)
    ###
    .br
    CgroupAutomount=yes
    .br
    ConstrainCores=yes
    .br
    #

    .SH "COPYING"
    Copyright (C) 2010\-2012 Lawrence Livermore National Security.
    Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
    .br
    Copyright (C) 2010\-2016 SchedMD LLC.
    .LP
    This file is part of Slurm, a resource management program.
    For details, see <https://slurm.schedmd.com/>.
    .LP
    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.
    .LP
    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.

    .SH "SEE ALSO"
    .LP
    \fBslurm.conf\<B>fR(5)