JP5166350B2 - クラスタコンピュータミドルウェアプログラム - Google Patents

クラスタコンピュータミドルウェアプログラム Download PDF

Info

Publication number
JP5166350B2
JP5166350B2 JP2009128443A JP2009128443A JP5166350B2 JP 5166350 B2 JP5166350 B2 JP 5166350B2 JP 2009128443 A JP2009128443 A JP 2009128443A JP 2009128443 A JP2009128443 A JP 2009128443A JP 5166350 B2 JP5166350 B2 JP 5166350B2
Authority
JP
Japan
Prior art keywords
data
function
computer
cluster computer
slave
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009128443A
Other languages
English (en)
Other versions
JP2009187590A (ja
Inventor
高木  太郎
Original Assignee
株式会社イマジオム
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社イマジオム filed Critical 株式会社イマジオム
Priority to JP2009128443A priority Critical patent/JP5166350B2/ja
Publication of JP2009187590A publication Critical patent/JP2009187590A/ja
Application granted granted Critical
Publication of JP5166350B2 publication Critical patent/JP5166350B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明はクラスタコンピュータミドルウェアに関し、特にアプリケーションを容易に移植・開発することのできるクラスタコンピュータミドルウェアに関する。
複数のコンピュータをネットワークで接続し、協調動作するようにしたものを「クラスタコンピュータ」と呼ぶ。クラスタコンピュータは並列コンピュータの一種で、パーソナルコンピュータの急激な高性能化・低価格化を背景に、比較的低コストで超高速計算を実現する手段として注目されている。
特許文献1には、クラスタコンピュータの一例が記載されている。しかしクラスタコンピュータには、物理的な構成や運用形態の異なる多くの種類があり、それぞれ解決するべき課題も異なっている。この例のクラスタコンピュータは、地理的に離れたコンピュータを比較的伝送速度の遅い広域ネットワークで結合するもので、前記の公報にはシステム全体の処理性能を高めるため、広域ネットワークの中に配置されているルータの負荷を分散させる手法が提示されている。すなわち他のクラスタ装置にアプリケーションジョブを振り分ける際に、各クラスタ装置のリソース管理情報、およびネットワーク制御情報に基づき、アプリケーションジョブを振り分ける構成が示されている。なお本発明の対象とするクラスタコンピュータは、後で述べるように上記公知例のクラスタコンピュータとは物理的な構成や運用形態が異なる。したがって本発明の解決するべき課題も、システム全体の処理性能を高めるという上記公知例の課題とは異なる。
一般的なクラスタコンピュータは、「マスタコンピュータ」と呼ばれる1台のコンピュータと、「スレーブコンピュータ」と呼ばれる多数のコンピュータから構成されている。アプリケーションは普段、マスタコンピュータで動作している。並列処理が必要となる部分にさしかかると、マスタコンピュータは素材データを個々のスレーブコンピュータに分配した上、それぞれのスレーブコンピュータが担当する処理の範囲を決定し、処理の開始をそれぞれのスレーブコンピュータに指示する。処理を終えたスレーブコンピュータは、部分的な結果データをマスタコンピュータに送り、マスタコンピュータはそれらを統合して一つのまとまった結果データを得る。このように並列処理を実現するために行われる一連の動作のことを「処理手順」と呼ぶ。実際のアプリケーションでは、処理に要する時間を短縮したり、必要なメモリ容量を小さくしたりする目的で、上記のような単純な処理手順だけでなく、より複雑な処理手順が使われることも多い。
コンピュータとクラスタコンピュータは、その構成が大きく異なっているので、通常のアプリケーションを、そのままクラスタコンピュータで動作させることはできない。クラスタコンピュータで動作するアプリケーションを作成するには、あらかじめアプリケーションをクラスタコンピュータ用として設計し、データの分配・回収、処理開始の指示の送信、処理終了の通知の受信といった、基本的な機能を盛り込む必要がある。
こうした基本的な機能を集め、アプリケーションから簡単に使うことができるようにしたソフトウェアは「クラスタコンピュータミドルウェア」と呼ばれる。クラスタコンピュータミドルウェアは、アプリケーションとコンピュータの間に位置するネットワークソフトウェアであり、個々のコンピュータの接続・動作の状態を監視・変更したり、アプリケーションからの指示を個々のコンピュータに分配したり、個々のコンピュータからの通知を取りまとめてアプリケーションに伝えたりする機能を持っている。クラスタコンピュータミドルウェアを使うと、アプリケーションがコンピュータ間のデータ通信を意識する必要性が軽減され、クラスタコンピュータ用のアプリケーションを簡単に書くことができる。このようなクラスタコンピュータミドルウェアの例は、たとえば特許文献2に記載されている。
特開2002−259353号公報 特開2004−38226号公報
しかしながら前記従来技術では、並列アプリケーションを開発するために多大な費用・労力、高度な知識・技術が必要とされた。また開発する並列アプリケーションに、高い拡張性と上位互換性を与えることが難しかった。
たとえば従来の一般的なクラスタコンピュータミドルウェアでは、アプリケーションやコンピュータから送られる指示・通知を加工せず、そのまま相手先に送っていた。そのため一般的なアプリケーションは、個々のコンピュータに処理の開始を指示した後、それらからの処理終了の通知を待つループに入るように作らなければならなかった。
図23に、クラスタコンピュータ100において、上記の並列処理手順を実現するために、アプリケーションとクラスタコンピュータミドルウェアが行う情報交換の内容を示す。普段マスタモジュールで実行されているアプリケーションは、並列処理が必要な部分にさしかかると、個々のスレーブモジュールに、部分的な処理の開始を要求する指示310(310A・310B・310C)を送る。これを受けたスレーブモジュールは、それぞれの担当する処理を行い、それが終わったら、処理の完了を知らせる通知320(320A・320B・320C)をマスタモジュールに送る。スレーブモジュールが処理を行っている間、マスタモジュールは、スレーブモジュールからの通知320を待っている。
ここで従来のクラスタコンピュータミドルウェアの問題点を明確にするため、簡単なアプリケーションを例に取り上げ、これをクラスタコンピュータ100に移植することを考える。並列化する前のソースコードを図24に模式的に示す。このアプリケーションは、前処理に相当するProcessAと、本処理に相当するProcessBと、後処理に相当するProcessCを順番に実行するものである。ProcessBは繰り返し処理であり、実行するのに長い時間がかかるので、ここではProcessBを並列化することを考える。
図24のアプリケーションを従来のクラスタコンピュータミドルウェアを使用して並列化した、新しいアプリケーションのマスタモジュールのソースコードを図25に模式的に示す。並列化される前のソースコードと比較すると、並列化された後のソースコードはきわめて読みにくくなっていることがわかる。たとえばこのソースコードには、マスタモジュールでの特定の処理をトリガとして実行される処理ブロック430と、スレーブモジュールから送られる通知320をトリガとして実行される処理ブロック420が混在している。処理ブロック430には、スレーブモジュールの処理終了を待つためのループを置く必要がある。また処理ブロック420と処理ブロック430は、異なるトリガによって非同期的に実行されるので、これらが使用する変数は、すべてグローバル変数410として定義する必要がある。オブジェクト指向に基づく近代的なプログラミングにおいては、グローバル変数はなるべく使うべきではないとされており、これは望ましくないことである。また図24では実行される順番に置かれていたProcessAとProcessCは、新しいソースコードではまったく異なる部位に記述されており、その順番も逆になっている。また図25には書かれていないが、実際には非同期的に実行される処理ブロックの間の干渉を防ぐため、再入(処理が終わる前に、再び同じ処理が始められること)を防止するための仕組みが不可欠であり、スレーブコンピュータ110b〜110iや、通信ネットワーク120の障害を想定したエラー対策も考慮すると、従来のクラスタコンピュータミドルウェアを使用したアプリケーションの並列化は非常に難しいことがわかる。
このように従来技術では、個々のコンピュータから通知が非同期的に送られることによる、アプリケーションの可読性の低下やデバッグの困難を避けることができなかった。通知が「非同期的に送られる」とは、マスタコンピュータで実行される「メイン処理」とは無関係に、スレーブコンピュータで実行される「サブ処理」をトリガとする通知が送られるということである。その結果、次のような問題が生じていた。
(1)エラーが発生した場合、そのエラーがメイン処理によって発生したのか、サブ処理によって発生したのかを特定することが困難である。そのため体系的なデバッグがしにくい。
(2)メイン処理の実行される順番と、ソースコードに記述される順番が一致しない。そのため並列化の前と後では、ソースコードの構造がまったく異なったものとなる。またメイン処理の中に、通知を待つループ処理が多く現れ、ソースコードの可読性を損なう。
(3)メイン処理がサブ処理の実行順序に依存する。そのためミドルウェアが改良されたりしてサブ処理の実行順序が変わると、それを使用しているアプリケーションも作り直さなければならない。
(4)並列処理の手順によってメイン処理が変化する。そのためライブラリのように並列化するべき処理が多くある場合、それぞれの処理がまったく異なった構造で書かれることになり、ソースコードの管理が難しくなる。
(5)独立に動作しているスレーブコンピュータの動作タイミングを模擬することが難しいので、確実に動作するアプリケーションを開発するには、実際にクラスタコンピュータを用意する必要がある。
(6)メイン処理からの指示に対し、即座にサブ処理が実行される。そのためメイン処理には、サブ処理を実行するタイミングを管理する責任が発生する。
本発明は、それぞれのコンピュータから通知が非同期的に送られることに起因する、従来のクラスタコンピュータミドルウェアが抱える問題を解決するためのものである。
本発明の第1の解決課題は、並列アプリケーションを開発するために多大な費用・労力、高度な知識・技術を必要としないクラスタコンピュータミドルウェアを提供することにある。
本発明の第2の解決課題は、開発する並列アプリケーションに、高い拡張性と上位互換性を与えることが容易なクラスタコンピュータミドルウェアを提供することにある。
本発明のその他の解決課題と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すると以下のとおりである。
(1)クラスタコンピュータの上で動作し、複数のコンピュータを協調動作させる機能をアプリケーションプログラムに提供するクラスタコンピュータミドルウェアプログラムであって、前記クラスタコンピュータが、一つのマスタコンピュータと、一つ以上のスレーブコンピュータと、前記マスタコンピュータおよび前記スレーブコンピュータを相互に接続するネットワークとを含むものにおいて、前記クラスタコンピュータミドルウェアプログラムが少なくとも、前記マスタコンピュータで動作するマスタアプリケーションプログラムとのリンクが可能なマスタモジュールと、前記スレーブコンピュータで動作するスレーブアプリケーションプログラムとのリンクが可能なスレーブモジュールとによって構成され、前記マスタモジュールが、並列処理全体の構成要素である個々のタスクに対し、前記タスクを実行させるコンピュータとタイミングとを決定する機能を持つスケジューラを備え、前記マスタモジュールに、前記スケジューラ動作を開始する前前記マスタアプリケーションプログラムの処理を一時停止させ、前記スケジューラが前記動作を終了した後前記マスタアプリケーションプログラムの処理を再開させる機能を実現させ、かつ前記マスタモジュールおよび前記スレーブモジュール、前記スケジューラから受け取った指示に基づき、前記スレーブモジュールと相互に通信する機能と、前記タスクを実行するイベントハンドラをあらかじめ設定する機能と、前記スケジューラの動作の開始に伴い、前記スケジューラから受け取った指示に基づき、前記イベントハンドラを実行する機能とを実現させることを特徴とするクラスタコンピュータミドルウェアプログラム
本発明の一つの特徴によれば、それぞれのコンピュータからの通知が非同期的に送られなくなるので、アプリケーションの可読性が向上し、デバッグも容易になる。
また本発明のもう一つの特徴によれば、クラスタコンピュータの実際の構成をアプリケーションから隠すことができる。そのためクラスタコンピュータの構成に依存する処理手順をアプリケーションに実装する必要がなくなる。また同一のアプリケーションを異なる構成のクラスタコンピュータで動作させることができるようになる。
クラスタコンピュータ100のハードウェア構成例を示す図である。 簡単な並列処理手順の一例を示す図である。 本発明の一実施例になるクラスタコンピュータミドルウェア500の構成を示す図である。 本発明の一実施例になるクラスタコンピュータミドルウェア500が規定するセッションの性質を示す図である。 本発明の一実施例になるクラスタコンピュータミドルウェア500が規定するセッションの関係を、図形を使って表記する方法を示す図である。 本発明の一実施例になるクラスタコンピュータミドルウェア500が規定するセッションの位相構造を示す図である。 図6に示した各セッションで行われる処理の内容を示す図である。 本発明の一実施例になるクラスタコンピュータミドルウェア500を使用するアプリケーションの構成を示す図である。 本発明の一実施例になるクラスタコンピュータミドルウェア500のマスタモジュールと、アプリケーション510のマスタモジュールが行う、情報交換の内容を示す図である。 本発明の一実施例になるクラスタコンピュータミドルウェア500を使用して並列化されたアプリケーションのマスタモジュールのソースコードを模式的に示す図である。 本発明の他の実施例になる天気図作成システム700の構成を示す図である。 本発明の他の実施例になる3次元画像処理システム800の構成を示す図である。 本発明の他の実施例になるクラスタコンピュータシミュレータ900の構成を示す図である。 図13の実施例における、クラスタコンピュータシミュレータ900の画面の一例を示す図である。 図3の実施例における、コンピュータ110の内部の構成を模式的に示す図である。 図3の実施例における、クラスタコンピュータミドルウェア1200とアプリケーション1300の内部の論理的構成を示す図である。 処理手順1400の例を示す図である。 データ配置テーブル1212のデータ構造を例示する図である。 ノード属性テーブル1213のデータ構造を例示する図である。 クラスタコンピュータミドルウェア1200とアプリケーション1300の間で、制御が移動する様子を示す図である。 クラスタコンピュータミドルウェア1200とアプリケーション1300の間で、制御が移動する様子を詳しく示す図である。 アプリケーション1300のマスタモジュール1300aのソースコードを示す図である。 従来のクラスタコンピュータミドルウェアのマスタモジュールと、アプリケーションのマスタモジュールが行う、情報交換の内容を示す図である。 アプリケーションのソースコードを模式的に示す図である。 従来のクラスタコンピュータミドルウェアを使用して並列化されたアプリケーションのマスタモジュールのソースコードを模式的に示す図である。
以下、本発明の実施の形態について、詳細に説明する。
[クラスタコンピュータの一般論]
本発明によるクラスタコンピュータミドルウェアについて説明する前に、ここでクラスタコンピュータの一般論について簡単に述べる。一般的なクラスタコンピュータ100のハードウェア構成例を図1に示す。クラスタコンピュータ100は、1台のマスタコンピュータ110aと、多数のスレーブコンピュータ110b〜110iによって構成されており、これらが高速の通信ネットワーク120で相互に結合されている。マスタコンピュータ110aは、ディスプレイ131と、キーボード132と、マウス133からなるコンソールを備えている。しかしスレーブコンピュータ110b〜110iはコンソールを備えておらず、その操作はマスタコンピュータ110aから通信ネットワーク120を経由して間接的に行われる。
クラスタコンピュータ100では、複数のコンピュータ110が物理的に近接した場所に配置されていることを想定している。その場合、スイッチングハブとLANケーブルを使用してネットワーク120を構成することができる。ただし本発明は、複数のコンピュータ110が離れた場所に配置されており、ルータや光ファイバを使用してネットワーク120が構成されている場合にも応用可能である。
それぞれのコンピュータ110には、クラスタコンピュータミドルウェア500と、それを利用するアプリケーション510がインストールされている。これらのクラスタコンピュータミドルウェアとアプリケーションは、それぞれが「マスタモジュール」と「スレーブモジュール」に分割されている。したがってクラスタコンピュータ100では、以下の四種類のプログラムが動作することになる。
(1)クラスタコンピュータミドルウェア(マスタモジュール)500M
(2)クラスタコンピュータミドルウェア(スレーブモジュール)500S
(3)アプリケーション(マスタモジュール)510M
(4)アプリケーション(スレーブモジュール)510S
一般にアプリケーションは、マスタモジュール・スレーブモジュールとも、実行可能なプログラムとして提供される。一方クラスタコンピュータミドルウェアは通常ライブラリとして提供され、それぞれのモジュールは、アプリケーションの対応するモジュールにリンクされて動作する。
アプリケーションが並列処理を行うには、所定の手順でデータをコピー・削除したり、処理を実行したりする必要がある。そのような手順のことを「並列処理手順」と呼ぶ。図2に、簡単な並列処理手順の一例を示す。この並列処理手順は、次の四つのステップからなる。
ステップ1:マスタモジュールがスレーブモジュールに素材データ210をコピーしてから、処理開始を命令するステップ。
ステップ2:スレーブモジュールが素材データ210を処理し、結果データ220の断片である結果データ221を作成してから、マスタモジュールに処理終了を報告するステップ。
ステップ3:マスタモジュールがスレーブモジュールに結果データ221のコピーを命令し、スレーブモジュールから送られた結果データ221をマスタモジュールが統合して結果データ220を作成するステップ。
ステップ4:マスタモジュールがスレーブモジュールに素材データ210と結果データ221の削除を命令し、スレーブモジュールが素材データ210と結果データ221を削除するステップ。
以上のステップにより、1台のコンピュータが動作する場合と同じように、素材データ210から結果データ220が作成される。
以下では本発明の実施形態を、図面に示したいくつかの実施例を参照しながら、さらに詳細に説明する。
本発明の第1の実施例になる、クラスタコンピュータミドルウェアについて説明する。
まず、第1の実施例によるクラスタコンピュータミドルウェア500の構成を図3に示す。クラスタコンピュータミドルウェア500は、アプリケーションインタフェース501と、分配統合制御手段502と、コンピュータインタフェース503とによって構成されている。このうち分配統合制御手段502には、セッション保持手段504と、セッション更新手段505が含まれており、これが本発明によるクラスタコンピュータミドルウェア500の特徴となっている。
クラスタコンピュータミドルウェア500は、通信ネットワークで結合された複数のモジュールから成り立っている分散型のソフトウェアである。それぞれのモジュールはそれぞれ別のコンピュータ110a〜110iにインストールされ、アプリケーション510からの指示350を受けて相互に通信を行い、これらのコンピュータ110a〜110iを協調動作させる。
アプリケーションインタフェース501は、アプリケーション510とリンクするためのインタフェースで、オペレーティングシステムごとに定められているライブラリ仕様に基づく。アプリケーション510から指示350を受けたり、アプリケーション510に通知360を送ったりするために、各種のルーチンやイベントを決まった形式でアプリケーション510に公開する、すなわち使用を可能にするものである。
分配統合制御手段502は、アプリケーション510から受けた指示350をコンピュータ110a〜110iに適切に分配したり、コンピュータ110a〜110iから個別に届く通知を統合して作成した通知360をアプリケーション510に送ったりするものである。
コンピュータインタフェース503は、通信ネットワーク120で接続された複数のコンピュータ110a〜110iに指示330を送ったり、コンピュータ110a〜110iから通知340を受けたりするためのインタフェースである。それぞれのコンピュータ110a〜110iには、オペレーティングシステムがインストールされている。オペレーティングシステムは各種のファンクションを公開しており、コンピュータインタフェース503はそれらを呼び出すことで、コンピュータ110a〜110iにデータを伝送させたり、処理を開始させたりすることができる。
セッション保持手段504は、クラスタコンピュータが現在どのセッションを実行しているかを記憶・保持するものである。セッションの考え方については、後で詳しく説明する。
セッション更新手段505は、アプリケーション510からの指示350や、コンピュータ110a〜110iからの通知340をトリガとして、セッション保持手段504が保持しているセッションを新しい値に遷移させるものである。
ここでクラスタコンピュータミドルウェア500が導入する「セッション」について説明する。「セッション」とは、まとまった一連の処理であり、かつ次の二つの条件を満たすもののことを指す。
a.セッションの開始・終了の際には、それぞれアプリケーション510に通知360が送られる。
b.二つのセッションの間には、前後関係・包含関係・無関係のいずれかの関係が規定されている。
クラスタコンピュータミドルウェア500において、上記のように定義されたセッションは、図4に示すような性質を持つものとして扱われる。セッションはクラスタコンピュータミドルウェア500が導入する仮想的な概念であり、その実体が存在する必要はない。しかしセッションの存在を前提にアプリケーションインタフェース501の仕様を規定すると、後述する新規な効果が得られる。
ここからは、セッションを定義している上記の二つの条件について詳述する。まずは開始通知と終了通知について説明する。開始通知とは、セッションが開始した直後に送られる通知360のことであり、終了通知とは、セッションが終了する直前に送られる通知360のことである。これらの通知360は、分配統合制御手段502から、アプリケーション510に送られる。終了通知は、処理によってエラーが発生しても必ず送られることが保証されている。この性質を利用すると、アプリケーション510は、現在どのセッションが実行されているかを確実に知ることができる。
これらの開始通知・終了通知は、実際には「イベント」として実装されている。イベントとは、特定の事象が発生した場合に、あらかじめ設定されたルーチンが実行される、ソフトウェアの仕組みである。クラスタコンピュータミドルウェア500の場合には、セッションの開始と終了が事象に相当する。ルーチンであるイベントは引数を取ることができ、アプリケーション510はその値を調べたり変更したりすることができる。つまり開始イベント・終了イベントの引数を利用することで、アプリケーション510はセッションが実際に行った動作の内容を調べたり、セッションが行うべき動作の内容を変更したりすることができる。
次に、セッションの満たすべきもう一つの条件である、三つの関係について説明する。セッションAがセッションBに先行する(セッションBがセッションAに後続する)とは、セッションAの終了通知が必ずセッションBの開始通知の前に送られることを意味する。またセッションAがセッションBを含む(セッションBがセッションAに含まれる)とは、セッションAの開始通知が必ずセッションBの開始通知の前に送られ、セッションAの開始通知が必ずセッションBの開始通知の後に送られることを意味する。そしてセッションAとセッションBの間に関係がないとは、それらの開始通知・終了通知の送られる順番が決まっていないことを意味する。クラスタコンピュータミドルウェア500では、任意の二つのセッションに対し、これらの三つの関係のいずれかが規定されている。すべての規定を考慮すると、クラスタコンピュータが行うべき処理は、所定の位相関係を持つ複数のセッションの組み合わせとして表される。これを「セッションの位相構造」と呼ぶ。こうしたセッションの位相構造は、個々のクラスタコンピュータミドルウェア500に固有のものとして規定され、アプリケーション510にも公開される。アプリケーション510の設計では、セッションの位相構造のみを利用してアルゴリズムを検討する必要がある。
セッションの関係は、図5のように図形を使って表記することもできる。この方法ではセッション600を長方形で示し、その位置関係によってセッション600の関係を記述する。ここでは二つのセッションを取り上げ、それぞれ「セッションA(600A)」・「セッションB(600B)」と呼ぶ。図形を使った表記では、前後関係を持つセッションA(600A)とセッションB(600B)を(イ)のように上下に並べて表し、包含関係を持つセッションA(600A)とセッションB(600B)を(ロ)のように入れ子にして表し、関係のないセッションA(600A)とセッションB(600B)を(ハ)のように上下にずらしながら横に並べて表す。ここでは二つのセッション600を例に挙げたが、セッション600が三つ以上の場合にも同様の考え方で表記することができる。
図形を使うセッション600の表記では、縦軸が時間の流れ、横軸が処理の行われる場所(コンピュータ110、または複数のコンピュータ110の組み合わせ)を表すと考えると理解しやすい。セッション600の位相構造は、クラスタコンピュータミドルウェア500を特徴付ける重要な性質である。図形を使ってセッションを表記する方法を開発支援ツールなどに応用すると、わかりやすく誤解されにくいユーザインタフェースを提供することができる。こうした用途においては、画面レイアウトの制約などにより、縦軸と横軸を入れ替えて配置したり、関係のないセッション600を上下にずらさずに配置したりしても差し支えない。
クラスタコンピュータミドルウェア500が規定するセッション600の位相構造を図6に示す。またそれぞれのセッション600で行われる処理は、図7に示すとおりである。
(1)Copyセッション601
ノードにある一つのデータを、他のノードにコピーする。
(2)Deleteセッション602
ノードにある一つのデータを削除する。
(3)Sendセッション603
マスタノードにあるデータを、スレーブノードにコピーする。
(4)Executeセッション604
スレーブノードにタスクを実行させる。
(5)Receiveセッション605
スレーブノードにあるデータを、マスタノードにコピーする。
(6)Wasteセッション606
スレーブノードにあるデータを削除する。
(7)Batchセッション607
一つのスレーブノードに分散処理をさせる。
(8)Deliverセッション608
マスタノードにあるデータを、すべてのスレーブノードにコピーする。
(9)Raceセッション609
すべてのスレーブノードに分散処理をさせる。
(10)Cleanセッション610
すべてのノードにあるデータを削除する。
(11)Operateセッション611
クラスタコンピュータを動作させる。
なおここでは、ディスクの上にファイルとして保存されているデータと、特定のメモリ領域に格納されているデータを総称して「データ」と呼ぶ。またクラスタコンピュータを構成するマスタコンピュータ・スレーブコンピュータを総称して「ノード」と呼ぶ。
これらのセッション600を開始・終了させるトリガには二つの種類がある。一つはアプリケーション510からの指示350、もう一つはコンピュータ110a〜110iからの通知340である。どちらの種類のトリガによってセッション600が開始・終了するのかは、セッション600の種類や、セッション600の実行の有無によって決まる。たとえばDeliverセッション608を開始させるトリガは指示350であり、Deliverセッション608を終了させるトリガは通知340である。またRaceセッションを開始させるトリガは、Deliverセッション608の実行の有無に依存する。Deliverセッション608が実行される場合には通知340、実行されない場合には指示350がトリガとなる。Operateセッション611を開始させるトリガも指示350である。すなわちアプリケーション510からの指示350がなければ、一連の処理手順は開始されない。
セッションの開始イベント・終了イベントの引数は、個々のセッション600ごとに規定されている。たとえばCopyセッション601の開始イベントでは、コピーするデータのインデックスが引数として渡される。アプリケーション510は、この引数を(データが存在しないことを表す)0に書き換えることにより、コピーを中断させることもできる。またCopyセッション601の終了イベントでは、実際にコピーされたデータのインデックスが引数として渡される。この値が0であった場合には、エラーが発生したために実際にはデータがコピーされなかったということである。このようにしてアプリケーション510は、セッション600での処理が正しく行われたことを確認することもできる。複数のデータを扱うことのできるSendセッション603・Executeセッション604・Receiveセッション605・Wasteセッション606・Deliverセッション608・Clean610セッションでは、データのインデックスの代わりに、複数のインデックスを格納することのできるリストが引数として渡される。アプリケーション510でこのリストにデータのインデックスを追加することで、複数のデータをすべてのスレーブノードに一括してコピーしたり、複数のノードにあるデータを一括して削除したりすることが可能になる。
以上のようなセッション600の性質を踏まえると、先に説明を省略したセッション保持手段504とセッション更新手段505の動作が理解しやすくなる。そこでここからは、それらの動作について説明していくことにする。
セッション保持手段504は、クラスタコンピュータが現在どのセッション600を実行しているかを記憶・保持するものである。セッション600は階層的な包含関係を持っているので、セッション保持手段504は木(ツリー)構造の変数を使い、これに現在実行されているセッション階層を記憶させる。クラスタコンピュータミドルウェア500の初期状態では、この変数にはセッション階層が記憶されておらず、すなわちセッション600が実行されていないことを示している。
セッション更新手段505は、アプリケーション510からの指示350や、コンピュータ110a〜110iからの通知340をトリガとして、セッション保持手段504が保持しているセッション600を新しい値に遷移させるものである。セッション600がどのように遷移するかは、現在のセッション600と、トリガである指示350・通知340によって決まる。
たとえば現在Deliverセッション608が実行されており、これにいくつかのCopyセッション601が含まれているものとする。そこにコンピュータ120から「データコピー終了」の通知が送られてきた場合、セッション更新手段505はこのコンピュータ120に対応するCopyセッション601を終了させ、セッション保持手段504からも削除する。この動作によってCopyセッション601がすべて終了した場合には、Deliverセッション608を終了させ、セッション保持手段504からも削除する。そして続くRaceセッション609を開始させ、セッション保持手段504に追加する動作を行う。セッション600の開始・終了の際には、先に述べたとおり、開始通知や終了通知がアプリケーション510に送られる。なお必要に応じ、通知360をシリアライズする(一つの通知360に対する処理がアプリケーション510で実行されている間には、次の通知360を送らない)ようにしてもよい。
このようにクラスタコンピュータミドルウェア500では、アプリケーション510からの指示350やコンピュータ110からの通知340をトリガとして、本発明で新規に導入したセッションの概念に基づき、アプリケーション510に通知360を送る。アプリケーション510のプログラミングは、これらの通知360に対する処理を記述することによって行われる。
アプリケーション510の構成を図8に示す。アプリケーション510には、開始イベントハンドラ511と、開始イベントハンドラ512と、アドレス公開手段513が含まれている。
「イベントハンドラ」とは、イベントによって動作し、決められた処理を行うルーチンである。イベントハンドラは実際には関数や手続きなので、その形式とアドレスがわかれば呼び出すことができる。そこでアプリケーション510は、クラスタコンピュータミドルウェア500がOperateセッション611の実行を開始する前に、クラスタコンピュータミドルウェア500にイベントハンドラのアドレスを公開する。アドレス公開手段513は、これらのイベントハンドラのアドレス520を取得し、実際には関数や手続きとして実装される指示350に引数として追加する。イベントハンドラの形式はあらかじめ決められているので、クラスタコンピュータミドルウェア500は、セッション600の開始・終了に合わせ、開始イベントハンドラ511と終了イベントハンドラ512を実行させることができるようになる。
本発明のクラスタコンピュータにおいて、アプリケーション510とクラスタコンピュータミドルウェア500が行う情報交換の内容を図9に示す。セッション開始指示351を受けてセッション開始通知361が出され、それに対する返答として処理A・処理B・処理Cの実行が指示される。この図と、図23に示された内容を比べると、クラスタコンピュータミドルウェア500が、スレーブモジュールが処理を実行する順番を、アプリケーション510から隠蔽していることがわかる。アプリケーション510は、スレーブモジュールが実行する処理の順番を変えたり調べたりすることができない。またそのようなことをする必要性そのものがなくなっている。セッション開始通知361によって開始イベントハンドラ511が実行され、セッション処理内容指示352を自動的に送るので、セッション開始指示351を送った後のアプリケーション510は、セッション600の終了、つまりセッション終了通知362が送られてくるのをただ単に待っているだけでよいのである。アプリケーション510のこのような動作は、セッションの位相構造が複雑であっても本質的には変わらない。
本発明によるクラスタコンピュータミドルウェア500を使用して並列化したアプリケーションの、マスタモジュールのソースコードを図10に模式的に示す。この図と、図25に示したソースコードを比べると、先に指摘されていた従来のクラスタコンピュータミドルウェアの問題点の多くが本発明によって解消されたことがわかる。新しいソースコードは大幅に単純化されており、図24に示した並列化する前のソースコードとの対応もさせやすくなっている。
以上のように、クラスタコンピュータミドルウェア500を使うことにより、次の新規な効果が得られる。
(1)エラーが発生した場合には、セッション保持手段504が保持している現在のセッション600をアプリケーション510に通知することができる。そのためアプリケーション510から見ると、エラーの発生した部位を容易に推定することができるようになり、体系的なデバッグに役立つ。
(2)複数のコンピュータ110a〜110iから非同期的に発生する多数の通知340が統合されてアプリケーション510に送られる。そのためアプリケーション510には、それぞれのセッション600に対して行うべき処理を記述すればよく、またセッション600の実行される順番で書き下ろすことができる。また通知360を待つループを書く必要がなくなるので、ソースコードの可読性が高まる。
(3)セッションの前後関係・包含関係を変更せずに、並列処理の実行順序を見直し、ミドルウェアを改良していくことができる。アプリケーション510は、セッション600の前後関係・包含関係のみを利用して設計されているので、ミドルウェアを改良しても正しく動作することが保証される。
(4)並列処理の手順が大きく変わっても、アプリケーション510では開始通知・終了通知に対する処理を書き換えるだけである。そのため並列化するべき処理がたくさんある場合でも、それぞれの処理を類似の構造で書くことができ、ソースコードの管理が非常に容易になる。
(5)個々のコンピュータの動作タイミングについて考慮する必要がないので、ミドルウェアと同じセッション600の仕様を持つシミュレータを作ることができる。このシミュレータを使うことで、クラスタコンピュータを用意しなくても、並列処理を行うアプリケーションを開発することができる。
(6)メイン処理からの指示があっても、すぐにサブ処理の実行が始まるとは限らない。したがってメイン処理は、サブ処理を実行するタイミングを管理する責任から解放される。サブ処理の管理をミドルウェアに任せるようにすれば、アプリケーションがきわめて簡単なものになる。
実施例2と実施例3では、実施例1で説明したクラスタコンピュータミドルウェア500を活用するシステムを取り上げ、具体的なアプリケーション510を作成する方法について説明する。実施例2では天気図作成システム700を、実施例3では3次元画像処理システム800を例に取り上げる。
始めに本発明を天気図作成システムに応用した実施例を説明する。
図11に、本発明によるクラスタコンピュータミドルウェア500を利用する、天気図作成システム700の構成を示す。天気図作成システム700は、天気図作成アプリケーション701とクラスタコンピュータ100によって構成されており、地形データ711と地方別気象データ712a〜712hをもとに全国の天気図720を作成する機能を持つ。クラスタコンピュータ100は、本発明によるクラスタコンピュータミドルウェア500を使って構成されている。
天気図作成システム700では、処理に要する時間を短縮するため、地方別に天気図720を作成した後、それらをつなぎ合わせて全国の天気図720を作成する。地方別の天気図720を作成するには、地形データ711と、その地方に対応する地方別気象データ712が必要である。すなわちクラスタコンピュータ702を構成するスレーブノードには、マスタノードからこれらのデータを分配しなければならない。
地形データ711と地方別気象データ712a〜712gのうち、地形データ711は時間とともに変化することのないデータなので、システムを立ち上げた時にそれぞれのスレーブノードに分配しておけばよい。しかし地方別気象データ712a〜712gは、時々刻々と変化するデータなので、処理のたびに最新のデータを分配する必要がある。このように一部の素材データを削除せずに残しておくような処理手順を採用することで、この素材データをスレーブノードに分配するのに必要な時間を省くことができる。
以上のような処理手順を実現するには、図6や図7に示したセッション600の開始・終了イベントに対し、アプリケーションを次のように動作させればよい。
(1)Deliverセッションの開始イベント
すでに地形データ711がスレーブノードに分配されているかどうかを調べ、分配されていなければ、地形データ711をそれぞれのスレーブノードにコピーするように指示する。
(2)Batchセッションの開始イベント
地方別気象データ712a〜712gを、それぞれのスレーブノードにコピーするように指示する。
(3)Receiveセッションの開始イベント
地方別の天気図720をマスタノードにコピーするように指示する。
(4)Receiveセッションの終了イベント
マスタノードにコピーされた地方別の天気図720から、全国の天気図720を作成する。
(5)Wasteセッションの開始イベント
地方別気象データ712と地方別の天気図720を削除するように指示する。
以上のようにクラスタコンピュータミドルウェア500を使用すると、五つのイベントに対する処理を記述するだけで、簡単に上記の並列処理手順を実装することができる。
次に本発明を3次元画像処理システムに応用した例について説明する。
図12に、本発明によるクラスタコンピュータミドルウェア500を利用する、3次元画像処理システム800の構成を示す。3次元画像処理システム800は、3次元画像処理アプリケーション801とクラスタコンピュータ100によって構成されており、3次元形状データ811にレンダリング条件812を適用して表示用のレンダリング画像820を作成する機能を持つ。クラスタコンピュータ100は、本発明によるクラスタコンピュータミドルウェア500を使って構成されている。
3次元画像処理システム800では、処理に要する時間を短縮するため、表示領域を分割してレンダリングを行う。この処理には、3次元形状データ811とレンダリング条件812が必要である。すなわちクラスタコンピュータ802を構成するスレーブノードには、マスタノードから3次元形状データ811を分配してから、レンダリング条件812を伝え、さらにスレーブノードごとに異なる表示領域を指示して処理をさせることになる。すべてのスレーブノードの負荷を均一にするには、表示領域の分割を、スレーブノードの数に対して充分に細かくしておくことが望ましい。そのためスレーブノードで処理が終了したら、マスタノードはすぐ次の表示領域をスレーブノードに指示し、次の処理をさせるように動作しなければならない。
以上のような処理手順を実現するには、図6や図7に示したセッション600の開始・終了イベントに対し、アプリケーションを次のように動作させればよい。
(1)Deliverセッションの開始イベント
3次元形状データ811をすべてのスレーブノードにコピーするように指示する。
(2)Executeセッションの開始イベント
Batchセッションの番号に対応する表示領域を求め、レンダリング条件812とともにスレーブノードに伝えるよう指示する。
(3)Receiveセッションの開始イベント
分割されたレンダリング画像820をマスタノードにコピーするように指示する。
(4)Receiveセッションの終了イベント
マスタノードにコピーされた、分割されたレンダリング画像320から、一つのまとまったレンダリング画像820を合成する。
(5)Wasteセッションの開始イベント
分割されたレンダリング画像820を削除するように指示する。
(6)Cleanセッションの開始イベント
すべてのスレーブノードにコピーされた3次元形状データ811を削除するように指示する。
以上のようにクラスタコンピュータミドルウェア500を使用すると、六つのイベントに対する処理を記述するだけで、簡単に上記の並列処理手順を実装することができる。
さらに天気図作成システム700と3次元画像処理システム800では、並列処理手順が異なるにもかかわらず、アプリケーション510はいずれも、セッションの開始・終了イベントに対する処理の集まりとして記述される。このようにソースコードの書き方が並列処理手順に依存しなくなることも、クラスタコンピュータミドルウェア500を使用する利点である。
次に、本発明を応用したクラスタコンピュータシミュレータについて説明する。
本発明によるクラスタコンピュータシミュレータ900の構成を図13に示す。本発明によるクラスタコンピュータシミュレータ900を構成する要素の多くは、クラスタコンピュータミドルウェア500と共通するものである。しかし1台のコンピュータで動作するクラスタコンピュータシミュレータ900では、実際のコンピュータ110の代わりにコンピュータシミュレータ910a、910b〜910iが使用されている。スレーブコンピュータやスレーブモジュールに関係する要素も除去されている。またコンピュータインタフェース503の代わりにコンピュータシミュレータインタフェース903が使用され、通信ネットワーク120を経由して送られる指示330と通知340の代わりに、通信を伴わない模擬的な指示370と模擬的な通知380が使用されている点も異なる。しかしクラスタコンピュータシミュレータ900とクラスタコンピュータミドルウェア500では、セッションの位相構造とアプリケーションインタフェース510が同一である。したがってクラスタコンピュータシミュレータ900とリンクして正しく動作するアプリケーション510は、クラスタコンピュータミドルウェア500とリンクしても正しく動作することが保証されている。
コンピュータシミュレータ910は、個々のコンピュータ110の動作を模擬するシミュレータで、独立に動作する複数のコンピュータ110の動作を正確に模擬するため、それぞれ独立したスレッド(プログラムの内部で同時に実行することのできる処理の単位)として実装されている。
クラスタコンピュータシミュレータ900の画面の一例を図14に示す。この画面には、IPアドレスが表示された複数の円形が表示されており、それぞれがコンピュータシミュレータ910に対応している。コマンドメニュー1001を操作すると、円形を追加・削除したりIPアドレスを変えたりすることができ、実際に使用するクラスタコンピュータと同じ構成を作ることができる。
クラスタコンピュータシミュレータ900が動作している時には、それぞれのコンピュータシミュレータ910の状態によって画面がリアルタイムに変化する。細い輪郭の円形1010は、休止中のコンピュータシミュレータ910を、太い輪郭の円形1011は、処理実行中のコンピュータシミュレータ910を表している。また矢線1012はデータのコピーを表している。
円形をマウスでクリックすると、コンピュータシミュレータ910が保持しているデータ(ファイル・メモリ)を表示させることができる。この機能を使うと、スレーブコンピュータが処理を開始する前に必要なデータが正しく配布されたかどうか、一連の処理が終わった時点で不要なデータが残されていないかどうかを確認することができ、信頼性の高いアプリケーション510の開発に役立つ。
本発明の第5の実施例になる、クラスタコンピュータミドルウェアについて説明する。
第5の実施例において、クラスタコンピュータ100を構成している、マスタコンピュータ110aとスレーブコンピュータ110b〜110iの内部の構成を図15に模式的に示す。マスタコンピュータ110aとスレーブコンピュータ110b〜110iには、それぞれクラスタコンピュータミドルウェア1200とアプリケーション1300が、マスタモジュールとスレーブモジュールに分割されてインストールされている。これらのコンピュータ110はそれぞれ、ネットワークインタフェース111と、メモリ112と、ディスク113を備えている。ディスク113には、クラスタコンピュータミドルウェア1200と、アプリケーション1300が格納されている。これらはメモリ112にロードされ、相互にリンクして動作する。ネットワークインタフェース111は、マスタコンピュータ110aとスレーブコンピュータ110b〜110iを、ネットワーク120を介して相互に接続する。そのため任意のコンピュータ110の間でデータ通信が可能である。なお以下の記述では、誤解が生じないと思われる場合に限り、「マスタ」・「スレーブ」という表記を適宜省略する。
クラスタコンピュータミドルウェア1200とアプリケーション1300の内部の論理的構成を図16に示す。クラスタコンピュータミドルウェア1200の、マスタモジュール1200aとスレーブモジュール1200b〜1200iは、それぞれ通信手段1220と、データコピー手段1230と、データ消去手段1240と、イベント発生手段1250を共通して備えている。またマスタモジュール1200aに限り、スケジューラ1210と、割り込み受理手段1260を備えている。
スケジューラ1210は、あらかじめ決められた処理手順に従い、データコピー手段1230や、データ消去手段1240や、イベント発生手段1250に指示を送る機能を持つ。これによって実際に、データのコピー、データの消去、イベントの発生が行われる。
通信手段1220は、スケジューラ1210から送られてくる指示、およびメモリ112やディスク113に格納されているメモリブロックやファイルのデータを、他のコンピュータに伝送するものである。これは通常、オペレーションシステム(OS)が提供するソケット通信の仕組みによって実装される。
データコピー手段1230は、スケジューラ1210から送られてくる指示を受け、メモリブロックやファイルのデータをコピーする機能を持つ。データのコピーを他のコンピュータに行う場合、通信手段1220を間接的に使用してデータを伝送する。これは通常、OSが提供するディスク操作やメモリ操作の仕組みによって実装される。
データ消去手段1240は、スケジューラ1210から送られてくる指示を受け、メモリブロックやファイルのデータを消去する機能を持つ。これは通常、OSが提供するディスク操作やメモリ操作の仕組みによって実装される。
イベント発生手段1250は、スケジューラ1210から送られてくる指示を受け、あらかじめアプリケーション1300が設定したルーチンを実行する機能を持つ。このルーチンは「イベントハンドラ」と呼ばれる。これは通常、OSが提供するルーチンコールバック(アプリケーションの機能をライブラリから使うこと)の仕組みによって実装される。イベントハンドラでは、データの作成・変換を含む任意の処理を行うことができる。またイベントハンドラの引数に、スケジューラ1210が備えている操作対象データリスト1212を渡すことも可能である。操作対象データリスト1212は、クラスタコンピュータミドルウェア1200によってコピーあるいは消去されるデータ、もしくはコピーあるいは消去されたデータのリストである。アプリケーション1300は操作対象データリスト1212に対し、データを識別するためのインデックス(メモリブロックのアドレス、ファイルの名前など)を追加したり、削除したりすることができる。クラスタコンピュータミドルウェア1200では、実際にデータのコピーや消去が行われるタイミングをアプリケーション1300から制御することができない。つまりアプリケーション1300でデータのコピー・消去を制御・監視するには、イベントハンドラの中で操作対象データリスト1212を使い、操作対象となるデータを事前に設定したり、操作対象となったデータを事後に取得したりする方法を使わなければならない。イベントの発生するタイミングは、スケジューラ1210に任せられているが、各種のイベントが発生する順番を体系的に整理して理解しやすくするには、たとえば第1の実施例に記載したようなセッション600の考え方を導入し、その開始と終了の際にイベントが発生するものと規定してもよい。
割り込み受理手段1260は、処理完了率の取得や処理の中断など、非同期的な処理の要求を受け付け、スケジューラ1210に知らせる機能を持つ。
アプリケーション1300の、マスタモジュール1300aとスレーブモジュール1300b〜1300iは、共通してイベントハンドラ設定手段1310を備えている。またアプリケーション1300のマスタモジュール1300aに限り、割り込み要求手段1320を備えている。
イベントハンドラ設定手段1310は、イベント発生手段1250の動作によって実行される、イベントハンドラを設定する機能を持つ。これは通常、OSが提供するルーチンコールバックの仕組みによって実装される。
割り込み要求手段1320は、処理完了率の取得や処理の中断など、非同期的な処理をスケジューラ1210に要求する機能を持つ。これは通常、OSが提供するルーチンエクスポート(ライブラリの機能をアプリケーションから使うこと)の仕組みによって実装される。処理完了率の取得は通常、OSが提供するタイマによって行われる。また処理の中断は通常、ユーザの操作によって行われる。
以上の構成により、クラスタコンピュータ100では、スケジューラ1210が個々のコンピュータ110におけるデータのコピー、データの消去、イベントの発生を集中的に制御することができる。これらの三つの操作は、さまざまな並列処理を実現する要素となるものである。あらゆる並列処理は、これらの要素的な操作の組み合わせによって実現することができる。つまりクラスタコンピュータ100が正しく動作するかどうかは、スケジューラ1210がスケジューリングを正しく行うかどうかに依存する。
スケジューラ1210の動作(スケジューリング)を支配する処理手順1400の例を図17に示す。処理手順1400は、階層的にいくつかの部分に分けられている。それぞれの部分で行われる処理は次のとおりである。
(1)Copy部分1401
ノードにある一つのデータを、他のノードにコピーする。
(2)Delete部分1402
ノードにある一つのデータを削除する。
(3)Send部分1403
マスタノードにあるデータを、スレーブノードにコピーする。
(4)Execute部分1404
スレーブノードにタスクを実行させる。
(5)Receive部分1405
スレーブノードにあるデータを、マスタノードにコピーする。
(6)Waste部分1406
スレーブノードにあるデータを削除する。
(7)Batch部分1407
一つのスレーブノードに分散処理をさせる。
(8)Deliver部分1408
マスタノードにあるデータを、すべてのスレーブノードにコピーする。
(9)Race部分1409
すべてのスレーブノードに分散処理をさせる。
(10)Clean部分1410
すべてのノードにあるデータを削除する。
(11)Operate部分1411
クラスタコンピュータ100を動作させる。
なおここでは、スケジューラ1210が管理しているコンピュータ110のことを「ノード」と呼ぶ。スケジューラ1210は、マスタコンピュータ110aで動作しながら、後述するノードリスト1510を使用することにより、マスタノードとスレーブノードの両方を一元的に管理している。
スケジューラ1210はスケジューリングを行うにあたり、データ配置テーブル1212とノード属性テーブル1213を使用する。
データ配置テーブル1212は、たとえば図18に示すデータ構造により、個々のコンピュータ110が保持しているデータを把握・管理する機能を持つ。ノードリスト1510は、クラスタコンピュータ100に含まれるコンピュータ110のリストであり、それぞれのコンピュータ110に対応する要素である、ノードを保持している。それぞれのノードはデータリスト1520を保持している。データリスト1520は、コンピュータ110が保持しているデータ(メモリブロック・ファイル)のリストである。
データ配置テーブル1212は、スケジューラ1210がデータをコピーさせたり、消去させたりするたびに自動的に更新される。そのためスケジューラ1210は、データ配置テーブル1212を参照することで、その時点でのデータの配置状況を知ることができる。
ノード属性テーブル1213は、たとえば図19に示すデータ構造により、個々のコンピュータ110(ノード)に関する属性1530や、状態1540を把握・管理する機能を持つ。ノードの属性1530には、次のようなものが含まれる。
(1)IPアドレス
(2)処理速度の計測値
またノードの状態1540には、次のようなものが含まれる。
(3)処理中かどうか(イベントハンドラを実行しているかどうか)
(4)通信中かどうか(ネットワークを使用しているかどうか)
(5)故障中かどうか
ノード属性テーブル1213に保持されるノードの状態1540も、スケジューラ1210の動作(スケジューリング)に伴って更新される。そのためスケジューラ1210は、ノード属性テーブル1213を参照することで、その時点でのノードの状態1540を知ることができる。
次にスケジューラ1210がスケジューリングを行う際、どのようにデータ配置テーブル1212とノード属性テーブル1213を使用するかを説明する。ここでは処理手順1400を例に、次の六つの場合について説明する。
(1)データの一括配布(Deliver部分1408の実行)
(2)データの一括消去(Clean部分1410の実行)
(3)分散処理(Race部分1409の実行)
(4)処理完了率の取得
(5)処理の中断
(6)スレーブコンピュータ110b〜110iの故障。
(1.データの一括配布)
Deliver部分1408では、操作対象データリスト1211に含まれているデータを、マスタノードからすべてのスレーブノードにコピーする。この動作を実現するため、スケジューラ1210はデータ配置テーブル1212を参照し、そのデータを保持しているノードと保持していないノードを、それぞれ一つずつ選定する。この選定には乱数を使ってもよいし、コンピュータ110がネットワーク120に接続されているトポロジを利用してもよい。たとえば複数のハブを含む木構造のトポロジを持つネットワーク120では、ハブを結ぶ伝送路の通信量が他の伝送路に比べて非常に大きくなる傾向がある。そこでハブの経由数の大きい、つまり送信元のノードから位相的に離れているノードに対して優先的にデータをコピーするようにすると、ハブを結ぶ伝送路には一度だけしかデータが通さないようになるので、システムの性能が向上する。
現在の状態が処理中あるいは通信中のノードは、データの送受信を行うことができない。そこでスケジューラ1210は、ノード属性テーブル1213を参照することで、これらのノードの使用を避けるようにする。データの送信元のノードと受信先のノードが決まった時点で、スケジューラ1210は送信元のノードに対し、受信元のノードにデータを送るように指示する。データのコピーが始まったら、ノード属性テーブル1213を更新し、送信元のノードと受信先のノードの状態を通信中に変える。データのコピーが終わったら、これらのノードの状態をもとに戻す。こうしてすべてのノードがそのデータを保持するようになるまで、上記の作業を繰り返す。
(2.データの一括消去)
Clean部分1410では、それぞれのノードに保持されているデータを消去する。この動作を実現するため、スケジューラ1210はノードを選定した上で、データ配置テーブル1212を参照し、そのノードが保持しているデータの一覧を取得する。その後ノードに対し、それぞれのデータを消去するように指示する。こうした作業をすべてのノードに対して行う。
(3.分散処理)
Race部分1409では、本来行うべき処理の全体を細かく分割した部分的な処理(タスク)を、それぞれのスレーブノードに実行させる。アプリケーション1300のスレーブモジュール1300b〜1300iでは、個々のタスクをイベントハンドラとしてあらかじめ設定しておく。そのためスケジューラ1210の動作は、現在の状態が処理中でも通信中でもないノードを見つけ、イベントを発生させるように指示する動作になる。ノードの状態を把握するには、ノード属性テーブル1213を参照する。使用可能なノードが見つかった場合、その中から一つを選定する。この選定には乱数を使ってもよいし、個々のノードの処理速度の計測値がわかっている場合には、最後近くのタスクに対し、処理速度の遅いノードを割り当てないような方法を採ってもよい。最後のタスクを遅いノードに実行させると、それがシステム全体を待たせてしまい、性能を低下させるからである。ノードがイベントハンドラを実行し始めたら、スケジューラ1210はノード属性テーブル1213を更新し、ノードの状態を処理中に変える。またイベントハンドラを実行し終えたら、ノードの状態をもとに戻す。こうして分割されたすべてのタスクが実行されるまで、上記の作業を繰り返す。
(4.処理完了率の取得)
処理完了率の取得では、個々のタスクについて完了率を求め、それらの平均を算出する。ノード属性テーブル1213を参照することで、現在タスクを実行しているノードを知ることができる。アプリケーション1300のスレーブモジュール1300b〜1300iでは、タスクの完了率を求めるイベントハンドラを用意し、あらかじめ設定しておくことができる。そのためタスクを実行しているノードを知ったスケジューラ1210は、そのノードに対してイベントを発生させるように指示し、タスクの完了率を知ることができる。こうしてすべてのタスクに対して同様の操作を行い、最終的に平均を求めて、アプリケーション1300の割り込み要求手段1320に返す。
(5.処理の中断)
処理の中断では、実行中のすべてのタスクを中断させるとともに、配布された一時的なデータを消去しなければならない。タスクの中断についてスケジューラ1210は、ノード属性テーブル1213を参照することで、現在タスクを実行しているノードを知ることができる。アプリケーション1300のスレーブモジュール1300b〜1300iでは、タスクを中断させるイベントハンドラを用意しておくこともできる。すなわちスケジューラ1210は、タスクを実行しているすべてのノードに対し、イベントを発生させるように指示すればよい。
また一時的なデータをすべて消去するには、データ配置テーブル1212を参照して一時的なデータの一覧を取得した上で、そのデータを保持しているノードに対し、それらのデータを消去させるように指示すればよい。
(6.スレーブコンピュータ110b〜110iの故障)
スレーブコンピュータ110b〜110iのいずれかが故障した場合、ノード属性テーブル1213を更新し、故障したノードの状態を故障中に変える。これによってスケジューラ1210は、故障したノードの使用を避ける。その上で、故障したノードで実行されたタスクを、故障していない他のスレーブノードで再実行させる。タスクの再実行は、そのタスクを含むBatch部分1407を再び実行させることで行うことができる。
クラスタコンピュータミドルウェア1200は、アプリケーション1300に対し、スケジューラ1210の動作を開始させるためのルーチンをエクスポートしている。そのためアプリケーション1300は、任意のタイミングでスケジューラ1210の動作を開始させることができる。しかし、ひとたびスケジューラ1210が動作を開始すると、制御はスケジューラ1210に移るので、その動作が終了するまで制御はアプリケーション1300に戻らない。
クラスタコンピュータミドルウェア1200とアプリケーション1300の間で、時間とともに制御が移動する様子を図20に示す。ここでは「シーケンシャル」と「イベントドリブン」という語句を使用するが、これらの語句の定義については後述することにして、まずは説明を先に述べる。初期状態ではアプリケーション1300が制御を持っている。アプリケーション1300は、「シーケンシャル」に前処理1610を実行した後、並列処理1620も同じく「シーケンシャル」に開始させる。これによってスケジューラ1210の動作(スケジューリング1640)が開始される。並列処理1620の実際の処理は、スケジューラ1210の動作が終了するのを待ちながら、その間にイベントが発生したら、それに対応するイベントハンドリング1641・1642・1643を実行する処理である。すなわちイベントハンドリング1641・1642・1643は、スケジューリング1640の進行に伴い、「イベントドリブン」に実行される。最終的に処理手順が完了し、スケジューラ1210の動作が終了すると、制御は再びアプリケーション1300に戻され、並列処理1620に続く後処理1630が「シーケンシャル」に実行される。
ここで「シーケンシャル」とは、プログラムに書かれたとおりのタイミングで実行される、あるいはソースコードから予測される順番で実行されることを意味する。これに対して「イベントドリブン」とは、必ずしもプログラムに書かれたとおりのタイミングで実行されない、あるいはソースコードから予測することのできない順番で実行されることを意味する。これらの区別は、アプリケーション1300のソースコードを見るとわかりやすい。ソースコードについては後述する。
実際のクラスタコンピュータミドルウェア1200とアプリケーション1300は、それぞれマスタモジュールとスレーブモジュールに分割されているので、制御が移動する様子は図20よりも実際には複雑で、図21のようになる。ここで注意する必要があるのは、複数のコンピュータ110で構成されるクラスタコンピュータ100では、イベントハンドリング1641〜1647のうちのいくつかがまったく同時に終了する可能性があるということである。そこでスケジューラ1210には、同時に受け取った終了通知を時系列的に並べ替える(シリアライズする)手段を設ける必要がある。これはたとえば、待ち行列(キュー)やFIFOバッファを使って実現することができる。
またスケジューリング1640の方法によっては、必ずしも分割されたタスクの順番でイベントハンドリング1641〜1647が実行されるとは限らない。そこでスレーブコンピュータ110b〜110iに、それぞれが実行するべきタスクの内容を伝えるため、イベントハンドラにはタスクを識別するための番号を引数として渡すようになっている。
アプリケーション1300のマスタモジュール1300aのソースコードを図22に示す。前処理1610と、並列処理1620と、後処理1630は、シーケンシャルに実行される処理なので、ソースコードの上でもメインルーチン1710に連続して記述されている。これに対してイベントハンドリング1641・1642・1643は、イベント発生をトリガとして実行されるので、必ずしもソースコードの上に記述されている、イベントハンドラ1721・1722・1723の順番で実行されるとは限らない。イベント発生の順番は、スケジューラ1210が実際に動作した結果として決まってくる。それはスケジューラ1210の動作を支配している処理手順、コンピュータ110の台数や接続方法、コンピュータ110の性能のばらつき、割り込み処理の要求の有無、内部で使用している乱数の偶然性など、いろいろな要因によって動的に変化するものである。
このように、本実施例によるクラスタコンピュータミドルウェア1200における並列処理は、メインルーチン1710をブロックして(一時停止させて)動作するスケジューリングと、メインルーチン1710に対して非同期的に動作する複数のイベントハンドラ1721・1722・1723の組み合わせとして実現されている。
このことは「アプリケーション1300が、イベントドリブンに実行される処理(イベントハンドリング)のみで、並列処理を実装しなければならない」ことを意味する。これはアプリケーション1300に対し、一種の制約を課すことになる。しかしこの制約を遵守することで、クラスタコンピュータ100の実際の構成がアプリケーション1300から隠される。その結果、アプリケーション1300の開発者は、次の効果を享受することができる。
(1)アプリケーション1300に、個々のコンピュータ110を管理したり、スケジューリングを行ったりする仕組みを実装する必要がなくなるので、アプリケーション1300の移植・開発が容易になる。
(2)アプリケーション1300が、コンピュータ110の台数やネットワーク120の種類に依存しなくなる。そのためアプリケーション1300を、不特定多数のユーザに配布して使用させることができるようになる。
(3)アプリケーション1300が行うべき並列処理を、形式の揃ったイベントハンドラの集合として記述することができるので、ソースコードが読みやすくなる。またイベントハンドラの処理内容を変えれば、さまざまな並列処理を記述することもできる。すなわちソースコードの可読性と、処理手順の自由度を両立させることができる。
(4)アプリケーション1300がスケジューラ1210の処理手順に依存しなくなるので、将来の上位互換性が保証される。スケジューラ1210が改良されても、アプリケーション1300を修正する必要がなくなる。
(5)現在イベントハンドリングを行っているコンピュータ110や、個々のコンピュータ110に保持されているデータを、スケジューラ1210が知ることができる。そのため処理完了率の取得や、処理の中断といった割り込み処理の要求に対し、スケジューラ1210が個々のコンピュータ110に対して適切な指示を自動的に割り振ることができる。そのためこのような仕組みをアプリケーション1300に実装する必要がなくなる。
(6)クラスタコンピュータ100と同一の処理手順のスケジューラ1210を持つクラスタシミュレータを用意すれば、実際にクラスタコンピュータ100を用意しなくても、アプリケーション1300を動作させることができる。そのためアプリケーション1300のチーム開発・先行開発や、マスタモジュール1300aとスレーブモジュール1300b〜1300iのクロスデバッグが可能になる。
以上のとおり、本発明の実施例5によれば、マスタモジュールとスレーブモジュールから構成されるクラスタコンピュータミドルウェアに、アプリケーションの処理を一時的にブロックして動作するスケジューラと、スケジューラからの指示を受けてアプリケーションが事前に設定したイベントハンドラを実行する手段を備えている。これにより、多大な費用・労力や高度な知識・技術を必要とせず、並列アプリケーションを開発することのできる環境を提供することができる。また高い拡張性と上位互換性を持つ並列アプリケーションを開発することのできる環境を提供することができる。
100 クラスタコンピュータ
110 コンピュータ
110a (マスタ)コンピュータ
110b〜110i (スレーブ)コンピュータ
111 ネットワークインタフェース
112 メモリ
113 ディスク
120 通信ネットワーク
131 ディスプレイ
132 キーボード
133 マウス
210 素材データ
220 結果データ
221 結果データ(断片)
310 (個別に送られる、アプリケーションから分配統合制御手段への)指示
320 (個別に送られる、分配統合制御手段からアプリケーションへの)通知
330 (分配統合制御手段からコンピュータへの)指示
340 (コンピュータから分配統合制御手段への)通知
350 (アプリケーションから分配統合制御手段への)指示
351 セッション開始指示
352 セッション処理内容指示
360 (分配統合制御手段からアプリケーションへの)通知
361 セッション開始通知
362 セッション終了通知
370 (分配統合制御手段からコンピュータシミュレータへの)模擬的な指示
380 (コンピュータシミュレータから分配統合制御手段への)模擬的な通知
410 グローバル変数
420 (通知320をトリガとして実行される)処理ブロック
430 (特定の処理をトリガとして実行される)処理ブロック
500 クラスタコンピュータミドルウェア
500M クラスタコンピュータミドルウェア(マスタモジュール)
500S クラスタコンピュータミドルウェア(スレーブモジュール)
501 アプリケーションインタフェース
502 分配統合制御手段
503 コンピュータインタフェース
504 セッション保持手段
505 セッション更新手段
510 アプリケーション
510M アプリケーション(マスタモジュール)
510S アプリケーション(スレーブモジュール)
511 開始イベントハンドラ
512 終了イベントハンドラ
513 アドレス公開手段
520 アドレス
600、600A、600B セッション
601 Copyセッション
602 Deleteセッション
603 Sendセッション
604 Executeセッション
605 Receiveセッション
606 Wasteセッション
607 Batchセッション
608 Deliverセッション
609 Raceセッション
610 Cleanセッション
611 Operateセッション
700 天気図作成システム
701 天気図作成アプリケーション
711 地形データ
712、712a〜712h 地方別気象データ
720 天気図
800 3次元画像処理システム
801 3次元画像処理アプリケーション
811 3次元形状データ
812 レンダリング条件
820 レンダリング画像
900 クラスタコンピュータシミュレータ
903 コンピュータシミュレータインタフェース
910 コンピュータシミュレータ
910a (マスタ)コンピュータシミュレータ
910b〜910i (スレーブ)コンピュータシミュレータ
1001 コマンドメニュー
1010 細い輪郭の円形
1011 太い輪郭の円形
1012 矢線
1200 クラスタコンピュータミドルウェア
1200a クラスタコンピュータミドルウェアのマスタモジュール
1200b〜1200i クラスタコンピュータミドルウェアのスレーブモジュール
1210 スケジューラ
1211 操作対象データリスト
1212 データ配置テーブル
1213 ノード属性テーブル
1220 通信手段
1230 データコピー手段
1240 データ消去手段
1250 イベント発生手段
1260 割り込み受理手段
1300 アプリケーション
1300a アプリケーションのマスタモジュール
1300b〜1300i アプリケーションのスレーブモジュール
1310 イベントハンドラ設定手段
1320 割り込み要求手段
1400 処理手順
1401 Copy部分
1402 Delete部分
1403 Send部分
1404 Execute部分
1405 Receive部分
1406 Waste部分
1407 Batch部分
1408 Deliver部分
1409 Race部分
1410 Clean部分
1411 Operate部分
1510 ノードリスト
1520 データリスト
1530 属性
1540 状態
1610 前処理
1620 並列処理
1630 後処理
1640 スケジューリング
1641〜1647 イベントハンドリング
1710 メインルーチン
1721、1722、1723 イベントハンドラ。

Claims (12)

  1. クラスタコンピュータの上で動作し、複数のコンピュータを協調動作させる機能をアプリケーションプログラムに提供するクラスタコンピュータミドルウェアプログラムであって、前記クラスタコンピュータが、一つのマスタコンピュータと、一つ以上のスレーブコンピュータと、前記マスタコンピュータおよび前記スレーブコンピュータを相互に接続するネットワークとを含むものにおいて、
    前記クラスタコンピュータミドルウェアプログラムが少なくとも、
    前記マスタコンピュータで動作するマスタアプリケーションプログラムとのリンクが可能なマスタモジュールと、
    前記スレーブコンピュータで動作するスレーブアプリケーションプログラムとのリンクが可能なスレーブモジュールとによって構成され、
    前記マスタモジュールが、
    並列処理全体の構成要素である個々のタスクに対し、前記タスクを実行させるコンピュータとタイミングとを決定する機能を持つスケジューラを備え、
    前記マスタモジュールに、
    前記スケジューラ動作を開始する前前記マスタアプリケーションプログラムの処理を一時停止させ、前記スケジューラが前記動作を終了した後前記マスタアプリケーションプログラムの処理を再開させる機能を実現させ、かつ
    前記マスタモジュールおよび前記スレーブモジュール
    前記スケジューラから受け取った指示に基づき、前記スレーブモジュールと相互に通信する機能と、
    前記タスクを実行するイベントハンドラをあらかじめ設定する機能と、
    前記スケジューラの動作の開始に伴い、前記スケジューラから受け取った指示に基づき、前記イベントハンドラを実行する機能とを実現させる
    ことを特徴とするクラスタコンピュータミドルウェアプログラム
  2. 請求項1に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記クラスタコンピュータミドルウェアプログラムが、
    前記マスタコンピュータに、
    逐次的にルーチンを実行する前記マスタアプリケーションプログラムからの呼び出しによって動作し、
    前記スケジューラの動作を開始させ、かつ前記スケジューラの終了を待つ機能を有する前記ルーチンを前記マスタアプリケーションプログラムに公開する機能実現させる
    ことを特徴とするクラスタコンピュータミドルウェアプログラム
  3. 請求項1に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記クラスタコンピュータミドルウェアプログラムが、
    前記マスタコンピュータの前記マスタモジュール、あるいは前記スレーブモジュール
    データのコピーを行うデータコピー機能と、
    データの消去を行うデータ消去機能とを備え、かつ
    前記スケジューラが、
    前記データコピー機能、および前記データ消去機能を動作させる機能を備える、ことを特徴とするクラスタコンピュータミドルウェアプログラム
  4. 請求項3に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記クラスタコンピュータミドルウェアプログラムが前記マスタモジュールおよび前記スレーブモジュールに、
    前記イベントハンドラの実行、前記データのコピー、前記データの消去のうち、少なくとも一つの終了を知らせる通知を前記スケジューラに送る機能実現させ
    前記クラスタコンピュータミドルウェアプログラムが前記スケジューラに、
    前記マスタモジュールおよび前記スレーブモジュールから送られる通知を時系列的に並べ替える機能実現させる
    ことを特徴とするクラスタコンピュータミドルウェアプログラム
  5. 請求項3に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記イベントハンドラが、
    コピーあるいは消去の対象となる操作対象データリストに対し、データを識別するためのインデックスを追加する機能、あるいは削除する機能を備え、かつ
    前記スケジューラが、前記操作対象データリストに基づいて前記データコピー機能、および前記データ消去手機能を動作させる機能を備える、
    ことを特徴とするクラスタコンピュータミドルウェアプログラム
  6. 請求項3に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記マスタモジュールが、
    前記マスタアプリケーションプログラムから処理中断要求を受け取る機能を備え、かつ
    前記スケジューラが、
    コピーあるいは消去された前記データの配置を管理する機能と、
    前記処理中断要求を受け取った時に、前記データ消去機能に対し、前記データの配置に基づいて、中間的な前記データを消去させる指示を送る機能とを備える、
    ことを特徴とするクラスタコンピュータミドルウェアプログラム
  7. 請求項1に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記スケジューラが、
    前記マスタコンピュータおよび前記スレーブコンピュータが前記イベントハンドラを実行しているかどうかを管理する機能と、
    前記イベントハンドラを実行しているかどうかに基づき、
    前記マスタモジュールあるいは前記スレーブモジュールに、
    前記イベントハンドラの複数回の実行を振り分ける機能とを備える、
    ことを特徴とするクラスタコンピュータミドルウェアプログラム
  8. 請求項7に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記スケジューラが、
    前記マスタコンピュータおよび前記スレーブコンピュータの処理速度を把握する機能と、
    前記イベントハンドラの複数回の実行を、その順番に基づき、
    複数の前記マスタコンピュータあるいは前記スレーブコンピュータのうち、処理速度の速いものに優先的に振り分ける機能とを、備えることを特徴とするクラスタコンピュータミドルウェアプログラム
  9. 請求項7に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記スケジューラが
    前記マスタモジュールおよび前記スレーブモジュールに振り分けられた前記イベントハンドラを実行させる際、
    前記マスタコンピュータおよび前記スレーブコンピュータを一意に識別する情報、もしくは前記イベントハンドラの個々の実行を一意に識別する情報を前記イベントハンドラに渡す、ことを特徴とするクラスタコンピュータミドルウェアプログラム
  10. 請求項1に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記スケジューラが、
    前記スレーブコンピュータの故障を検知する機能と、
    前記故障を検知した後、
    故障した前記スレーブモジュールに対して送った指示の複製を他の故障していない前記スレーブモジュールに対して送り直す機能とを備える、
    ことを特徴とするクラスタコンピュータミドルウェアプログラム
  11. 請求項3に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記スケジューラが、
    少なくとも一つの前記スレーブモジュールの前記データコピー機能に対し、他の前記スレーブモジュールにデータをコピーさせる機能を備える、
    ことを特徴とするクラスタコンピュータミドルウェアプログラム
  12. 請求項11に記載のクラスタコンピュータミドルウェアプログラムであって、
    前記ネットワークのトポロジが複数のハブを含む木構造であり、
    前記スケジューラが、
    前記ネットワークの前記トポロジを把握する機能と、
    コピー元になる前記マスタモジュールあるいは前記スレーブモジュールと、
    コピー先になる他の前記スレーブモジュールが、異なる前記ハブに接続されているかどうかを判定し、
    前記判定の結果に基づいて
    前記コピー先になる他の前記スレーブモジュールを選定する機能とを、備えることを特徴とするクラスタコンピュータミドルウェアプログラム
JP2009128443A 2005-01-19 2009-05-28 クラスタコンピュータミドルウェアプログラム Expired - Fee Related JP5166350B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009128443A JP5166350B2 (ja) 2005-01-19 2009-05-28 クラスタコンピュータミドルウェアプログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005011576 2005-01-19
JP2005011576 2005-01-19
JP2009128443A JP5166350B2 (ja) 2005-01-19 2009-05-28 クラスタコンピュータミドルウェアプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005361565A Division JP4627491B2 (ja) 2005-01-19 2005-12-15 クラスタコンピュータミドルウェアプログラム、クラスタコンピュータシミュレータプログラム、クラスタコンピュータ用アプリケーションプログラム、およびアプリケーションプログラム開発支援方法

Publications (2)

Publication Number Publication Date
JP2009187590A JP2009187590A (ja) 2009-08-20
JP5166350B2 true JP5166350B2 (ja) 2013-03-21

Family

ID=41070678

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009128443A Expired - Fee Related JP5166350B2 (ja) 2005-01-19 2009-05-28 クラスタコンピュータミドルウェアプログラム

Country Status (1)

Country Link
JP (1) JP5166350B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120101929A1 (en) * 2010-08-26 2012-04-26 Massively Parallel Technologies, Inc. Parallel processing development environment and associated methods

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
JP2002518765A (ja) * 1998-06-17 2002-06-25 テラブス・リサーチ・リミテッド 通信コントローラメッセージングシステム
JP2003256390A (ja) * 2002-02-27 2003-09-12 Mitsubishi Electric Corp 分散オブジェクトシステム
JP2003280926A (ja) * 2002-03-22 2003-10-03 Canon Inc 情報処理装置及びその方法、記憶媒体、プログラム
JP2004038226A (ja) * 2002-06-28 2004-02-05 Hitachi Ltd Pcクラスタおよびその中間ソフトウエア

Also Published As

Publication number Publication date
JP2009187590A (ja) 2009-08-20

Similar Documents

Publication Publication Date Title
JP4627491B2 (ja) クラスタコンピュータミドルウェアプログラム、クラスタコンピュータシミュレータプログラム、クラスタコンピュータ用アプリケーションプログラム、およびアプリケーションプログラム開発支援方法
CN110941446B (zh) 基于多环境离线任务的版本发布方法及装置
JP3737686B2 (ja) ソフトウェア・アプリケーションの中断のない処理の実現方法
CN112099918A (zh) 容器化环境中的集群的实时迁移
US7716377B2 (en) Clustering server providing virtual machine data sharing
JP3439337B2 (ja) ネットワーク管理システム
US7844959B2 (en) Runtime optimization of distributed execution graph
CN102981929B (zh) 磁盘镜像的管理方法和系统
US20170033991A1 (en) Dynamic definition for concurrent computing environments
JP4327831B2 (ja) ストレージシステム、管理計算機及びコピーペア監視方法
US6928378B2 (en) Stress testing at low cost through parallel execution of unit tests
KR100437746B1 (ko) 원격의 호스트 시스템 상에서 실행되는 작업을 로컬의 워크스테이션에서 모니터링하는 방법 및 분산 컴퓨터 시스템과 컴퓨터 판독가능한 기록 매체
JP2004246892A (ja) マルチノード分散データ処理システムにおいてリモート・アクセス可能なリソースを管理する方法
JP2013526750A (ja) オブジェクトの共有および同期
JP2008021111A (ja) 業務システム構成変更方法、管理コンピュータ、および、業務システム構成変更方法のプログラム
JPH11184699A (ja) 移動オブジェクト群の実行方法、及び移動オブジェクト群を格納した記憶媒体
WO2021143590A1 (zh) 一种分布式容器镜像构建调度系统及方法
CN114756357B (zh) 一种基于jvm的非阻塞分布式计划任务调度方法
CN109992373B (zh) 资源调度方法、信息管理方法和装置及任务部署系统
US10845997B2 (en) Job manager for deploying a bundled application
CN113849137B (zh) 一种面向申威容器平台的可视化块存储方法和系统
JP2000066904A (ja) マルチタスク制御方法及び記憶媒体
JP5166350B2 (ja) クラスタコンピュータミドルウェアプログラム
JP5646511B2 (ja) 分散スペースを用いて分散プログラミング環境を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体
JP2004516573A (ja) コマンドパス自動決定アーキテクチャ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090528

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120718

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121220

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees