IaaS型クラウドにおける インスタンス構成の動的最適化手法 九州工業大学大学院 情報工学府 情報創成工学専攻 14675016 三宮浩太
IaaS型クラウドにおけるコスト削減 ユーザにインスタンス(VM)を提供 インスタンス構成を最適化してコスト削減 インスタンスの台数・タイプなどに対して課金 インスタンス構成を最適化してコスト削減 常に必要最低限のインスタンスだけを利用 インスタンスに必要な性能は変化し続ける インターネット 経由でアクセス Instance1 Instance2 Instance 3 価格例 : Amazon EC2 T2シリーズ Web サーバ App サーバ DB サーバ モデル CPU Mem (GiB) 価格($/hr.) t2.micro 1 0.013 t2.small 2 0.026 t2.medium 4 0.052 t2.large 8 0.104 インスタンスに 求められる性能 朝 昼 夕
従来のインスタンス構成の最適化 スケールイン・スケールアウト 負荷に応じてインスタンスの台数を増減 インスタンスが1 台になるとそれ以上減らせない サービス提供のために最低でも1台はインスタンスが必要 サービスがほとんど使われていなくても1台分の課金 Instance 1 t2.large Application 低負荷時 Instance 1 t2.large Application Instance 2 高負荷時 スケールアウト スケールイン
1台のインスタンスに対する最適化 スケールアップ・スケールダウン 負荷に応じてインスタンスタイプを切り替え 最小タイプまでしか性能を下げられない インスタンス単位でのコスト削減には限界がある 性能切り替え時にサービスのダウンタイムが発生 アプリケーションのデータを移動して再起動 Instance 2 t2.large Application CPU RAM Instance 1 t2.micro Application CPU RAM スケールアップ スケールダウン
アプリケーション統合による最適化 アプリケーションを1台のインスタンスに集約 トータルコストをさらに削減可能 統合・分離時にダウンタイムが発生 アプリケーション間の隔離が弱まる 各アプリケーションの脆弱性が他のアプリケーションに影響 Instance 1 t2.micro Instance 1 t2.micro Instance 2 t2.micro Instance 3 t2.micro 統合 Application 1 Application 2 分離 Application 1 Application 2 Application 3 Application 3
提案:FlexCapsule 各アプリケーションを軽量VMの中で動作させることでインスタンス構成を柔軟に最適化 最適化を行う際のダウンタイムを削減 VM間の強い隔離を利用 アプリケーション間のセキュリティの低下を防止 提案手法 従来 Instance App VM 1 App VM 2 Application1 Application1 Application 2 Application 2
FlexCapsuleを用いた最適化 migration 統合・分離 fork & migration App VM App VM exit Instance 2 Instance 2’ App VM App VM exit スケールイン・スケールアウト Instance 1 App VM スケールアップ・スケールダウン migration App VM Instance 3’ App VM Instance 3 App VM migration App VM 統合・分離
アプリケーションVM (App VM) インスタンス (VM)内で動作するVM ネストした仮想化を利用 単一アプリケーションをFlexCapsule OS上で実行 軽量なライブラリOS リソース消費量・オーバーヘッドが小さい Mini-OSおよびOSvをベースに開発 Instance App VM 1 App VM 2 Application 1 Application 2 FlexCapsule OS FlexCapsule OS 仮想化ソフトウェア
マイグレーションのサポート FlexCapsule OS自身がサスペンド・レジューム処理を行う必要がある App VM App VM マイグレーション時にデバイスドライバとの接続を切断してサスペンド マイグレーション後に再接続してレジューム 移動元Instance 移動先Instance App VM FlexCapsule OS App VM FlexCapsule OS ネットワーク デバイス ネットワーク デバイス 仮想化ソフトウェア 仮想化ソフトウェア
OSサーバ App VM内では実現できない機能を提供 アプリケーションのfork App VMへのパケットの転送 OSサーバ App VM listen/close関数の実行時に転送ルールを追加・削除 OSサーバ App VM App VM’ FlexCapsule OS 要求・返り値 fork バックエンド fork関数 ポート番号 ソケット バックエンド listen/close 関数
ネットワーキング NAPTを用いてApp VMのサービスを外部に提供 VPNを用いたマイグレーション透過なNAPT forkしたApp VMにはラウンドロビンで分配 VPNを用いたマイグレーション透過なNAPT App VMを別のインスタンスに移動後も元のグローバルIPアドレスでアクセス可 Instance 1 (131.206.0.2) Instance 2 VPN NAPT :80 :80 :8080 :8080 App VM 1 192.168.1.2 Webサーバ App VM 1’ 192.168.1.3 Webサーバ App VM 2 192.168.1.4 Appサーバ
実験 FlexCapsuleの有効性を確認する実験を行った インスタンス構成の最適化の効果を確認 fork関数の性能測定 ダウンタイム fork関数の性能測定 アプリケーション性能を測定 物理マシン CPU Intel Xeon 3.70GHz×4 メモリ 16GB 仮想化ソフトウェア Xen 4.2.4 管理VMのOS Linux 3.13.0 インスタンス CPU 2 vCPU メモリ 2GB 仮想化ソフトウェア Xen 4.2.4 管理VMのOS Linux 3.13.0 App VM CPU 1 vCPU メモリ 4〜256MB OSv v0.21 Mini-OS Xen 4.2.2版
アプリケーションの統合・分離 統合・分離時のダウンタイムを測定 統合されたApp VMを3台のインスタンスに分離 マイグレーション中のダウンタイムは短い App VMはLinux VMよりも短い 統合されたApp VMを3台のインスタンスに分離 アプリケーション性能が1.9〜2.7倍に向上 統合・分離により性能とコストのトレードオフがとれる
スケーリングによる最適化 スケールイン・スケールアウト スケールアップ・スケールダウン インスタンスを1台から2台に増加 アプリケーションの性能が2倍に向上 スケールアップ・スケールダウン インスタンスの仮想CPUを1つから2つに増加 App VMを用いても最適化の効果が得られる
fork関数の性能測定 fork関数の実行にかかる時間を測定 App VMのメモリサイズにわずかに比例 Xenの標準機能を組み合わせるより最大36倍高速
アプリケーションの性能比較 App VMとLinux VMでの実行性能を測定 App VMの方が高性能 仮想化のオーバーヘッドをライブラリOSにより低減 ネットワークとメモリ処理の最適化 単一アドレス空間の利用 ■ App VM (OSv) ■ Linux VM
関連研究 Xok/ExOS [Kaashoek et al. ’97] Graphene [Tsai et al. ‘14] Exokernel上でBSD互換のライブラリOSを提供 マイグレーションは考えられていない Graphene [Tsai et al. ‘14] Linux互換のライブラリOSでマルチプロセスを実現 ホストOSの脆弱性の影響を受けやすい Zap [Osman et al. ’02] OSレベルの仮想化でアプリケーションをマイグレーション アプリケーション間の隔離は弱い
まとめ クラウドにおけるインスタンス構成の動的最適化を可能にするシステムFlexCapsuleを提案 今後の課題 各アプリケーションを軽量なApp VM内で実行 VMマイグレーションによるダウンタイム削減 VM間の強い隔離によるセキュリティ確保 インスタンスにまたがる実行環境の構築 今後の課題 FlexCapsule OSとOSサーバへの機能追加 プロセス間通信、exec関数など アプリケーション性能の向上 ネストした仮想化のオーバーヘッドの低減