2009-12-08 04:49:23 +00:00
|
|
|
cset-proc(1)
|
|
|
|
============
|
|
|
|
Alex Tsariounov <alext@novell.com>
|
2010-02-11 20:42:56 +00:00
|
|
|
v1.5.3, February 2010
|
2009-12-08 04:49:23 +00:00
|
|
|
|
|
|
|
NAME
|
|
|
|
----
|
|
|
|
cset-proc - manage processes running in cpusets
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
[verse]
|
|
|
|
'cset' [cset options] 'proc' [proc options] [args]
|
|
|
|
'cset' proc --help
|
|
|
|
'cset' proc
|
|
|
|
'cset' proc my_set my_other_set
|
|
|
|
'cset' proc --list --set my_set
|
|
|
|
'cset' proc --exec my_set /opt/software/my_code --my_opt_1
|
|
|
|
'cset' proc --set my_set --exec /opt/software/my_code --my_opt_1
|
|
|
|
'cset' proc --move 2442,3000-3200 my_set
|
|
|
|
'cset' proc --move --pid=2442,3000-3200 --toset=my_set
|
|
|
|
'cset' proc --move --fromset=my_set_1 --toset=my_set_2
|
|
|
|
'cset' proc --move --pid=42 --fromset=/group1/myset --toset=/group2/yourset
|
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
-------
|
|
|
|
-h, --help::
|
|
|
|
prints the list of options for this command
|
|
|
|
|
|
|
|
-l, --list::
|
|
|
|
list processes in the specified cpuset
|
|
|
|
|
|
|
|
-e, --exec::
|
|
|
|
execute arguments in the specified cpuset
|
|
|
|
|
|
|
|
-u USER, --user=USER::
|
|
|
|
use this USER to --exec (id or name)
|
|
|
|
|
|
|
|
-g GROUP, --group=GROUP::
|
|
|
|
use this GROUP to --exec (id or name)
|
|
|
|
|
|
|
|
-m, --move::
|
|
|
|
move specified tasks to specified cpuset; to move a PIDSPEC to a
|
|
|
|
cpuset, use -m PIDSPEC cpuset; to move all tasks specify --fromset
|
|
|
|
and --toset
|
|
|
|
|
|
|
|
-p PIDSPEC, --pid=PIDSPEC::
|
|
|
|
specify pid or tid specification
|
|
|
|
|
2009-12-08 04:52:22 +00:00
|
|
|
--threads::
|
|
|
|
if specified, any processes found in the PIDSPEC to have multiple
|
|
|
|
threads will automatically have all their threads added to the
|
|
|
|
PIDSPEC (use to move all related threads to a cpuset)
|
|
|
|
|
2009-12-08 04:49:23 +00:00
|
|
|
-s CPUSET, --set=CPUSET::
|
|
|
|
specify name of immediate cpuset
|
|
|
|
|
|
|
|
-t TOSET, --toset=TOSET::
|
|
|
|
specify name of destination cpuset
|
|
|
|
|
|
|
|
-f FROMSET, --fromset=FROMSET::
|
|
|
|
specify name of origination cpuset
|
|
|
|
|
|
|
|
-k, --kthread::
|
|
|
|
move, or include moving, unbound kernel threads
|
|
|
|
|
2009-12-08 04:52:22 +00:00
|
|
|
--force::
|
2009-12-08 04:49:23 +00:00
|
|
|
force all processes and threads to be moved
|
|
|
|
|
|
|
|
-v, --verbose::
|
|
|
|
prints more detailed output, additive
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
|
|
|
This command is used to run and manage arbitrary processes on
|
|
|
|
specified cpusets. It is also used to move pre-existing processes and
|
|
|
|
threads to specified cpusets. You may note there is no "kill" or
|
|
|
|
"destroy" option -- use the standard OS ^C or kill commands for that.
|
|
|
|
|
|
|
|
To list which tasks are running in a particular cpuset, use the --list
|
|
|
|
command.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
2009-12-08 04:52:22 +00:00
|
|
|
*+# cset proc --list --set myset+*
|
2009-12-08 04:49:23 +00:00
|
|
|
|
|
|
|
This command will list all the tasks running in the cpuset called
|
2009-12-08 04:52:22 +00:00
|
|
|
"myset".
|
2009-12-08 04:49:23 +00:00
|
|
|
|
|
|
|
Processes are created by specifying the path to the executable
|
|
|
|
and specifying the cpuset that the process is to be created in.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
*+# cset proc --set=blazing_cpuset --exec /usr/bin/fast_code+*
|
|
|
|
|
|
|
|
This command will execute the /usr/bin/fast_code program on the
|
|
|
|
"blazing_cpuset" cpuset.
|
|
|
|
|
2009-12-08 04:52:22 +00:00
|
|
|
Note that if your command takes options, then use the traditional
|
|
|
|
"--" marker to separate cset's options from your command's options.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
*+# cset proc --set myset --exec -- ls -l+*
|
|
|
|
|
|
|
|
This command will execute "ls -l" on the cpuset called "myset".
|
|
|
|
|
2009-12-08 04:49:23 +00:00
|
|
|
The PIDSPEC argument taken for the move command is a comma
|
|
|
|
separated list of PIDs or TIDs. The list can also include
|
|
|
|
brackets of PIDs or TIDs (i.e. tasks) that are inclusive of the
|
|
|
|
endpoints.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
1,2,5 Means processes 1, 2 and 5
|
|
|
|
1,2,600-700 Means processes 1, 2 and from 600 to 700
|
|
|
|
|
|
|
|
NOTE: The range of PIDs or TIDs does not need to have every
|
|
|
|
position populated. In other words, for the example above, if
|
|
|
|
there is only one process, say PID 57, in the range of 50-65,
|
|
|
|
then only that process will be moved.
|
|
|
|
|
|
|
|
To move a PIDSPEC to a specific cpuset, you can either specify
|
|
|
|
the PIDSPEC with --pid and the destination cpuset with --toset,
|
|
|
|
or use the short hand and list the cpuset name after the PIDSPEC
|
|
|
|
for the --move arguments.
|
|
|
|
|
|
|
|
The move command accepts multiple common calling methods.
|
|
|
|
For example, the following commands are equivalent:
|
|
|
|
|
|
|
|
*+# cset proc --move 2442,3000-3200 reserved_set+*
|
|
|
|
|
|
|
|
*+# cset proc --move --pid=2442,3000-3200 --toset=reserved_set+*
|
|
|
|
|
|
|
|
These commands move the tasks defined as 2442 and any running task
|
|
|
|
between 3000 and 3200 inclusive of the ends to the cpuset called
|
|
|
|
"reserved_set".
|
|
|
|
|
2009-12-08 04:52:22 +00:00
|
|
|
Specifying the --fromset is not necessary since the tasks will be
|
2009-12-08 04:49:23 +00:00
|
|
|
moved to the destination cpuset no matter which cpuset they are
|
|
|
|
currently running on.
|
|
|
|
|
|
|
|
NOTE: However, if you do specify a cpuset with the --fromset
|
|
|
|
option, then only those tasks that are both in the PIDSPEC *and*
|
|
|
|
are running in the cpuset specified by --fromset will be moved.
|
|
|
|
I.e., if there is a task running on the system but not in
|
|
|
|
--fromset that is in PIDSPEC, it will not be moved.
|
|
|
|
|
2009-12-08 04:52:22 +00:00
|
|
|
If the --threads switch is used, then the proc command will
|
|
|
|
gather any threads of belonging to any processes or threads that
|
|
|
|
are specified in the PIDSPEC and move them. This provides an easy
|
|
|
|
way to move all related threads: just pick one TID from the set
|
|
|
|
and use the --threads option.
|
|
|
|
|
2009-12-08 04:49:23 +00:00
|
|
|
To move all userspace tasks from one cpuset to another, you need
|
|
|
|
to specify the source and destination cpuset by name.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
*+# cset proc --move --fromset=comp1 --toset=comp42+*
|
|
|
|
|
|
|
|
This command specifies that all processes and threads
|
|
|
|
running on cpuset "comp1" be moved to cpuset "comp42".
|
|
|
|
|
|
|
|
NOTE: This move command will not move kernel threads unless
|
|
|
|
the -k/--kthread switch is specified. If it is, then all unbound
|
|
|
|
kernel threads will be added to the move. Unbound kernel threads
|
|
|
|
are those that can run on any CPU. If you *also specify* the
|
2009-12-08 04:52:22 +00:00
|
|
|
--force switch, then all tasks, kernel or not, bound or not,
|
2009-12-08 04:49:23 +00:00
|
|
|
will be moved.
|
|
|
|
|
2009-12-08 04:52:22 +00:00
|
|
|
CAUTION: Please be cautious with the --force switch, since moving
|
|
|
|
a kernel thread that is bound to a specific CPU to a cpuset that
|
2009-12-08 04:49:23 +00:00
|
|
|
does not include that CPU can cause a system hang.
|
|
|
|
|
|
|
|
You must specify unique cpuset names for the both exec and move
|
|
|
|
commands. If a simple name passed to the --fromset, --toset and
|
|
|
|
--set parameters is unique on the system then that command
|
|
|
|
executes. However, if there are multiple cpusets by that name,
|
|
|
|
then you will need to specify which one you mean with a full path
|
|
|
|
rooted at the base cpuset tree.
|
|
|
|
|
|
|
|
For example, suppose you have the following cpuset tree:
|
|
|
|
|
|
|
|
/cpusets
|
|
|
|
/group1
|
|
|
|
/myset
|
|
|
|
/yourset
|
|
|
|
/group2
|
|
|
|
/myset
|
|
|
|
/yourset
|
|
|
|
|
|
|
|
Then, to move a process from myset in group1 to yourset in
|
|
|
|
group2, you would have to issue the following command:
|
|
|
|
|
|
|
|
+# cset proc --move --pid=50 --fromset=/group1/myset --toset=/group2/yourset+
|
|
|
|
|
|
|
|
You do not have to worry about where in the Linux filesystem the
|
|
|
|
cpuset filesystem is mounted. The cset command takes care of that.
|
2009-12-08 04:52:22 +00:00
|
|
|
Any cpusets that are specified by path (such as above), are done with
|
2009-12-08 04:49:23 +00:00
|
|
|
respect to the root of the cpuset filesystem.
|
|
|
|
|
|
|
|
LICENSE
|
|
|
|
-------
|
|
|
|
Cpuset is licensed under the GNU GPL V2 only.
|
|
|
|
|
|
|
|
COPYRIGHT
|
|
|
|
---------
|
2010-02-11 20:42:56 +00:00
|
|
|
Copyright (c) 2008-2010 Novell Inc.
|
2009-12-08 04:49:23 +00:00
|
|
|
|
|
|
|
AUTHOR
|
|
|
|
------
|
2009-12-08 04:52:22 +00:00
|
|
|
Written by Alex Tsariounov <\alext@novell.com>.
|
2009-12-08 04:49:23 +00:00
|
|
|
|
|
|
|
SEE ALSO
|
|
|
|
--------
|
2009-12-08 04:52:22 +00:00
|
|
|
cset(1), cset-set(1), cset-shield(1)
|
|
|
|
|
|
|
|
/usr/share/doc/packages/cpuset/html/tutorial.html
|
|
|
|
|
|
|
|
taskset(1), chrt(1)
|
2009-12-08 04:49:23 +00:00
|
|
|
|
|
|
|
/usr/src/linux/Documentation/cpusets.txt
|