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:
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:
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.
Resource management configuration and workload-oriented identifiers are described more fully in Chapter 2, Projects and Tasks (Overview). The
extended accounting facility that links these identifiers with application resource usage is described
in Chapter 4, Extended Accounting (Overview).
Interaction With Non-Global Zones
Resource management features can be used with zones to further refine the application
environment. Interactions between these features and zones are described in applicable sections in
this guide.