Sun Microsystems 10 User Manual

Page of 121
Version 3.1-en
  Solaris 10 Container Guide - 3.1   4. Best Practices 
Effective: 30/11/2009
4.6. Resource management
4.6.1. Types of resource management
[dd] There are 3 different types of resource management in all:
Fair resources: Here, all resources are distributed fairly among all requesters and according to 
the defined rules. Example: Fair share scheduler for CPU resources
Capped resources: Resources can be seen by all requesters. As the upper limit of a resource is 
the  capping  value specified.  Unused  resources  can  also  be  used  by  others.  Example:  CPU 
capping
Exclusive resources: Resources are assigned exclusively to the requester and can be used by 
him only. Unused resource shares are not available to others. Example: resource pools with 
processor sets
4.6.2. CPU resources
[ug] CPU resources can be limited on several different levels in Solaris 10:
Capping of CPU time for a zone
Resource pools with processor set (global zone only)
Fair share scheduler between zones in a resource pool (global zone only)
Fair share scheduler between projects in a zone
4.6.2.1. Capping of CPU time for a zone
[dd] For this purpose, a CPU capping value is assigned to a zone in the zone configuration. Parts of a 
CPU can be specified here, e.g. 0.5 CPUs or 1.57 CPUs. The usable CPU time of a zone is capped 
at this contingent. This allows finely granulated CPU assignment on a number of zones even if less 
than a whole CPU is to be assigned to a zone. In addition, the zone will not use more CPU resources,  
although more CPU time would be available (e.g. at times when the total system is underutilized).
CPU caps must be used where finely granulated CPU rations are required and an upper limit must be 
observed. The setting using CPU caps is exact to 1/100 CPUs.
(Cookbook: 
4.6.2.2. General resource pools
[ug] Resource pools are defined in the global zone to which a processor set can be assigned (see 
commands poolcfg and pooladm).
A processor set contains an upper and a lower limit for the number of processors. This can be 
used for dynamic allocation of processors using poold.
These definitions are static  and withstand rebooting.
 A dynamic change is also possible with the 
prctl
 command.
A zone (or a project) can be assigned to such a resource pool. This is done with zonecfg: 
set   pool=<name>
  or dynamically with  poolbind. All processes of the zone (or of the 
project) then run in this resource pool and thus on the CPUs of the processor set defined for the 
resource pool.
If no processor set is assigned, the processes in the resource pool run on the general processor 
set   (pset_default)   which   contains   all   processors   by   default   and   where   the   system 
activities take place as well.
Resource   pools  make   sense,   if   more   than   one   zone   (if   necessary   with   FSS)   are   to   run   in   one 
resource pool (and on one processor set).
Resource   pools  are   also   appropriate,   if   individual  projects   from   the   global  zone   are   to   run   in   a 
resource pool in addition to the local zones. It is, however, recommended not to run any applications 
in the global zone due to higher complexity.
58