負荷分散ソフトウエアGrid Engine
負荷分散ソフトウエア(ロードバランサ)の有用性
多数のPCをネットワーク接続するクラスタシステムを有効に活用するには、各ノードに対して効率良く処理を分散することが重要です。 rsh等を用いて各ノードにジョブを投入する方法もありますが、ノードを意識せずにクラスタシステム全体を1台のサーバとして扱えると便利です。 このとき、クラスタシステムを構成するCPUやメモリ等の計算リソースが遊んでいることのないように、適宜処理を分散する機能を持つのが負荷分散ソフトウエア(ロードバランサ)です。
負荷分散ソフトウエアを設定すれば、サーバへ複数のジョブを同時に投入しても、ソフトウエアがジョブを負荷の低いノードのリソースへ自動的に割り当てます。 ユーザは自分の投入するジョブをどのリソースで実行するか指定する必要はありません。 負荷分散ソフトウエアの中には、ジョブへの優先順位付けや同時実行可能ジョブ数の制限といった設定が可能なものがあります。 そのようなソフトウエアを選択すれば、ユーザが複数の場合にリソースが一部ユーザによって独占されてしまう状態を避けることができます。
負荷分散ソフトウエアにより、使用リソースを指定する手間が省ける上に、処理実行中のリソースが偏ることもありません。 トータルの処理時間を短縮でき、ひいては計算資産全体の有効活用が可能となります。
無償のロードバランサ
ナベ インターナショナルでは、クラスタ上での使用にあたり、使い易さや信頼性を基準に様々なロードバランサを評価しています。 LSF等、普及している有償のソフトウエアも存在しますが、ここでは除きました。
- Ants
- 通常のrshと同様の感覚で使用可能なフリーのロードバランサAntsは、キュー(待ち行列)の考え方を持たず、計算ノードに直接ジョブを投入できます。しかし、一度に保持可能なジョブ数は数百程度であり、許容数を超えるとダウンするという欠点を持ちます。そのとき実行中であったジョブの情報は保存されません。また、投入された順にジョブが実行されるというポリシーを変更できません。 このような制約がありますが、実行プログラムをそのままコマンドラインで指定して使えるため、ユーザが一人でありジョブの実行順や優先順位を変更する必要がない場合には使い易いソフトウエアです。
- OpenPBS
- 90年代前半に米国NASAで開発されたOpenPBSは、フリーのバッチキューイングソフトウエアとして現在も広く使用されています。 一度に実行可能な数以上のジョブが投入された場合、あふれたジョブをキューに入れて待機させ、リソースが空いたら順に処理されるよう設定を行います。 安定して動作するのは最大32CPUのシステムにて一度の投入が数百ジョブまで、というのが本家の見解ですが、実際のところは数千ジョブ程度までは実用的に使用可能です。 キューへの優先順位設定により結果的にジョブ実行順を設定でき、順位の低いジョブを実行待ちの状態にして高順位ジョブを優先的に実行することが可能です。 ジョブ投入時には、実行プログラム等を記述したスクリプトを作成する必要があります。
Grid Engineについて
Grid Engine(グリッドエンジン)とは、Sun Microsystems が他1社と共同で開始したGrid Engine projectにてオープンソース開発されている分散リソース管理ソフトウエアです。 世界中の多数のBeowulfクラスタに加え、様々なLinuxクラスタ、また複数のクラスタシステムを跨いだ処理にて使用されています。
多数ユーザによる同時使用を考慮し、同時実行可能なジョブ数の制限をユーザ毎に設定できます。 ジョブに優先順位を付け、順位の低いジョブが例え実行中であっても一時停止させ、順位の高いジョブを先に実行させることも可能です。
また、一度に10万を超えるジョブを投入可能であることを確認済みです。大規模なクラスタシステムの構築を目指す場合、コンピュータによる処理能力の劇的な向上やデータ量の膨張を考慮すると、一度に処理可能なジョブ数を大きく確保する必要があります。Grid Engineならば増大の一途をたどる処理要求にもかなり対応できるでしょう。
バッチキューイングソフトウエアとしてクラスタ上で使用可能な点、ジョブ投入時に実行プログラム等を記述したスクリプトを作成する必要がある点は、OpenPBSと同様です。 また、投入者、実行ノード、実行状態等の様々なジョブ情報や、使用可能なリソース等のノード情報を収集可能である点も、OpenPBSと共通しています。 加えてGrid Engineでは、ジョブ終了後に開始・終了時刻や終了ステータスなどの情報を一括して見ることができます。 この機能を用いることで、ジョブが正常終了しなかった場合でも容易に発見できます。 万が一ノードがダウンした場合でも、そのノードが持つキューにて実行中であったジョブを他ノード上のキューに再配分するため、ジョブの取りこぼしが起きにくくなります。
その他、MPICHやPVMを用いた並列ジョブを、Grid Engine上で必要リソースを管理しつつ処理できます。 クラスタシステム全体を分割し、並列ジョブと非並列ジョブを個別かつ同時に流すことも可能です。 Grid Engineはこのように、多様なシステム規模や使い方に対応しています。
多様な使い方に対応可能なところがGrid Engineの利点ですが、多機能であるがゆえの難しさもあります。 効率的に運用するためには、ユーザ数やジョブの種類、システム規模などを考慮して最適な設定をする必要があります。 しかしそのためには必要な機能の絞込みや設定方法の調査、実用的な機能かどうかの評価に労力を割かなければならず、実態に即した運用を始めるまでに時間がかかってしまいます。 ナベ インターナショナルのBeowulfクラスタTakeruシリーズは、標準では数人のユーザによる共用を想定して設定を行い、高負荷下での長時間安定稼動を確認していますので、Grid Engineをクラスタ導入後すぐに活用することができます。 また、あらかじめ運用形態についてご相談いただき、それに合わせた設定にて納入することも可能です。 Grid Engineの使用方法に関してお問い合わせ下さい。