Resource Management Configuration Example
This chapter reviews the resource management framework and describes a hypothetical server consolidation project. In this example, five applications are being consolidated onto a single system. The target applications have resource requirements that vary, different user populations, and different architectures.
Configuration to Be Consolidated
Currently, each application exists on a dedicated server that is designed to meet the requirements of the application. The applications and their characteristics are identified in the following table.
Application Description | Characteristics |
---|---|
Application server | Exhibits negative scalability beyond 2 CPUs |
Database instance for application server | Heavy transaction processing |
Application server in test and development environment | GUI-based, with untested code execution |
Transaction processing server | Primary concern is response time |
Standalone database instance | Processes a large number of transactions and serves multiple time zones |
Consolidation Configuration
The following configuration is used to consolidate the applications onto a single system.
The application server has a two-CPU processor set.
The database instance for the application server and the standalone database instance are consolidated onto a single processor set of at least four CPUs. The standalone database instance is guaranteed 75 percent of that resource.
The test and development application server requires the IA scheduling class to ensure UI responsiveness. Memory limitations are imposed to lessen the effects of bad code builds.
The transaction processing server is assigned a dedicated processor set of at least two CPUs, to minimize response latency.
Creating the Configuration
Edit the project database file. Add entries to implement the required resource controls and to map users to resource pools, and then view the file.
# cat /etc/project . . . user.app_server:2001:Production Application Server:::project.pool=appserver_pool user.app_db:2002:App Server DB:::project.pool=db_pool,project.cpu-shares(privileged,1,deny) development:2003:Test and development::staff:project.pool=dev_pool, process.max-address-space=(privileged,536870912,deny) user.tp_engine:2004:Transaction Engine:::project.pool=tp_pool user.geo_db:2005:EDI DB:::project.pool=db_pool,project.cpu-shares=(privileged,3,deny) . . . |
Note - The development team needs to execute tasks in the development project because access for this project is based on a user's group ID (GID).
Create an input file that is named pool.host, which will be used to configure the required resource pools. View the file.
# cat pool.host create system host create pset default_pset (uint pset.min = 1) create pset dev_pset (uint pset.max = 2) create pset tp_pset (uint pset.min = 2) create pset db_pset (uint pset.min = 4; uint pset.max = 6) create pset app_pset (uint pset.min = 1; uint pset.max = 2) create pool default_pool (string pool.scheduler="TS"; boolean pool.default = true) create pool dev_pool (string pool.scheduler="IA") create pool appserver_pool (string pool.scheduler="TS") create pool db_pool (string pool.scheduler="FSS") create pool tp_pool (string pool.scheduler="TS") associate pool default_pool (pset default_pset) associate pool dev_pool (pset dev_pset) associate pool appserver_pool (pset app_pset) associate pool db_pool (pset db_pset) associate pool tp_pool (pset tp_pset) |
Type the following:
# poolcfg -f pool.host |
Make the configuration active.
# pooladm -c |
The framework is now functional on the system.
Viewing the Configuration
To view the framework configuration, type:
# pooladm system host int system.version 1 boolean system.bind-default true string system.comment pool default_pool boolean pool.default true boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler TS pset default_pset pool dev_pool boolean pool.default false boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler IA pset dev_pset pool appserver_pool boolean pool.default false boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler TS pset app_pset pool db_pool boolean pool.default false boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler FSS pset db_pset pool tp_pool boolean pool.default false boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler TS pset tp_pset pset default_pset int pset.sys_id -1 string pset.units population boolean pset.default true uint pset.max 4294967295 uint pset.min 1 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 pset dev_pset int pset.sys_id 1 string pset.units population boolean pset.default false uint pset.max 2 uint pset.min 0 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 pset tp_pset int pset.sys_id 2 string pset.units population boolean pset.default false uint pset.max 4294967295 uint pset.min 2 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 pset db_pset int pset.sys_id 3 string pset.units population boolean pset.default false uint pset.max 6 uint pset.min 4 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 pset app_pset int pset.sys_id 4 string pset.units population boolean pset.default false uint pset.max 2 uint pset.min 1 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 |