Monitoring Information Logging
The following types of messages can be generated:
CRIT | Problems due to unanticipated monitoring failures. Causes the daemon to exit and requires immediate administrative attention. |
ERR | Problems due to unanticipated monitoring error. Could require administrative intervention to correct. |
NOTICE | Messages about resource control region transitions. |
INFO | Messages about resource utilization statistics. |
DEBUG | Messages containing the detailed information that is needed when debugging monitoring processing. This information is not generally used by administrators. |
Optimization Information Logging
The following types of messages can be generated:
WARNING | Messages could be displayed regarding problems making optimal decisions. Examples could include resource sets that are too narrowly constrained by their minimum and maximum values or by the number of pinned components. Messages could be displayed about problems performing an optimal reallocation due to unforseen limitations. Examples could include removing the last processor from a processor set which contains a bound resource consumer. |
NOTICE | Messages about usable configurations or configurations that will not be implemented due to overriding decision histories could be displayed. |
INFO | Messages about alternate configurations considered could be displayed. |
DEBUG | Messages containing the detailed information that is needed when debugging optimization processing. This information is not generally used by administrators. |
Logging Location
The system.poold.log-location property is used to specify the location for poold logged output. You can specify a location of SYSLOG for poold output (see syslog(3C)).
If this property is not specified, the default location for poold logged output is /var/log/pool/poold.
When poold is invoked from the command line, this property is not used. Log entries are written to stderr on the invoking terminal.
Log Management With logadm
If poold is active, the logadm.conf file includes an entry to manage the default file /var/log/pool/poold. The entry is:
/var/log/pool/poold -N -s 512k
See the logadm(1M) and the logadm.conf(4) man pages.
How Dynamic Resource Allocation Works
This section explains the process and the factors that poold uses to dynamically allocate resources.
About Available Resources
Available resources are considered to be all of the resources that are available for use within the scope of the poold process. The scope of control is at most a single Solaris instance.
On a system that has zones enabled, the scope of an executing instance of poold is limited to the global zone.
Determining Available Resources
Resource pools encompass all of the system resources that are available for consumption by applications.
For a single executing Solaris instance, a resource of a single type, such as a CPU, must be allocated to a single partition. There can be one or more partitions for each type of resource. Each partition contains a unique set of resources.
For example, a machine with four CPUs and two processor sets can have the following setup:
pset 0: 0 1
pset 1: 2 3
where 0, 1, 2 and 3 after the colon represent CPU IDs. Note that the two processor sets account for all four CPUs.
The same machine cannot have the following setup:
pset 0: 0 1
pset 1: 1 2 3
It cannot have this setup because CPU 1 can appear in only one pset at a time.
Resources cannot be accessed from any partition other than the partition to which they belong.
To discover the available resources, poold interrogates the active pools configuration to find partitions. All resources within all partitions are summed to determine the total amount of available resources for each type of resource that is controlled.
This quantity of resources is the basic figure that poold uses in its operations. However, there are constraints upon this figure that limit the flexibility that poold has to make allocations. For information about available constraints, see Configuration Constraints.
Identifying a Resource Shortage
The control scope for poold is defined as the set of available resources for which poold has primary responsibility for effective partitioning and management. However, other mechanisms that are allowed to manipulate resources within this control scope can still affect a configuration. If a partition should move out of control while poold is active, poold tries to restore control through the judicious manipulation of available resources. If poold cannot locate additional resources within its scope, then the daemon logs information about the resource shortage.
Determining Resource Utilization
poold typically spends the greatest amount of time observing the usage of the resources within its scope of control. This monitoring is performed to verify that workload-dependent objectives are being met.
For example, for processor sets, all measurements are made across all of the processors in a set. The resource utilization shows the proportion of time that the resource is in use over the sample interval. Resource utilization is displayed as a percentage from 0 to 100.
Identifying Control Violations
The directives described in Configuration Constraints and Objectives are used to detect the approaching failure of a system to meet its objectives. These objectives are directly related to workload.
A partition that is not meeting user-configured objectives is a control violation. The two types of control violations are synchronous and asynchronous.
A synchronous violation of an objective is detected by the daemon in the course of its workload monitoring.
An asynchronous violation of an objective occurs independently of monitoring action by the daemon.
The following events cause asynchronous objective violations:
Resources are added to or removed from a control scope.
The control scope is reconfigured.
The poold resource controller is restarted.
The contributions of objectives that are not related to workload are assumed to remain constant between evaluations of the objective function. Objectives that are not related to workload are only reassessed when a reevaluation is triggered through one of the asynchronous violations.