Resource Pools

Resource Pools provide physical resource partitioning within an OpenSolaris instance.  Currently cpu partitioning via processor sets is provided.  Future work includes partitioning of physical memory and swap via memory sets.

Overview

A Resource Pool is a collection of resource sets to which an entity is bound.  Supported entity types are:

  • process
  • task
  • project
  • zone

The associations are as follows:

  •  An entity is bound to a single pool.
  •  Multiple entities may be bound to the same pool.
  •  A pool is associated with one resource set of each type (one pset, one mset, etc).
  •  Multiple pools may be associated to the same resource set.
  •  Resource sets consist of either components (e.g.: cpus) or quantities (e.g.: bytes of physical memory).
  •  Resource sets are non-overlapping, so any cpu or quantity of memory can only be in one resource set.

The Default System

OpenSolaris by default consists of:

  •  pool_default (associated with pset_default, mset_default, etc)
  •  pset_default (contains all cpus)
  •  mset_default (future, will contain all memory and swap)

All entities in and including the global zone are bound to pool_default.  To
configure more pools, enable the pools service and use poolcfg(1m) and pooladm(1m).  Pools can be configured to persist across boot, and certain entities, such as zones and projects, can be configured to automatically bind to a pool.

Relationship to Resource Controls

Resource pools partition the system's resources into sets.  Resource controls are limits on resource consumption by an entity.  For instance, if multiple zones are bound to a pool, they share the cpus partitioned to that pool.  The zone.cpu-shares resource control can then be used  limit each zone's cpu consumption to be fair with respect to one another.

Example

To enable resource pools and create a pool with two cpus:

    # svcadm enable -s pools
    # pooladm -s
    # poolcfg -c 'create pset pset1 (uint pset.min = 2 ; uint mset.max = 2)'
    # poolcfg -c 'create pool pool1'
    # poolcfg -c 'associate pool pool1 (pset pset1)'
    # pooladm -c

Use poolbind(1m) to bind running entities to a pool.  For automatic pool bindings for zones and projects, see zonecfg(1m) and project(4).

Active Development

Current work with the resource pools framework:

last modified by admin on 2009/10/26 12:17
Collectives
Project


© Sun Microsystems Inc. 2009
XWiki Enterprise 1.8.2.19075 - Documentation
Terms Of Use | Privacy | Trademarks | Copyright Policy | Site Guidelines | Site map | Help
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.