過負荷時のWebアプリケーションの 性能劣化を改善する Page-level Queue Scheduling

Slides:



Advertisements
Similar presentations
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
Advertisements

OWL-Sを用いたWebアプリケーションの検査と生成
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
Webプロキシサーバにおける 動的資源管理方式の提案と実装
ファイルキャッシュを考慮したディスク監視のオフロード
最新ファイルの提供を保証する代理FTPサーバの開発
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
過負荷時のWebアプリケーションの性能劣化を改善する Session-level Queue Scheduling
報告 (2006/9/6) 高橋 慧.
神奈川大学大学院工学研究科 電気電子情報工学専攻
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
Curlの仕組み.
ファイルシステムキャッシュを 考慮したIDSオフロード
ネストした仮想化を用いた VMの安全な帯域外リモート管理
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
第8章 Web技術とセキュリティ   岡本 好未.
J2EEアプリケーションにおける アプリケーションレベルスケジューリング
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
型付きアセンブリ言語を用いた安全なカーネル拡張
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
分散IDSの実行環境の分離 による安全性の向上
他のプロセスに あたえる影響が少ない 実行時ミラーリングシステム
2009年度卒業論文発表 CDNコンテンツサーバの動的負荷分散
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
IaaS型クラウドにおける インスタンス構成の動的最適化手法
リモートホストの異常を検知するための GPUとの直接通信機構
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
インターネットにおける真に プライベートなネットワークの構築
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
非対称リンクにおける ジャンボフレームの性能評価
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
他のプロセスに与える影響の少ない 実行時ミラーリングシステム
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
アプリケーション依存の先読みが可能なO/Rマッピングツール
データベース設計 第7回 実用データベースの運用例 クライアント=サーバシステム(1)
Diffservにおける 絶対的な品質保証法
J2EEアプリケーションにおける アプリケーションレベルスケジューリング
セキュリティ機構のオフロード時の 性能分離
VMMのソフトウェア若化を考慮した クラスタ性能の比較
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
P2P ネットワーク上で 実時間ストリーミングを実現するための 分散制御プロトコルの提案
仮想環境を用いた 侵入検知システムの安全な構成法
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
アクセス集中時の Webサーバの性能に対する OSの影響
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
仮想マシンと物理マシンを一元管理するための仮想AMT
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
GbEにおける TCP/IP の研究について
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
Presentation transcript:

過負荷時のWebアプリケーションの 性能劣化を改善する Page-level Queue Scheduling 東京工業大学 千葉研究室 松沼正浩 千葉滋   佐藤芳樹 光来健一

Webアプリケーションの推移 今までは軽いアプリケーションが主体 現在、重いアプリケーションが増加している 静的なページや、せいぜい単純なCGI 現在、重いアプリケーションが増加している J2EE技術の普及 → 大量にリソースを消費するページが増加中 今後も増え続けると推測 ページ: 静的なもの・・・HTMLなど       動的なもの・・・ServletやJSPなどで生成されるもの

現在のWebアプリケーションサーバ 処理性能を向上させるために、リクエストを並列に処理する アプリケーションの大規模化 軽いページを想定 余剰リソースの効果的な使用 アプリケーションの大規模化 並列処理することで、リソースの競合が発生 メモリ資源を競合すると、GCなどの発生で性能劣化

並列処理による性能向上 軽いページは並列度が高いほど性能が向上 性能向上 総処理時間(ms) リクエスト数 サーバ(Solaris8) : UltraSPARCⅢ750MHz×2, 1GB クライアント(Linux) : PenIII 733 x 15台, 512MB ネットワーク : 100BASE-TX 対象アプリケーション:fib計算 性能向上 リクエスト数

並列処理による性能劣化 重いページを並列処理するとリソース競合が発生する可能性がある 性能低下 総処理時間(ms) リクエスト数 サーバ(Solaris8) : UltraSPARCⅢ750MHz×2, 1GB クライアント(Linux) : PenIII 733 x 15台, 512MB ネットワーク : 100BASE-TX 対象アプリケーション: XMLパース、データ検索 性能低下 リクエスト数

最適な並列度の決定は困難 しかし、以上の話は氷山の一角 考慮すべきこと 重いページや軽いページが混在 ページ毎に最適な並列度が異なる 使用リソースが多岐にわたる ページ間でリソース競合 OSのスケジューラの仕事の外 OSはページの処理内容を認識できない

Page-level Queue Schedulingの提案 ページ毎にスケジューラを用意 並列度をページ毎に独立して制御 Progress-based regulation を応用 リソース競合の判定 進捗状況を フィードバック 2 最大並列度 の制御 ページA リクエスト 3 ページB

ページ毎にスケジューラを独立 ページの差を考慮したスケジューリング可能 最大並列度を個別に制御 制御のためにページ毎にキューを用意 3 重いページには低い並列度を、 軽いページには高い並列度を与えられる OSのスケジューラに依存しない 制御のためにページ毎にキューを用意 最大並列度を超えたら、リクエストをキューイング 優先クライアントの設定が容易 3

Progress-based regulation リソースの種類に関わらず競合の影響はページ生成の進捗に現れる プロセスの進捗状況に応じてリソース割り当てを動的に変更するスケジューリング手法 [SOSP’01] 実行しながらページの進捗を測定 環境の変動をリアルタイムに取得 進捗状況の悪化から、リソース競合を判定 あらゆるリソース変動はページ毎の進捗で判定可能 ページ間の干渉も検出可能

最大並列度の小さな方が、スループットが高いと判断 最大並列度の動的な決定 Mc : 現在の最大並列度 Mp : 前回の最大並列度 Tc : Mcでのスループット Tp : Mpでのスループット スループットを測定 指定した回数のデータを           採取できたか? No   最大並列度の小さな方が、スループットが高いと判断 Yes No (Tc–Tp) / (Mc-Mp)≧0 最大並列度の大きな方が、スループットが高いと判断 Yes 最大並列度を⊿k 増加 最大並列度を⊿k 減少

実験 リソース競合の判定、並列度制御の効果を測定 優先クライアントの処理性能の測定 単一ページだけのフィードバック制御の効果を測定 実験環境 ページ間の干渉を減少できるか 軽いページと重いページを同時に動かして、その影響を測定 実験環境 サーバ CPU:UltraSPARCⅢ750MHz×2                    メモリ:1024MB OS:Solaris8 NIC:100BaseTX クライアント15台 CPU:Pentium 733MHz NIC:100BaseTX   メモリ:512MB OS:Linux2.4.19-Ovl11(VineLinux)

重いページの性能改善 ページ内で発生する競合を検知し解消 処理性能が約30%程度向上 対象ページ 34KB程度のXMLファイルをパースしてデータ検索を行うページ 総処理時間(ms) 性能向上 リクエスト数

クライアントの優先度設定 キューの中身を入れ替えれば、簡単に処理順序の変更が可能 セッション処理などで既に開始済みのクライアントの処理を優先することが可能 セッション処理開始者を優先的に処理することで、効率良くクライアント数を減らしていける

優先度設定による レスポンス時間の短縮 最低 最高 平均 実験方法 対象ページ 実験結果 本手法 なし 優先権 あり 対象ページを常時50リクエスト処理している状況下で、優先度の有無による比較 対象ページ XMLファイルをパースしてデータ検索を行うページ 実験結果 レスポンスが平均で約30分の1程度に短縮 本手法 なし 優先権 あり 最低 41,260   (ms) 25,550 1,730 最高 26,370 23,060 640 平均 37,500 24,540 1,140

ページが混在する際の制御 ページ間の干渉の検知し解消できるかを検証 実験方法 軽いページへ30クライアント 重いページへ80クライアント 単純なHTML作成ページ 重いページへ80クライアント XMLファイルをパースし、データ検索を行う 10ms間隔で処理数を測定 重いページは、軽いページの処理が開始されてから10秒後に開始

Page-level Queue Schedulingを使用しない場合 処理リクエスト数 処理リクエスト数 軽いページ 重いページ 重いページの処理開始 重いページの処理開始 経過時間(ms) 経過時間(ms) 重いページの処理により、軽いページの処理が滞っている。

Page-level Queue Schedulingを使用した場合 処理リクエスト数 処理リクエスト数 軽いページ 重いページ 重いページの処理開始 重いページの処理開始 経過時間(ms) 経過時間(ms) 軽いページの処理が滞らない。

関連研究 Haboob しかし、ページ毎の制御はサポートされていない SEDA (Staged Event-Driven Architecture)に基づいたHttpServer リクエスト処理をいくつかのステージに分ける 例:HttpParse, PageCache, etc ボトルネックステージを発見し、リソースの優先割り当てやリクエストの破棄を行う しかし、ページ毎の制御はサポートされていない

まとめ Page-level Queue Schedlulingの提案 ページ単位で動的に並列度を制限 リソース競合の判定は、一つのページの進捗だけを見ることでも十分検知できる クライアントに優先度を設定できる 実験より、重いページと軽いページが混在して状況でも軽いページのレスポンスを一定量保てる

今後の課題 より現実的なケースでの実験 制御アルゴリズムの強化 今回は提案している手法の有効性を検証するために単純なケースで実験 現在の実装では、自身のページ性能を上げるためにスケジューラ間で余剰リソースを取り合う ページ間のリソース管理を強化