Solaris コンテナに対するメモリ制限方法 : やっぱり Sun がスキ! やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20070925 2007年 9月 25日 火曜日

Solaris コンテナに対するメモリ制限方法

今月リリースした Solaris 10 8/07 (Update4) では、Solaris コンテナの メモリ管理が強化されましたのでその機能を紹介致します。

今までの Solaris コンテナでは、非大域ゾーン全体に対する CPU リソースは制限可能でしたが、メモリリソースに対しては制限をかけることができませんでした。
今回リリースした Solaris 10 8/07 では、Solaris コンテナの非大域ゾーンに対してメモリの制限を かける capped-memory のリソースが追加されており、この capped-memory に対し て、physical, swap, locked プロパティが指定可能となりました。

では、実際に確認してみましょう。

今回は、zone01 に対して、200M の物理メモリ(RSS) と swap 300M の制限 をかける非大域ゾーンを作成しました。

# zonecfg -z zone01
zone01: そのような構成済みゾーンはありません
'create' を使用して、新しいゾーンの構成を開始してください。
zonecfg:zone01> create
zonecfg:zone01> set zonepath=/export/zone/zone01
zonecfg:zone01> add capped-memory
zonecfg:zone01:capped-memory>  set physical=200m
zonecfg:zone01:capped-memory> set swap=300m
zonecfg:zone01:capped-memory> end
zonecfg:zone01> verify
zonecfg:zone01> commit

設定の確認
# zonecfg -z zone01 info
zonename: zone01
zonepath: /export/zone/zone01
brand: native
autoboot: false
bootargs: 
pool: 
limitpriv: 
scheduling-class: 
ip-type: shared
...
...
capped-memory:
        physical: 200M
        [swap: 300M]
rctl:
        name: zone.max-swap
        value: (priv=privileged,limit=314572800,action=deny)

今回制限をかけた物理メモリとスワップの値は、具体的に "prstat -Z" で表示される RSS と SWAP の値になります。(下記 prstat -Z の出力結果参照)

実際、物理メモリを50M 消費するプログラム malloc50m を動作させて 検証してみた所、 zone01 の RSS が一瞬 200M を超えますが、 rcapd の働きにより物理メモリ(RSS)が 200M を超えた分はスワップに退避されました。

   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP       
  1464 noaccess  159M   50M run     59    0   0:00:30 9.3% java/23
   142 daemon   7504K 2256K sleep   59    0   0:00:00 1.1% rcapd/1
  1141 root     4848K 2856K cpu0    59    0   0:00:00 0.8% prstat/1
  1478 root       51M   51M sleep   59    0   0:00:00 0.7% malloc50m/1
   621 root       19M   16M sleep   59    0   0:00:04 0.6% Xorg/1
   756 noaccess  157M   74M sleep   59    0   0:00:30 0.5% java/24
   934 root       10M 8976K sleep   59    0   0:00:10 0.5% svc.configd/16
   872 root     9144K 5472K sleep   59    0   0:00:00 0.2% dtterm/1
   715 root       22M   17M sleep   59    0   0:00:02 0.1% iiimd/6
   870 root       10M 6852K sleep   59    0   0:00:01 0.1% dtwm/5
   932 root     9988K 8452K sleep   59    0   0:00:02 0.1% svc.startd/14
   760 root     7720K 4084K sleep   59    0   0:00:00 0.0% iiim-xbe/3
   762 root     6728K 2724K sleep   59    0   0:00:00 0.0% atokx2auxd/1
  1072 root     4672K 3108K sleep   59    0   0:00:00 0.0% inetd/4
   873 root     8092K 4328K sleep   59    0   0:00:00 0.0% sdtperfmeter/1
ZONEID    NPROC  SWAP  RSS MEMORY      TIME  CPU ZONE                        
     1       33  161M  200M    20%   0:00:42  11% zone01                  
     0       67  171M  292M    29%   0:00:55 3.7% global   

(まとめ)
今回追加された Solaris コンテナに対するメモリリソース制限の機能追加は、BrandZ の ように派手ではありませんが、着実に Solaris 10 仮想化技術をまた一歩進化させております。

投稿されたコメント:

コメント
  • HTML文法 不許可