Resource Management Overview

Modern computing environments have to provide a flexible response to
the varying workloads that are generated by different applications on a system.
A workload is an aggregation of all processes of an application
or group of applications. If resource management features are not used, the
Solaris Operating System responds to workload demands by adapting to new application
requests dynamically. This default response generally means that all activity
on the system is given equal access to resources. Solaris resource management
features enable you to treat workloads individually. You can do the following:

Restrict access to a specific resource

Offer resources to workloads on a preferential basis

Isolate workloads from each another

The ability to minimize cross-workload performance compromises,
along with the facilities that monitor resource usage and utilization, is
referred to as resource management. Resource management
is implemented through a collection of algorithms. The algorithms handle the
series of capability requests that an application presents in the course of
its execution.

Resource management facilities permit you to modify the default behavior
of the operating system with respect to different workloads. Behavior primarily
refers to the set of decisions that are made by operating system algorithms
when an application presents one or more resource requests to the system.
You can use resource management facilities to do the following:

Deny resources or prefer one application over another for
a larger set of allocations than otherwise permitted

The implementation of a system configuration that uses the resource
management facilities can serve several purposes. You can do the following:

Prevent an application from consuming resources indiscriminately

Change an application's priority based on external events

Balance resource guarantees to a set of applications against
the goal of maximizing system utilization

When planning a resource-managed configuration, key requirements include
the following:

Identifying the competing workloads on the system

Distinguishing those workloads that are not in conflict from
those workloads with performance requirements that compromise the primary
workloads

After you identify cooperating and conflicting workloads, you can create
a resource configuration that presents the least compromise to the service
goals of the business, within the limitations of the system's capabilities.

Effective resource management is enabled in the Solaris system by offering
control mechanisms, notification mechanisms, and monitoring mechanisms. Many
of these capabilities are provided through enhancements to existing mechanisms
such as the proc(4) file
system, processor sets, and scheduling classes. Other capabilities are specific
to resource management. These capabilities are described in subsequent chapters.

Resource Classifications

A resource is any aspect of the computing system that can be manipulated
with the intent to change application behavior. Thus, a resource is a capability
that an application implicitly or explicitly requests. If the capability is
denied or constrained, the execution of a robustly written application proceeds
more slowly.

Classification of resources, as opposed to identification of resources,
can be made along a number of axes. The axes could be implicitly requested
as opposed to explicitly requested, time-based, such as CPU time, compared
to time-independent, such as assigned CPU shares, and so forth.

Generally, scheduler-based resource management is applied to resources
that the application can implicitly request. For example, to continue execution,
an application implicitly requests additional CPU time. To write data to a
network socket, an application implicitly requests bandwidth. Constraints
can be placed on the aggregate total use of an implicitly requested resource.

Additional interfaces can be presented so that bandwidth or CPU service
levels can be explicitly negotiated. Resources that are explicitly requested,
such as a request for an additional thread, can be managed by constraint.

Resource Management Control Mechanisms

The three types of control mechanisms that are available in the Solaris
Operating System are constraints, scheduling, and partitioning.

Constraint Mechanisms

Constraints allow the administrator or application developer to set
bounds on the consumption of specific resources for a workload. With known
bounds, modeling resource consumption scenarios becomes a simpler process.
Bounds can also be used to control ill-behaved applications that would otherwise
compromise system performance or availability through unregulated resource
requests.

Constraints do present complications for the application. The
relationship between the application and the system can be modified to the
point that the application is no longer able to function. One approach that
can mitigate this risk is to gradually narrow the constraints on applications
with unknown resource behavior. The resource controls feature discussed in Chapter 6, Resource Controls (Overview) provides
a constraint mechanism. Newer applications can be written to be aware of their
resource constraints, but not all application writers will choose to do this.

Scheduling Mechanisms

Scheduling refers to making a sequence of allocation decisions
at specific intervals. The decision that is made is based on a predictable
algorithm. An application that does not need its current allocation leaves
the resource available for another application's use. Scheduling-based resource
management enables full utilization of an undercommitted configuration, while
providing controlled allocations in a critically committed or overcommitted
scenario. The underlying algorithm defines how the term “controlled”
is interpreted. In some instances, the scheduling algorithm might guarantee
that all applications have some access to the resource. The fair share scheduler
(FSS) described in Chapter 8, Fair Share Scheduler (Overview) manages application access to CPU resources in a controlled
way.

Partitioning Mechanisms

Partitioning is used to bind a workload to a subset of the system's
available resources. This binding guarantees that a known amount of resources
is always available to the workload. The resource pools functionality that
is described in Chapter 12, Resource Pools (Overview) enables you to limit workloads to specific subsets of the
machine.

Configurations that use partitioning can avoid system-wide overcommitment.
However, in avoiding this overcommitment, the ability to achieve high utilizations
can be reduced. A reserved group of resources, such as processors, is not
available for use by another workload when the workload bound to them is idle.

Resource Management Configuration

Portions of the resource management configuration can be placed in a
network name service. This feature allows the administrator to apply resource
management constraints across a collection of machines, rather than on an
exclusively per-machine basis. Related work can share a common identifier,
and the aggregate usage of that work can be tabulated from accounting data.

Interaction With Solaris Zones

Resource management features can be used with Solaris Zones to further
refine the application environment. Interactions between these features and
zones are described in applicable sections in this guide.