Cpuset Management Utility/set writeup

From RTwiki
(Difference between revisions)
Jump to: navigation, search
m (Protected "Cpuset Management Utility/set writeup": This page has been migrated to the Linux Foundation RT wiki. (‎[edit=sysop] (indefinite) ‎[move=sysop] (indefinite)))
(moved to new dokuwiki)
 
Line 1: Line 1:
[[Cpuset Management Utility | Back up to cpuset page.]]
 
  
Version 1.5.0
+
<div style="margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#f9e9e9; align:right;">
 
+
<b>This wiki is being migrated to the Linux Foundation Real-Time Linux Project hosted wiki. The new page is available at: https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cpu-partitioning/cset. This page is now deprecated.</b>
==Usage: <code>cset set [options] [cpuset name]</code>==
+
</div>
 
+
This command is used to create, modify, and destroy cpusets.
+
Cpusets form a tree-like structure rooted at the root cpuset
+
which always includes all system CPUs and all system memory
+
nodes.
+
 
+
A cpuset is an organizational unit that defines a group of CPUs
+
and a group of memory nodes where a process or thread (i.e. task)
+
is allowed to run on.  For non-NUMA machines, the memory node is
+
always 0 (zero) and cannot be set to anything else.  For NUMA
+
machines, the memory node can be set to a similar specification
+
as the CPU definition and will tie those memory nodes to that
+
cpuset.  You will usually want the memory nodes that belong to
+
the CPUs defined to be in the same cpuset.
+
 
+
A cpuset can have exclusive right to the CPUs defined in it.
+
This means that only this cpuset can own these CPUs.  Similarly,
+
a cpuset can have exclusive right to the memory nodes defined in
+
it.  This means that only this cpuset can own these memory
+
nodes.
+
 
+
Cpusets can be specified by name or by path; however, care
+
should be taken when specifying by name if the name is not
+
unique.  This tool will generally not let you do destructive
+
things to non-unique cpuset names.
+
 
+
Cpusets are uniquely specified by path.  The path starts at where
+
the cpusets filesystem is mounted so you generally do not have to
+
know where that is.  For example, so specify a cpuset that is
+
called "two" which is a subset of "one" which in turn is a subset
+
of the root cpuset, use the path "/one/two" regardless of where
+
the cpusets filesystem is mounted.
+
 
+
When specifying CPUs, a so-called CPUSPEC is used. The CPUSPEC
+
will accept a comma-separated list of CPUs and inclusive range
+
specifications.  For example, --cpu=1,3,5-7 will assign CPU1,
+
CPU3, CPU5, CPU6, and CPU7 to the specified cpuset.
+
 
+
Note that cpusets follow certain rules.  For example, children
+
can only include CPUs that the parents already have.  If you do
+
not follow those rules, the kernel cpuset subsystem will not let
+
you create that cpuset.  For example, if you create a cpuset that
+
contains CPU3, and then attempt to create a child of that cpuset
+
with a CPU other than 3, you will get an error, and the cpuset
+
will not be active.  The error is somewhat cryptic in that it is
+
usually a "Permission denied" error.
+
 
+
Memory nodes are specified with a MEMSPEC in a similar way to
+
the CPUSPEC.  For example, --mem=1,3-6 will assign MEM1, MEM3,
+
MEM4, MEM5, and MEM6  to the specified cpuset.
+
 
+
Note that if you attempt to create or modify a cpuset with a
+
memory node specification that is not valid, you may get a
+
cryptic error message, "No space left on device", and the
+
modification will not be allowed.
+
 
+
When you destroy a cpuset, then the tasks running in that set are
+
moved to the parent of that cpuset.  If this is not what you
+
want, then manually move those tasks to the cpuset of your choice
+
with the 'cset proc' command (see 'cset proc --help' for more
+
information).
+
 
+
===EXAMPLES===
+
 
+
Create a cpuset with the default memory specification:
+
 
+
    # cset set --cpu=2,4,6-8 --set=new_set
+
 
+
This command creates a cpuset called "new_set" located
+
off the root cpuset which holds CPUS 2,4,6,7,8 and node 0
+
interleaved) memory.  Note that --set is optional, and
+
you can just specify the name for the new cpuset after
+
all arguments.
+
 
+
Create a cpuset that specifies both CPUs and memory nodes:
+
 
+
    # cset set --cpu=3 --mem=3 /rad/set_one
+
 
+
Note that this command uses the full path method to
+
specify the name of the new cpuset "/rad/set_one". It
+
also names the new cpuset implicitly (i.e. no --set
+
option, although you can use that if you want to).  If
+
the "set_one" name is unique, you can subsequently refer
+
to is just by that.  Memory node 3 is assigned to this
+
cpuset as well as CPU 3.
+
 
+
===Options===
+
 
+
  -l, --list            list the named cpuset(s); recursive list if also -r
+
  -c CPUSPEC, --cpu=CPUSPEC
+
                        create or modify cpuset in the specified cpuset with
+
                        CPUSPEC specification
+
  -m MEMSPEC, --mem=MEMSPEC
+
                        specify which memory nodes to assign to the created or
+
                        modified cpuset (optional)
+
  -n NEWNAME, --newname=NEWNAME
+
                        rename cpuset specified with --set to NEWNAME
+
  -d, --destroy        destroy specified cpuset
+
  -s CPUSET, --set=CPUSET
+
                        specify cpuset
+
  -r, --recurse        do things recursively, use with --list and --destroy
+
  --force              force recursive deletion even if processes are running
+
                        in those cpusets (they will be moved to parent
+
                        cpusets)
+
  -x, --usehex          use hexadecimal value for CPUSPEC and MEMSPEC when
+
                        listing cpusets
+
  -v, --verbose        prints more detailed output, additive
+
  --cpu_exclusive      mark this cpuset as owning its CPUs exclusively
+
  --mem_exclusive      mark this cpuset as owning its MEMs exclusively
+
  -h, --help            show this help message and exit
+
 
+
----
+
[[Cpuset Management Utility | Back up to cpuset page.]]
+

Latest revision as of 10:02, 21 December 2017

This wiki is being migrated to the Linux Foundation Real-Time Linux Project hosted wiki. The new page is available at: https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cpu-partitioning/cset. This page is now deprecated.

Personal tools