SoftLayer上でResource-as-a-Service (RaaS) Cloudっぽい動作をするクラウドを作ってみる

本記事はSoftLayer Advent Calendar 2014のために書いたものです.21日に作成する予定でしたが,予定が重なり遅くなってしまいました.お詫び申し上げます.

RaaSクラウドとは?

Resource-as-a-Service Cloud[1] は,2012年にIBMが提唱した新しいクラウド形態です.現在多くのIaaSクラウドでは,VM単位で計算資源が貸し出されていますが,VMの負荷状況は一定ではありません.このため,低負荷な状況下においても(計算資源を利用していないにもかかわらず)一定額の料金が請求されます.RaaSクラウドでは,「計算リソースを売る」という考え方のもと,必要なときに必要なだけ計算資源を利用し,利用した分だけ課金される形態のクラウドを提案しています.

利用する計算資源の粒度は,たとえばCPUなら1サイクル単位,メモリなら1バイト単位,ディスクなら1ブロック単位など様々考えられますが,この記事では文献[2][3]を参考に,CPUとメモリの使用に着目してRaaSっぽいクラウドをつくってみます.

RaaSっぽいクラウドを実現するために必要なこと

RaaS型のクラウドは,(1) 少ない計算資源を割り当てたVMと,(2) VMに割り当てる計算資源から構成されます.VMは負荷状況に応じて(2)を利用し,(3) 利用した計算資源量を計測することで課金します.VMに割り当てる計算資源は固定ですが,割当量が小さいため課金額は小さくなります.

実装方法

幸いにも,電気通信大学の中島拓真さん他が文献[2][3]で実装方法を提示してくれています.これらの文献とその時の発表スライドを参照すると,以下のようなフローでVMから計算ホストに高負荷な処理を依頼することで,強力な計算資源を利用した計算の実行と,VM領域へのディスクI/Oを提供しています.

  1. VMは計算ホストにコマンドの実行を依頼する
  2. VMは計算ホストから実行ディレクトリをマウントできるように設定を行う
  3. 計算ホストはVMの実行ディレクトリをマウントする
  4. 計算ホストはマウントしたディレクトリで依頼されたコマンドを実行する
  5. コマンドの実行出力をVMに転送する
  6. 計算ホストは計算終了後,ディレクトリのマウントを解除する


実験環境

実験にあたり,SoftLayerの東京リージョンでベアメタルインスタンスを1つ注文しました.クラウドインスタンスも注文しようとしたのですが,クーポンの上限を超えていると言われたのであきらめました.なるほど確かにそのような記述がありますね.

しかしながら,かなり高性能なマシンがデプロイされたので,VMはこのベアメタルインスタンス上で動作させることにします.ベアメタルインスタンスの構成は以下の通りです.

その上で動作させるVMの構成は以下の通りです.

OS Ubuntu 14.04 Server (64bit)
CPU 1vCPU @2.4GHz
RAM 1GB
HDD 20GB

実験

VMからベアメタルインスタンスに向けて高負荷な画像処理を依頼します.その際の実行時間を比較してみます.まず,ベアメタルインスタンス上にKVMVMを作成できるようセットアップし,上記構成のVMを作成しました.その後,先に紹介したような動作をするプログラムを作成し(詳細は論文参照),実行してみました.実行結果を以下に示します.

対象とした画像ファイルは21600x10800のJPGファイルです.
$ identify src.jpg
src.jpg JPEG 21600x10800 21600x10800+0+0 8-bit PseudoClass 256c 6.18MB 0.000u 0:00.000

まず,5%に縮小する作業を行ってみました.

$ convert src.jpg -resize 5% out.jpg

計測対象 時間
VM内での実行時間(5回平均) 55.84秒
計算ホスト上での実行時間(5回平均) 3.12秒(VMよりも16.5倍高速)
VMから計算ホストを利用した実行時間(5回平均) 3.38秒(VMよりも17.9倍高速)
実行に要するオーバヘッド 0.26秒

次に,各ピクセルを近傍120x120ピクセルでぼかす処理を行ってみました.

$ convert src.jpg -blur 120x120 out.jpg

計測対象 時間
VM内での実行時間 (データ取得していません)
計算ホスト上での実行時間(5回平均) 59.97秒
VMから計算ホストを利用した実行時間(5回平均) 60.08秒
実行に要するオーバヘッド 0.11秒

オーバヘッドはCPUの計算負荷によらず0.1〜0.3秒程度で,計算ホスト上で直接実行したものとほぼ同等の性能が得られています.

まとめ

・Resource-as-a-Serviceクラウドは,計算資源を効率的に利用できるクラウド形態です.
・SoftLayerでRaaSっぽい動作をするクラウドを作って実験してみました.
・0.3秒程度のオーバヘッドで物理マシンの計算性能をほぼそのまま利用できることを確認しました(文献[2][3]の通り).
・ほら,電気通信大学に入りたくなったでしょう?

参考文献

[1] Orna Agmon Ben-Yehuda, Muli Ben-Yehuda, Assaf Schuster, Dan Tsafrir. "The Resource-as-a-Service (RaaS) Cloud,” in Proceedings of 4th USENIX Workshop on Hot Topics in Cloud Computing, pp. 12-12, May 2012.
[2] Takuma Nakajima, Masato Yoshimi, Hidetsugu Irie, Tsutomu Yoshinaga. "Sharing Computing Resources with Virtual Machines by Transparent Data Access,” in Proceedings of First International Conference on Computing and Networking (CSA ’13), pp.359-364, Dec. 2013.
[3] 中島拓真, 吉見真聡, 入江英嗣, 吉永努, "クラウド環境における透過的データアクセスと計算リソースの動的共有手法,” 電子情報通信学会技術研究報告, pp.91-96, Nov. 2013.