J2EEアプリケーションにおける アプリケーションレベルスケジューリング

Slides:



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

OWL-Sを用いたWebアプリケーションの検査と生成
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
シーケンス図の生成のための実行履歴圧縮手法
ファイルキャッシュを考慮したディスク監視のオフロード
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
過負荷時のWebアプリケーションの性能劣化を改善する Session-level Queue Scheduling
分散コンピューティング環境上の Webリンク収集システムの実装
早稲田大学大学院理工学研究科 情報科学専攻修士2年 後藤滋樹研究室 坂本義裕
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
通信処理のカーネル内競合を 検出するアスペクト指向 カーネルレベルロガー
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
ファイルシステムキャッシュを 考慮したIDSオフロード
AspectScope によるアスペクトとクラスのつながりの視覚化
ネストした仮想化を用いた VMの安全な帯域外リモート管理
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
アスペクト指向プログラミングを用いたIDSオフロード
アスペクト指向プログラミングと Dependency Injection の融合
Flyingware : バイトコード変換による 安全なエージェントの実行
サーバ負荷分散におけるOpenFlowを用いた省電力法
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
過負荷時のWebアプリケーションの 性能劣化を改善する Page-level Queue Scheduling
J2EEアプリケーションにおける アプリケーションレベルスケジューリング
Occam言語による マルチプリエンプティブシステムの 実装と検証
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
DiffServにおけるクラスの新しい設定方法の提案
Xenによる ゲストOSの監視に基づく パケットフィルタリング
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
アスペクト指向言語による 例外処理の記述方法の改善
2009年度卒業論文発表 CDNコンテンツサーバの動的負荷分散
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
IaaS型クラウドにおける インスタンス構成の動的最適化手法
仮想マシン間プロセススケジューリングの 実環境への適用にむけて
リモートホストの異常を検知するための GPUとの直接通信機構
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
実行時情報に基づく OSカーネルのコンフィグ最小化
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
活性化のタイミング制御の実装を分離記述可能な分散動的アスペクト指向言語
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
既存Javaプログラム向け 分散化支援システムの開発
豊富な情報を基にした pointcut を記述できるアスペクト指向言語
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
アスペクト指向言語のための 独立性の高いパッケージシステム
VMMのソフトウェア若化を考慮した クラスタ性能の比較
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
アクセス集中時の Webサーバの性能に対する OSの影響
統合開発環境によって表現された 言語機構によるコードのモジュール化
同期処理のモジュール化を 可能にする アスペクト指向言語
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
開発者との対話を活かした 横断的構造の表現
強制パススルー機構を用いた VMの安全な帯域外リモート管理
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Presentation transcript:

J2EEアプリケーションにおける アプリケーションレベルスケジューリング 東京工業大学大学院 情報理工学研究科 数理計算科学専攻 千葉研究室所属 04M37254 日比野秀章 2006/2/6 修士論文

過負荷時のJ2EEサーバ 過負荷が原因で近年起きた事件 過負荷になると重要な処理が遅延 震度計の増加に伴う負荷の増大で、データ送信に遅れ 地震計ネットワークシステム 震度計の増加に伴う負荷の増大で、データ送信に遅れ 当初の予想より負荷が増大 過負荷になると重要な処理が遅延 震度の高い地点のデータも遅延 2006/2/6 修士論文

過負荷を改善する一般的な手法 一般的な手法 商用システムでは、正常動作と収益が密接 ハードウェアの追加 アプリケーションの抜本的改修 見積もりが困難、費用がかかる アプリケーションの抜本的改修 軽量化、クラスタ化、多階層化(負荷分散) 検証時間、改修費用がかかる 商用システムでは、正常動作と収益が密接 対処の遅れは、大きな損失につながる 2006/2/6 修士論文

過負荷に対する安価な対処法 QoS 制御を後から追加して対処 過負荷時のQoSの改善に有効な制御 アドミッションコントロール リクエストの種類やサーバの状態に応じて、リクエストの受付、実行を制限 高負荷時にリクエストの受付を拒否 リクエストの処理内容への影響は無い 過負荷時のQoSの改善に有効な制御 スケジューリングの制御 リソースの割り当て方(OSのスケジューリングポリシー)がリクエスト処理に影響 [Hibino et al. DSN Workshop’05] 2006/2/6 修士論文

制御を追加する際の要件 アプリケーションのコードの変更を避ける OS・ミドルウェアの大幅な変更を避ける 粒度の細かいスケジューリングを行なう 動いているロジックを壊す危険性を縮小 OS・ミドルウェアの大幅な変更を避ける 検証時間を短縮 E.g. リアルタイム機能を持つOS・ミドルウェアに変更 粒度の細かいスケジューリングを行なう 長時間かかる処理も存在 リクエスト処理の途中で制御できるべき 2006/2/6 修士論文

アスペクト指向プログラミングを用いた アプリケーションレベルスケジューリング(ALS) アプリケーションレベルでスケジューリング OS・ミドルウェアの変更不要 アスペクトを利用してJ2EEアプリケーションとスケジューラを結合 アプリケーションのコード書き換えが不必要 スケジューラを再利用 きめ細かいスケジューリングが可能 短い間隔でスケジューラを呼出す 様々な位置からスケジューラを利用 アプリケーションの情報を利用 アスペクト アプリ スケジューラ 2006/2/6 修士論文

ALSアスペクト Fooクラス アスペクト Schedulerクラス ポイントカット アドバイス スケジューリング制御を行う位置 アドバイス スケジューラのメソッドの呼び出し GluonJ[Chiba et al. ’05]を利用 XMLを用いた記述 <glue> <pointcut-decl> <name> point </name> <pointcut> withincode(void Foo.foo()) ANDAND call(void Bar.bar()) </pointcut> </pointcut-decl> <behavior> <around> Scheduler.beforeB(); $_ = $proceed($$); Scheduler.afterB(); </around> </behavior> </glue> void foo(){ Bar.bar(); } void beforeB(); void afterB(); Fooクラス アスペクト Schedulerクラス 2006/2/6 修士論文

ALSスケジューラ アプリ アプリケーションのスレッドの管理 実行可能フラグの管理 Javaで擬似的なスレッドスケジューリング スケジューラ スレッド1 スレッド2 スレッド3 開始 スケジューリング の変更要求 スレッド1 true スレッド2 true false アプリ スレッド3 true アプリケーションのスレッドの管理 実行可能フラグの管理 アプリケーションスレッドの登録・削除 スレッド実行の制御 スケジューリングの変更 Javaで擬似的なスレッドスケジューリング 外部からのスレッド操作が推奨されていない 終了 2006/2/6 修士論文

ポイントカットの自動決定 呼び出し位置を人手で探すのは面倒 プロファイリング情報 間隔が長くなり過ぎないように呼び出し位置を選択 呼び出し回数が2回 呼び出し回数が1回 呼び出し位置を人手で探すのは面倒 プロファイリング情報から呼び出し位置を自動決定 プロファイリング情報 制御対象処理のみを単独で実行して取る 制御対象処理の実行中に呼ばれるすべてのメソッドの名前と呼び出し時刻 間隔が長くなり過ぎないように呼び出し位置を選択 methodA() methodB() methodC() methodD() methodE() methodF() methodG() methodH() methodI() methodJ() methodK() (n-1)T methodC() nT methodF() methodC() (n+1)T methodJ() 時刻 2006/2/6 修士論文

スケジューラ適用の流れ 1. スケジューラ を作成 2. アスペクト を作成 3. プロファイリング 4. 呼び出し位置を 自動決定 1. スケジューラ   を作成 2. アスペクト   を作成 3. プロファイリング 4. 呼び出し位置を   自動決定 Jar 5. J2EEサーバに   配置 J2EE アプリケーション 6. weave GluonJ J2EEサーバ 2006/2/6 修士論文

河川水位監視システム 収集サーバ 管理サーバ クライアント数増加により、管理サーバで欠測 収集サーバ 水位収集 全国各地に設置 全国の河川に設置された水位計より情報収集 管理サーバ 収集サーバから定期的に水位情報を収集 DB・メモリに格納 水位情報の閲覧 クライアント数増加により、管理サーバで欠測 一定時間内でのデータ取得に失敗 水位情報の取得 2006/2/6 修士論文 管理サーバ

追加したリクエストスケジューリング 定期的な水位情報の取得処理を即座に優先 水位取得処理の実行中は、グラフ生成処理の並列処理数を1に制限、それ以外は40に制限 グラフ生成処理の途中で頻繁にスケジューラを呼び出し、できるだけ早く停止させる 実行可能フラグがfalseの場合、停止 スケジューラ Waitキュー Runキュー 2006/2/6 修士論文

追加したスケジューリングのプログラム グラフ生成 水位収集 フラグの確認位置(自動生成) <pointcut-decl> <name> lowImportant </name> <pointcut> execution(void PlaceChartCreatePseudActionImpl.execute(..)) </pointcut> </pointcut-decl> <name> highImportant </name> <pointcut> execution(void CollectorImpl.doObtain()) </pointcut> <name> checkpoint </name> <pointcut> (withincode(Range CategoryPlot.getDataRange(ValueAxis)) ANDAND call(Range Range.combine(Range.Range))) OROR : グラフ生成 水位収集 フラグの確認位置(自動生成) 2006/2/6 修士論文

追加したスケジューリングのプログラム アスペクト スケジューラ <behavior> <pointcut> lowImportant </pointcut> <around> PriorityPolicy.beforeLowPriority(); $_ = proceed($$); PrioirtyPolicy.afterLowPriority(); </around> </behavior> <pointcut> highImportant </pointcut> PriorityPolicy.beforeHighPriority(); PriorityPolicy.afterHighPriority(); <pointcut> checkpoint </pointcut> <before>PriorityPolicy.checkpoint();</before> Public class PriorityPolicy { public static void beforeLowPriority() { controller.enter(Thread.currentThread()); } public static void afterLowPriority() { controller.exit(Thread.currentThread()); public static void beforeHighPriority() { controller.schedule(1); public static void afterHighPriority() { controller.schedule(40); public static void checkpoint() { controller.checkpoint( Thread.currentThread()); 2006/2/6 アスペクト 修士論文 スケジューラ

実験 ワークロード 制御方式 グラフ表示ページに対し、リクエストを常に40 水位収集は15秒間隔 自動決定アルゴリズム 提案方式(ALS) 呼び出し間隔10ms、出現頻度1回 制御方式 提案方式(ALS) 処理途中で制限できる 並列処理数の制限 40⇒1 従来のアドミッションコントロール(AC) 処理が終わった時点で制限される 制御なし(NC) 実験環境 サーバホスト×2 CPU: 3.06GHz×2 メモリ: 2GB クライアントホスト CPU: 1.53GHz メモリ: 1GB 2006/2/6 修士論文

水位収集にかかる時間 制御なし(NC) 提案手法(ALS) AC 毎回欠測 毎回5秒程度 ALSより時間がかかる ばらつきが大きい 45秒の時点で欠測 欠測 2006/2/6 修士論文

追加した制御によるオーバーヘッド グラフ生成処理の処理数(1分) オーバーヘッドはそれほど大きくない ALSはACより2%大きいだけ 水位収集処理をオフ オーバーヘッドはそれほど大きくない ALSはACより2%大きいだけ 決定アルゴリズムの効果 4% 6% 2006/2/6 修士論文

グラフ生成処理用の 動作しているスレッド数の変化 平均12.0秒 平均1.9秒 AC ALS 2006/2/6 修士論文

選択アルゴリズムのパラメータの影響(1/2) DB javax パラメータにより、呼び出し方がどう変化するか調べた パラメータ 呼び出し間隔 候補にするメソッドの出現頻度 実験で利用した設定 呼び出し間隔10ms 呼び出し回数1回 選択された呼び出しが実行された時間 2006/2/6 修士論文

選択アルゴリズムのパラメータの影響(2/2) 6%減 呼び出し間隔を短くすると 呼び出し箇所の増加 並列処理数の制限にかかる時間の減少 水位収集時間の減少 オーバーヘッドの増加 10%のオーバヘッドは大きい 水位収集にかかる時間(秒) 6% 14% 1分当たりの処理数 2006/2/6 修士論文

関連研究 Capriccio [Behren et al. ’03] Gatekeeper [Elnikely et al. ’04] アプリケーションに応じたスレッドスケジューリング スレッドが処理するサービスの区別が困難 Gatekeeper [Elnikely et al. ’04] プロキシをサーバマシン間に挿入して、リクエストスケジューリング サーバ内で実行途中での制御が不可 Re-QoS [Tesanovic et al. ’05] QoS制御の追加にアスペクトを使用 リクエスト単位のアドミッションコントロールのみ 2006/2/6 修士論文

まとめ 過負荷時のアプリケーションサーバの挙動を分析 [Hibino et al. DSN Workshop’05] OSのスケジューリングポリシーがリクエスト処理に大きく影響 アプリケーションレベルスケジューリングを提案 [日比野ら DSW’06] アプリケーションレベルでスケジューリング アスペクトを用いてQoS制御を追加 きめ細かい制御 河川水位監視システムに提案手法を適用 過負荷時にQoS要求を満たす 2006/2/6 修士論文

御清聴ありがとうございます 2006/2/6 修士論文