ということで,prctl を使って稼動中の zone のリソースを変更する方法.
変更する前に現状の確認.
testserver という zone の確認をする場合は以下.
# prctl -i zone testserver
zone: 4: testserver
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
zone.max-lofi
usage 0
system 18.4E max deny -
zone.max-swap
usage 58.1MB
system 16.0EB max deny -
zone.max-locked-memory
usage 0B
system 16.0EB max deny -
zone.max-shm-memory
system 16.0EB max deny -
zone.max-shm-ids
system 16.8M max deny -
zone.max-sem-ids
system 16.8M max deny -
zone.max-msg-ids
system 16.8M max deny -
zone.max-processes
usage 26
system 2.15G max deny -
zone.max-lwps
usage 124
system 2.15G max deny -
zone.cpu-cap
usage 0
privileged 100 - deny -
system 4.29G inf deny -
zone.cpu-shares
usage 1
privileged 1 - none -
system 65.5K max none -
zone.cpu-cap だけ表示したい場合は
"-n" オプションに zone.cpu-cap を渡す.
# prctl -n zone.cpu-cap -i zone testserver
zone: 4: testserver
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
zone.cpu-cap
usage 0
privileged 100 - deny -
system 4.29G inf deny -
この表示は zonecfg -z testserver info で表示される以下の部分に相当.
rctl:
name: zone.cpu-cap
value: (priv=privileged,limit=100,action=deny)
prctl の
privileged 100 - deny -
と zonecfg の
value: (priv=privileged,limit=100,action=deny)
が対応している.
今,100 に設定されている cpu-cap を 200 に変更してみる.
# prctl -r -t privileged -n zone.cpu-cap -v 200 -i zone testserver
これで以下のように cpu-cap が 200 に変更される.
# prctl -n zone.cpu-cap -i zone testserverzone: 4: testserver
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
zone.cpu-cap
usage 0
privileged 200 - deny -
system 4.29G inf deny -
稼動中の testserver の cpu-cap は変更できたが,
zonecfg の方は変更されないので,再起動後も cpu-cap を 200 にしたければ,
zonecfg で変更しておく必要がある.