LXCF ソース (lxcf-0.11.tar.gz) | 2014-11-14 12:01 |
LXCF DEB パッケージ (lxcf_0.11_amd64.deb) | 2014-11-14 11:52 |
LXCF RPM パッケージ (lxcf-0.11-1.x86_64.rpm ) | 2014-11-14 11:58 |
specfiles (lxcf.spec-0.11-1) | 2014-11-14 12:03 |
LXCFで生成したコンテナに割り当てるリソースを動的に変更します。
ここでは、CPUの割り当てを動的に変更しましょう。
まず、コンテナを3つ用意します。世界中の異なる地域に対してサービスするコンテナとしてasia-srv, euro-srv, およびusa-srvを作ります。
それぞれアジア、ヨーロッパ、USAは時差があります。その時差で昼間時間の地方に多くのCPUを割り当てる想定です。
# lxcf sysgen asia-srv euro-srv usa-srv # lxcf list Name Mode State Path ------------------------------------------------------ asia-srv joint running /opt/lxcf/asia-srv euro-srv joint running /opt/lxcf/euro-srv usa-srv joint running /opt/lxcf/usa-srv
それぞれのコンテナ内で実行する仕事を用意します。仕事というのも変ですが、ここではCPUをバリバリ使うUnixBench https://code.google.com/p/byte-unixbench/を使ってみます。
WWW上からUnixBenchのtarボールをダウンロードして、/rootで展開しましょう。それをlxcfのdeployサブコマンドですべてのコンテナに転送します。
# tar xzf UnixBench5.1.3.tgz # ls UnixBench # lxcf deploy UnixBench ### asia-srv ### synchronize dir : /root/UnixBench ### euro-srv ### synchronize dir : /root/UnixBench ### usa-srv ### synchronize dir : /root/UnixBench
これでUnixBenchディレクトリとその中のファイルがすべて各コンテナにコピーされます。
次に各コンテナのCPUの割り当てを行います。
USAが昼間でアジアは夜、ヨーロッパは夕方の前提で、asia-srvに10%, euro-srvに30%, usa-srvに60%を割り当てます。
# lxcf set -c 10 asia-srv # lxcf set -c 30 euro-srv # lxcf set -c 60 usa-srv
リソースの割り当て状況は、lxcfのサブコマンドshowで確認できます。
コンテナに割り当てられているリソースがjson形式で表示され、cpurateの欄に設定された値があることを確認してみてください。
# lxcf show {"name" : "asia-srv", "cpun" : "0-3", "cpurate" : "10", "numa" : "0", "memlimit" : "1.0G", "memswlimit" : "-", "blkio_r" : [ ], "blkio_w" : [ ], "blkiops_r" : [ ], "blkiops_w" : [ ], "net_cls" : "00000000" } {"name" : "euro-srv", "cpun" : "0-3", "cpurate" : "30", "numa" : "0", "memlimit" : "1.0G", "memswlimit" : "-", "blkio_r" : [ ], "blkio_w" : [ ], "blkiops_r" : [ ], "blkiops_w" : [ ], "net_cls" : "00000000" } {"name" : "usa-srv", "cpun" : "0-3", "cpurate" : "60", "numa" : "0", "memlimit" : "1.0G", "memswlimit" : "-", "blkio_r" : [ ], "blkio_w" : [ ], "blkiops_r" : [ ], "blkiops_w" : [ ], "net_cls" : "00000000" }
さて、次にコンテナにloginしてUnixBenchを起動します。
# ssh asia-srv [root@asia-srv ~]# cd UnixBench/ [root@asia-srv ~]# ./Run >/dev/null & [root@asia-srv ~]# ps PID TTY TIME CMD 778 pts/1 00:00:00 bash 804 pts/1 00:00:00 Run 844 pts/1 00:00:00 ps [root@asia-srv ~]# exit # ssh euro-srv [root@euro-srv ~]# cd UnixBench/ [root@euro-srv ~]# ./Run >/dev/null & [root@euro-srv ~]# exit # ssh euro-srv [root@usa-srv ~]# cd UnixBench/ [root@usa-srv ~]# ./Run >/dev/null & [root@usa-srv ~]# exit #
virt-managerのperfomanceの表示を並べて確認しましょう。
CPUの使用量が設定値の範囲内で推移するのがわかります。
asia-srvに10%, euro-srvに30%, usa-srvに60%を割り当てられています。
次に、アジアが昼間になり、USAとヨーロッパは夜の設定です。
asia-srvに80%, euro-srvに10%, usa-srvに10%を割り当てます。
# lxcf set -c 80 asia-srv # lxcf set -c 10 euro-srv # lxcf set -c 10 usa-srv
次に、ヨーロッパが昼間になり、アジアは夕方でUSAは夜の設定です。
asia-srvに20%, euro-srvに70%, usa-srvに10%を割り当てます。
# lxcf set -c 20 asia-srv # lxcf set -c 70 euro-srv # lxcf set -c 10 usa-srv
手動でリソースの変更をしなくても、シェルスクリプトにすれば自動的にリソースの割り当てを変更できます。
たとえば次のような簡単なスクリプトで自動化できます。
- #!/bin/sh
- trap 'lxcf stop -f asia-srv euro-srv usa-srv ' 0
- ASIASTATE=`lxcf list | egrep asia-srv`
- if [ -z "${ASIASTATE}" ] ; then
- echo 'create asia-srv'
- lxcf sysgen asia-srv
- fi
- lxcf start asia-srv
- lxcf set -c 33 -m 512 asia-srv
- EUROSTATE=`lxcf list | egrep euro-srv`
- if [ -z "${EUROSTATE}" ] ; then
- echo 'create euro-srv'
- lxcf sysgen euro-srv
- fi
- lxcf start euro-srv
- lxcf set -c 33 -m 512 euro-srv
- USASTATE=`lxcf list | egrep usa-srv`
- if [ -z "${USASTATE}" ] ; then
- echo 'create usa-srv'
- lxcf sysgen usa-srv
- fi
- lxcf start usa-srv
- lxcf set -c 33 -m 512 usa-srv
- echo "initialize cpurate"
- echo " asia-srv : 33%"
- echo " euro-srv : 33%"
- echo " usa-srv : 33%"
- sleep 10
- echo
- echo "run Bisiness JOBs : asia-srv"
- lxcf run asia-srv "while : ; do true ;done" >& /dev/null &
- echo "run Bisiness JOBs : euro-srv"
- lxcf run euro-srv "while : ; do true ;done" >& /dev/null &
- echo "run Bisiness JOBs : usa-srv"
- lxcf run usa-srv "while : ; do true ;done" >& /dev/null &
- echo
- sleep 10
- while :
- do
- echo
- echo "change cpurate"
- echo " asia-srv : 80%"
- lxcf set -c 80 asia-srv
- echo " euro-srv : 10%"
- lxcf set -c 10 euro-srv
- echo " usa-srv : 10%"
- lxcf set -c 10 usa-srv
- sleep 30
- echo
- echo "change cpurate"
- echo " asia-srv : 20%"
- lxcf set -c 20 asia-srv
- echo " euro-srv : 70%"
- lxcf set -c 70 euro-srv
- echo " usa-srv : 10%"
- lxcf set -c 10 usa-srv
- sleep 30
- echo
- echo "change cpurate"
- echo " asia-srv : 10%"
- lxcf set -c 10 asia-srv
- echo " euro-srv : 30%"
- lxcf set -c 30 euro-srv
- echo " usa-srv : 60%"
- lxcf set -c 60 usa-srv
- sleep 30
- done
[PageInfo]
LastUpdate: 2014-05-18 00:14:12, ModifiedBy: niwa-hideyuki
[Permissions]
view:all, edit:members, delete/config:members