過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案 学籍番号 00-1966-6 日比野秀章 指導教官 千葉滋助教授 1 現在の分散ソフトウェア開発 • 分散コンポーネントが多く利用される – 例: EJB,DCOM,CORBA コンポーネント間の通信は Remote Method Invocation コンポーネント RMI • サーバはRMIを並列処理して性能向上 – 余剰リソースを効率的に活用 – 例: I/O処理の終了待ち 2 RMIの並列処理 • 最高性能を引き出す並列度は? – 軽いメソッド 大きいほどよい • 処理時間の短いメソッド – 重いメソッド 小さい方がよい • 大量のメモリを消費、ディスクアクセスが必要なメソッド – 多種類のメソッドが混在する場合は? • 静的には決まらない • 他のメソッドの処理状況に影響される 3 集中制御は難しい • 関係する処理すべての進捗を見て、 理想的な並列度を算出・適用 – 組み合わせ爆発 – 他のJVM上の処理の進捗は わからない 他のJVM データ ベース 並列度 コントローラ 2 モニタ 3 4 Method-level Queue Schedulingの提案 • メソッドごとに最大並列度を動的に独立に決定 – そのメソッドの進捗状況だけをフィードバック – 他のメソッドの影響は進捗状況から推定する 進捗状況を フィードバック 2 最大並列度 の制御 メソッドA 3 5 メソッドB フィードバックによる最大並列度の決定 Mc 現在の最大並列度 スループットを測定 Mp 前回の最大並列度 Tc 十分なデータが 採取できたか? No Tp Mpでのスループット 最大並列度の小さな方が、ス ループットが高いと判断 Yes (Mc–Mp)(Tc–Tp)≧0 最大並列度 の大きな方 が、スルー プットが高い と判断 Mcでのスループット No Yes 最大並列度を⊿k 増加 最大並列度を⊿k 減少 6 ホスト単位での優先度設定 • 優先キューを作れば、 優先度別に処理順序を管理可能 優先権のないホスト からの呼び出し 優先権のあるホスト からの呼び出し 優先キュー 実行 – 優先度の高いものから順に処理 • 優先権を持つホストからの呼び出しについて、レスポンス時間が 短縮 7 実験 • 単一メソッドだけのフィードバック制御の効果を測定 – 重いメソッドが動いていても、軽いメソッドが圧迫されずに 動く – 実験環境 • Java: version 1.4.2 • サーバマシン – CPU:Intel®Xeon(TM)CPU2.4GHz×2,Memory:2GB, OS:Linux2.4.20,NIC:100BaseTX • クライアントマシン×15台 – CPU:Pentium733MHz,Memory:512MB, OS:Linux2.4.19-Ovl11(VineLinux),NIC:100BaseTX 8 重いメソッドと軽いメソッドが 混在した場合の制御 • 評価方法 – 軽いメソッドを20クライアント • 単純な数値計算 – 重いメソッドを50クライアント • 120KB程度のXMLファイルをパースし、データ探索 を行う – 重いメソッドは、軽いメソッド開始から10秒後に 開始 – 0.1秒間隔で処理数を測定 9 Method-level Queue Schedulingを 使用しない場合 2.0 0.0 処理数 1.0 [処理数 / 100ms] 重いメソッド 0 20 40 60 80 100 処理数 [処理数 / 100ms] 軽いメソッド 0 10 20 30 40 時間時間 [秒] 50 60 0 10 20 30 40 50 60 時間 時間[秒] • 重いメソッドの開始により、軽いメソッドの処理が 滞っている 10 Method-level Queue Schedulingを 使用した場合 0 10 20 30 40 50 60 2.0 1.0 0.0 処理数 [処理数 / 100ms] 重いメソッド 0 20 40 60 80 100 処理数 [処理数 / 100ms] 軽いメソッド 0 時間 時間 [秒] 10 20 30 40 50 60 時間 時間[秒] • 軽いメソッドの処理が滞らない 11 優先度指定による レスポンス時間の短縮 • 評価方法 – 120KB程度のXMLファ イルをパースし、データ 探索を行う • 実験結果 5 10 15 20 25 30 • 対象メソッド 秒 0 – 対象メソッドを常時40ク ライアントが呼び出す 状況下で、優先度の有 無による比較 優先ホスト 通常ホスト – 平均して約1/27に短縮 12 関連技術 • 設定ファイルに制限を明記 – 例: JBoss で使用されている – コネクションの数を指定 • サーバで同時に処理できる数を制限 – 分散コンポーネント毎にインスタンス数を指定 • コンポーネント単位で、同時に処理できる数を制限 ⇒メソッドによる負荷の違いが考慮されていない 13 まとめと今後の課題 • まとめ – Method-level Queue Schedulingの提案と実装 • リモートメソッド単位で動的に並列処理数を制限 – 実験では • 軽いメソッドと重いメソッドを混在させた場合でも、軽い メソッドがある程度動くことを確認した • 今後の課題 – 軽いメソッドが優先されることによる、重いメソッド の性能低下を抑える 14
© Copyright 2024 ExpyDoc