I mostly work on Solaris servers with Oracle database hosted on it. Limited to subject, for my requirement I create CPU Pools to Support Oracle Licensing. All Global Zone servers running oracle containers should have at least one oracle cpu pool. The containers should be "bound" to this pool.
Oracle Licensing offered in two forms as far as know - CPU based & User based licenses.
How to create pools?
# pooladm -e <<< The pools facility is not active by default when Solaris starts. pooladm -e explicitly activates the pools facility.
OPTION: If you wish to enbale resource pool fuction via SMF then just execute -
# /usr/sbin/svcadm enable svc:/system/pools:default
# pooladm -s <<< Save the current configuration to /etc/pooladm.conf
# pooladm <<< Shows current running pools configuration
Create Processor Set -
# poolcfg -c 'create pset oracle_pset (uint pset.min=4; uint pset.max=4)' <<< pset.min & pset.max is consider the hardware thread.
Create resource pool -
# poolcfg -c 'create pool oracle_pool' <<< Create pool
Associate resource pool & Processor Set -
# poolcfg -c 'associate pool oracle_pool (pset oracle_pset)' <<< Associate pool with pset
NOTE: The global zones scheduler should be set to use FSS.
Set the default scheduling class to FSS:
# dispadmin -d FSS
# poolcfg -c 'modify pool oracle_pool (string pool.scheduler="FSS")' <<< Enable FSS on pool
# pooladm -c <<< Activate the configuration (After executing this command you can see /etc/pooladm.conf has been modified with current configuration)
Now once you're done creating & associating the pset & resource pool next thing to do is configure the Non-Global Zone configuration.
# zonecfg -z zone1
zonecfg:zone1> set pool=oracle_pool
Once the zone configuration has been altered then you can bind the resource pool to zone using -
# poolbind -p oracle_pool -i zoneid
This procedure demonstrate on how to create CPU/Processor sets, resource pools, binding them to containers like activities.
Hope this will help.