![]() |
![]() |
| ||||||||||||||||
Chapter 10Resource PoolsThis chapter discusses resource pools, which are used for partitioning machine resources. Resource pools enable you to separate workloads so that workload consumption of certain resources does not overlap. This resource reservation helps to achieve predictable performance on systems with mixed workloads. OverviewResource pools provide a persistent configuration mechanism for processor set configuration and, optionally, scheduling class assignment. Figure 10-1 Resource Pool Framework ![]() By grouping multiple partitions, pools provide a handle to associate with labeled workloads. Each project entry in the /etc/project database can have a pool associated with it. New work that is started on a project is bound to the appropriate pool. The pools mechanism is primarily for use on large machines of more than four CPUs. However, small machines can still benefit from this functionality. On small machines, you can create pools that share noncritical resource partitions. The pools are separated only on the basis of critical resources. When to Use PoolsResource pools offer a versatile mechanism that can be applied to many administrative scenarios, as described in the following sections. Batch Compute ServerUse pools functionality to split a server into two pools. One pool is used for login sessions and interactive work by timesharing users. The other pool is used for jobs that are submitted through the batch system. Application or Database ServerPartition the resources for interactive applications in accordance with the applications' requirements. Turning on Applications in PhasesSet user expectations. You might initially deploy a machine that is running only a fraction of the services that the machine is ultimately expected to deliver. User difficulties can occur if reservation-based resource management mechanisms are not established when the machine comes online. For example, the fair share scheduler optimizes CPU utilization. The response times for a machine that is running only one application can be misleadingly fast when compared to the response times users see with multiple applications loaded. By using separate pools for each application, you can ensure that a ceiling on the number of CPUs available to each application is in place before all applications are deployed. Complex Timesharing ServerPartition a server that supports large user populations. Server partitioning provides an isolation mechanism that leads to a more predictable per-user response. By dividing users into groups that bind to separate pools, and using the fair share scheduling (FSS) facility, you can tune CPU allocations to favor sets of users that have priority. This assignment can be based on user role, accounting chargeback, and so forth. Workloads That Change SeasonallyUse resource pools to adjust to changing demand. Your site might experience predictable shifts in workload demand over long periods of time, such as monthly, quarterly, or annual cycles. If your site experiences these shifts, you can alternate between multiple pools configurations by invoking pooladm from a cron(1M) job. Real-Time ApplicationsCreate a real-time pool by using the RT scheduler and designated processor resources. Administering PoolsThe commands that are shown in the following table provide the primary administrative interface to the pools facility.
A library API is provided by libpool(3LIB). The library can be used by programs to manipulate pool configurations. Pools FrameworkThe resource pools framework stores its view of the machine in a private configuration file. (The location of the file is private to the implementation of the pools framework.) This configuration file represents the pools framework's view of the machine. The file also contains information about configured pools and the organization of partitionable resources. Each pool can contain the following:
Implementing Pools on a SystemPools can be implemented on a system by using one of these methods.
Dynamic Reconfiguration Operations and Resource PoolsDynamic reconfiguration (DR) enables you to reconfigure hardware while the system is running. Because DR affects available resource amounts, the pools facility must be included in these operations. When a DR operation is initiated, the pools framework acts to validate the configuration. If the DR operation can proceed without causing the current pools configuration to become invalid, then the private configuration file is updated. An invalid configuration is one that cannot be supported by the available resources. If the DR operation would cause the pools configuration to be invalid, then the operation fails and you are notified by a message to the message log. If you want to force the configuration to completion, you must use the DR force option. The pools configuration is then modified to comply with the new resource configuration. Creating Pools ConfigurationsThe configuration file contains a description of the pools to be created on the system. The file describes the entities and resource types that can be manipulated.
See poolcfg(1M) for more information on elements that be manipulated. You can create a structured /etc/pooladm.conf file in two ways.
Use poolcfg or libpool to modify the /etc/pooladm.conf file. Do not directly edit this file. | ||||||||||||||||
| ||||||||||||||||