ということで,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 で変更しておく必要がある.