770 likes | 885 Views
広域並列分散プログラミングのための高性能デッドロックフリーオーバーレイ. 田浦研究室 076426 弘中健. 広域環境における並列分散計算. 複数のクラスタで並列計算に使う機会が増加 WAN のバンド幅増加 複数のクラスタを WAN で接続 した環境が普及 Grid5000( フランス ), DAS-3( オランダ ), InTrigger ( 日本 ) 並列分散計算の増加 並列ライブラリを用いたアプリ 組み合わせ最適化問題 モデルチェッキング データインテンシブなアプリ 大量のデータ解析を並列化. WAN. Cluster.
E N D
広域並列分散プログラミングのための高性能デッドロックフリーオーバーレイ広域並列分散プログラミングのための高性能デッドロックフリーオーバーレイ 田浦研究室 076426 弘中健
広域環境における並列分散計算 • 複数のクラスタで並列計算に使う機会が増加 • WANのバンド幅増加 • 複数のクラスタをWANで接続した環境が普及 • Grid5000(フランス), DAS-3(オランダ), InTrigger(日本) • 並列分散計算の増加 • 並列ライブラリを用いたアプリ • 組み合わせ最適化問題 • モデルチェッキング • データインテンシブなアプリ • 大量のデータ解析を並列化 WAN Cluster
広域環境上の並列分散アプリ用通信基盤の要件広域環境上の並列分散アプリ用通信基盤の要件 NAT/firewall • WANの接続性の解決 • NAT, Firewall • スケーラビリティ • 接続数を減らす • 通信性能の向上 • WAN/LAN上の コンテンションを防ぐ Too many… Contention! オーバレイが有効な手法である
広域環境上オーバレイ • アプリ・レベルで独自のネットワークを構築 • UDP/TCPを用いる • エンドホストも通信を転送 • 直接繋がっていなくても 通信を実現 通信は転送 Cluster firewall Cluster
本研究の貢献 • 広域並列分散計算の通信を効率的に行うオーバレイ • 低オーバーヘッドな転送 • メモリオーバフロー・デッドロックを起こさない • 不均一な実ネットワークに自律的に対応するルーティング • 大規模なWAN環境で実装・実証した • 4~7クラスタ:最大291ノード • 集合通信でオーバレイなしより高性能 • 分散オブジェクト指向プログラミングライブラリ • 本発表では省略させて頂きます • 目標:提案するオーバレイを通信基盤とした 広域環境における効率的な並列・分散プログラミング環境を提供
提案オーバレイの応用 • 並列・分散計算ライブラリ • MPI, 分散共有メモリ • 並列・分散プログラミング言語/フレームワーク • 分散オブジェクト (JavaRMI), ワークフロー(MapReduce, 分散Make) • 分散システムの通信基盤 • 分散ファイルシステム • P2Pシステム (DHT, ファイル転送) Parallel and Distributed Applications Programming Languages, Libraries, Frameworks, Middle-wares Application-level Overlay LAN/WAN, NAT, firewall, scalability…
問題説明 • 序論 • 問題説明 • 関連研究 • 提案手法 • 実験・評価 • まとめ
広域オーバレイ上の通信の問題 • 広域環境では遅延・バンド幅が不均一 • 100[us] ~ 100[ms] • 10 [Mbps] ~ 10[Gbps] • 単純な転送手法では不均一性による問題が発生する • 中継ノードのメモリオーバフロー • 通信のデッドロック 10 [Gbps] 10 [Mbps] 10 [Gbps] Narrow Link
問題1:メモリオーバフロー • 中継ノードがバッファのメモリ容量を考えずにパケットを受信するとメモリオーバフローをおこす • 中継ノードは有限バッファが必要 src dst 1Gbps 1Gbps WAN Link
問題2:通信のデッドロック • パイプライン転送 • 各ノードは有限バッファが一杯になったら受信をやめる • 転送が待たされ、中継ノードを用いてフロー制御 • 通信がデッドロックしてしまう packet buffer FULL! src dst フロー制御
通信デッドロックの例 • 複数の転送が混在する場合: • 次に使いたいリンクが別の転送に占有され、転送が待たされる • 例:4つの転送 • Link A → Link B • Link B → Link C • Link C → Link D • Link D → Link A • 転送は互いに待ち合う ⇒デッドロック Link: A Link: D Link: C Link: B
通信デッドロックの本質 • リンク間の依存関係に サイクルが発生 • デッドロックフリールーティング が必要 • リンク間の依存関係に サイクルが起きないように 使える経路に制約を課す Link: A Link: D Link: B Link: C
問題3:局所性を考慮したルーティング • 既存のデッドロックフリールーティング手法は実ネットワークの考慮をしない • バンド幅・遅延のロスが大きくなってしまう • 広域環境のネットワーク情報を考慮した ルーティングが必要
関連研究 • 序論 • 問題説明 • 関連研究 • 提案手法 • 実験・評価 • まとめ
既存の広域オーバレイ • 転送時のメモリ、デッドロックを考慮した実装は少ない • RON (Resilient Overlay Network) [Andersen et al. ‘01] • 全体全でつなぐUDPオーバレイ • UDPインターフェイスを提供 • そもそも通信の信頼性はなく、ユーザ任せ • DiskRouter[Kola et al. ‘03] • ファイル転送用のオーバレイ • バッファの使用率が閾値を超えると受信中断 • デッドロックの恐れがある
フロー制御を実装する手法 src dst • UDPオーバレイ + End-Endのみでフロー制御 • [Kar et al. ’01] • 各パケットにACK • ACKは経路上リンクの使用状況をpiggyback • Spines : [Amir et al. ‘02] • 全リンクの混雑情報を定期的に交換 • 経路上リンクの使用状況を考慮して送信レートを調節 • 利点: • 中継ノードの問題を解消 • 欠点: • オーバーヘッドが大きい:ユーザで「TCPの再実装」 • パラメータチューニングが困難:1 GigabitEther でも約300[Mbps] feedback UDP UDP UDP 本研究: TCPを使い、中継ノードを用いたフロー制御 +デッドロックを防ぐ手法
デッドロックフリールーティング • 通信にデッドロックが起きないように使える経路に制約をかす • 広域オーバレイに良く適用したものはない • 並列コンピュータのインターコネクト • 特殊なトポロジーを想定 • [Antonio et al. ’94] • [Dally et al. ’87, ‘93] • 一般なグラフに適用可: • 実ネットワークは未考慮 • 実ネットワークにそぐわない経路の制約 • Up/Down Routing [Schroeder et al. ‘91] • Ordered-link Routing [Chiu et al. ‘02] • L-Turn Routing [Koibuchi et al. ‘01]
提案手法 • 序論 • 問題説明 • 関連研究 • 提案手法 • 実験・評価 • まとめ
提案手法の概要 • 基本的な提案 • TCPでオーバレイを構築 • デッドロックフリーにする経路制約 • 経路を計算 • ネットワーク情報を用いた最適化 • 局所性を考慮したオーバレイの構築 • 局所性を考慮したデッドロックフリー制約 • 転送スループットを考慮した経路計算
オーバレイの転送方法 • オーバレイのリンク: • TCP接続を使うことでTCPのフロー制御を活用 • データの分割: • 送信されるデータは一定のパケットに分割 • 信頼性のある通信を実現: • srcからdstまでFIFOでパイプライン転送 • 中継ノードはパケットを落さない • 転送方法: • バッファに余裕がある限り受信、一杯になったら受信を中断 • 中継ノードを用いたフロー制御 • 直接繋いだTCPが実現するスループットを得る packet buffer FULL! src dst TCP TCP TCP
デッドロックフリールーティングUp/Down Routing [Schroeder et al. ‘91] DOWN • ルートノードから幅優先探索 • 昇順にIDを振る • IDによってリンク方向を定義 • IDが小さいノードの方向 • エッジのたどり方を定義 • UP: リンク方向に沿う • DOWN:リンク方向に逆らう • 経路制約: • DOWNからUPは禁止 i j i > j UP DOWN 0 UP 2 DOWN UP 1 6 UP UP 5 DOWN DOWN 4 3 実ネットワークと独立に決定 DOWN Down → Up 禁止
提案手法の概要 • 基本的な提案 • TCPでオーバレイを構築 • デッドロックフリーにする経路制約 • 経路を計算 • ネットワーク情報を用いた最適化 ノード間遅延、接続リンクバンド幅情報 • 局所性を考慮したオーバレイの構築 • 局所性を考慮したデッドロックフリー制約 • 転送スループットを考慮した経路計算
局所性を考慮したオーバレイの構築 [Saito et al. ‘07] • 「遠いノードへは回り道しても影響は少ない」 • 通信性能を維持する様に接続選択 • 遠いノードとは低い確率 • 近いノードとは高い確率 • 各ノードのアルゴリズム • すべてのピアを低遅延順にソート • [d^k, d^k+1 )の区間でd個のピアを選択し接続 • ノード数Nに対してNlogNの接続を確立する 小さな影響 大きな影響 低遅延 d d^2 d^3
Up/Downルーティングの改善 • 幅優先探索のID付け • マルチクラスタ環境で問題 • UP→DOWNする経路増えてしまう • クラスタ内で小さいIDなノード • UP方向リンクは高遅延WANリンク • UP→DOWNの経路は WAN経由になってしまう 0 UP DOWN 1 2 3 5 4 cluster
提案Up/Downルーティング 0 • 深さ優先探索のID付け • 低遅延のピアを優先的に探索 • Rationale • UP→DOWNの経路を減らす • クラスタ内の経路はすべて UP or DOWNで辿れるようにする 1 3 4 UP DOWN 5
デッドロックフリー制約の比較 • クラスタ内の経路を禁止する制約を削減 0 0 UP DOWN DOWN 1 1 2 5 DOWN 3 2 5 4 4 3 cluster cluster Locality-aware DFS-updown BFS-updown
ルーティングメトリック • 経路のスループットに重点 • 経路上のリンクバンド幅逆数の和 B1 B2 B3 src dst
各ノードの転送手続き(1/2) • 各TCP接続に以下を定義 • 有限な送信バッファ • 1 packetの受信バッファ • 転送の手続き • 受信バッファに1packetに受信 • 送信バッファに移す • 送信バッファが一杯だと それ以上受信しない Send buffer FULL! Recv buffer
各ノードの転送手続き(2/2) • 複数の転送が混雑した同じリンクに競合 • 交互にpacketを転送する • デッドロックフリールーティング • デッドロックが生じることはない
実験・評価 • 序論 • 問題説明 • 関連研究 • 提案手法 • 実験・評価 • まとめ
Deadlock-freeルーティングのオーバーヘッド • Deadlock無考慮の場合とオーバーヘッドを検証 • ordered-link • Up/Down • 提案Up/Down • シミュレーション • 13実クラスタ (515ノード) • オーバレイ接続密度を変化 • 全経路のホップ数 • 全経路のバンド幅
全経路のホップ数 Average Hops Max. Hops Deadlock無考慮 と差がない Deadlock無考慮 と差がない • 平均ホップ数はほとんど差がない • 最長ホップ数でも、提案Up/Downは同等な経路長
経路バンド幅の最低比率 疎なオーバレイでも高バンド幅 • 他のdeadlock-free手法は無駄なWAN経路がある • 提案手法ではWAN経路を避けるので本来のバンド幅が得られる
Deadlock-free制約の通信遅延への影響 • 実環境:7クラスタ (170ノード) • 全経路の遅延を測定 • 直接通信と比較 • 接続密度: 9% • Deadlock-free制約の検証 • メトリックは遅延
直接 vs. オーバレイ遅延分布 Up/Down はLAN内ペアもWAN経由 提案Up/Down は直接通信と同等 • Up/Downは制約のためクラスタ内通信もWANを経由している
転送スループットの評価 • 幅広い環境で高スループット出ることを検証 • 1 Gigabit Ethernet LAN (940 [Mbps]) • Myrinet 10G LAN (7 [Gbps]) • メッセージサイズを変化
転送スループットの評価 GbEクラスタ (940[Mbps]) Myrinetクラスタ (7[Gbps]) • 数ホップ転送しても直接TCPソケットに近い性能 • Myrinetに関しては4.5[Gbps]しか得られなかった
集合通信性能の検証 • 提案オーバレイを用いて集合通信 • デッドロックフリー制約でも高性能 • 集合通信 • Gather, All-to-All • メッセージサイズ・接続密度を変化させて評価 • 環境 • LAN: 1-switch (36nodes), 階層的 (177 nodes) • WAN: 4 clusters (291 nodes)
集合通信:Gather時間 1-switch クラスタ (36ノード) • switchで衝突: • Packet-loss • TCP再送: • 200 [ms] loss • 疎なオーバレイ: • 衝突を緩和 TCP RTO: 200 [ms] による時間の開き ポートで衝突
集合通信:Gather性能比較 衝突回避に よる効果 4 クラスタ (291 ノード)
集合通信:All-to-All • 大規模な環境 • ボトルネックがある • 階層的なクラスタ • 177ノード • MPICH(直接通信)と比較 • WANで接続された4クラスタ • 291ノード 4Gbps 4Gbps 1Gbps Cluster Cluster 1Gbps 1Gbps 1Gbps 1Gbps 1Gbps Cluster Cluster
集合通信:All-to-All性能比較 1 クラスタ (177 ノード) 4 クラスタ (291 ノード) • 階層的な大きなクラスタではスイッチでのパケットロスが多くなる • マルチクラスタ環境はWANのパケットロスが主要項になる
まとめ • 序論 • 問題説明 • 関連研究 • 提案手法 • 実験・評価 • まとめ
まとめ • 広域並列分散計算用オーバレイを提案 • 不均一な広域環境での転送問題を解決 • メモリアウト・デッドロックを起こさない • 実ネットワークを考慮した 低オーバヘッドルーティング • 大規模なWAN環境で実装・実証した • 集合通信ではLAN/WAN共により高性能
今後の課題 • 別途提案した分散プログラミングライブラリ の通信基盤として応用 • 分散オブジェクト指向 • ノードの動的な参加・脱退に対応 • 広域環境での並列分散プログラミングを簡潔に • 課題: • 転送・ルーティングを動的変化に対応させる
発表文献 • 投稿中(1件) • High Performance Wide-area Overlay using Deadlock-free Routing. High Performance Distributed Computing(HPDC), 2009 • 論文誌 (2件) • 複雑なグリッド環境で柔軟なプログラミングを実現するフレームワーク.情報処理学会論文誌:コンピューティングシステム.Vol.1 No.2 (ACS 23), pp.157-168, 2008年8月. • A Low-stretch Object Migration Scheme for Wide-area Environments. IPSJ Transactions on Programming. Vol.48 No.SIG 12 (PRO 34), pp.28-40, August 2007. • 査読付学会(2件) • gluepy : A Simple Distributed Python Framework for Complex Grid Environments. At 21st Annual International Workshop on Languages and Compilers for Parallel Computing (LCPC2008). LNCS Vol.5335, pp.249-263, July 2008. • 複雑なグリッド環境で柔軟なプログラミングを実現するフレームワーク.先端的計算基盤シンポジウム (SACSIS 2008),pp.349-358,筑波,2008年5月. • 研究会(2件) • 広域TCPオーバレイにおけるデッドロックフリールーティング. 情報処理学会研究報告OS-109 (SWoPP 2008),pp.9-15,佐賀,2008年8月. • 揮発性資源上での並列分散計算を支援するオブジェクト指向ライブラリ. 情報処理学会研究報告OS-106 (SWoPP 2007),pp.71-78,旭川,2007年8月. • その他査読なし学会(4件), ポスタ(3件)
提案 : gluepy • Grid環境用分散オブジェクト指向Pythonプログラミングライブラリ • 並列分散計算に必要なノード間通信・協調の記述を容易にする • 各計算ノードを”glue”で繋ぎ合わせる目的のライブラリ • WANの接続性の問題を隠ぺい • 動的にノードが参加・脱退する環境でも汎用言語の拡張で記述できる • プログラミングモデル: • 分散計算・通信には分散オブジェクトへのRMI (Remote Method Invocation) • メソッド呼び出しという抽象化 • 動的な計算環境での記述を支援 • ノード参加記述の支援 • ノード脱退のセマンティクス • 処理系: • ピア間で自動的に接続のオーバレイ構築 • 接続性 (NAT/firewall)の自動的解決
分散環境でオブジェクト指向 Proc: A Proc: B • 計算の分散 • メソッド呼び出し • RMI (Remote Method Invocation) • 非同期RMIで並列計算 • アプリの記述は自由 a a.f() f() RMI Proc: A Proc: B Proc: B Proc: B a a.f() a a.f() a a.f() async. RMI f() f() f()