cpuset - cpuset configuration files
DESCRIPTION
A cpuset is defined by a cpuset configuration file and a
name. The cpuset configuration file is used to list the
CPUs that are members of the cpuset and contains any addi
tional parameters needed to define the cpuset. The file
permissions of the configuration file define access to the
cpuset. Every time permissions need to be checked, the
current permissions of the file are used. It is therefore
possible to change access to a particular cpuset, without
having to tear it down and recreate it, simply by changing
the access permissions. Read access allows a user to
retrieve information about a cpuset while execute permis
sion allows the user to attach a process to the cpuset.
The name of the cpuset is a three to eight character
string. Queue names having one or two characters are
reserved for use by the system.
EXAMPLE
The following configuration file describes an exclusive
cpuset containing 8 CPUs:
#cpuset configuration file
EXCLUSIVE
MEMORY_LOCAL
MEMORY_EXCLUSIVE
CPU 16
CPU 17-19, 21, 23
CPU 25
CPU 27
This specification will create a cpuset containing 8 CPUs,
and will restrict those cpus to running threads that have
been explicitly assigned to the cpuset. Jobs running on
the cpuset will use memory from nodes containing the cpus
in the cpuset. Jobs running on other cpusets or on the
global cpuset will not use memory from these nodes.
SUMMARY
Commands are newline terminated, characters following the
comment delimiter '#' are ignored, case matters, and
tokens are separated by whitespace which is ignored.
The valid tokens are:
EXCLUSIVE
Defines a cpuset to be restricted. It can occur
anywhere in the file. Anything else on the line is
ignored. This capability is not yet implemented.
Threads assigned to the cpuset will attempt to
assign memory only from nodes within the cpuset.
Assignment of memory from outside the cpuset will
occur only if no free memory is available from
within the cpuset. No restrictions are made on
memory assignment to threads running outside the
cpuset.
MEMORY_EXCLUSIVE
Threads not assigned to the cpuset will not use
memory from within the cpuset unless no memory out
side the cpuset is available.
If, at the time a cpuset is created, memory is
already assigned to threads that are already run
ning, no attempt will be made to explicitly move
this memory.
MEMORY_KERNEL_AVOID
The kernel will attempt to avoid allocating memory
from nodes contained in this cpuset. If kernel
memory requests cannot be satisfied from outside
this cpuset, this option will be ignored and allo
cations will occur from within the cpuset.
MEMORY_MANDATORY
The kernel will limit all memory allocations to
nodes that are contained in this cpuset. If memory
requests cannot be satisfied, the allocating pro
cess will sleep until memory is available. The
process will be killed if no more memory can be
allocated. See policies below.
POLICY_PAGE
Requires MEMORY_MANDATORY. This is the default
policy if no policy is specified. This policy will
cause the kernel to page user pages to the swap
file to free physical memory on the nodes contained
in this cpuset. If swap space is exhausted, the
process will be killed.
POLICY_KILL
Requires MEMORY_MANDATORY. The kernel will attempt
to free as much space as possible from kernel
heaps, but will not page user pages to the swap
file. If all physical memory on the nodes con
tained in this cpuset are exhausted, the process
will be killed.
CPU cpuid or cpuids
Specifies a single CPU or a list of CPUs that will
be part of the cpuset. The user can mix a single
cpu line with a cpu list line. For example:
CPU 3-4,5,7,9-12
RESTRICTIONS
Permission checking against the cpuset configuration file
permissions is not implemented.
The kernel does not enforce cpuset restriction directly.
Rather restriction is established by booting the kernel
with the optional boot command line parameter
cpumemset_minimal
that establishes the CpuMemSets(2) initial kernel CpuMem
Set to only include the first CPU and memory node. The
rest of the systems CPUs and memory then remain unused
until attached to using cpuset or some other such root
priviledged facility. The cpuset command and library sup
port ensure restriction among clients of cpusets, but not
from other processes.
The capabilities of MEMORY_EXCLUSIVE, MEMORY_KERNEL_AVOID,
MEMORY_MANDATORY, POLICY_PAGE, and POLICY_KILL are not
implemented yet.
SEE ALSO
cpuset(1), cpuset(5).
Man(1) output converted with
man2html