cpuset(4) cpuset(4) NAME cpuset, miser_cpuset - cpuset configuration files DESCRIPTION A cpuset is defined by a cpuset configuration file and a name. The cpuset configuration file is used to list the CPUs that are members of the cpuset and contains any additional parameters needed to define the cpuset. The file permissions of the configuration file define access to the cpuset. Every time permissions need to be checked, the current permissions of the file are used. It is therefore possible to change access to a particular cpuset, without having to tear it down and recreate it, simply by changing the access permissions. Read access allows a user to retrieve information about a cpuset while execute permission allows the user to attach a process to the cpuset. The name of the cpuset is a three to eight character string. Queue names having one or two characters are reserved for use by IRIX. For information on how to use cpusets in a Trusted IRIX environment, see the cpuset(1) man page. EXAMPLE The following configuration file describes an exclusive cpuset containing 8 CPUs: #cpuset configuration file EXCLUSIVE MEMORY_LOCAL MEMORY_EXCLUSIVE CPU 16 CPU 17-19, 21, 23 CPU 25 CPU 27 This specification will create a cpuset containing 8 CPUs, and will restrict those cpus to running threads that have been explicitly assigned to the cpuset. Jobs running on the cpuset will use memory from nodes containing the cpus in the cpuset. Jobs running on other cpusets or on the global cpuset will not use memory from these nodes. SUMMARY Commands are newline terminated, characters following the comment delimiter '#' are ignored, case matters, and tokens are separated by whitespace which is ignored. The valid tokens are: EXCLUSIVE Defines a cpuset to be restricted. It can occur anywhere in the file. Anything else on the line is ignored. EXPLICIT By default, if a CPU is part of a cpuset the memory on the node where the CPU is located is also part of the cpuset. This flag overrides the default behavior. If this directive is present, the nodes with memory that are to be included in the cpuset must be specified using the MEM or NODE directives. MEMORY_LOCAL Threads assigned to the cpuset will attempt to assign memory only from nodes within the cpuset. Assignment of memory from outside the cpuset will occur only if no free memory is available from within the cpuset. No restrictions are made on memory assignment to threads running outside the cpuset. MEMORY_EXCLUSIVE Threads not assigned to the cpuset will not use memory from within the cpuset unless no memory outside the cpuset is available. If, at the time a cpuset is created, memory is already assigned to threads that are already running, no attempt will be made to explicitly move this memory. If page migration is enabled, the pages will be migrated when the system detects that most references to the pages are non-local. MEMORY_KERNEL_AVOID The kernel will attempt to avoid allocating memory from nodes contained in this cpuset. If kernel memory requests cannot be satisfied from outside this cpuset, this option will be ignored and allocations will occur from within the cpuset. WARNING: It is strongly recommended that this option not be used for most cpuset configurations. A side effect of this option is that kernel memory allocations become concentrated on the remaining system nodes, which may in turn degrade system performance. This option is effective only for certain workload patterns, and could cause severe performance penalties in other situations. It is recommended that this option be used only when indicated by SGI support. Currently this option prevents only the system buffer cache from being placed on the specified nodes. Future IRIX releases may expand the scope of this protection to exclude other kernel memory allocations from the specified nodes. This option was introduced in IRIX 6.5.7. MEMORY_MANDATORY The kernel will limit all memory allocations to nodes that are contained in this cpuset. If memory requests cannot be satisfied, the allocating process will sleep until memory is available. The process will be killed if no more memory can be allocated. See policies below. POLICY_PAGE Requires MEMORY_MANDATORY. This is the default policy if no policy is specified. This policy will cause the kernel to page user pages to the swap file (see swap(1M)) to free physical memory on the nodes contained in this cpuset. If swap space is exhausted, the process will be killed. POLICY_KILL Requires MEMORY_MANDATORY. The kernel will attempt to free as much space as possible from kernel heaps, but will not page user pages to the swap file. If all physical memory on the nodes contained in this cpuset are exhausted, the process will be killed. POLICY_SHARE_WARN When creating a cpuset, if it is possible for the new cpuset to share memory on a node with another cpuset the new cpuset will be created but a warning message will be issued. POLICY_SHARE_WARN and POLICY_SHARE_FAIL cannot be used together. POLICY_SHARE_FAIL When creating a cpuset, if it is possible for the new cpuset to share memory on a node with another cpuset the new cpuset will fail to be created and an error message will be issued. POLICY_SHARE_WARN and POLICY_SHARE_FAIL cannot be used together. CPU cpuid or cpuids Specifies a single CPU or a list of CPUs that will be part of the cpuset. The user can mix a single cpu line with a cpu list line. For example: CPU 2 CPU 3-4,5,7,9-12 MEM nodeid or nodeids Specifies a single node's memory or a list of nodes' memory that will be part of the cpuset. The specification of nodes follows the same syntax as the CPU specification. NODE nodeid or nodeids Specifies a single node's CPUs and memory, or a list of nodes' CPUs and memory that will be part of the cpuset. This directive is used to specify that all node resources (CPU and memory) are to be included in the cpuset. The specification of nodes follows the same syntax as the CPU specification. MEMORY_SIZE_ADVISORY size Upon creation of a new cpuset, if the memory to be included is below the specified size, a warning message will be issued and the cpuset will continue to be created. The value for size, is specified as an integer suffixed by a size factor: B indicates bytes, K indicates kilobytes, M indicates megabytes, G indicates gigabytes, and T to indicate terabytes. MEMORY_SIZE_ADVISORY and MEMORY_SIZE_MANDATORY can be used together. MEMORY_SIZE_ADVISORY 130965K # 130.964 MegaBytes MEMORY_SIZE_ADVISORY 8192M # 8.192 GigaBytes MEMORY_SIZE_ADVISORY 4G # 4 GigaBytes MEMORY_SIZE_ADVISORY 1T # 1 TeraByte MEMORY_SIZE_MANDATORY size Upon creation of a new cpuset, if the memory to be included is below the specified size, an error message will be issued and the cpuset will fail to be created. The value for size, is specified as an integer suffixed by a size factor: B indicates bytes, K indicates kilobytes, M indicates megabytes, G indicates gigabytes, and T to indicate terabytes. MEMORY_SIZE_ADVISORY and MEMORY_SIZE_MANDATORY can be used together. An example of the syntax for specifying the size is seen in the example for MEMORY_SIZE_ADVISORY. CPU_COUNT_ADVISORY count Upon creation of a new cpuset, if the number of CPUs to be included is below the specified count, a warning message will be issued and the cpuset will continue to be created. CPU_COUNT_ADVISORY and CPU_COUNT_MANDATORY can be used together. An example follows: CPU_COUNT_ADVISORY 128 # If number CPUs < 128 warn CPU_COUNT_MANDATORY count Upon creation of a new cpuset, if the number of CPUs to be included is below the specified count, an error message will be issued and the cpuset will fail to be created. CPU_COUNT_ADVISORY and CPU_COUNT_MANDATORY can be used together. An example follows: CPU_COUNT_MANDATORY 96 # If number CPUs < 96 fail NOTES In a cluster environment, the cpuset configuration file should reside on the root filesystem. If the cpuset configuration file resides on a filesystem other than the root filesystem and you attempt to unmount the filesystem, the vnode for the cpuset remains active and the unmount (see mount(1M) command fails. Make sure that your workload manager sets the configuration file to reside on the root filesystem. SEE ALSO IRIX Admin: Resource Administration Page 5