Resource management functionality enables you to control how applications use available system resources. You can do the following:
Allocate computing resources, such as processor time
Monitor how the allocations are being used, then adjust the allocations as necessary
Generate extended accounting information for analysis, billing, and capacity planning
Modern computing environments have to provide a flexible response to the varying workloads that are generated by different applications on a system. If resource management features are not used, the Solaris operating environment 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
Treat certain allocations collectively instead of through isolated mechanisms
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 environment 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.
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.
The three types of control mechanisms that are available in the Solaris operating environment are constraints, scheduling, and partitioning.
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 7, Resource Controls 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 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 manages application access to CPU resources in a controlled way.
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 10, Resource Pools 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 possibility of achieving high utilizations is less likely. A reserved group of resources, such as processors, is not available for use by another workload when the workload bound to them is idle.
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 5, Projects and Tasks. The extended accounting facility that links these identifiers with application resource usage is described in Chapter 6, Extended Accounting.
Use resource management to ensure that your applications have the required response times.
Resource management can also increase resource utilization. By categorizing and prioritizing usage, you can effectively use reserve capacity during off-peak periods, often eliminating the need for additional processing power. You can also ensure that resources are not wasted because of load variability.
Resource management is ideal for environments that consolidate a number of applications on a single server.
The cost and complexity of managing numerous machines encourages the consolidation of several applications on larger, more scalable servers. Instead of running each workload on a separate system, with full access to that system's resources, you can use resource management software to segregate workloads within the system. Resource management enables you to lower overall total cost of ownership by running and controlling several dissimilar applications on a single Solaris system.
If you are providing Internet and application services, you can use resource management to do the following:
Host multiple web servers on a single machine. You can control the resource consumption for each web site and you can protect each site from the potential excesses of other sites.
Prevent a faulty common gateway interface (CGI) script from exhausting CPU resources.
Stop an incorrectly behaving application from leaking all available virtual memory.
Ensure that one customer's applications are not affected by another customer's applications that run at the same site.
Provide differentiated levels or classes of service on the same machine.
Obtain accounting information for billing purposes.
Use resource management features in any system that has a large, diverse user base, such as an educational institution. If you have a mix of workloads, the software can be configured to give priority to specific projects.
For example, in large brokerage firms, traders intermittently require fast access to execute a query or to perform a calculation. Other system users, however, have more consistent workloads. If you allocate a proportionately larger amount of processing power to the traders' projects, the traders have the responsiveness that they need.
Resource management is also ideal for supporting thin-client systems. These platforms provide stateless consoles with frame buffers and input devices, such as smart cards. The actual computation is done on a shared server, resulting in a timesharing type of environment. Use resource management features to isolate the users on the server. Then, a user who generates excess load does not monopolize hardware resources and significantly impact others who use the system.
The following task map gives a basic overview of the steps that are involved in setting up resource management on your system.
Task |
Description |
For Instructions |
---|---|---|
Identify the workloads on your system. |
Review project entries in either the /etc/project database file or in the NIS map or LDAP directory service. | |
Prioritize the workloads on your system. |
Determine which applications are critical. These workloads might require preferential access to resources. |
Refer to your business service goals. |
Monitor real-time activity on your system. |
Use performance tools to view the current resource consumption of workloads that are running on your system. You can then evaluate whether you must restrict access to a given resource or isolate particular workloads from other workloads. |
Monitoring by System, cpustat(1M), iostat(1M), mpstat(1M), prstat(1M), sar(1), and vmstat(1M) |
Make temporary modifications to the workloads that are running on your system. |
To determine which values can be altered, refer to the resource controls that are available in the Solaris environment. You can update the values from the command line while the task or process is running. |
Available Resource Controls, Actions on Resource Control Values, Temporarily Updating Resource Control Values on a Running System, rctladm(1M), and prctl(1) |
Set resource control attributes for every project entry in the project database or name service project table. |
Each project entry in the /etc/project database or the name service project table can contain one or more resource controls. The resource controls constrain tasks and processes attached to that project. For each threshold value that is placed on a resource control, you can associate one or more actions to be taken when that value is reached. You can set resource controls by using the command-line interface or the Solaris Management Console. If you are setting configuration parameters across a large number of systems, use the console for this task. |
project Database, Local project File Format, Available Resource Controls, Actions on Resource Control Values, and Chapter 8, Fair Share Scheduler |
Place an upper bound on the resource consumption of physical memory by processes in projects. |
The resource cap enforcement daemon rcapd will enforce the physical memory resource cap defined in the /etc/project database with the rcap.max-rss attribute. |
project Database, Chapter 9, Physical Memory Control Using the Resource Capping Daemon, and rcapd(1M) |
Create resource pools configurations. |
Resource pools provide a way to partition system resources, such as processors, and maintain those partitions across reboots. You can add a project.pool attribute to each entry in the /etc/project database. | |
Make the fair share scheduler (FSS) your default system scheduler. |
Ensure that all user processes in either a single CPU system or a processor set belong to the same scheduling class. | |
Activate the extended accounting facility to monitor and record resource consumption on a task or process basis. |
Use extended accounting data to assess current resource controls and plan capacity requirements for future workloads. Aggregate usage on a system-wide basis can be tracked. To obtain complete usage statistics for related workloads that span more than one system, the project name can be shared across several machines. |
How to Activate Extended Accounting for Processes, Tasks, and Flows and acctadm(1M) |
(Optional) If you determine that additional adjustments to your configuration are required, you can continue to alter the values from the command line. You can alter the values while the task or process is running. |
Modifications to existing tasks can be applied on a temporary basis without restarting the project. Tune the values until you are satisfied with the performance. Then update the current values in the /etc/project database or the name service project table. |
Temporarily Updating Resource Control Values on a Running System, rctladm(1M), and prctl(1) |
(Optional) Capture extended accounting data. |
Write extended accounting records for active processes and active tasks. The files that are produced can be used for planning, chargeback, and billing purposes. |