• 検索結果がありません。

グリッド環境に適したJava用階層型実行環境Jojoの設計と実装

N/A
N/A
Protected

Academic year: 2021

シェア "グリッド環境に適したJava用階層型実行環境Jojoの設計と実装"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)ハイパフォーマンス 92−6 コンピューティング (2002. 10. 25). グリッド 環境に適した  用階層型実行環境  の設計と実装 中. 田. 秀. 基ÝÝÝ 松. 聡ÝÝÝÝÝ関 口 智 嗣. 岡. Ý. 本稿では、グリッド 環境での  プログラミングを支援する実行環境  について述べる。 は  を用いて実装された、階層構造を持つ環境に適した分散実行環境で、 を用いた起動、 直感的で並列実行に適したメッセージパッシング

(2) 、プログラムコード の自動アップロード といっ た特徴を持つ。 を用いれば、グリッド 上で動作する並列分散システムが非常に容易に構築できる。 本稿では  の設計と実装の詳細、プログラミング

(3) 、設定ファイル、簡単なプログラム例を 示す。さらに予備的な性能評価の結果も示す。.  

(4)  

(5)  

(6)     

(7) 

(8)   

(9)     . 

(10)  

(11)   ÝÝÝ. ÝÝÝÝÝ. Ý.                          .       .          .  !   .  . 

(12)    "        #                            

(13)  $  $ %"   &  " '    %     .  は じ め に 複数の管理主体に属する計算資源を集合的に活用し て大規模な計算を行うグリッドと呼ばれるシステムが 普及しつつある。グリッドシステムにおけるプログラ ミング環境としては、比較的低レベルなツールキット を提供する  や、

(14) とよばれるミド ルウェアである   や  、グリッド 上 の 

(15)  である 

(16)   などが提案されている。 これらのシステムは昨今一般的になりつつある複数 のクラスタから構成されるグリッド 環境では十分に性 能を発揮することは難しい。また、プログラムコード のアップロード 、結果のダウンロード などをユーザが 明示的に行わなければならず、負荷が大きい。 本稿では、グリッド 環境での  プログラミング を支援する実行環境  の設計と実装について述べ る。 は  を用いて実装された、階層構造を持 つ環境に適した分散実行環境で、 を用いた起 動、直感的で並列実行に適したメッセージパッシング.     

(17)             ÝÝ 東京工業大学     

(18)   ÝÝÝ 国立情報学研究所     

(19) 

(20)  Ý 産業技術総合研究所. 

(21)  、プログラムコード の自動アップロード といった 特徴を持つ。 を用いることで、グリッド 上で動作 する並列分散システムが容易に構築可能となる。本稿 ではさらに、簡単なプログラム例を示し 、予備的性能 評価結果も示す。 本稿の構成は次のとおりである。 では、 の対 象とするグリッド 環境について述べる。 で  の設 計について述べ、 で実装について述べる。 で  を用いた簡単なプログラムを示す。! で予備的評価と その結果を示す。" で結論と今後の課題を述べる。.  階層的グリッド 環境 今後のグリッドにおける計算機資源としてはクラス タが有望である。とくに比較的小規模なクラスタを複 数個結合する形が、将来のグリッド として一般的にな ると考えられる。このようなクラスタの各ノードの 

(22) アドレスはセキュリティやアドレス空間枯渇の問題か ら 、ローカルアドレスとなり、# を用いて外部と 通信する場合が多い $図 %。 このような環境では、 をベースとするシス テムは十分に性能を発揮できない。 の   &' を使用して外部からクラスタ上の各ノー ドにプロセスを起動することは可能だが、そのプロセ.  −31−.

(23) クライアント ルータノード. サイトA 図. . ルータノード. サイトB. 複数クラスタから構成されるグリッド. スから他のクラスタ内部のノード に対して直接通信 を行うことはできない。このため 

(24)   などを 用いても、複数のクラスタを使用した計算を行うこと はむずかしい。この問題を解決するために、プロキシ サーバを使用する研究も行われている  が 、現時点 では実用化されているとはいいがたい。   を用いてマスタ・ワーカ的な計算を行う場 合には、このような構成でもクラスタノード 上にワー カを置いて実行することができる。しかし 、複数のク ラスタを使用する環境ではノードの総数が数百台に達 することも考えられ、これらのノードをフラットに管 理することは、ファイルディスクリプタ数の制約や、 ルートとなるクライアントノードにかかる負荷を考え ると現実的ではない。 これらの理由のため、今後の大規模なグリッドは必 然的に階層構造をとらざるを得ない。すなわち、クラ スタの外部に構成されるネットワークとクラスタの内 部のネットワークの  階層である。グリッドの規模が 大きくなる場合にはさらに階層が増えることも考えら れる。 このような階層構造を前提として考えると、階層構 造を積極的に利用してシステムを構築することが可能 になる。たとえば単純なマスタ・ワーカであっても、マ スタをクライアントに置くのではなく、中間層ノード で動かすようにすれば 、マスタ・ワーカ間の通信レ イ テンシが低下し、結果として性能の向上が期待できる。.   の設計  は中小規模のクラスタが分散して存在する環 境を対象とし 、以下の点を考慮して設計されている。 ¯ グリッド の階層構造を反映したシステム構造 ¯ スレッドを前提とした柔軟で簡潔なプログラミン グモデル ¯ 動的なシステム構成を可能にするとともに、イン ストールの手間を最小限にする起動手法  システム構造  は、前節でのべた階層的なグリッドをターゲッ トとし、階層構造を意識したシステム構造をとる。 はクライアントを頂点とする任意段数の階層構造を持. つシステムを構成し 、それそれのノードで任意のプロ グラムを実行することができる。個々のノードは自分 と同レベルのノード 群だけでなく、上位レベルのノー ド、下位レベルのノード 群とも通信することができる。  プログラミングモデル  を使用する通信ライブ ラリとしては  自 身による  や、 による

(25) ( 実装である 

(26) ( 、 による 

(27)  実装を呼び出すラッパであ る &)   、などが提案されている。)  に よる 

(28)  実装も行われている  。  の計算モデルは同期的なリモート メソッド 呼 び出しを基本とした分散オブジェクトモデルである。 このモデルの一般性は高く、基本的にどのような計算 機構でも記述することはできるが、並列実行を行う場 合にはユーザがスレッドと組み合わせなければならな い、起動時にオブジェクトの生成と公開をサーバ側で 行うという手間が必要、といった問題点がある。 

(29)  や

(30) ( はデータを  や * で明示的に 送受信するメカニズムを提供する。これらは貧弱なス レッド 環境しか持たない や + 向けに開発さ れたメッセージ転送モデルであり、スレッドが言語レ ベルで高度に統合されている  言語に適している とはいいがたい。たとえば 、複数のスレッドが同一の タグに対して同時に * を行った場合の挙動を直感 的に理解しやすい形で定義をすることは難しい。  は、この両者の中間とも言うべきプログラミン グモデルを提供する。 では各ノード にひとつの オブジェクトを配置し 、そのオブジェクト間でのメッ セージパッシング機構を提供する。メッセージパッシ ング機構としては、オブジェクト単位の送信と受信を 行う。送信は明示的に行うが、受信はハンド ラを定義 することで行う。すなわち、* に相当することを ユーザが書く必要はない。ただし 、送信に対する返答 を受け取るというパターンは頻繁に使用されるので 、 これを支援するために、送信に対する戻り値を返す機 構を設けてある。戻り値を呼び出し側プログラムに返 す機構としては、ブロックする同期呼び出しに加えて、 + オブジェクトを使用する機構とコールバックオ ブジェクトを登録する機構を用意した。マルチスレッ ドを前提として、メッセージの受信を別スレッドで行 うセマンティクスとなっているため、メッセージの受 信と処理を重複させるコーディングがごく自然に行え る。

(31)  の詳細については次節で述べる。 各ノード 上で起動されるオブジェクトクラスは設定 ファイルで自由に指定することができるが、典型的に はひとつのレ イヤは同一のクラスを実行するものと する。  起 動 方 法  は大域での分散実行を指向している。このため すべてのノードが + でファイルシステムを共有し ていることを期待することはできない。しかし 、ユー.  −32−.

(32) Jojo system. CLIENT. SERVER.   

(33)    兄弟ノード       子ノード  .    親ノード     兄弟の中での順位   初期化        本体の処理       送信されてきたオブジェクトの処理          !. rjava Server User Program. Jojo system. rjava Client. SCP+SSH / GASS+GRAM. Send Server Program. rjava Server User Program. rjava Client. rjava Server. Send Jojo Jojo system rjava Server User Program. JojoSystem rjava Client. JojoSystem rjava Server. 図. Send User Prog. Jojo system rjava Server User Program. User Prog. JojoSystem rjava Client. 図. . User Prog. JojoSystem rjava Server.  による起動. ザがコードをすべてのノードにアップロード するのは 煩雑である。 ではすべてのユーザプログラムが自 動的にクライアントからダウンロードして実行される。 さらに  自体も自動的にダウンロード されて実 行される。これによって実行する  のバージョン がノードによって異なる、というような事態を未然に 防ぐことができる。.   の実装 ここでは、 の実装について詳細に述べる。  リモート 環境でのプログラム起動 リモート環境でのインストールの手間を最小限にと どめるため 、ユーザプログラムだけでなく  自身 の転送も実行時に動的に行われる。動的ロード には   を用いた。 のシステム起動は次のように 行われる $図図 %。 $  % クラスローダを含む最小限の  プログラム である  のブートストラップサーバを  ファイルの形でリモートノードに転送 $  % ブートストラップサーバを起動して  クラ イアントとの間にコネクションを張る。 クライアントはクラスファイルのローダとして 機能する $  % リモートノード 上のブートストラップサーバが  のシステムクラスを起動する。システム クラス群は自動的に  クライアントを経由 して、ローカルファイルシステムから読み出さ れる。 $  %  上のユーザプログラムも同様に 、ローカ ルファイルシステムから読み出されてロード さ れる。 $ % 同様にローカルノード 上でも  システムを ロードして起動する。さらにユーザプログラム. .  クラス. もロードして起動する。 現在起動方法としては、, や , を用いるバージョ ンと、 の   と  を用いて  -. を使用するバージョンが用意されている。 , や , を用いるバージョンでは、*) や *) で ブート ストラップとなる  ファイルを転送し 、, や , で起動する。ローカルプログラムとブートスト ラッププログラム間の通信は 、,/, が提供する標 準入出力用のストリームをマルチプレクスして使用し ている。  - を用いるバージョンでは同じ方法は 使用できない。 - には実行ファイルその ものと標準入力をステージする機能はあるが、引数と して与えるファイルをステージする機能はない。この ためブートストラップコード の  をそのまま転送す ることは難しい。そこで 、 ではシェルスクリプ トコード を実行ファイルとして転送し 、その標準入力 への入力として  ファイルを与えることで  ファ イルの転送を実現した。ローカルプログラムとブート ストラッププログラム間の通信にはブートストラップ サーバからの -. によるコールバック接続を 用いる。 多段接続となる場合には、基本的にこの手続きを再 帰的に繰り返す。ただし 、クラスファイルをロード す るファイルシステムが常にユーザの手元となるよう、 クラスファイル要求がローカルプ ログラムに委譲さ れる。.  .  上でのプログラミングは、 の提供する抽 象クラス  を継承して具体的なクラスを実装をす ることで行う。 では /  などのサポー トクラスを用いてプログラミングを行う。. 

(34).  クラスの定義を図  に示す。  '/ *. / ) はそれぞれ同レベル、下位レベル、上 位レベルのノード を指す。   メソッドは初期化を行 う。引数となる ) には  起動時に引数として渡 す

(35) )  形式ファイルの内容が渡される。   メ ソッドの終了以前に、 メソッドや ,  メソッ.  −33−.

(36)   "   #

(37)       ! 図. .   インターフェイス. ドが呼び出されることはない。 メソッド は、実 際の処理を行うメソッドである。 メッセージを受信すると ,  メソッドが起動さ れる。このメソッドを実行するスレッドは、オブジェク ト受信時に新たに起動される。つまり複数のメッセー ジを連続して受信した場合には、複数のメッセージ処 理スレッドが同時に ,  メソッド を実行すること になる。したがってハンド ラの中で長大な処理を行っ ても他のオブジェクトの受信に影響はない。その反面、 共有される資源にアクセスする際には適切な排他処理 が必要になる。. 

(38).   クラスでは   クラスのオブジェクトに対 してメソッド を発行することで通信を行う。  ク ラスには以下の  つのメソッドが提供されており、柔 軟な通信を行うことができる。.      . . 単純にメッセージオブジェクトを送信する。送信 後はすぐにリターンする。.    . . メッセージオブジェクトを送信し 、返信オブジェ クトの到着を待つ。. $ $  . クラスタ群は階層的な構造となるので、これを指定す る設定ファイルは階層的な構造を自然に表現できる必 要がある。 で一般的なプロパティ形式ではこの 用件を満たすことが難しいので、34 形式を用いる。 図 に設定ファイルの 2#2 を示す。 設定ファイルには、各ノード のホスト名、実行する コード 、起動するための情報が収められる。 要 素には属性値としてホスト名を指定する。ホスト名と して " を指定すると、その  の値が、同レ ベルにあるすべての  のデフォルト値として解釈 される。この機構によってクラスタノード などの起動 情報を共有する多数のノード の設定を容易に記述する ことができる $図 5%。.   によるプログラム例. . メッセージオブジェクトを送信し、直ちに返信オブ ジェクトの $ オブジェクトを返す。$ オブジェクトの   メソッド を呼ぶとそこ で同期が行われ 、返信オブジェクトが返される。.   %  #  &   #   # 第  引数として   # インターフェイスを持 つオブジェクトを指定する。このメソッドはメッ セージ送信後すぐにリターンする。返信オブジェ クトが到着すると、それを引数として   # イ ンターフェイスの  メソッドが呼ばれる。  0 インターフェイスは図  のように定義されて いる。.  

(39) 

(40). '()*)) +   ,&  ,& '(.++*/0+    1.+. 23)45/3)1'()*)) +  261.+.'()*)) +    )6+7'(.++*/0+    6 1.+. 2/6*/)1 6    1.+. 2/6*/)1 3 1.+. 2/6*/)1 3 1.+. 2/6*/)1 #  18 1.+. 2/6*/)1 #  6 1.+. 2/6*/)1 図  設定ファイルの .   は送信対象となるオブジェクトである。こ のクラスは  である  と 、  1 である    の  つのメンバを持つ。 は、メッセー ジの内容をあらわす 2 である。ハンドラは、この 2 を見て処理のディスパッチを行う。メッセージの本体 は    に収められる。  設定ファイル  では起動時に参加するクラスタ群の構成、起動 方法、起動するコード クラスを指定する必要がある。.  によるプログラミング例として、マスタ・ワー カ方式でモンテカルロ法によって円周率を求めるプロ グラムを示す。図 ! がマスタ側、図 " がワーカ側で ある。 このプログラムはセルフスケジューリングによる動 的ロード バランスをとっている。ワーカ側がからマス タ側にジョブを要求しており、マスタ側はジョブの要 求に対してジョブを分配している。ジョブの要求と結 果を返却をひとつのメッセージで行うことでプログラ ムを簡潔にしている。 このプログラムを実行するには  の設定ファイ ルと、実行プロパティファイルの  つが必要となる。 ) 66 から ) 6 の  台をリモートサーバとして使 用し 、, で実行するには図 5 のように設定ファイル を書けばよい。 プロパティファイルには以下のように書く。それぞ れモンテカルロ試行の回数と、それを何等分して実行 するかを指定している。.  9:;;;;;.  9:;; こ ら の ファイル を それ ぞ れ   < " お よび.  −34−.

(41)   6 = #   

(42)    &           9 "     + 9 ;&  3  9 ;. !.   6%   #   

(43)  "  0DE+3/.*E3)45)0+ 9 : 3  9  > 3 .       > ?  )#  

(44) 08 < < 6      9 6   < @   @   9 * < *  0 < @ @.  9 /  < / 0 < @  @   9      !      > ?  )#  

(45) 8 A 

(46) > (  

(47) 8

(48) >!  /  )#   

(49) ! ! 08 < <@6/ 9 @ B     3   +C ! ! 8 A          > ?  )#  

(50) "  < 99 6%  <0DE+3/.*E3)45)0+

(51)     9   <  .  + B9 ;.  3  B9 : "   + -9  

(52) 8 A 

(53)  9    "8.!    > * ; !     > *    !   >  > ?  )#   @      F @ B  ! 図. . !. 図. マスタープログラム. <  とする。実行するには以下のように指定する。 - ? "<  <?    < " < .      > ?  )#  

(54)   +  9 ;    +  9 ; >  

(55)    9  >   0DE+3/.*E3)45)0+&  >  

(56) + &  + ! +  9 *  < < G  " +  99 ;  .  +  9 +  ! !      + 

(57)      9 ; "     9 ;  ' +  BB

(58).  # 9  < #1  .  8 9  < #1   " #  # B 8  8 ' :<;   BB !      !. 予備的な性能評価として、 を用いた場合と  を用いた場合のローカルノード とリモートノード 間の スループットを測定した。評価環境としては、図 7 に 示す環境を用いた。以下 ##8 # 間の実験を 9 とし 、# 内の実験を 4 とする。 図  に 4 環境での結果を示す。 を用いた 場合に対して  を用いたバージョンの性能が大き く低下していることがわかる。また双方ともバンド 幅 に対して 6 分の  程度しか性能がでていない。. ワーカープログラム. '  9@ @' - 6  ' '  9@ "@' - 6%   ' '   69@@ ?69 @  <@ 6   9@@ 39@@ 39@@ ' '  9@ ;;@'  9@ ;:@'  9@ ;=@'  9@ ;H@' 図.  予備的性能評価. . . サンプルプログラム用設定ファイル. 図  に 9 環境での実験結果を示す。それほど の差はないものの、4 環境とは逆に  のほうが よい性能を示している。また、ネットワークバンド 幅 に対する性能低下の割合は 、4 環境に比べれば小 さい。これは通信速度が遅いために 、 のオーバ ヘッドが隠れているためであると考えられる。 いずれの場合も、本来のスループット値と比較する とかなり性能が低下している。この原因としては、 や  による暗号化のオーバヘッド とともに 、一つ の通信ストリームを標準入出力のリダイレクトと . −35−.

(59) ) を介して行われている。これは現在対象と している最適化問題では   ' 間の通信が必要 とされないためだが 、今後実装していく。. Linux PC Pentium III 1.4GHz. Server. Gigabit Ether. Throughput: 1.5 Mbyte/s Latency: 21ms. 参 考. Throughput: 54.3 Mbyte/s Latency: 0ms. Linux PC Athlon 1.2GHz. Client A. Linux PC Pentium III 1.4GHz. 50 miles. 図. 3.5.   

(60)

(61) 

(62) 

(63)  

(64)    . AIST. $77!%: % 田中良夫/ 中田秀基/ 平野基孝/ 佐藤三久/ 関口智 嗣<  による 

(65) システムの実装と 評価/ 情報処理学会ハイパフォーマンスコンピュー ティングシステム研究会/ : "" $66%: % / :  2'/ :< <  >=    ' &)  *  *

(66) &/ 

(67)       

(68)  !" $77!%: % ?/ :/ +/ :/ ))/ 9:/ ; / :/  / (:  #/ @:< 

(69)  A< A ? *  '

(70)  '

(71)  '&:/      # $%%% 

(72)  

(73)  $666%: % #=/ B:/  / :/ / :/ = / :  = '*, / :<

(74) &* 8    + >*&)   9   ?&/ !  

(75) 

(76) 

(77)  &. 評価環境. SSH in LAN GSI in LAN. 3 Throughputs [M bytes/s]. 2.5 2 1.5 1 0.5 0 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9. 図. Throughputs [M bytes/s]. 0.6. 1. Data size [Mbytes].  環境でのスループット. . 献. % +/ :  ;&/ :< <  &*&) ' * = :/  . Client B. TITECH. 文. SSH in WAN GSI in WAN.   

(78) ' 

(79)  ( )  

(80)  *'( $%%%+/ )): C5 $666%:. 0.5 0.4. !% @'/ +:/ 2 >/ :/ ( * / :/ @ & / :/ =&/ 8:  / 2:<  

(81) &*  .*   )   ?< 80) & > , -

(82) DD/ . 0.3 0.2. ,!!-   

(83) .  ' 

(84)  /0  

(85)  $775%:. 0.1 0 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9. 図. . "% + / : :< 

(86) (< >= ) *& ) '  /  ,!!-   

(87). 1. Data size [Mbytes]. !  環境でのスループット. .  ' 

(88)  /0   

(89)  $775%:. 5% @=/ :/ )/ @:/ +0/ :/ ;/ : :  :4 &< &) <  .*.   *  

(90) / 

(91) 

(92) 

(93)    

(94). の通信ストリームにマルチプレクスしているコストが 考えられる。.  お わ り に. .   

(95)  ( )  

(96) . 本稿では、グリッド 環境での  プログラミング を支援する実行環境  の設計と実装について述べ、 予備的な性能評価の結果を示した。 今後の課題としては以下があげられる。 ¯ ストリームマルチプレクス部を再実装し 、オーバ ヘッド の低減を図る。 ¯  を用いた組み合わせ最適化問題用システム である 

(97) 

(98)  の開発を通じて  の有用性と スケーラビ リティを確認する。 ¯ 現在の実装では   ' への通信は直接行われず、. $777%: 7% 日下部明/ 廣安知之/ 三木光範< ( による 

(99)  の実装と評価/ 並列処理シンポジウム 

(100)

(101) 666 論文集/ )): !7C" $666%: 6% 中田秀基/ 早田恭彦/ 小川宏高/ 松岡聡<  に. よるソフトウェア分散共有メモリシステムの構築 E 広域環境への対応 E/ 情報処理学会

(102) . 研 究会 $666%: % 秋山智宏/ 中田秀基/ 松岡聡/ 関口智嗣<  環境 に適した並列組み合わせ最適化システムの提案/ 情 報処理学会 

(103) 研究会 66

(104) 5 $66%:. ! −36−.

(105)

参照

関連したドキュメント

LPガスはCO 2 排出量の少ない環境性能の優れた燃料であり、家庭用・工業用の

この項目の内容と「4環境の把 握」、「6コミュニケーション」等 の区分に示されている項目の

( 同様に、行為者には、一つの生命侵害の認識しか認められないため、一つの故意犯しか認められないことになると思われる。

FSIS が実施する HACCP の検証には、基本的検証と HACCP 運用に関する検証から構 成されている。基本的検証では、危害分析などの

全体構想において、施設整備については、良好

これから取り組む 自らが汚染原因者となりうる環境負荷(ムダ)の 自らが汚染原因者となりうる環境負荷(ムダ)の 事業者

このような環境要素は一っの土地の構成要素になるが︑同時に他の上地をも流動し︑又は他の上地にあるそれらと

小・中学校における環境教育を通して、子供 たちに省エネなど環境に配慮した行動の実践 をさせることにより、CO 2