mirror of
https://git.FreeBSD.org/src.git
synced 2025-02-08 08:27:00 +00:00
- Remove the -i argument when running a command to simplify things a
little bit and to prevent users from specifying a private mask that may later restrict other group changes. - Add a man page which brueffer generously contributed to. Sponsored by: Nokia
This commit is contained in:
parent
73c40187fd
commit
7be5912e3f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=176812
@ -1,7 +1,6 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= cpuset
|
||||
NO_MAN= true
|
||||
WARNS?= 6
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
171
usr.bin/cpuset/cpuset.1
Normal file
171
usr.bin/cpuset/cpuset.1
Normal file
@ -0,0 +1,171 @@
|
||||
.\" Copyright (c) 2008 Christian Brueffer
|
||||
.\" Copyright (c) 2008 Jeffrey Roberson
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd March 2, 2008
|
||||
.Dt CPUSET 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm cpuset
|
||||
.Nd "configure processor sets"
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl l Ar cpu-list
|
||||
.Op Fl s Ar setid
|
||||
.Ar cmd
|
||||
.Nm
|
||||
.Op Fl l Ar cpu-list
|
||||
.Op Fl s Ar setid
|
||||
.Fl p Ar pid
|
||||
.Nm
|
||||
.Op Fl cr
|
||||
.Op Fl l Ar cpu-list
|
||||
.Op Fl p Ar pid | Fl r Ar tid | Fl s Ar setid
|
||||
.Nm
|
||||
.Op Fl cgir
|
||||
.Op Fl p Ar pid | Fl r Ar tid | Fl s Ar setid
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
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.
|
||||
.Pp
|
||||
.Nm
|
||||
requires a target to modify or query.
|
||||
The target may be specified as a command, process id, thread id, or a
|
||||
cpuset id.
|
||||
Using
|
||||
.Fl g
|
||||
the target's set id or mask may be queried.
|
||||
Using
|
||||
.Fl l
|
||||
or
|
||||
.Fl s
|
||||
the target's CPU mask or set id may be set.
|
||||
If no target is specified,
|
||||
.Nm
|
||||
operates on itself.
|
||||
Not all combinations of operations and targets are supported.
|
||||
For example,
|
||||
you may not set the id of an existing set or query and launch a command
|
||||
at the same time.
|
||||
.Pp
|
||||
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
|
||||
.Fl 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
|
||||
.Fl r .
|
||||
.Pp
|
||||
When running a command it may join a set specified with
|
||||
.Fl s
|
||||
otherwise a new set is created.
|
||||
In addition, a mask for the set may be specified using
|
||||
.Fl l .
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width ".Fl l Ar cpu-list"
|
||||
.It Fl c
|
||||
The requested operation should reference the cpuset available via the
|
||||
target specifier.
|
||||
.It Fl g
|
||||
Causes
|
||||
.Nm
|
||||
to print either a list of valid CPUs or, using
|
||||
.Fl i ,
|
||||
the id of the target.
|
||||
.It Fl i
|
||||
When used with the
|
||||
.Fl g
|
||||
option print the id rather than the valid mask of the target.
|
||||
.It Fl l Ar cpu-list
|
||||
Specifies a list of CPUs to apply to a target.
|
||||
Specification may include
|
||||
numbers seperated by '-' for ranges and commas separating individual numbers.
|
||||
.It Fl p Ar pid
|
||||
Specifies a pid as the target of the operation.
|
||||
.It Fl s Ar setid
|
||||
Specifies a set id as the target of the operation.
|
||||
.It Fl r
|
||||
The requested operation should reference the root set available via the
|
||||
target specifier.
|
||||
.It Fl t Ar tid
|
||||
Specifies a thread id as the target of the operation.
|
||||
.El
|
||||
.Sh EXIT STATUS
|
||||
.Ex -std
|
||||
.Sh EXAMPLES
|
||||
Create a new group with CPUs 0-4 inclusive and run
|
||||
.Pa /bin/sh
|
||||
on it:
|
||||
.Dl cpuset -l 0-4 /bin/sh
|
||||
.Pp
|
||||
Query the mask of CPUs the
|
||||
.Aq sh pid
|
||||
is allowed to run on:
|
||||
.Dl cpuset -g -p <sh pid>
|
||||
.Pp
|
||||
Restrict
|
||||
.Pa /bin/sh
|
||||
to run on CPUs 0 and 2 while its group is still allowed to run on
|
||||
CPUs 0-4:
|
||||
.Dl cpuset -l 0,2 -p <sh pid>
|
||||
.Pp
|
||||
Modify the cpuset
|
||||
.Pa /bin/sh
|
||||
belongs to restricting it to CPUs 0 and 2:
|
||||
.Dl cpuset -l 0,2 -c -p <sh pid>
|
||||
.Pp
|
||||
Modify the cpuset all threads are in by default to contain only
|
||||
the first 4 CPUs, leaving the rest idle:
|
||||
.Dl cpuset -l 0-3 -s 1
|
||||
.Pp
|
||||
Print the id of the cpuset
|
||||
.Pa /bin/sh
|
||||
is in:
|
||||
.Dl cpuset -g -i -p <sh pid>
|
||||
.Pp
|
||||
Move the
|
||||
.Ar pid
|
||||
into the specified cpuset
|
||||
.Ar setid
|
||||
so it may be managed with other pids in that set:
|
||||
.Dl cpuset -s <setid> -p <pid>
|
||||
.Sh SEE ALSO
|
||||
.Xr cpuset 2
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
command first appeared in
|
||||
.Fx 8.0 .
|
||||
.Sh AUTHORS
|
||||
.An Jeffrey Roberson Aq jeff@FreeBSD.org
|
@ -251,29 +251,24 @@ main(int argc, char *argv[])
|
||||
printaffinity();
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
if (iflag)
|
||||
usage();
|
||||
/*
|
||||
* The user wants to run a command with a set and possibly cpumask.
|
||||
*/
|
||||
if (argc) {
|
||||
if (pflag | rflag | tflag || cflag)
|
||||
usage();
|
||||
if (sflag && iflag)
|
||||
usage();
|
||||
if (sflag) {
|
||||
if (cpuset_setid(CPU_WHICH_PID, -1, setid))
|
||||
err(argc, "setid");
|
||||
which = CPU_WHICH_PID;
|
||||
level = CPU_LEVEL_WHICH;
|
||||
}
|
||||
if (iflag) {
|
||||
} else {
|
||||
if (cpuset(&setid))
|
||||
err(argc, "newid");
|
||||
which = CPU_WHICH_CPUSET;
|
||||
level = CPU_LEVEL_WHICH;
|
||||
}
|
||||
if (lflag) {
|
||||
if (cpuset_setaffinity(level, which, -1,
|
||||
sizeof(mask), &mask) != 0)
|
||||
if (cpuset_setaffinity(CPU_LEVEL_CPUSET, CPU_WHICH_PID,
|
||||
-1, sizeof(mask), &mask) != 0)
|
||||
err(EXIT_FAILURE, "setaffinity");
|
||||
}
|
||||
errno = 0;
|
||||
@ -283,8 +278,6 @@ main(int argc, char *argv[])
|
||||
/*
|
||||
* We're modifying something that presently exists.
|
||||
*/
|
||||
if (iflag)
|
||||
usage();
|
||||
if (!lflag && (cflag || rflag))
|
||||
usage();
|
||||
if (!lflag && !sflag)
|
||||
@ -316,7 +309,7 @@ usage(void)
|
||||
{
|
||||
|
||||
fprintf(stderr,
|
||||
"usage: cpuset [-l cpu-list] [-i | -s setid] cmd ...\n");
|
||||
"usage: cpuset [-l cpu-list] [-s setid] cmd ...\n");
|
||||
fprintf(stderr,
|
||||
" cpuset [-l cpu-list] [-s setid] -p pid\n");
|
||||
fprintf(stderr,
|
||||
|
Loading…
x
Reference in New Issue
Block a user