Go to main content

Administering Resource Management in Oracle® Solaris 11.4

Exit Print View

Updated: August 2018
 
 

Using Projects to Assign, Modify, and Remove Multi-CPU Binding

Use multi-CPU binding (MCB) to bind a project to a specific set of CPUs, but not bind the CPUs exclusively. MCB binding allows other processes to use those CPUs as well.

The resource pools feature requires the hard partitioning of processors in the system. With hard partitioning, you cannot specify, for example, that process A runs on CPUs 1 and 2, and process B runs on CPUs 2 and 3, because these partitions overlap. Use MCB to assign overlapping partitions to processes. When you bind a process to MCB, the set of CPUs bounded by MCB must reside in the pool to which the process is bound. If there is a project.pool entry, that is used. If there is no project.pool entry, processes are bound to the default pool of the target zone.

To create and modify the project file, use the standard command-line tools projadd and projmod. Use the following attributes with the –K option of the projadd and projmod commands to configure MCB:

project.mcb.cpus=

The values are the set of CPUs bound by MCB.

Note that MCB for projects also supports the following CPU structures:

  • project.mcb.cores

  • project.mcb.lgroups

  • project.mcb.pgs

  • project.mcb.sockets

project.mcb.flags=

The values are strong and weak. The default is strong. Strong binding specifies that processes run only on designated CPUs.

You can also set the project resource pool by using project.pool. If not set, the system uses the default pool for the target zone.

The newtask command also utilizes projects. When you set MCB attributes for a project in the project configuration file, a user with appropriate privileges can use the newtask command described in the newtask(1) man page to manipulate the project file.

For MCB usage examples and task information, see Administering Projects and Tasks. To obtain information on the CPU structures of a given system, use the following commands.

lgrpinfo –c

Information about locality groups (lgroups).

pginfo

Information about processor groups.

psrinfo –t

Information about CPU, core, and socket structure.