Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
CPUSET(1)		  BSD General Commands Manual		     CPUSET(1)

     cpuset -- configure processor sets

     cpuset [-l	cpu-list] [-s setid] cmd ...
     cpuset [-l	cpu-list] [-s setid] -p	pid
     cpuset [-c] [-l cpu-list] -C -p pid
     cpuset [-cr] [-l cpu-list]
	    [-j	jailid | -p pid	| -t tid | -s setid | -x irq]
     cpuset [-cgir] [-j	jailid | -p pid	| -t tid | -s setid | -x irq]

     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 in-
     formation about processor binding,	sets, and available processors in the

     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

     -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.

     -j	jailid	  Specifies a jail id as the target of the operation.

     -l	cpu-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.

     -p	pid	  Specifies a pid as the target	of the operation.

     -s	setid	  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.

     -t	tid	  Specifies a thread id	as the target of the operation.

     -x	irq	  Specifies an irq as the target of the	operation.

     The cpuset	utility	exits 0	on success, and	>0 if an error occurs.

     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>


     The cpuset	command	first appeared in FreeBSD 7.1.

     Jeffrey Roberson <>

BSD			       January 14, 2011				   BSD


Want to link to this manual page? Use this URL:

home | help