Pools can operate on the following types of elements:
- system: The system as a whole
- pool: Define resource pools
- pset: Processor sets.
- cpu: Single processor.
Each project can have a
project.pool attribute set in /etc/project
in order to assign a resource pool. This would be set by a command
of the following form:
projmod -a -K project.pool=poolname project-name
Dynamic resource pools are implemented via the
poold can only execute in the global zone.
The default static pools configuration file is
If this file exists, its configuration is applied at boot time.
poolcfg command operates on a configuration file, though
poolcfg -d may be used to modify the current kernel state.
pooladm is used to activate the pool configuration contained
in a file or to display information about the configuration currently
in the kernel.
To enable a configuration, run:
To instantiate the configuration in a file, run:
pooladm -c filename
To dump the active configuration to a file, run:
pooladm -s filename
To disable pools, run
To display the pool configuration in a "nice" format, run:
poolcfg -c info
poolstat can be used to display information on resource
pools. If executed from a non-global zone, however, it will only display
information for the pool assigned to that zone.
Multiple non-global zones can be associated with
a particular resource pool. When this is done, processes from within
one of these zones cannot be assigned to a different resource pool
poolbind, even when the attempt is made from the global
The following are the property names for
- system.poold.log-level: Logging level
- system.poold.log-location: Log location
- system.poold.monitor-interval: Sampling interval
- system.poold.history-file: Decision history
- pset.max: Maximum CPUs for a pset.
- pset.min: Minimum CPUs for a pset.
- cpu.pinned: (true/false) Whether the CPU is pinned.
- system.poold.objectives: System objectives.
- pset.poold.objectives: Pset objectives.
- pool.importance: User-assigned importance of a pool.
- pool.scheduler: Defines scheduler to be used by a pool.
These are assigned with
poolcfg. For example,
to assign a pool to a scheduler, run:
poolcfg -c 'modify pool pool-name
poold Configuration: Constraints and Objectives
Minimum and maximum numbers of processors available to a processor set
can be set with the
cpu.pinned property indicates that a
particular CPU should not be moved out of its processor set.
libpool man page contains detailed information
on property constraints.
define the behavior of
The available objectives are:
- wt-load: The weighted-load objective provides pooled resources based on the weight of the active objects. It is a system-wide objective.
- locality: locality is defined on a pset. It defines
how much weight is given to the closeness of available resources.
It can be assigned values of
loose(minimize locality) or
none(not taken into account-default).
- utilization: This is defined to be greater than (>), less than (<) or about (~) some percentage of utilization for a pset. The > and < operators can be used to set a range, but ~ must be used alone if at all.
The objectives are also set with
poolcfg -c 'modify system system-name
wt-load is set, note that the psets need to have
"locality none" set as an objective.
Each processor can belong to only one processor set at a time.
The default processor set is created when
enabled. It cannot be destroyed.
To create a processor set with a range of possible numbers of CPUs, run:
poolcfg -c 'create pset pset-name
(uint pset.min = min-cpus;
unit pset.max = max-cpus
To create a pool, run:
poolcfg -c 'create pool pool-name
To associate a pool and a pset, run:
poolcfg -c 'associate pool pool-name
To apply the changes, run:
To transfer processors between processor sets, run:
poolcfg -dc 'transfer number-procs
from pset pset-source
Additional information is available in Sun's System Administration Guide: Solaris Containers-Resource Management and Solaris Zones.