Solaris zone memory on the fly
From Lolly's Wiki
Setting memory parameter for running zones
You can change memory parameter for running zones. But remember to make it persistent by changing zone config file, too. So I do it always in advance.
Change setting in the config file
# zonecfg -z myzone
zonecfg:myzone> select capped-memory
zonecfg:myzone:capped-memory> info
capped-memory:
[swap: 10G]
zonecfg:myzone:capped-memory> set swap=16G
zonecfg:myzone:capped-memory> set physical=16G
zonecfg:myzone:capped-memory> set locked=10G
zonecfg:myzone:capped-memory> info
physical: 16G
[swap: 16G]
[locked: 10G]
zonecfg:myzone:capped-memory> end
zonecfg:myzone> verify
zonecfg:myzone> commit
zonecfg:myzone> exit
#
Change settings for the running zone
First take a look
# zlogin myzone prtconf | grep Memory
prtconf: devinfo facility not available
Memory size: 65536 Megabytes
# prctl -t privileged -i zone myzone
zone: 1: myzone
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
zone.max-swap
privileged 10.0GB - deny -
zone.cpu-shares
privileged 1 - none -
Set the new values
# rcapadm -z myzone -m 16G
# prctl -n zone.max-swap -v 16g -t privileged -r -e deny -i zone myzone
# prctl -n zone.max-locked-memory -v 16g -t privileged -r -e deny -i zone myzone
Prove values
# zlogin myzone prtconf | grep Memory
prtconf: devinfo facility not available
Memory size: 16384 Megabytes
# prctl -t privileged -i zone myzone
zone: 1: myzone
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
zone.max-swap
privileged 16.0GB - deny -
zone.cpu-shares
privileged 1 - none -
Done.