System Administration Guide: Resource Management and Network Services

Overview

UNIX systems have traditionally provided a resource limit facility (rlimit). The rlimit facility allows administrators to set one or more numerical limits on the amount of resources a process can consume. These limits include per-process CPU time that is used, per-process core file size, and per-process maximum heap size. Heap size is the amount of memory that is allocated for the process data segment.

In the Solaris operating environment, the concept of a per-process resource limit has been extended to the task and project entities that are described in Chapter 6, Projects and Tasks. These extended limits can now be observed on a system-wide basis. These enhancements are provided by the resource controls (rctls) facility.

The resource controls facility provides compatibility interfaces for the resource limits facility. Existing applications that utilize resource limits continue to run unchanged. These applications can be observed in the same way as applications that are modified to make use of the resource controls facility.

Resource controls provide a mechanism for constraint on system resources. Processes, tasks, and projects can be prevented from consuming amounts of specified system resources. This mechanism leads to a more manageable system by preventing over-consumption of resources.

Constraint mechanisms can be used to support capacity-planning processes. An encountered constraint can provide information about application resource needs without necessarily denying the resource to the application.

Resource controls can also serve as a simple attribute mechanism for resource management facilities. For example, the number of CPU shares that are made available to a project in the fair share scheduler (FSS) scheduling class is defined by the project.cpu-shares resource control. Because the project is assigned a fixed number of shares by the control, the various actions that are associated with exceeding a control are not relevant. For this reason, the current value for the project.cpu-shares control is considered an attribute on the specified project.