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
daemon. poold
can only execute in the global zone.
The default static pools configuration file is /etc/pooladm.conf
.
If this file exists, its configuration is applied at boot time.
The 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:
pooladm -e
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
pooladm -d
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
via poolbind
, even when the attempt is made from the global
zone.
poold Properties
The following are the property names for poold
:
- 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
(string pool.scheduler="
scheduler-initials
")'
poold Configuration: Constraints and Objectives
Minimum and maximum numbers of processors available to a processor set
can be set with the pset.min
and pset.max
properties. The cpu.pinned
property indicates that a
particular CPU should not be moved out of its processor set.
The libpool
man page contains detailed information
on property constraints.
Configuration objectives
define the behavior of poold
.
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
tight
(maximize locality),loose
(minimize locality) ornone
(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
:
poolcfg -c 'modify system
system-name
(string system.poold.objectives="
objective
"),
If wt-load
is set, note that the psets need to have
"locality none"
set as an objective.
Processor Sets
Each processor can belong to only one processor set at a time.
The default processor set is created when poold
is
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
(pset
pset-name)'
To apply the changes, run:
pooladm -c
To transfer processors between processor sets, run:
poolcfg -dc 'transfer
number-procs
from pset
pset-source to
pset-target'
Additional Reading
Additional information is available in Sun's System Administration Guide: Solaris Containers-Resource Management and Solaris Zones.
No comments:
Post a Comment