cpuset - define and manage a set of CPUs
SYNOPSIS
cpuset [-q cpuset_name[,cpuset_name_dest] [-A command]
[-c -f filename] [-d] [-l] [-m] [-Q] [-C] [-h]
DESCRIPTION
The ccppuusseett command is used to create and destroy cpusets,
to retrieve information about existing cpusets, and to
attach a process and all of its children to a cpuset.
A cpuset is a named set of CPUs, which may be defined to
be restricted (EXCLUSIVE) or open. A restricted cpuset
only allows processes that are members of the cpuset to
run on the set of CPUs. An open cpuset allows any process
to run on its cpus, but a process that is a member of the
cpuset can only run on the CPUs belonging to the cpuset.
A cpuset is defined by a cpuset configuration file and a
name. See cpuset(4) for a definition of the file format.
The cpuset configuration file is used to list the CPUs
that are members of the cpuset. It also contains any
additional parameters required to define the cpuset. A
cpuset name is between three and eight characters long;
names of two or less characters are reserved.
The file permissions of the configuration file define
access to the cpuset. When permissions need to be
checked, the current permissions of the file are used. It
is therefore possible to change access to 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 permission allows the user to attach a process to
the cpuset.
Cpusets require two user classes: root and user. The
root class creates, destroys, moves a process, and adds a
process to the cpuset. The user class is governed by the
file permissions of the configuration file for the given
cpuset.
Given a configuration file with the following characteris
tics:
Permissions Owner Group Size Filename
--------------------------------------------------
-rwxr----- root cpuset 512 cpuset.test
Group read permission allows a user belonging to the group
cpuset to list all cpusets in the cpuset defined by the
ccppuusseett..tteesstt file and get a listing of all processes in
this cpuset. In order for the user to add processes to
need to change the permissions as follows:
Permissions Owner Group Size Filename
--------------------------------------------------
-rwxr-x--- root cpuset 512 cpuset.test
OPTIONS
-q cpuset_name -A command
Runs the command on the cpuset identified by the -q
parameter. If the user does not have access per
missions or the cpuset does not exist, an error is
returned.
-q cpuset_name -c -f filename
Creates a cpuset with the configuration file speci
fied by the -f parameter and the name specified by
the -q parameter. If the cpuset name already
exists, a CPU specified in the cpuset configuration
file is already a member of a cpuset, or the user
does not have the requisite permissions, the opera
tion fails.
-q cpuset_name -d
Destroys the specified cpuset. Any processes cur
rently attached to it continue running where they
are, but no further commands to list (-Q) or attach
(-A) to that cpuset will succeed.
-q cpuset_name -Q
Prints a list of the cpus that belong to the
cpuset.
-C Prints the name of the cpuset to which the process
is currently attached.
-Q Lists the names of all the cpusets currently
defined.
-h Print the command's usage message.
RESTRICTIONS
A CPU can belong to at most one cpuset.
CPU 0 cannot belong to an EXCLUSIVE cpuset.
Only the superuser can create or destroy cpusets.
runon(1) can not run a command on a cpu that is part of a
cpuset unless the user has write or group write permission
to access the cpuset's configuration file (this restric
tion is not yet implemented -- runon is not yet so con
strained.)
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.
There is no facility to list all processes in a cpuset.
There is no facility to detach all processes from a
cpuset.
There is no facility to move all processes out of a
cpuset.
Deleting a cpuset does not require that no processes are
attached to it, and does not affect any processes (or
descendents thereof) already attached.
While it is possible to determine if a given process is
running on a cpumemset entirely contained within a cpuset
(see the -C option), it is not possible to know whether
that process got there by some explicit request to attach
(-A) to that cpuset by name, or by some other mechanism.
The -C option will display the name of cpuset entirely
containing the specified processes cpumemset in either
case.
Not all of the Memory Policies, as described in cpuset(4)
are supported. See the RESTRICTIONS section on that man
ual entry.
SEE ALSO
runon(1), cpuset(4), cpuset(5).
Man(1) output converted with
man2html