Prepare disk/zone root for zone to be created
format disk
vi /etc/vfstab
/dev/dsk/c1t1d0s0 /dev/rdsk/c1t1d0s0 /export/zones /ufs 1 yes -
mkdir /export/zones
mount /export/zones
mkdir /export/zones/testzone
chmod 700 /export/zones/testzone

Config pool for the zone to be created
Enable pool deamon
ps -ef|grep poold
root 3920 3906 0 17:04:27 pts/1 0:00 grep poold
pooladm: couldn't open pools state file: Facility is not active
pooladm -e

Create file "testpool" for pool configuration for testzone

create pset testzone-pset ( uint pset.min = 64; uint pset.max = 64 )
create pool testpool
associate pool testpool ( pset testzone-pset )

In this example I created a testzone-pset with 64 cpus. I created a testpool and associate testzone-pset into this pool.

Update the pooladm configuration with the file zone1pool:
poolcfg -f testpool
poolcfg: cannot load configuration from /etc/pooladm.conf: No such file or directory

If this error occurs, use "pooladm -s" opation to save current configuration in memory into the file /etc/pooladm.conf

pooladm -s
ls /etc/pooladm.conf

poolcfg -f testpool
pooladm -c

Check the current configuration on Pooladm:
pool testpool
int pool.sys_id 1
boolean true
boolean pool.default false
int pool.importance 1
string pool.comment
pset testzone-pset
pset testzone-pset
int pset.sys_id 1
boolean pset.default false
uint pset.min 64
uint pset.max 64
string pset.units population
uint pset.load 517
uint pset.size 64
string pset.comment

int cpu.sys_id 53
string cpu.comment
string cpu.status on-line

int cpu.sys_id 52
string cpu.comment
string cpu.status on-line

int cpu.sys_id 55
string cpu.comment
string cpu.status on-line

Configure zone
vi testzone.cfg

create -b
set zonepath=/export/zones/testzone
set autoboot=true
set pool=testpool
set ip-type=shared
add net
set physical=nxge0
set address=
add fs
set dir=/download
set special=/download
set type=lofs
add options rw
add options nodevices
add inherit-pkg-dir
set dir=/usr
add inherit-pkg-dir
set dir=/lib
add inherit-pkg-dir
set dir=/platform
add inherit-pkg-dir
set dir=/sbin
add inherit-pkg-dir
set dir=/opt

zonecfg -z testzone -f testzone.cfg
zoneadm -z testzone install
zoneadm -z testzone boot
zlogin -C testzone

vi /etc/default/login
vi /etc/ssh/sshd_config

Modify pset configuration
poolcfg -c 'modify pset testzone-pset ( uint pset.min = 2; uint pset.max = 2)'
pooladm -c

Enabling Fair Share Scheduling (FSS) on zone
poolcfg -c 'modify pool testpool (string pool.scheduler="FSS")'
pooladm -c
priocntl -s -c FSS -i class TS
priocntl -s -c FSS -i pid 1

Now we need to set zone1-pool into zone2 (We have already set zone1-pool to zone1 before).

bash-3.00# zonecfg -z zone2
zonecfg:zone2> set pool=zone1-pool
zonecfg:zone2> verify
zonecfg:zone2> exit

Now, both zone1 and zone2 are set to use zone1-pool and zone1-pool is assigned to use FSS.

With FSS, the relative importance of applications is expressed by allocating CPU resources based on shares?a portion of the system?s CPU resources assigned to an application. The larger the number of shares assigned to an application, the more CPU resources it receives from the FSS software relative to other applications. The number of shares an application receives is not absolute?what is important is how many shares it has relative to other applications, and whether they will compete with it for CPU resources.

Lets? assign 3 shares to zone1 and 1 share to zone2.

bash-3.00# zonecfg -z zone1
zonecfg:zone1> add rctl
zonecfg:zone1:rctl> set name=zone.cpu-shares
zonecfg:zone1:rctl> add value (priv=privileged,limit=3,action=none)
zonecfg:zone1:rctl> end
zonecfg:zone1> exit

bash-3.00# zonecfg -z zone2
zonecfg:zone2> add rctl
zonecfg:zone2:rctl> set name=zone.cpu-shares
zonecfg:zone2:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:zone2:rctl> end
zonecfg:zone2> exit

In this example, we assigned 3 shares to zone1 and 1 share to zone2,then the total number of shares is 1+3 =4. In this example, CPU demand is allocated 75 percent for zone1 and 25 percent for zone2.

Note: Keep in mind that you should have more than one CPU assigned to have a good work of FSS.

According to Sun Manual (System Administrator Guide: Solaris Container-Resource Management and Solaris Zones), if you are using only one CPU the shares you specied are not relevant and each zone will use 50% of CPU. In this example we only provide a quick way to set FSS and Shares.

How to monitor CPU usage of projects that run on the system:
bash-3.00# prstat -J

Read More about [Create zone/container with processor set pset & FSS...