FreeBSD Man Pages

CPUSET(1) FreeBSD General Commands Manual CPUSET(1)
NAMEcpuset -- configure processor sets
SYNOPSIScpuset [-lcpu-list] [-ssetid] cmd...cpuset [-lcpu-list] [-ssetid] -ppidcpuset [-c] [-lcpu-list] -C-ppidcpuset [-cr] [-lcpu-list]
[-jjailid | -ppid | -ttid | -ssetid | -xirq]
cpuset [-cgir] [-jjailid | -ppid | -ttid | -ssetid | -xirq]
DESCRIPTION
The cpuset command can be used to assign processor sets to processes, run
commands constrained to a given set or list of processors, and query
information about processor binding, sets, and available processors in
the system.
cpuset requires a target to modify or query. The target may be specified
as a command, process id, thread id, a cpuset id, an irq or a jail id.
Using -g the target's set id or mask may be queried. Using -l or -s the
target's CPU mask or set id may be set. If no target is specified,
cpuset operates on itself. Not all combinations of operations and tar-
gets are supported. For example, you may not set the id of an existing
set or query and launch a command at the same time.
There are two sets applicable to each process and one private mask per
thread. Every process in the system belongs to a cpuset. By default
processes are started in set 1. The mask or id may be queried using -c.
Each thread also has a private mask of CPUs it is allowed to run on that
must be a subset of the assigned set. And finally, there is a root set,
numbered 0, that is immutable. This last set is the list of all possible
CPUs in the system and is queried using -r.
When running a command it may join a set specified with -s otherwise a
new set is created. In addition, a mask for the command may be specified
using -l. When used in conjunction with -c the mask modifies the sup-
plied or created set rather than the private mask for the thread.
The options are as follows:
-C Create a new cpuset and assign the target process to that
set.
-c The requested operation should reference the cpuset avail-
able via the target specifier.
-g Causes cpuset to print either a list of valid CPUs or, using
-i, the id of the target.
-i When used with the -g option print the id rather than the
valid mask of the target.
-jjailid Specifies a jail id as the target of the operation.
-lcpu-list Specifies a list of CPUs to apply to a target. Specifica-
tion may include numbers separated by '-' for ranges and
commas separating individual numbers. A special list of
``all'' may be specified in which case the list includes all
CPUs from the root set.
-ppid Specifies a pid as the target of the operation.
-ssetid Specifies a set id as the target of the operation.
-r The requested operation should reference the root set avail-
able via the target specifier.
-ttid Specifies a thread id as the target of the operation.
-xirq Specifies an irq as the target of the operation.
EXIT STATUS
The cpuset utility exits 0 on success, and >0 if an error occurs.
EXAMPLES
Create a new group with CPUs 0-4 inclusive and run /bin/sh on it:
cpuset -c -l 0-4 /bin/sh
Query the mask of CPUs the <sh pid> is allowed to run on:
cpuset -g -p <sh pid>
Restrict /bin/sh to run on CPUs 0 and 2 while its group is still allowed
to run on CPUs 0-4:
cpuset -l 0,2 -p <sh pid>
Modify the cpuset /bin/sh belongs to restricting it to CPUs 0 and 2:
cpuset -l 0,2 -c -p <sh pid>
Modify the cpuset all threads are in by default to contain only the first
4 CPUs, leaving the rest idle:
cpuset -l 0-3 -s 1
Print the id of the cpuset /bin/sh is in:
cpuset -g -i -p <sh pid>
Move the pid into the specified cpuset setid so it may be managed with
other pids in that set:
cpuset -s <setid> -p <pid>
Create a new cpuset that is restricted to CPUs 0 and 2 and move pid into
the new set:
cpuset -C -c -l 0,2 -p <pid>
SEE ALSOcpuset(2)HISTORY
The cpuset command first appeared in FreeBSD 7.1.
AUTHORS
Jeffrey Roberson <jeff@FreeBSD.org>
FreeBSD 10.2 January 14, 2011 FreeBSD 10.2