サーバレスクラウド基盤ソフトウェアにおけるリソース管理機構
2009SE014 浅岡 大樹

2010SE006 安藤 新司

2010SE067 伊藤 大典

指導教員：宮澤 元
うが，その際にどのノードに仮想マシンの作成を行う

はじめに

1

コンピュータネットワーク経由で様々なサービスを提供するクラウドコンピューティング (クラウド) というコンかスケジューリングを行う．
ノードコントローラ (NC)
クラスタコントローラからの要求を受け仮想マシンをピュータの利用方法が普及している．クラウドは，クラウ動作させる．また，動作しているノードの使用可能なド基盤ソフトウェアを用いて複数のサーバを集約することリソースの情報をクラスタコントローラへ送信する．

により実現されている．クラウドの使用形態は，パブリッ

仮想マシン作成時は，仮想マシン上で動作させる仮想ククラウドとプライベートクラウドに大別される [1]．パマシンイメージを取得し，キャッシュしておく．仮想ブリッククラウドは大規模でリソースの制約が比較的少マシンの状態をクラスタコントローラへ定期的に送信ないのに対し，プライベートクラウドは，組織内に設置するサーバだけを用いるので，利用できるリソースに制約がある．

する．
ストレージコントローラ (SC)ストレージコントローラでは，仮想マシンに対してボプライベートクラウドのリソース不足を解消するためにリュームの提供や管理を行い，ボリュームのスナップは，サーバとして利用できるリソースを追加する必要があショットの管理も行う．

る．しかし，サーバ用のコンピュータを追加するのはコストがかかるので，我々はクラウドのノードとして利用されていないクライアントに着目した．
我々はプライベートクラウド環境において，組織の持つコンピュータリソースを統一的に管理してクラウドサービ
スを提供するサーバレスクラウド基盤ソフトウェアを開発中である．これを用いることにより，各コンピュータをサーバやクライアントといった特定の目的だけに用いることなく全体として適切なリソース管理を行うクラウド基盤を実現できる．

図 1 クラウド基盤ソフトウェアの構成

本稿では，特にサーバレスクラウド基盤ソフトウェアのリソース提供部分であるノードコントローラの設計と実装について述べる．クライアントコンピュータで動作する非従来のクラウド基盤ソフトウェアでは，クライアントコクラウド処理用にリソースを予約することで，クラウド処ンピュータのリソースを使用することは考えられていな理が非クラウド処理を妨げることなくクライアントコンい．クライアントのリソースをクラウド処理に用いると，ピュータ上で動作させることができる．

クライアントの動作で必要なユーザインタフェース処理な

サーバレスクラウド基盤ソフトウェア

2

本節では，従来のクラウド基盤ソフトウェアとサーバレスクラウド基盤ソフトウェアについて，その概要を示す．

2.1

従来のクラウド基盤ソフトウェア

どの非クラウド処理のためのリソースが不足するおそれがあるからである．

2.2

サーバレスクラウド基盤ソフトウェア

サーバレスクラウド基盤ソフトウェアは各コンピュータをサーバやクライアントといった特定の目的だけに用いる

クラウド基盤ソフトウェアは一般に，クラウドコントことなく，全てのコンピュータをクラウドのノードとしてローラ，クラスタコントローラ，ノードコントローラ，ス利用し，ストレージリソースや CPU リソース，メモリリトレージコントローラから構成される (図 1)．
クラウドコントローラ (CLC)

ソースについて全体として適切な管理を行うクラウド基盤ソフトウェアである [2]．

クラウド全体の管理を行う．利用者に対して Web 管

サーバレスクラウド基盤ソフトウェアは仮想マシン管理画面を提供し，利用者からの要求をクラスタコント理に注目すると，各ノードの利用可能なリソースに応じてローラへ送信する．

ノードスケジューリングを行うと共に，各ノードで非クラクラスタコントローラ (CC)

ウド処理に使用するリソースを予約できるようなリソースノード群のネットワークや使用可能リソースを管理す管理を行う．これにより，非クラウド処理がリソース不足る．ノードコントローラへ仮想マシンの動作要求を行になることを防ぐ．図 2 にサーバレスクラウド環境の構成

を示す．図 1 でクラウドの外にあったクライアントが，クラウド内でノードとして利用されている．

3.2

従来のノードコントローラの動作

ノードコントローラは，起動時にノードコントローラが動作しているコンピュータのリソース情報を取得し，クラスタコントローラへ送信する．これを受け，クラスタコン
トローラは各ノードで仮想マシンを作成可能かどうかを判断し，クラウドコントローラからの要求に従い仮想マシンの動作要求をノードコントローラに出す．クラスタコン
トローラから仮想マシンの作成要求を受けたノードコン
トローラは，ストレージコントローラから受け取った仮想マシンイメージをキャッシュして，ノード上の仮想化ハイ
図 2 サーバレスクラウド基盤ソフトウェアの構成パーバイザを利用して，仮想マシンを作成する．なお，作成した仮想マシンはクラスタコントローラからの要求により，再起動やスリープ，シャットダウンの動作を行うこと

リソース管理機構の設計

3

サーバレスクラウド環境では，全てのノードに自由に仮想マシンを配置できるわけではない．利用者が端末として直接利用するようなノードでは，ユーザインタフェース処ができる．ノードコントローラは仮想マシンの動作状態や動作中の仮想マシンのリソース情報を定期的に取得し，クラスタコントローラへ送信する．

3.3

サーバレスクラウド基盤ソフトウェアにおけるノードコントローラ

理などの非クラウド処理にもリソースを割く必要がある．
そこで，我々が開発しているサーバレスクラウド基盤ソフ

ノードコントローラが起動する段階で，自分が起動してトウェアでは，非クラウド処理に用いるリソースを予約し， いるのがサーバなのかクライアントなのかを判別する情報
クラウド処理に使えるリソース情報だけをクラスタコント を作成する．また，クライアントの場合は端末の種類を判ローラに送信するようなリソース管理機構をノードコント別した情報を取得する．次に，定期的にコンピュータの性ローラに導入する．以下では，便宜上，クラウド処理のみ能を比較できる情報を取得する．そして，クライアントとを実行するコンピュータをサーバ，非クラウド処理を実行判別された場合は，端末の種類に合わせて非クラウド処理するコンピュータをクライアントと呼ぶ．

用のリソースを予約し，その他をクラウド処理に使用する．

3.1

必要な機能

本リソース管理機構では以下のような機能が必要となる．
端末の種類の識別ノードコントローラとして動作しているサーバは，ほぼすべてのリソースをクラウド処理に利用可能だが，クライアントは一部のリソースを非クラウド処理用に割り当てる必要がある．そこでサーバとクライアントを識別する情報を取得する．
リソース情報の取得
クライアントに使用される端末の性能はそれぞれが異なると考えられる．クライアントの性能によって非クラウド処理を行うために必要なリソース量は変化する．そこで，リソースの詳細な情報を取得する．
非クラウド処理用リソースの予約クラウド処理を実行させた時に，非クラウド処理の妨げにならない程度に非クラウド処理用リソースを予約する．また，非クラウド処理は常に実行中であるとは限らない．非クラウド処理が実行されていない，あるいは負荷が軽い場合，クラウド処理にも十分なリソー

クライアントで利用者が非クラウド処理を行う場合は，非クラウド処理の負荷状況によってリソースの予約量を変化させる．これにより，非クラウド処理への影響を抑えつつ，非クラウド処理とクラウド処理を並行して実行できる．

システムの実装

43.3 節のノードコントローラの実装について述べる．なお，実装のベースとして Eucalyptus-3.2.0 を利用した．

4.1

端末の種類の識別クライアントでは非クラウド処理用のリソースを予約する必要があるので，設定ファイルにサーバとクライアントを決める記述を追加することでサーバとクライアントを判別する処理を行う．また，クライアントとして使用される端末はそれぞれ性能が異なる．性能の違いをラップトップとデスクトップに大別し設定ファイルにラップトップとデスクトップを決める記述を追加する．ユーザは使用前にノードコントローラの動作設定としてサーバかクライアントかを記述し，クライアントの場合はラップトップかデスクトップかを記述する．

4.2

リソース情報の取得

スを割り当てる必要がある．そこで，非クラウド処理

既存のノードコントローラでは，仮想マシン作成時にの状態によって非クラウド処理用に予約するリソース使用するコンピュータの CPU コア数，総メモリ量が取得量を変化させる．

され利用されている．本システムでは，既存の情報に加え，非クラウド処理の CPU 使用率を追加で取得する．非せ，非クラウド処理に使用するメモリ量の動的予約処理をクラウド処理の CPU 使用率は，全体の CPU 使用率とク加えたものが図 5 である．バックグラウンドプロセスにラウド処理の CPU 使用率の差を求めることで算出する． 割り当てたメモリ量は不変であるが，非クラウド処理に使クラウド処理の CPU 使用率は仮想マシンが使用している用するメモリ量は非クラウド処理の負荷に合わせて変化CPU 使用率とした．我々は実際に仮想マシンを作成してCPU に負荷をかけた時に，ハイパーバイザである KVMプロセスが使用する CPU 使用率と仮想マシンが使用するCPU 使用率が同じであることを確認した．そのため，クラウド処理の CPU 使用率には，KVM プロセスの CPUする．
CPU usage100

userpercent(%)

80使用率を用いた．

60
40204.3

非クラウド処理用リソースの予約

0908

070605

04

0302

0100

0time(min)memory usage0908070605

04

リソースの予約には仮想マシンが利用可能なリソースに制0300

ることで作成可能な仮想マシンの数を決める．そのため，

active02

リ量と CPU コア数を取得し，クラスタコントローラへ送

4000
3500
30002500
2000
1500
1000
500
001

存のノードコントローラは起動時にコンピュータの総メモsize(MB)非クラウド処理用にリソースを予約する処理を行う．既

time(min)

限を設ければよい．今回は，比較的調整が容易であるクラ

図 3 ラップトップ使用時の各リソースの使用率スタコントローラに送るメモリ量を調整することでリソー
スの予約を行う．
クラスタコントローラへ送信するリソース量をあらかじCPU usage35

め減らす動作を行うことで作成できる仮想マシン数が制限

25
2015105を利用したもので GUI で動作するオペレーティングシス
テムを使用する．我々はオペレーティングシステムのバッ

09

08

07

06

09

08

07

06

05

04

time(min)クライアントは常に非クラウド処理を行っているわけではない．クライアントにおいては非クラウド処理をクラウ

03

02

active01

リソースの動的予約

4000
3500
3000
2500
2000
1500
1000
500
000

4.4size(MB)うことにした．

05

time(min)memory usage

クグラウンドプロセスが常に使用するリソース量を調査し，結果から常に必要であるメモリ量 512MB の予約を行

04030200001

ライアントで行う非クラウド処理はユーザインタフェースpercent(%)

でき，非クラウド処理用のリソース予約が可能になる．ク

user30

図 4 デスクトップ使用時の各リソースの使用率

ド処理より優先する必要があるので，非クラウド処理の負荷が上がった時に非クラウド処理に割り当てるリソースを増やす．
我々は，非クラウド処理に掛かる負荷とメモリ使用量の関係を調べるため，1 アプリケーションが使用するメモリ使用量を測定した．図 3 と図 4 はラップトップとデスクトップ上で一定時間ごとに 1 つずつ様々なアプリケーションを実行し，結果をグラフにしたものである．横軸は経過

非クラウド処理のCPU 使用率

予約するメモリ量(ラップトップ)

予約するメモリ量(デスクトップ)

0%〜25%
25%〜50%50%〜

総メモリ量の 1/8

総メモリ量の 1/12

総メモリ量の 1/4

総メモリ量の 1/6

総メモリ量の 1/2

総メモリ量の 1/3

表 1 変化させるリソース量

時間，縦軸はそれぞれ CPU 使用率とメモリ使用量である．
図 3,4 から，1 アプリケーションあたりの最大メモリ使用量は 1GB から 1.5GB 程度であることが分かる．
以上の結果から，プロセスの多重度が上がって CPU 使用率が 25% および 50% に達した時の必要メモリ量を予測し，非クラウド処理に割り当てるメモリ量を総メモリ量を元に表 1 の様に決定した．デスクトップとラップトップ
で搭載メモリ量が異なるのでそれぞれで異なる基準を適用した．
バックグラウンドプロセスに割り当てるメモリ量に合わ

図 5 リソース予約機構

トローラと比較すると非クラウド処理の処理速度が速く実験5なったと考えられる．一方，非クラウド処理とクラウド処クライアントで非クラウド処理を実行中にクラウド処理理を同時に実行した場合に，本システムではクラウド処理を行った場合に非クラウド処理が安定して実行できるか確に使用できるメモリ量が減るので，作成できる仮想マシン認する実験を行った．

数は 3 台から 2 台へ低下している．

5.1

今回はエンコードを行うことで比較を行ったが，更に大実験環境

本実験で使用したコンピュータの仕様を表 2 に示す．

CPU
コア数
クロック周波数
メモリ

HDD
OS

きな処理や多くのメモリを使用する処理を行った場合に結果が大きく異なってくると考えられる．処理速度が変わる

NC(デスクトップ)

ことでソフトウェアの立ち上げなどの体感速度も変わり，

TM
RIntel⃝Core
i7-2600
83.40Ghz
8GB
500GB
ubuntu 12.04 Desktop

非クラウド処理中にクラウド処理を行っても非クラウド処

表 2 コンピュータの仕様理の妨げになるのを防ぐことができると言える．

6

既存のオープンソースクラウド基盤ソフトウェアには，Eucalyptus[3]，Open Stack[4]，Cloud Stack[5] などがあるが，いずれもクライアントコンピュータをノードとして使用することを想定していない．

7
5.2

実験方法

関連研究

まとめと今後の課題
我々は，サーバレスクラウド基盤ソフトウェアのノード既存のノードコントローラと本リソース管理機構を実装コントローラにおけるリソース管理機構の開発を行った．

したノードコントローラをそれぞれ導入したデスクトップ

非クラウド処理用にリソース予約を行うことにより，クラコンピュータを用いて非クラウド処理の処理速度の比較をウド処理が非クラウド処理の妨げになることを防ぐことが行った．非クラウド処理を実行中にクラウド処理を行った

できクライアントをクラウドのノードとして利用できるよ場合を想定して，今回はあらかじめ非クラウド処理にかかうになる．

る負荷が 50% 以上の状態を繰り返し計算を行うプログラ

本システムの有効性を調べるために，本リソース管理機ムで作成しておき，クラウド処理を開始する．この時仮想構の有無による非クラウド処理の処理速度の比較を行っマシンを最大まで作成し，仮想マシンでは処理の負荷が最た．その結果，非クラウド処理中に同時にクラウド処理を高に掛かっている状態を作成するために大量の配列を利用実行した場合に本リソース機構を用いることでクラウド処するプログラムでメモリを十分に使用する．その後非クラ理が非クラウド処理の妨げになるのを防ぐことができるこ

ウド処理として 1 時間の音声ファイルのエンコードを行とを確認した．

い開始から終了までの時間を計測する．計測はそれぞれのノードコントローラで 5 回行い結果を比較した．

5.3

今後の課題として，起動中の仮想マシンに割り当てたリ
ソース量をノードコントローラが自由に変更できるように改良する必要がある．

結果

表 3 は既存のノードコントローラと本リソース管理機構を実装したノードコントローラでの実験結果である．
既存

本システム

(仮想マシン数:3 台)(仮想マシン数:2 台)

1 回目
2 回目
3 回目
4 回目
5 回目

94.352924
93.003637
93.349833
92.275797
91.683260

88.811337
89.96591
89.83812
90.642548
85.169757

平均

92.93309

88.88553

表 3 処理時間 (秒)結果から，本リソース管理機構を実装したノードコント
ローラの方が処理速度が速いことが分かる．非クラウド処理に使用できるメモリ量が増えたので，既存のノードコン

参考文献[1] 加藤英雄, “クラウドコンピューティング-サーバは雲のかなた,” 2011.
[2] 青木勇貴，長谷川浩之, “プライベートクラウド環境における分散ファイルシステムの試作,” 2012 年度南山大学情報理工学部ソフトウェア工学科卒業論文 2013.
[3] D. Nurmi, R. Wolski, C. Grzegorczyk, G. Obertelli,
S. Soman, L. Youseﬀ, and D. Zagorodnov, “The eucalyptus open-source cloud-computing system,” Proceedings ofthe 9th IEEE/ACM International Symposium on Cluster
Computing and the Grid(CCGRID’09), 2009.
[4] Apache License 2.0, “Open source software for building
private and public clouds..” http://www.openstack.org/.
[5] The Apache Software Foundation, “Apache CloudStack.” http://cloudstack.apache.org/.