(57)【要約】【課題】本開示は、一般に多機能デバイス（ＭＦＤ）のネットワークにおけるジョブ・スケジューリング及び分散型実行に関する。【解決手段】本開示は、複数のノードを有し、その複数のノードが複数のネットワーク化されたスーパーピア（ＳＰ）及び複数のピアを含む、多機能デバイス（ＭＦＤ）のグリッドに関する。各々のＳＰ及びピアは、プロセッサを有するＭＦＤである。ピアは少なくとも２つのグループにグループ分けされ、１つのグループ内のピア同士は互いにデータ通信する。複数のＳＰの各ＳＰは、領域を形成するために少なくとも２つのグループのそれぞれのグループに関連付けられ、領域のグループに関連付けられたＳＰはそのグループ内の各ピアとデータ通信する。【選択図】図１
2010113714.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを有する複数の多機能デバイス（ＭＦＤ）ノードを含むＭＦＤのグリッドであって、前記複数のノードは、
複数のネットワーク化されたスーパーピア（ＳＰ）と、
少なくとも２つのグループにグループ分けされた複数のピアと
を含み、１つのグループ内の前記ピア同士は互いにデータ通信し、前記複数のＳＰの各ＳＰは、前記少なくとも２つのグループのそれぞれのグループに関連付けられ、領域を形成するために前記グループ内の前記ピアとデータ通信し、
起点ノードとして指定された前記複数のピアのうちの１つのピアは、データと前記データに対する動作を実施する要求とを含むジョブを受け取り、前記複数のピアが前記要求された動作を前記データに対して実行することに参加するように要求するための、前記ジョブのアドバタイズを開始し、
少なくとも１つのピアが、前記要求された動作を実施するために利用可能であり、かつそれを実施する能力があるということを応答し、
前記少なくとも１つの応答ピアに関連付けられたグローバル・ランキング及びローカル・ランキングのうちの少なくとも１つに従って、前記少なくとも１つの応答ピアから少なくとも１つのピアが選択され、前記グローバル・ランキングは、前記ＭＦＤグリッドの少なくとも２つのノードから見た前記少なくとも１つの応答ピアによる過去の性能に基づくものであり、前記ローカル・ランキングは、前記起点ノードから見た前記少なくとも１つの応答ピアによる過去の性能に基づくものであり、
前記ジョブデータの部分が、前記選択された少なくとも１つのピアのそれぞれの前記ローカル・ランキング及び前記グローバル・ランキングのうちの少なくとも１つに従って前記選択された少なくとも１つのピアに配分され、
前記ジョブデータの前記それぞれの部分は、それらが配分された前記選択された少なくとも１つのピアに発送され、
前記選択された少なくとも１つのピアのそれぞれは、それらに対して発送された前記ジョブデータの前記それぞれの部分に対して前記要求された動作を実行する
ことを特徴とするＭＦＤのグリッド。
【請求項２】
前記起点ノードは、前記少なくとも１つのピアを選択するため、及び前記少なくとも１つの選択されたピアに前記ジョブデータを割り当てるために、アルゴリズムを実行することを特徴とする請求項１に記載のグリッド。
【請求項３】
多機能デバイス（ＭＦＤ）のネットワークであって、
複数のＭＦＤを含み、各ＭＦＤは前記ネットワークの少なくとも１つの他のＭＦＤとデータ通信し、１つのＭＦＤは、データと前記データに対する動作を実施する要求とを含むジョブを受け取る起点ノードとして指定され、前記ネットワークの少なくとも２つのＭＦＤは前記ジョブデータの少なくとも部分に対して前記要求された動作を実行するために選択され、前記ジョブデータの部分は前記選択された少なくとも２つのＭＦＤに配分され、前記部分は、前記要求された動作を実施するために前記部分が配分された前記ＭＦＤに対して発送され、
前記ネットワークの前記ＭＦＤの構成及び以前の性能の少なくとも１つに関連する履歴情報を用いて、前記選択及び配分が実施される
ことを特徴とするネットワーク。
【請求項４】
多機能デバイス（ＭＦＤ）のネットワークのＭＦＤノードに到着したジョブをスケジューリングする方法であって、
前記ＭＦＤのネットワークの起点ノードにおいて、データと前記データに対する動作を実施する要求とを含むジョブを受け取り、
前記ジョブデータの少なくとも部分に対して前記要求された動作を実行させるために前記ネットワークのＭＦＤを選択し、
前記ジョブデータの部分を、前記要求された動作を実行することによって処理するために、前記選択されたＭＦＤに配分するステップ
を含み、
前記選択及び配分は、前記ネットワークの前記ＭＦＤの以前の性能に関する履歴情報を用いて実施されること
を特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に多機能デバイス（ＭＦＤ）のネットワークにおけるジョブ・スケジューリング及び分散型実行に関する。特に、本開示は、ＭＦＤグリッドのデバイス又はネットワークに関連する幾つかの属性（例えば、ノードの性能、信頼性、構成など）のローカル・ビュー及び／又はグローバル・ビューに基づく履歴情報を用いた、ＭＦＤのネットワークにおける非集中型ジョブ・スケジューリング及び分散型実行に関する。
【背景技術】
【０００２】
ＭＦＤに委ねられるある種のジョブ、例えば大量の光学式文字認識（ＯＣＲ）ジョブは、リソース及び時間を非常に消費し、特に複雑な文書の場合には完了するのにしばしば数分間かかる。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示は、複数のノードを有し、その複数のノードが複数のネットワーク化されたスーパーピア（ＳＰ）及び複数のピアを含む、多機能デバイス（ＭＦＤ）のグリッドに関する。各々のＳＰ及びピアは、プロセッサを有するＭＦＤである。ピアは少なくとも２つのグループにグループ分けされ、１つのグループ内のピア同士は互いにデータ通信する。複数のＳＰの各ＳＰは、領域を形成するために少なくとも２つのグループのそれぞれのグループに関連付けられ、領域のグループに関連付けられたＳＰはそのグループ内の各ピアとデータ通信する。
【図面の簡単な説明】
【０００４】
【図１】本開示による例示的な多機能デバイス・グリッドのブロック図を示す。
【図２】ＭＦＤのネットワークにおいて受け取ったジョブのスケジューリング方法のフローチャート図である。
【図３】図３のフローチャート図の続きである。
【発明を実施するための形態】
【０００５】
最初に図１を参照すると、本開示による例示的な非集中型ＭＦＤグリッドが図示され、これは全体的に非集中型ＭＦＤグリッドと称される。ＭＦＤグリッド１００は、ＭＦＤグリッド１００のＭＦＤがジョブを実行するために選択されるピア・ツー・ピア・ジョブ・スケジューリングを規定し、選択及びジョブの割当ては、ＭＦＤのローカル・ランキング及び／又はグローバル・ランキングに留意すること（heeding)を含む。
【０００６】
ＭＦＤグリッド１００は、人の介入無しに、選択されたリソースによって部分を並列に実行するために、ジョブを作業チャンクから成る部分に分割する。ジョブを分割し、リソースを選択する管理タスクは、ＭＦＤグリッド１００の１つより多くのノードによって並列に実施することができる。ＭＦＤグリッド１００は非集中型であり、ジョブ・スケジューリングを管理するタスクは、ＭＦＤグリッド１００のノード間で分散され、中央サーバによって実施されるのではない。ＭＦＤグリッド１００のノードは、ジョブ若しくはその部分を管理するサーバ、又はジョブ若しくはその部分を実行するクライアントの役割を果たすことができる。
【０００７】
ＭＦＤグリッド１００は、第１のタイプのノードであるＳＰ１０２と第２のタイプのノードであるピア１０４とを含む、複数のノードを含む。ＳＰ１０２及びピア１０４は、処理能力を有し、グリッドソフトウェアを実行し、ＭＦＤグリッド１００内の他のピア１０４及びＳＰ１０２と通信する通信可能性を有するいずれかのコンピュータデバイスである。ＭＦＤグリッド１００のピア１０４及びＳＰ１０２は、ＭＦＤではないがデータ通信及び処理能力を有するパーソナルコンピュータ、モバイル機器（例えばＰＤＡ、携帯電話）、ラップトップ、サーバなどのようなコンピュータデバイスであってもよい。しかしながら、本例では、ＳＰ１０２及びピア１０４をＭＦＤとすることができることを例証するために、図示され、図２に関して説明される方法の実行に関与する全てのノードは、ＭＦＤ（後でさらに説明するブリッジボックスを持つ又は持たない）である。ＭＦＤグリッド１００のノードであるＭＦＤ又は他のデバイスは、選択により、管理者により、ランダムに、ポリシー、その他により、ピア１０４又はＳＰ１０２として指定されることができる。ＳＰ１０２は管理タスクによって占有される可能性が高く、ピア１０４はユーザによって要求される光学式文字認識（ＯＣＲ）のような動作で占有される可能性が高い。ピア１０４又はＳＰ１０２のノードについての指定は、位置又はリソース可用性といった特定の属性に基づくことができる。
【０００８】
ＳＰ１０２又はピア１０４は、ブリッジボックスと対になったＭＦＤ又は他のコンピュータデバイスのようなデバイスとすることもできる。ブリッジボックスは低コストのコンピュータであり、ＭＦＤグリッド１００及び自身と対になったデバイスとデータ通信し、ＭＦＤグリッド１００内でそのデバイスの代理として機能する。ブリッジボックスは、ＭＦＤグリッド１００にＭＦＤの代理として参加し、ＭＦＤのためのプロキシとして働く。ＭＦＤと対になったブリッジボックスを有するピア１０４が動作を実行するように要求された場合、要求された動作は、ブリッジボックスのリソースを使用してブリッジボックス上で実行されることもでき、又はＭＦＤ上で実行されることもできる。例えば、ブリッジボックスは、スキャンされた画像に対してＯＣＲを実施し、その後、画像又はＯＣＲ出力をＭＦＤに転送してハードコピーを生成することができる。ブリッジボックスは、ＭＦＤグリッド１００の要件に合致しないＭＦＤをＭＦＤグリッド内にＳＰ１０２又はピア１０４として含めることができるように、そのＭＦＤと対になることができる。ブリッジボックスは、ＭＦＤグリッド１００にＳＰ１０２又はピア１０４として加わることが不可能又は不許可のいずれかである１つ又はそれ以上のデバイスを発見し、その代理をするように構成することができる。
【０００９】
各々のＳＰ１０２及びピア１０４は、ＭＦＤグリッド１００に参加するためにグリッドソフトウェアを実行しなければならない。ＳＰ１０２又はピア１０４がＭＦＤである場合には、グリッドソフトウェアは、ＭＦＤ上に直接インストールすることもでき、又はＭＦＤと対になったブリッジボックス上にインストールすることもできる。多くのＭＦＤは大部分の時間はアイドルなので、グリッドソフトウェアは、ＭＦＤアイドル時間の間に優先順位の低いプロセスとして実行することができ、それでもなお適切に機能することができる。システムリソースを必要とする優先順位の高いプロセス（例えば、ＭＦＤにおけるローカル印刷又スキャンの要求）が要求された場合、グリッドソフトウェアは、それらのリソースをそれ自体の負担で（例えば、リモートサービスプロバイダの役割から降りることによって）提供することになる。
【００１０】
本例では、ＭＦＤグリッド１００は、協調型デバイスの信頼できるネットワークである。図示された例示的なＭＦＤグリッド１００において、ＳＰ１０２は、オーバーレイ・ネットワーク１０６内に含まれる。ピア１０４は領域１０８又はサブネットワークにグループ分けされ、各ＳＰ１０２が領域１０８に関連付けられる。ＳＰ１０２及びピア１０４はＭＦＤとすることができ、ＳＰは割り当てられた管理タスクを実施するのに十分な処理能力を有する。
【００１１】
ここで用いられる「ＭＦＤ」は本開示全体を通じて、いずれかの目的のマーキング出力機能を実施する、デジタルコピー機、ゼログラフィ印刷システム、インクジェット印刷システム、リプログラフィ印刷システム、製本機、ファクシミリ機、多機能機、テキスタイルマーキング機などのような、あらゆる装置又はシステムを包含する。さらに、ＭＦＤは、メタデータ及びキャッシュのようなデータ並びにソフトウェアモジュールを格納するための、ハード・ドライブのようなストレージ・デバイスを備える。ＭＦＤはさらに、スキャン、ファックス、電子メールといった能力を有することもできる。
【００１２】
ＭＦＤグリッド１００のサーバレス・ネットワークとしての確立、構成及び動作は、ここで説明され、米国特許出願番号第１２／１２９，１９５号においてさらに説明される。各ＳＰ１０２は、オーバーレイ・ネットワーク１０６を通じて少なくとも１つの他のＳＰ１０２と通信し、さらに、関連付けられた領域１０８の少なくとも１つのピア１０４と通信する。各ピア１０４は、自身の領域１０８の少なくとも１つの他のピア、及びその領域１０８に関連付けられたＳＰ１０２と通信する。ＳＰ１０２とピア１０４との間の通信は有線又は無線とすることができ、ＳＰ１０２とピア１０４は共にネットワークを形成し、１つの領域１０８のピア１０４とその領域１０８に関連付けられたＳＰ１０２は共にサブネットワークを形成する。
【００１３】
領域１０８内のピア１０４は互いにユニキャスト又はマルチキャストによって通信することができ、ユニキャストは１つのピア１０４からその領域１０８内の他の１つのピア１０４へと送信される（例えばポイント・ツー・ポイント）。マルチキャストは、１つのピア１０４からその領域１０８内の他の全てのピア１０４へと送信することができる。ピア１０４間の通信は、ユニキャストに限定することが可能である。領域１０８に関連付けられたＳＰ１０２は、領域１０８内の全てのピア１０４とマルチキャストによって通信することもでき、又は特定のピア１０４とユニキャストによって通信することもできる。起点ノード１１２は、その領域１０８のＳＰ１０２とユニキャストによって通信する。ＳＰ１０２は、他のＳＰ１０２とユニキャストによって通信する。ＳＰ１０２は、他のＳＰ１０２から受信したメッセージ（例えばジョブ・アドバタイズメント）をその領域１０８内でメッセージをマルチキャストすることによって繰り返し、その結果、より広範囲のピア１０４のオーディエンスが起点ノード１１２のアドバタイズメントを聴取することになる。他の領域１０８内のピア１０４は、起点ノード１１２に送り戻すユニキャストによってそのアドバタイズメントに返信する。ＳＰ１０２は、環状ネットワーク構造を通じて互いに通信する。各々のＳＰ１０２及びピア１０４は、ユニキャスト、マルチキャスト及び／又はブロードキャストなどによる他のノードとの通信をサポートするために必要な通信インタフェースを備える。
【００１４】
オーバーレイ・ネットワーク１０６は、ＳＰ１０２とそれらの関連付けられた領域１０８との間のマッピングを確立する。さらに、オーバーレイ・ネットワーク１０６は、例えば、万一、１つのＳＰ１０２が故障した場合などに他のＳＰ１０２を準備して故障したＳＰ１０２の役割を引き継ぐことにより、セーフティネットを提供することができる。ＳＰ１０２は、オーバーレイ・ネットワーク１０６を通じて互いに常時通信していてもよい。第１の領域１０８内のＳＰ１０２は、第２の領域１０８内のピア１０４に関する情報を第２の領域１０８に関連付けられたＳＰ１０２を通じて収集することができる。
【００１５】
ＭＦＤピア１０４は、可用性を条件として、デスクトップ・パーソナルコンピュータ（ＰＣ）、ラップトップ、サーバ及びモバイルデバイスといった、ＭＦＤ及び非ＭＦＤピア１０４からリソースを受け取ること、及び／又はそれらにリソースを提供することによって、共生的に動作することができる。正式にグリッドに加入するためには、ピア１０４は既にＭＦＤグリッド１００内にある少なくとも１つの他のピア１０４を発見しなければならない。このような発見は、例えば、領域１０８のローカルサブネットに対してマルチキャスト要求を発行することにより、又はプレコンフィギュレーションにより達成することができる。ピア１０４は、ＭＦＤグリッド１００における自身の帰属関係（membership）を周期的なメッセージ（ハートビート・メッセージとして知られる）に応答することを通じて維持し、応答に失敗するとＭＦＤグリッド１００から除外される。
【００１６】
ＭＦＤグリッド１００の種々のノードにおけるＭＦＤは異なる能力を有することができる。例えば、幾つかのＭＦＤは他のＭＦＤよりも低い処理及びストレージのリソースを有することができる、幾つかのＭＦＤは他のＭＦＤが有していない特徴を有することができる。例えば、幾つかのＭＦＤは、他のＭＦＤが有していない光学式文字認識（ＯＣＲ）実施能力のようなソフトウェア能力を有することができる。この理由の１つは、ＭＦＤグリッドのオペレータが、例えばＯＣＲを実施するソフトウェアのためなどのソフトウェア・ライセンスを選択されたＭＦＤのみに対して取得することによって、コストを削減することができることである。
【００１７】
図１は、この例においてはピア１０４である起点ノード１１２に到達したジョブを示す。別の例では、起点ノード１１２をＳＰ１０２とすることができる。しかしながら、ジョブの性質と起点ノード１１２の能力によっては、その起点ノード１１２がＭＦＤグリッド１００のうちでそのジョブを扱うのに最適なノードではないこともある。例えば、起点ノード１１２は、そのジョブを実施する能力を有していないこともあり、又はその時点でディスエーブルであることもある。さらに、起点ノード１１２の代わりにＭＦＤグリッド１００のその他のノードにそのジョブを実行させるか、又はそのジョブを作業チャンクに分割して、１つより多くのピア１０４（これらは起点ノード１１２を含んでも含まなくてもよい）に並列に作業チャンクを実行させる方がより効率的であることもある。
【００１８】
作業チャンクのサイズはページ数で定義される（例えば、１つの作業チャンクを１ページ又は５ページとすることができる）が、文字数のようなその他の単位を用いて作業チャンクサイズを定めることができる。作業チャンクサイズはカスタマイズされ、実施される動作に関して最適化することができる。本例では、動作はＯＣＲであり、作業チャンクサイズは、ＯＣＲの精度、及びＭＦＤグリッド１００のノードにより用いられるＯＣＲエンジンに関して最適化される。ノードの選択及び選択されたノードに対する配分は、ノードのローカル・ランキング及び／又はグローバル若しくは擬似グローバル・ランキングに基づく。ＭＦＤグリッド１００のノードのローカル・ランキングは、起点ノード１１２上でローカルに収集及び維持される統計量に基づくものであり、この場合、統計量は、起点ノード１１２からランク付けされるノードに対して発送（dispatch)されたジョブを受け取り、実行し又はそれに返信する、ランク付けされるノードの能力に関連付けられる。
ＭＦＤグリッド１００のノードのグローバル又は擬似グローバル・ランキングは、ランク付けされるノードのコンフィギュレーションに関する情報、及び／又はＳＰ１０２によってある期間にわたって反復的に収集され、維持された統計量に基づくものであり、この場合、統計量は、ＭＦＤグリッド１００の複数のノードからのローカル・ランキングに基づく、ランク付けされるノードの性能に関連付けることができる。ローカル・ランキング及び（擬似）グローバル・ランキングの決定を以下、詳細に説明する。
【００１９】
ローカル・ランキングは、各ピア１０４によってローカルに決定される動的なランキングである。ＳＰ１０２もまたローカル・ランキングを決定することができる。各ノード（ピア１０４又はＳＰ１０２）によって生成されるローカル・ランキングは、他のノードのうちの特定のノードによるランキングであり、その特定のノードの、他のノードについての経験に関連付けられる統計量に基づく。起点ノード１１２は、それが以前に対話したことがある別のノードについてのローカル・ランキングのみを有することができ、対話したことがなければ、他のノードについての起点ノード１１２のローカル・ランキングは、ゼロ又はＭＦＤグリッド１００に適した適切なデフォルト値である。
【００２０】
各ノードは、ＭＦＤグリッド１００内の他のノードとの対話に基づく統計量を保持する。どのノードもジョブを受け取ることができるので、起点ノード１１２になることができる。従って、あるノードが起点ノード１１２であり、ジョブ又はジョブの部分を別のノード（例えばＭＦＤグリッドのｉ番目のノード（ここで、ｎ個ノードについて、１＜＝ｉ＜＝ｎである）に対して発送した場合、そのノードはｉ番目のノードの性能に対する統計量を維持する。統計量は、例えば、ｉ番目のノードが割り当てられた動作（例えばＯＣＲ）の完了に成功したことを示すデータ、ｉ番目のノードが作業チャンクなどの基準量のデータに対して要求された動作（例えばＯＣＲ）を完了させるのに要した時間、作業チャンクがｉ番目のノードに到達するのに要した時間、ｉ番目のノードがジョブについての出力データを戻すのに要した時間、ｉ番目のノードのコンフィギュレーション及び能力に基づく信頼レベル、及び／又は、ＯＣＲのような種々のサービスの実施について人がｉ番目のノードに対して示す好み（preference）を含む。統計量は、動作を実行する対象となったデータの複雑度を考慮に入れて調整することができる。
【００２１】
次回、その起点ノード１１２がジョブを受け取った（従って、再び起点ノードになった）ときには、ジョブ又はその部分の発送先としようと考えるノードをランク付けするためにこれらの統計量を用いる。ランキングは、どのノードにジョブ又はその部分を発送すべきかを選択するため、及び選択された各ノードに送られることになるジョブの量を配分するために用いられる。特定のピア１０４についてＭＦＤグリッド１００の複数のノードによって生成されるローカルな統計量及びランキングは、例えば、ランク付けするノードとランク付けされるノードとの間での、ＭＦＤグリッド１００内の相対的な物理的位置、物理的及び計算的な能力及びリソース、並びにユーザの中での人気及び信頼度などに基づいて、ノード毎に異なることがある。
【００２２】
グローバル・ランキングは、互いに負荷及びリソースを共有する種々のノードの経験に基づいてＭＦＤグリッド１００の種々のノードによって生成される情報の組合せに基づく動的ランキングである。ノードについてのグローバル・ランキングは、そのノードの能力（例えば、「非常に強力」から「それほど強力ではない」までの範囲にわたる尺度に基づいて採点されたもの）に関する利用可能な情報のみに基づくこともできる。グローバル・ランキングは、個別のＳＰ１０２又はピア１０４から取得されたローカル・ランキングの集積に基づいて計算することもできる。ＳＰ１０２は自身の領域１０８内のピア１０４からデータを収集することができ、ＳＰ１０２同士が互いに情報を共有してグローバル・ランキングを生成することができる。グローバル・ランキングは、ＭＦＤグリッド１００の様々なノードによって分散方式で生成され、ＭＦＤグリッド１００内には中央サーバが存在しないので、中央サーバを用いることなくそれらのノード間で共有される。グローバル・ランキングは集中型データベースに格納されるのではなく、ＭＦＤグリッド１００のノードにローカルに格納され、必要に応じて共有される。ピア１０４は一般に、利用可能な場合には、その領域１０８に関連付けられたＳＰ１０２から、特定のノードについてのグローバル・ランキングを取得することができる。
【００２３】
グローバル・ランキングは、例えば確率Ｐhの、ピア１０４が留意する推薦として役立つ。あるノードについてのグローバル・ランキングは、そのノードの能力（例えば、速度、ストレージ、実行することができる動作（例えば、ＯＣＲが可能か否か））を示すことができる。本例では、グローバル・ランキングは、そのノードが過去に基準量のデータに対してＯＣＲを実施した際に費やした時間量を示すことができる。ランキングは、データの複雑度に関して調整することができる。あるいは、グローバル・ランキングは、製造者が提供する仕様といったランク付けられるノードに関する知識に基づいて管理者によって指定される、静的なランキングとすることもできる。
【００２４】
本例において、ピア１０４についてのローカル・ランキング及びグローバル・ランキングは、そのピアの過去の性能に関する統計量に基づいて生成された正規化された数として表現される。ローカル及びグローバル・ランキングを表現するその他の方式は、本開示の範囲内である。
【００２５】
起点ノード１１２又はその関連付けられたＳＰ１０２のいずれかが、ジョブ又はその部分を実行するノードを選択するため、及び選択されたノード間でジョブを配分するために、ローカル及び／又はグローバル・ランキングを用いるアルゴリズムを適用することができる。２つの例示的なアルゴリズムを以下、さらに説明する。ローカル・ランキング又はグローバル・ランキングのどちらも利用できないときには、他のものを用いることができる。いずれも利用できないときには、ジョブを全てのノード候補間で均等に配分することができる。それぞれのノードは、割り当てられた配分を実行する自身の性能に関する統計量を起点ノード１１２に戻して報告する。
【００２６】
図１及び図２を参照すると、ステップ２０２において、ジョブＤ＿ＯＣＲがこの例ではピア１０４である起点ノード１１２に到達する。ジョブは、動作を実施する要求と、その動作を実施すべき対象となるデータ（ジョブデータとも呼ばれる）とを含む。本例において、実施することが要求される動作はＯＣＲであるが、以下で説明されるジョブの処理は、他の種類の動作にも同様に適用可能である。データは、例えば、文字数字データを有する文書及び／又は画像データを有する画像を含む、１つ又はそれ以上のファイルを含むことができる。ジョブは、例えば、起点ノード１１２又は起点ノード１１２とデータ通信するワークステーションに委ねられたユーザ要求から生じたものであり得る。ジョブはまた、プロセッサによって生成された要求から生じたものであり得る。要求が、起点ノード１１２にジョブ全体を実行させるという指示（例えばセキュリティ目的で）を含む場合、その指示に従うことになる。そうでない場合には、ステップ２０４及び２０６において、起点ノード１１２は、その領域内のピア１０４及びそれに関連付けられたＳＰ１０２対してジョブ・アドバタイズメントを送出する。
【００２７】
この時点で、起点ノード１１２は、ジョブのジョブデータを作業チャンクに分割する。作業チャンクのサイズは、通常、特定のＯＣＲエンジンの開発の際の先行試験に基づいて予め確立される。場合によっては、作業チャンクのサイズは少数の頁に設定することが必要であり、そのページ数は、文書から「学習」されるルックアップテーブル（ＬＵＴ）が最も有効になるように最適化される。非常に大きいＬＵＴは、ＯＣＲエンジンのルックアップ及びメンテナンスにおける遅延を引き起こすので、幾つかのＯＣＲエンジンでは、ソフトウェアの不安定性のリスクを回避するためにこれらのＬＵＴをパージするように注意を払わなければならない。従って、ジョブに関連付けられたデータがｎページの文書を含む場合、文書はサイズｃのｎｔｏｔａｌ個の作業チャンクに分割される（ｎｔｏｔａｌ＝ｎ ｄｉｖ ｃ作業単位（ここで、ｄｉｖは整数除算演算子である））。最後の作業単位はｃページより少ないことがある。
【００２８】
ジョブ・アドバタイズメントは、実施することが必要とされる動作を、入手できるジョブデータの最小単位で記述し、これは本例の場合「最大サイズがｎ ｄｉｖ ｃである少なくとも１つの作業チャンクに対するＯＣＲ」となる。ジョブ・アドバタイズメントは、他のピア１０４に対して、記述されたジョブデータの部分に対して要求された動作を実行するために利用可能であるか又はその能力がある（available or capable）ならば応答するように要求する。本例において、アドバタイズメントは、起点ノード１１２から起点ノード１１２の領域１０８内の全てのピア１０４に対してマルチキャストで送信され、起点ノード１１２からその領域１０８のＳＰ１０２に対してユニキャストで送信され、ＳＰ１０２から１つ又はそれ以上の他のＳＰ１０２に対してユニキャストで送信され、その他のＳＰ１０２の各々からそれぞれの領域１０８内のピア１０４に対してマルチキャストで送信される。
【００２９】
本例では、アドバタイズメントは、起点ノード１１２のＳＰ１０２から第２のＳＰ１０２にユニキャストで送信され、これは次に第３のＳＰ１０２に対してユニキャストを送信し、以下同様に、全てのＳＰ１０２がアドバタイズメントを受信するか、又はその他の何らかの条件が満たされるまで行われる。幾つかのＳＰ１０２についてはアドバタイズメントを受信するまでに他のものよりも大きい時間遅延があるが、これは後でさらに説明するように許容できる。
【００３０】
ステップ２０８において、起点ノード１１２はアドバタイズメントに対する返信をピア１０４から受信する。起点ノード１１２は、返信を処理して、受信した返信に基づいて決定を下す前に、所定の時間間隔で待機することができる。所定の時間間隔の後で受信した返信は無視することができる。所定の時間間隔は、例えば、委ねられたジョブのサイズ、及びユーザがそのジョブに対して委ねた任意の時間的制約又はその欠如などに基づいて、起点ノード１１２によって調整可能又は選択可能であり得る。異なる領域１０８内にあるピア１０４からの返信は、起点ノード１１２の領域１０８内のピア１０４よりも到着に長い時間がかかることがある。この遅延は、起点ノードの領域１０８に関連付けられたＳＰ１０２と返信しているピア１０４の領域１０８に関連付けられたＳＰ１０２と間の物理的距離が長くなる程、大きくなり得る。従って、所定の時間間隔を選択することによって、起点ノード１１２（又はその管理者）は、起点ノード１１２から物理的に遠い領域１０８のピア１０４に、そのジョブに関連付けられた動作を実行させるかどうかを決定することができる。
【００３１】
現時点で利用可能及び能力があるピア１０４のみがジョブ・アドバタイズメントに返信する。能力がない、例えば、必要なリソースを有していないピア１０４、又は利用可能ではない、例えば、紙又はトナーといった消耗品を有していない又はその他のジョブで占有されているピア１０４は、ジョブ・アドバタイズメントに対して返信しない。返信しないピア１０４は、ジョブの部分を実行するためのピア１０４をそこから選択する候補として考慮されないことになる。要求された動作を実行する利用可能なノードとしてＳＰ１０２がアドバタイズメントに返信することも可能である。アドバタイズメントに対して応答するノードは、レスポンデント（respondent）と呼ばれる。起点ノード１１２は、アドバタイズメントに応答することができる。あるいは、起点ノード１１２は、アドバタイズメントに対して技術的に応答しなかったばあいであってもそれ自身をレスポンデントとみなすことができる。別のシナリオにおいて、起点ノード１１２をジョブのスケジューリング専用とすることができ、ジョブの実行には利用可能ではないとみなされる。レスポンデントが存在しない場合には、起点ノード１１２が自身でジョブを実行することになる。レスポンデントがただ１つのみ存在する場合には、起点ノード１１２はそのレスポンデントがジョブを実行するようにスケジューリングする。
【００３２】
アドバタイズメントに対する返信は、応答するピア１０４のグローバル・ランキングを含むことができる。典型的には、ピア１０４は自身のグローバル・ランキングを格納しており、ジョブ・アドバタイズメントに応答するときにそれを報告することができる。返信は、例えばユニキャストによって配信することができる。ピア１０４によっては、例えばストレージの制約条件のせいで自身のグローバル・ランキングを格納していないものもある。その状況では、ステップ２１０において、起点ノード１１２の領域１０８のＳＰ１０２からグローバル・ランキングを取得することができ、このＳＰ１０２は、全てのグローバル・ランキングを格納しているか、又はグローバル・ランキングが所望されるピア１０４に関連付けられたＳＰ１０２からグローバル・ランキングを取得することができる。起点ノード１１２の領域１０８のＳＰ１０２が、全てのグローバル・ランキングが起点ノード１１２に対して提供されることを保証する責任を有していてもよく、又は起点ノード１１２がそのＳＰ１０２（すなわち、起点ノード１１２の領域１０８のＳＰ１０２）に対して、必要とする情報を補充するように要求しなければならないものとしてもよい。
【００３３】
ステップ２１２において、起点ノード１１２は、格納されたローカル・ランキングが利用可能であればそれにアクセスする。ステップ２１４において、グローバル・ランキングが利用可能であるか否かの判定が例えばいずれかのＳＰ１０２を通じて行われる。利用可能であれば、実行は図３のステップ３００へと進む。利用可能でなければ、ステップ２１６において、グローバル・ランキングが利用可能ではないこと及びローカル・ランキングのみを使用すべきであることを示すためにフラグは偽（ｆａｌｓｅ）に設定され、その後、実行は図３のステップ３００へと進む。ローカル・ランキングがまだ生成されていない場合には、ジョブは全ての応答ピア１０４に対して均一な量で配分される。応答ピア１０４はジョブの実施における自身の性能に関する統計量を起点ノード１１２に対して報告し、起点ノード１１２は、それらの統計量を用いて全ての応答ピア１０４についてのローカル・ランキングを生成することになる。
【００３４】
ＭＦＤグリッド１００は協調型デバイスの信頼できるネットワークであるので、ＭＦＤグリッド１００の１つのノードから他のノードに報告される情報は信頼性があるとみなされる。そのような情報は、例えば、グローバル若しくはローカル・ランキング又は統計量を含むことができる。
【００３５】
ステップ３００において、ジョブのスケジューリングをＳＰ１０２又は起点ノード１１２のどちらで実施するかについての決定が成される。決定は、ＳＰ１０２又は起点ノード１１２によって成されることができる。これは、管理者によってプログラムされたデフォルトの決定に従って成されることもでき、又はＳＰ１０２若しくは起点ノード１１２がスケジューリング・プロセスを実施するために利用可能であるか若しくはその能力があるかどうかといった条件に依るものとすることもできる。
【００３６】
ステップ３００での決定がＳＰ１０２がスケジュールを実施するというものである場合には、次にステップ３０２が実行され、ステップ３１２、３１４、３１６及び３１８はＳＰ１０２によって実施される。そうでない場合は、次にステップ３１０が実施され、ステップ３１０、３１２、３１４及び３１６は起点ノード１１２によって実施される。
【００３７】
ＳＰ１０２がジョブ・スケジューリングを実施する場合には、ステップ３０２において、ジョブは部分に分割され、スケジューリング問題に取り組むことになる各ＳＰ１０２に対して部分が割り当てられる。ジョブに取り組むことになるＳＰ１０２は、ジョブ・アドバタイズメントに返信したピア１０４を含む領域１０８に関連付けられたＳＰ１０２に限定することができる。例えば起点ノード１１２の領域１０８に関連付けられたＳＰ１０２のような１つのＳＰ１０２のみがスケジューリング問題に取り組みことになる場合には、ステップ３０２をスキップすることができる。ジョブを部分に分けるときには、各部分が特定の数の作業チャンクを有することになるように作業チャンクで分割する。各部分はジョブに関連付けられたデータファイルのページの範囲に対応する。スケジューリング問題に取り組むことになる全てのＳＰ１０２が実質的に等しい部分、即ち実質的に等しいページ数をカバーする部分を受け取ることが可能である。例えば、ｍ個のＳＰ１０２がスケジューリング問題に取り組むことになる場合、ジョブはｍ個の等しい部分に分割される。そのジョブが提供するデータファイルがｎtotal個の作業チャンクを有するならば、各部分はｎtotal  ｄｉｖ  ｍ  個の作業チャンクを有する。例えば、部分が割り当てられることになるＳＰ１０２の能力又は利用可能性、又はジョブ・アドバタイズメントに返信したＳＰ１０２の領域内のピア１０４の数などに基づいて、部分を均等にしないことも可能である。
【００３８】
ステップ３０４において、部分に対応するページ範囲の各々がそれぞれのＳＰ１０２に対して発送される。ジョブデータ自体は発送されず、ページ範囲を示す情報が発送される。ページ範囲情報は、部分割当てとも呼ばれる。ステップ３０６において、部分割当てが発送された先のＳＰ１０２は、起点ノード１１２によって維持されているローカル・ランキングを入手し、その部分割当てを１つ又はそれ以上のピア１０４による実行のために分散方式でスケジューリングすることによってスケジューリング問題を実施する準備をする。提供されるローカル・ランキングは、特定のＳＰ１０２が必要とするローカル・ランキングに限定することができ、これは、例えば、その特定のＳＰ１０２が、分散された部分のセグメントを実行させるようにスケジューリングするピア１０４のプールについてのローカル・ランキングであり、このピア１０４は、特定のＳＰ１０２の領域１０８内のピア１０４とすることができる（しかしそれに限定されるものではない）。部分割当てが発送された先のＳＰ１０２はさらに、分散方式でスケジューリングをする用意ができている状態となるために、自身を初期化して、それぞれの部分割当てのスケジューリングの準備をする。
【００３９】
ステップ３０６で取得されローカル・ランキングは、部分割当てが発送されるのと同時にＳＰ１０２に提供されることもでき、又はＳＰ１０２が起点ノード１１２に対してそれをリクエストすべきものとすることもできる。各ＳＰ１０２は、オーバーレイ・ネットワーク１０６を用いて起点ノード１１２と通信して、起点ノード１１２の領域１０８に関連付けられたＳＰ１０２と通信することができ、起点ノード１１２の領域１０８に関連付けられたＳＰ１０２は次に、起点ノード１１２と直接通信する。
【００４０】
ステップ３０８において、ジョブについての部分割当てを受信したＳＰ１０２は、それらが必要とするグローバル・ランキングにアクセスし、これは、例えば、その特定のＳＰ１０２が、分散された部分割当てのセグメントを実行させるようにスケジューリングするピア１０４のプールについてのグローバル・ランキングであり、このピア１０４は、特定のＳＰ１０２の領域１０８とすることができる（しかしそれに限定されるものではない）。
【００４１】
起点ノード１１２がステップ３１０においてジョブ・スケジューリングを実施する場合には、フラッグがステップ２１６において偽と設定されなかった場合は、起点ノード１１２は、ジョブ・アドバタイズメントに返信したピア１０４についてのグローバルランクを、既に有している場合を除いて、収集する。起点ノード１１２は、その領域１０８に関連付けられたＳＰ１０２に、必要とするグローバルランクを取得するように問い合わせすることができる。
【００４２】
ステップ３１２において、発見的アルゴリズム（アルゴリズム１）又は最適化アルゴリズム（アルゴリズム２）のどちらを使用するかという選択が成される。選択は、管理者により指定されたデフォルトによって決定することもでき、又は時間的制約若しくは最適化の必要があるか否かといった特定の条件の充足に依るものとすることもできる。アルゴリズム１が用いられるべき場合には、ステップ３１４が実施される。アルゴリズム２が用いられるべき場合には、ステップ３１６が実施される。アルゴリズムは以下でさらに説明される。ＳＰ１０２が選択されたアルゴリズムを実施する際には、各ＳＰ１０２はその部分割当てに対してアルゴリズムを実施し、その部分割当てをレスポンデント・ピア１０４に分散することにより、その領域１０８内のレスポンデント・ピア１０４で作業を行う。アルゴリズムの出力は、それぞれのピア１０４に対して実行のために提供されるべきジョブの部分（部分割当てとも呼ばれる）を示す。これは、ジョブをどのように分割し、各ピア１０４に対してどのような割合のジョブを実施のために割り当てるかを示す。ＳＰ１０２によってアルゴリズムが実施される場合には、結果はステップ３１８で起点ノード１１２に提供される。このステップは、起点ノード１１２が選択されたアルゴリズムを実行する場合には省略することができる。
【００４３】
１つより多くのＳＰ１０２がスケジューリング問題を解く場合には、ＳＰ１０２はステップ３０６、３０８、３１２、３１４、３１６及び３１８を並列に実行することができる。これは並列スケジューリングと呼ぶことができ、ＳＰ１０２の各々は、他のＳＰ１０２のいずれかが上記のステップのいずれかを実施するのと実質的に同時に上記のステップのいずれかを実施することができる。
【００４４】
ＳＰ又は起点ノード１１２が第１のＤ＿ＯＣＲジョブに関する１つのスケジューリング問題を解いているときに、第２のジョブが到着することがある。この場合、第２のジョブは、第１のジョブがそのスケジューリングを完了し、実行の用意ができるまで、キュー内で待機する。第２のＤ＿ＯＣＲジョブは、第１のＤ＿ＯＣＲジョブの部分割当てが発送及び／又は実行されているときに、そのスケジューリングを開始することができる。
【００４５】
ステップ３２０、３２２及び３２４において、ジョブは分散型実行と呼ばれる分散様式で実行され、ここで、部分割当ては選択されたレスポンデント・ピア１０４に発送され、そこで独立して実行され、その後、選択されたレスポンデント・ピアにより生成された出力は、起点ノード１１２によって組み立てられる。ステップ３２０において、起点ノード１１２は、ＳＰ１０２により選択され、部分割当てを配分された各々のレスポンデント・ピア１０４に対して、その部分割当てに対応するジョブデータの部分をピア１０４に伝送することによって、それぞれの部分割当てを発送する。ジョブデータは、部分割当ての発送先のピア１０４によりアクセス可能なネットワーク上の共通格納領域内に既に格納しておくことができる。この場合、ステップ３２０において、起点ノード１１２は、ピア１０４の部分割当てに対応する共通格納領域内のジョブデータの部分に対するポインタをピア１０４に発送する。発送されるデータ又はポインタは、要求、又は前もってそのジョブについて送信されたジョブ・アドバタイズメントの識別子を含み、これは、そのジョブデータに対して実施することが必要とされる動作をピア１０４に指示する。
【００４６】
ステップ３２２において、部分割当てを実行するように選択されたレスポンデント・ピア１０４の各々は、それぞれの部分割当てに対応するジョブデータに対して動作を実行し、対応する出力データ（すなわち、部分割当てに対応するデータに対する動作の実行からの出力）を起点ノード１１２に戻す。この例における出力データは、部分割当てに対応するジョブデータに対するＯＣＲの実行から生成された文字数字データである。出力データは、出力データを起点ノード１１２に伝送することにより、又は出力データを起点ノード１１２がアクセス可能な共通格納領域に格納し、出力データに対するポインタを起点ノード１１２に伝送することにより、起点ノード１１２に戻すことができる。ピア１０４はまた、部分割当ての実行における自身の性能を反映する統計量、例えば費やした時間及びデータの量を起点ノード１１２に報告する。データの複雑度を含めることもできる。
【００４７】
ステップ３２４において、起点ノード１１２は、部分割当てを実行した全てのピア１０４からの出力データを再組立して出力ファイルのようなひとまとめの出力にして、ジョブを完了する。さらに、起点ノード１１２は統計量を報告したピア１０４の各々についてのローカル・ランキングを更新する。
【００４８】
Ｄ＿ＯＣＲのような、受け取った単一のジョブのスケジューリングに加えて、ＭＦＤグリッド１００が１つよりも多くのジョブを一度に受け取ったときには、ジョブに関連付けられた緊急度に応じて、各々のジョブにリソースが割り付けられる。
【００４９】
ＳＰ１０２によって、ジョブＤ＿ＯＣＲのスケジューリングにある程度の冗長性を組み入れることができる。例えば、ステップ３０４において、単一の部分割当てをそのスケジューリングのために１つより多くのＳＰ１０２に発送することができる。従って、幾つかのＳＰ１０２は、同じ部分割当てのスケジューリングを競争することができる。ステップ３２０において、起点ノード１１２は、最初に部分割当てのスケジューリングを終えてステップ３１９で結果を起点ノード１１２に提供したＳＰ１０２によって生成されたスケジュールに従って、部分割当てを発送する。
【００５０】
冗長性は、実行のためのピア１０４への部分割当ての発送にも組み入れることができる。例えば、ステップ３２０において、起点ノード１１２は、同じ部分割当てについてのジョブデータを１つより多くのピア１０４に発送することができる。従って、幾つかのピア１０４は、同じ部分割当ての実行を競争することができる。ステップ３２２において、起点ノード１１２は、最初に実行を完了したピア１０４からの部分割当ての実行に対応する出力データを受け取り、この出力データをステップ３２４における再組立に用いる。
【００５１】
スケジューリングの冗長性および発送の冗長性はリソース消費を増大させるが、これは、大量のアイドルなリソース能力がある場合には重要ではないとみなすことができる。利点は、間欠故障に対する信頼性及びロバストネスが高まることである。
【００５２】
ＳＰ１０２及びピア１０４は各々、グリッドソフトウェアのようなソフトウェアモジュール、又は、ジョブをアドバタイズし、ジョブ・アドバタイズメントに応答し、グローバルランク及びローカルランクを維持し、それらにアクセスし、ジョブを部分に分割し、ジョブをスケジューリングし（ジョブを実行するためにレスポンデントからピア１０４を選択すること、及び選択されたピア１０４にジョブ部分を配分することを含む）、選択されたピア１０４にデータを発送し、配分されたジョブ部分を実行し、ジョブの結果を再組立し、ジョブの結果を出力することを含む、上記の開示の方法を実施するためのソフトウェアモジュールを実行するプロセッサを有する。各ソフトウェアモジュールは、プロセッサによって実行することが可能な一連のプログラム可能命令を含む。
【符号の説明】
【００５３】
１００：多機能デバイス（ＭＦＤ）グリッド
１０２：スーパーピア（ＳＰ）
１０４：ピア
１０６：オーバーレイ・ネットワーク
１０８：領域
１１２：起点ノード
【図１】
2010113714.tif 000003
【図２】
2010113714.tif 000004
【図３】
2010113714.tif 000005