(57)【要約】【課題】複数のプロセッサで計算ジョブを処理する。【解決手段】優先順位レベルが関連付けられたジョブの処理要求を受信する。第１グループのプロセッサをジョブの処理に利用可能なものとして指定する。第１グループのプロセッサの数は、ジョブに関連付けられた優先順位レベルに基づく。第２グループのプロセッサをジョブの処理に利用可能なものとして指定する。第２グループの各プロセッサについて、プロセッサの最新利用率は、第２の所定利用率より小さい。第１グループのプロセッサ及び第２グループのプロセッサから選択された１つ又は複数のプロセッサでジョブを処理する。【選択図】図１
2008234632.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサで計算ジョブを処理する方法であって、
ジョブの処理要求を受信する段階であって、優先順位レベルが前記ジョブに関連付けられている前記段階と、
前記プロセッサの第１グループを前記ジョブの処理に利用可能なものとして指定する段階であって、第１グループにおけるプロセッサの数は、前記ジョブに関連付けられた前記優先順位レベルに基づく前記段階と、
前記プロセッサの第２グループを前記ジョブの処理に利用可能なものとして指定する段階であって、第２グループの各プロセッサについて、プロセッサの最新利用率が、第２の所定利用率より小さい前記段階と、
第１グループのプロセッサ及び第２グループのプロセッサから選択された前記プロセッサの１つ又は複数で前記ジョブを処理する段階と、
が含まれる方法。
【請求項２】
請求項１に記載の方法であって、第２の所定利用率は、前記ジョブの前記優先順位レベル及び前記プロセッサが属するプロセッサの部分集合に基づく方法。
【請求項３】
請求項１に記載の方法であって、更に、
前記ジョブを処理するプロセッサの数（Ｎ）を決定する段階と、
最低最新利用率を有する第１及び第２グループから選択された前記Ｎプロセッサで前記ジョブを処理する段階と、
が含まれる方法。
【請求項４】
請求項３に記載の方法であって、前記ジョブを処理するプロセッサの数を決定する段階には、少なくともＮプロセッサで前記ジョブを処理せよという要求を受信する段階が含まれる方法。
【請求項５】
請求項１に記載の方法であって、更に、
第３グループのプロセッサを前記ジョブの処理に利用可能なものとして指定する段階であって、第３グループの各プロセッサについて、プロセッサの最新利用率が、第３の所定利用率より小さく、また、第３の所定利用率が、第２の所定利用率より低い前記段階と、
第１、第２、及び第３グループのプロセッサから選択された前記プロセッサの１つ又は複数で前記ジョブを処理する段階と、
が含まれる方法。
【請求項６】
請求項１に記載の方法であって、更に、
前記ジョブを処理するプロセッサの数（Ｎ）を決定する段階と、
第１及び第２グループにおけるプロセッサの数の和が、Ｎ未満である場合、前記要求を待ち行列に入れる段階と、
第１及び第２グループにおけるプロセッサの数の和が、Ｎ以上である場合、最低最新利用率を有する第１及び第２グループから選択された前記Ｎプロセッサで前記ジョブを処理する段階と、
が含まれる方法。
【請求項７】
請求項１に記載の方法であって、更に、
前記ジョブを処理するプロセッサの数（Ｎ）を決定する段階と、
第１グループにおけるプロセッサの最新利用率を決定する段階と、
所定の第１利用率より大きい最新利用率を有するプロセッサを除外するために、第１グループのプロセッサを再指定する段階と、
前記再指定された第１グループにおける及び第２グループにおけるプロセッサの数の和が、Ｎ未満である場合、前記要求を待ち行列に入れる段階と、
前記再指定された第１グループにおける及び第２グループにおけるプロセッサの数の和が、Ｎ以上である場合、最低最新利用率を有する前記再指定された第１グループから及び第２グループから選択された前記Ｎプロセッサで前記ジョブを処理する段階と、
が含まれる方法。
【請求項８】
請求項１に記載の方法であって、更に、
第２グループにおけるプロセッサの新しい最新利用率を決定する段階と、
次に、第２の所定利用率より大きい新しい最新利用率を有するプロセッサを除外するために、第２グループのプロセッサを再指定する段階と、
次に、第１グループのプロセッサ及び前記再指定された第２グループのプロセッサから選択された前記プロセッサの１つ又は複数で前記ジョブを処理する段階と、
が含まれる方法。
【請求項９】
請求項１に記載の方法であって、前記要求は、ワイドエリアネットワークを介して受信される方法。
【請求項１０】
複数のプロセッサで計算ジョブを処理する方法であって、
前記複数のプロセッサで複数の計算ジョブを処理する段階と、
前記プロセッサの第１グループを第１ジョブの処理に利用可能なものとして指定する段階であって、第１グループにおけるプロセッサの数は、第１ジョブに関連付けられた優先順位レベルに基づく前記段階と、
前記プロセッサの第２グループを前記ジョブの処理に利用可能なものとして指定する段階であって、第２グループの各プロセッサについて、プロセッサの初期利用率は、前記優先順位レベル及び前記プロセッサが属するプロセッサ部分集合に基づく所定の利用率以下である前記段階と、
第１グループのプロセッサから及び第２グループのプロセッサから選択された複数のプロセッサで第１ジョブを処理する段階と、
第１ジョブを処理している第２グループのプロセッサが、前記所定の利用率より大きい更新された利用率を有すると判断する段階と、
次に、前記判断に応じて、利用率が第１の所定利用率より大きかった前記プロセッサを含まない第１グループのプロセッサ及び第２グループから選択された複数のプロセッサで第１ジョブを処理する段階と、
が含まれる方法。
【請求項１１】
請求項１０に記載の方法であって、更に、各計算ジョブを前記複数のプロセッサで処理するために、
前記複数のプロセッサの一次グループを前記ジョブの処理に利用可能なものとして指定する段階であって、各ジョブ用の前記一次グループにおけるプロセッサの数は、前記ジョブに関連付けられた優先順位レベルに基づく前記段階と、
前記ジョブ用の前記一次グループのプロセッサ及び前記一次グループに属さない予備の組の前記複数のプロセッサから選択されたグループのプロセッサで前記ジョブを処理する段階と、
前記ジョブを処理するために用いられる前記予備の組におけるプロセッサが、前記ジョブの前記優先順位レベルによって決定された利用率より大きい利用率を有すると判断する段階と、
前記判断に応じて、利用率が第１の所定利用率より大きかった前記プロセッサを含まない第１グループのプロセッサ及び第２グループから選択された複数のプロセッサで前記ジョブを処理する段階と、
が含まれる方法。
【請求項１２】
計算ジョブを処理するためのシステムであって、
処理する計算ジョブを受信するように構成された入力待ち行列であって、優先順位レベルが前記ジョブに関連付けられている前記入力待ち行列と、
複数のプロセッサと、
前記プロセッサの利用率を決定するように構成された利用率サービスエンジンであって、前記複数のプロセッサの第１グループが、前記ジョブの処理に利用可能なものとして指定され、第１グループにおけるプロセッサの数は、前記ジョブに関連付けられた前記優先順位レベルに基づくものであり、また、最新利用率が第２の所定利用率より小さい前記複数のプロセッサの第２グループが、前記ジョブの処理に利用可能なものとして指定される前記利用率サービスエンジンと、
前記ジョブの前記優先順位レベルに関する情報及び前記プロセッサの前記利用率に関する情報を受信するように構成され、また、第１グループのプロセッサ及び第２グループのプロセッサから選択された前記プロセッサの１つ又は複数によって処理される前記ジョブをスケジューリングするように構成されたスケジューリングエンジンと、
が含まれるシステム。
【請求項１３】
請求項１２に記載のシステムであって、第１グループは、１つのプロセッサを含むシステム。
【請求項１４】
請求項１２に記載のシステムであって、前記スケジューリングエンジンは、前記ジョブを処理するプロセッサの数（Ｎ）を決定するように、また、最低最新利用率を有する第１及び第２グループから選択された前記Ｎプロセッサで処理される前記ジョブをスケジューリングするように構成されたシステム。
【請求項１５】
請求項１２に記載のシステムであって、前記スケジューリングエンジンは、少なくともＮプロセッサで前記ジョブを処理せよという要求を受信するように構成され、また、前記ジョブを処理するプロセッサの数（Ｎ）の前記決定は、前記要求に基づくシステム。
【請求項１６】
請求項１２に記載のシステムであって、プロセッサの最新利用率が第３の所定利用率より小さい前記複数のプロセッサの第３グループが、前記ジョブの処理に利用可能なものとして指定され、第３の所定利用率は、第２の所定利用率より低く、
前記スケジューリングエンジンは、更に、第１、第２、及び第３グループのプロセッサから選択された前記プロセッサの１つ又は複数によって処理される前記ジョブをスケジューリングするように構成されたシステム。
【請求項１７】
請求項１２に記載のシステムであって、前記スケジューリングエンジンは、更に、
前記ジョブを処理するプロセッサの数（Ｎ）を決定し、
第１及び第２グループにおけるプロセッサの数の和が、Ｎ未満である場合、前記ジョブを前記待ち行列に保持し、
第１及び第２グループにおけるプロセッサの数の和が、Ｎ以上である場合、前記ジョブの最低最新利用率を有する第１及び第２グループから選択された前記Ｎプロセッサによる処理のために前記ジョブを解放する、ように構成されたシステム。
【請求項１８】
請求項１２に記載のシステムであって、前記利用率サービスエンジンは、更に、第１グループにおけるプロセッサの最新利用率を決定するように構成され、
更に、所定の第１利用率より大きい最新利用率を有するプロセッサを除外するために、第１グループのプロセッサを再指定するように構成されたプロセッサグループ化エンジンが含まれ、
前記スケジューリングエンジンは、更に、前記ジョブを処理するプロセッサの数（Ｎ）を決定するように構成され、
前記スケジューリングエンジンは、更に、再指定された第１グループにおける及び第２グループにおけるプロセッサの数の和が、Ｎ未満である場合、前記ジョブを前記待ち行列に保持するように構成され、
前記スケジューリングエンジンは、更に、再指定された第１グループにおける及び第２グループにおけるプロセッサの数の和が、Ｎ以上である場合、最低最新利用率を有する前記再指定された第１グループから及び第２グループから選択された前記Ｎプロセッサによる処理のために前記ジョブを解放するように構成されたシステム。
【請求項１９】
請求項１２に記載のシステムであって、
前記利用率サービスエンジンは、更に、第２グループにおけるプロセッサの新しい最新利用率を決定するように構成され、
更に、第２の所定利用率より大きい新しい最新利用率を有するプロセッサを除外するために、第２グループのプロセッサを再指定するように構成されたプロセッサグループ化エンジンが含まれ、
前記スケジューリングエンジンは、更に、第１グループのプロセッサ及び前記再指定された第２グループのプロセッサから選択された前記プロセッサの１つ又は複数によって処理される前記ジョブをスケジューリングするように構成されたシステム。
【請求項２０】
請求項１２に記載のシステムであって、複数のプロセッサが、前記ジョブを並列に処理するように構成されたシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、クライアント・サーバ又はホスティング環境における処理のための物理資源（ノード）への計算ジョブの割当てに関し、特に、クライアント・サーバ又はホスティング環境における計算ジョブの多目的配分に関する。
【背景技術】
【０００２】
サーバ又はホスティング環境は、異なる顧客の計算要求を処理するために用いられる極めて多くの数のノードを含み得る。様々な顧客要求の処理が、要求を割り当てる実際のハードウェア資源からできるだけ独立であり得るように、システムは、個々の物理資源の集まりである“仮想計算機”を用いて、ユーザ要求を処理し始めている。物理資源を仮想化すると、異なる顧客要求を実行する仮想計算機は、対応するユーザ要求の結果に影響を及ぼすことなく、システム内の他のハードウェアに移動し得る。更に、ユーザ要求を処理するために用いられるアプリケーションは、新しいハードウェアに適応ように再構成する必要がない。
【０００３】
現在、計算ジョブは、ホスティング環境内の特定のハードウェア上で走るスケジューラによって所定の仮想計算機に配分し得る。他の選択肢として、ホスティング環境上で走る負荷分散装置は、システム内における全ての資源が同様な利用率を有するように、現在実行中のタスクを分散し得る。技術的には、負荷分散装置は、異なる仮想計算機を移動し、このことは、既存の仮想化手法で簡単に行い得る。負荷分散の背後にある考え方は、システムの資源をできるだけ効率的に利用して、システム内における計算ジョブの全体的な処理能力を最大にすることである。この目的のために、ＩＢＭの“Ｖｉｒｔｕａｌ＿Ｍａｃｈｉｎｅ＿Ｍａｎａｇｅｒ”又はＨＰの“ＰｒｏＬｉａｎｔ＿Ｅｓｓｅｎｔｉａｌ＿Ｗｏｒｋｌｏａｄ＿Ｍａｎａｇｅｍｅｎｔ＿Ｐａｃｋ”のような管理ソフトウェアを用い得る。
【０００４】
顧客の視点からは、ハードウェア資源の高い利用可能性及び彼らの要求に対する短い応答時間が、望ましい。プロバイダの視点からは、顧客満足度が顧客からの将来のビジネスを保証することから、高い顧客満足度が望ましい。しかしながら、プロバイダは、異なる顧客と異なる取引関係を有する。例えば、利用可能性が高くなり、また、応答時間が短くなると、ある顧客は、他の顧客より、多額の代価を喜んで支払うことがある。従って、プロバイダは、低優先度の顧客に対する適切なサービスを依然維持しつつ、更に、高優先度の顧客の要求に応え得るように、異なるサービスレベル（例えば、資源利用可能性及び応答時間）を顧客に提供したいと望むものである。
【０００５】
現在、或る顧客に対するこの種の強調は、顧客の要求を処理するために用いられるホスティング環境を幾つかの区画に分割して、異なる区画に異なる処理帯域幅を持たせることによって、また、異なる顧客からのジョブを異なる区画に割り当てることによって、実現されてきている。残念なことに、このことは、１つの区画に割り当てられた顧客用のジョブの処理に他の区画の遊休資源を用い得ないことから、ホスティング環境の全体的な利用度が減少するという結果になる。更に、（例えば、区画に割り当てられた他の要求を処理するために）その既に完全に利用されている区画に割り当てられた顧客要求は、充分な遊休資源が他の区画において利用可能な場合であっても、全く処理できない。他の実施例において、各顧客がシステム上において時間期間当り限定された量の処理時間を有するように、異なる顧客間のある種のランク付けを実現するために、顧客クォータが用いられてきている。そして、時間期間内における顧客の配分時間が既に用いられた場合、その顧客からの他の要求は、その時間期間内において処理できない。また、これによって、充分な遊休資源があっても処理されない要求が存在することから、全体的な利用度が低くなる。
【非特許文献１】D. G. Feitelson, M. A. Jette: “Improved utilization and responsiveness with gang Scheduling” Proceedings of Job Scheduling Strategies for Parallel Processing (JSSPP97), volume 1291 of Lecture Notes in Computer Science (LNCS), pages 238-261. Springer, 1997.
【非特許文献２】C. Franke, J. Lepping, U. Schwiegelshohn: “On Advantages of Scheduling using Genetic Fuzzy Systems”, Proceedings of the 12th Workshop on Job Scheduling Strategies for Parallel Processing, 2006, to appear.
【非特許文献３】D. Talby, D. G. Feitelson: “Supporting Priorities and Improving Utilization of the IBM SP Scheduler Using Slack-Based Backfilling” Proceedings of the 13th International Parallel Processing Symposium and 10th Symposium on Parallel and Distributed Processing, pages 513-517. IEEE Computer Society, 1999.
【発明の開示】
【課題を解決するための手段】
【０００６】
第１の一般的な態様において、複数のプロセッサで計算ジョブを処理する方法を開示する。ジョブの処理要求が受信され、この場合、ジョブは、ジョブに関連付けられた優先順位レベルを有する。第１グループのプロセッサが、ジョブの処理に利用可能なものとして指定され、この場合、第１グループにおけるプロセッサの数は、ジョブに関連付けられた優先順位レベルに基づく。第２グループのプロセッサが、ジョブの処理に利用可能なものとして指定され、この場合、第２グループの各プロセッサについて、プロセッサの最新利用率は、第２の所定利用率より小さい。そして、ジョブは、第１グループのプロセッサ及び第２グループのプロセッサから選択された１つ又は複数のプロセッサで処理される。
【０００７】
実施例には、次の特徴の１つ又は複数を含み得る。例えば、第２の所定利用率は、ジョブの優先順位レベルと、プロセッサが属する部分集合のプロセッサと、に基づき得る。ジョブを処理するプロセッサの数（Ｎ）を決定することができ、そして、ジョブは、最低最新利用率を有する第１及び第２グループから選択されたＮプロセッサで処理し得る。ジョブを処理するプロセッサの数を決定する段階には、少なくともＮプロセッサでジョブを処理せよという要求を受信する段階を含み得る。要求は、ワイドエリアネットワークを介して受信し得る。
【０００８】
第３グループのプロセッサをジョブの処理に利用可能なものとして指定し得るが、この場合、第３グループの各プロセッサについて、プロセッサの最新利用率は、第３の所定利用率より小さく、また、この場合、第３の所定利用率は、第２の所定利用率より低く、ジョブは、第１、第２、及び第３グループのプロセッサから選択された１つ又は複数のプロセッサで処理し得る。ジョブを処理するプロセッサの数（Ｎ）を決定し得る。要求は、第１及び第２グループにおけるプロセッサの数の和が、Ｎ未満である場合、待ち行列に入れることができる。第１及び第２グループにおけるプロセッサの数の和が、Ｎ以上である場合、ジョブは、最低最新利用率を有する第１及び第２グループから選択されたＮプロセッサで処理し得る。
【０００９】
ジョブを処理するプロセッサの数（Ｎ）を決定し得る。第１グループにおけるプロセッサの最新利用率を決定し得る。第１グループのプロセッサは、所定の第１利用率より大きい最新利用率を有するプロセッサを除外するために、再指定し得る。要求は、再指定された第１グループにおける及び第２グループにおけるプロセッサの数の和が、Ｎ未満である場合、待ち行列に入れることができる。再指定された第１グループにおける及び第２グループにおけるプロセッサの数の和が、Ｎ以上である場合、ジョブは、最低最新利用率を有する再指定された第１グループから及び第２グループから選択されたＮプロセッサで処理し得る。
【００１０】
第２グループにおけるプロセッサの新しい最新利用率を決定し得る。次に、第２の所定利用率より大きい新しい最新利用率を有するプロセッサを除外するために、第２グループのプロセッサを再指定し得る。次に、ジョブは、第１グループのプロセッサ及び再指定された第２グループのプロセッサから選択された１つ又は複数のプロセッサで処理し得る。
【００１１】
他の一般的な態様において、複数のプロセッサで計算ジョブを処理する方法を開示する。複数の計算ジョブが、複数のプロセッサで処理される。第１グループのプロセッサが、第１ジョブの処理に利用可能なものとして指定され、この場合、第１グループにおけるプロセッサの数は、第１ジョブに関連付けられた優先順位レベルに基づく。第２グループのプロセッサが、ジョブの処理に利用可能なものとして指定され、この場合、第２グループの各プロセッサについて、プロセッサの初期利用率は、優先順位レベルと、プロセッサが属するプロセッサ部分集合と、に基づく所定の利用率以下である。第１ジョブは、第１グループのプロセッサから及び第２グループのプロセッサから選択された複数のプロセッサで処理される。第１ジョブを処理している第２グループのプロセッサが、所定の利用率より大きい更新された利用率を有するという判断が行われる。そして、この判断に応じて、第１ジョブは、利用率が第１の所定利用率より大きかったプロセッサを含まない第１グループのプロセッサ及び第２グループから選択された複数のプロセッサで処理される。
【００１２】
実施例には、次の特徴の１つ又は複数を含み得る。例えば、各計算ジョブを複数のプロセッサで処理するために、複数のプロセッサの一次グループをジョブの処理に利用可能なものとして指定し得るが、この場合、各ジョブ用の一次グループにおけるプロセッサの数は、ジョブに関連付けられた優先順位レベルに基づく。ジョブは、ジョブ用の一次グループのプロセッサ及び一次グループに属さない予備の組の複数のプロセッサから選択されたグループのプロセッサでジョブを処理し得る。ジョブを処理するために用いられる予備の組におけるプロセッサの利用率が、ジョブの優先順位レベルによって決定された利用率より大きいという判断を行い得る。この判断に応じて、ジョブは、利用率が第１の所定利用率より大きかったプロセッサを含まない第１グループのプロセッサ及び第２グループから選択された複数のプロセッサで処理し得る。
【００１３】
他の一般的な態様において、計算ジョブを処理するためのシステムには、入力待ち行列、複数のプロセッサ、利用率サービスエンジン、及びスケジューリングエンジンが含まれる。入力待ち行列は、処理する計算ジョブを受信するように構成され、この場合、優先順位レベルが、ジョブに関連付けられている。利用率サービスエンジンは、プロセッサの利用率を決定するように構成され、この場合、第１グループの複数のプロセッサが、ジョブの処理に利用可能なものとして指定され、第１グループにおけるプロセッサの数は、ジョブに関連付けられた優先順位レベルに基づき、また、最新利用率が第２の所定利用率より小さい第２グループの複数のプロセッサが、ジョブの処理に利用可能なものとして指定される。スケジューリングエンジンは、ジョブの優先順位レベルに関する情報及びプロセッサの利用率に関する情報を受信するように構成され、また、第１グループのプロセッサ及び第２グループのプロセッサから選択された１つ又は複数のプロセッサによって処理されるジョブをスケジューリングするように構成される。
【００１４】
実施例には、次の特徴の１つ又は複数を含み得る。例えば、第１グループは、１つのプロセッサを含み得る。複数のプロセッサが、ジョブを並列に処理するように構成される。スケジューリングエンジンは、ジョブを処理するプロセッサの数（Ｎ）を決定するように、また、最低最新利用率を有する第１及び第２グループから選択されたＮプロセッサで処理されるジョブをスケジューリングするように構成し得る。スケジューリングエンジンは、少なくともＮプロセッサでジョブを処理せよという要求を受信するように構成でき、また、ジョブを処理するプロセッサの数（Ｎ）の決定は、要求に基づき得る。ジョブの処理に利用可能なものとして、プロセッサの最新利用率が第３の所定利用率より小さい第３グループの複数のプロセッサを指定し得る。この場合、第３の所定利用率は、第２の所定利用率より低い。スケジューリングエンジンは、更に、第１、第２、及び第３グループのプロセッサから選択された１つ又は複数のプロセッサによって処理されるジョブをスケジューリングするように構成し得る。
【００１５】
スケジューリングエンジンは、更に、ジョブを処理するプロセッサの数（Ｎ）を決定するように、第１及び第２グループにおけるプロセッサの数の和が、Ｎ未満である場合、ジョブを待ち行列に保持するように、また、第１及び第２グループにおけるプロセッサの数の和が、Ｎ以上である場合、ジョブの最低最新利用率を有する第１及び第２グループから選択されたＮプロセッサによる処理のためにジョブを解放するように構成し得る。
【００１６】
利用率サービスエンジンは、更に、第１グループにおけるプロセッサの最新利用率を決定するように構成し得る。本システムには、更に、所定の第１利用率より大きい最新利用率を有するプロセッサを除外するために、第１グループのプロセッサを再指定するように構成されたプロセッサグループ化エンジンを含み得る。本実施例において、スケジューリングエンジンは、更に、ジョブを処理するプロセッサの数（Ｎ）を決定するように、再指定された第１グループにおける及び第２グループにおけるプロセッサの数の和が、Ｎ未満である場合、ジョブを待ち行列に保持するように、また、再指定された第１グループにおける及び第２グループにおけるプロセッサの数の和が、Ｎ以上である場合、最低最新利用率を有する再指定された第１グループから及び第２グループから選択されたＮプロセッサによる処理のためにジョブを解放するように構成し得る。
【００１７】
利用率サービスエンジンは、更に、第２グループにおけるプロセッサの新しい最新利用率を決定するように構成し得る。本システムには、更に、第２の所定利用率より大きい新しい最新利用率を有するプロセッサを除外するために、第２グループのプロセッサを再指定するように構成されたプロセッサグループ化エンジンを含み得る。本実施例において、スケジューリングエンジンは、更に、第１グループのプロセッサ及び再指定された第２グループのプロセッサから選択されたプロセッサの１つ又は複数によって処理されるジョブをスケジューリングするように構成し得る。
【発明を実施するための最良の形態】
【００１８】
１つ又は複数の実施例の詳細について、添付図面及び以下の説明に記載する。他の特徴は、説明、図面、及び請求項から明らかになるであろう。
【００１９】
図１は、多数の計算ジョブを並列に処理するための多数のプロセッサを有するシステム１００のブロック図である。計算ジョブは、例えば、ラップトップコンピュータ１０２及び１０４、パソコン１０８及び１１０、ワークステーション１０６、又はいずれか他のコンピュータ処理装置であり得る多くの異なるクライアント１０２、１０４、１０６、１０８、１１０から実行依頼し得る。クライアント１０２−１１０は、クライアントとサーバとの間のデータの交信を円滑化するクライアント１０２−１１０とサーバ１２０との間の有線及び／又は無線リンクが含まれるネットワーク１１５を介して、データセンタ（例えば、サーバ）１２０と通信を行い得る。例えば、ネットワークは、イントラネット等のローカルエリアネットワーク（“ＬＡＮ”）又はインターネット等のワイドエリアネットワーク（“ＷＡＮ”）であってよく又は１つ又は複数のＬＡＮの及びＷＡＮを含み得る。
【００２０】
一般的に、データセンタ１２０は、クライアントが保有するものより大きいコンピュータ処理資源（例えば、より大きいメモリ空間、より大きい記憶容量、及び／又は一秒当たりより多くのフロップを実行する能力）を保有する。従って、データセンタは、多数のクライアント１０２−１１０から、データセンタの計算資源を用いてクライアントのために計算ジョブを処理せよという要求を受信する。例えば、一実施例において、クライアントは、それら自体のオペレーティング・システムを走らせ、また、一般的に、それら自体のアプリケーションプログラムを走らせるが、データセンタに依拠して、それらの要求でそれらのために処理負荷が大きいジョブを実施する自律コンピュータ処理装置であってよい。例えば、物理的イベントの極めて高精度で三次元時間依存シミュレーションを伴うジョブは、クライアントの資源の能力を超えることがあり、このため、クライアントは、データセンタ１２０にジョブの処理実行を依頼する。他の例において、データセンタは、クライアント用の大量のデータを記憶でき、また、クライアントの要求でデータを処理するためのアプリケーションのホスティングを行い得る。例えば、データセンタ１２０は、銀行の顧客に関する金融情報を記憶でき、また、銀行は、情報を処理するために、例えば、顧客の金融取引の毎日の勘定調整を実施するために、データセンタの資源を要請し得る。同様に、他の実施例において、データセンタ１２０は、クライアント１０２−１１０のために走らせ得るアプリケーションのホスティングを行うことができ、これによってクライアントは、アプリケーションを走らせるのに必要な資源をローカルに維持する必要がなく、むしろ、データセンタがアプリケーションを走らせ、アプリケーションの実行結果をクライアントに返すことができるように、必要な情報をデータセンタ１２０に実行依頼するだけでよい。
【００２１】
データセンタ１２０には、クライアント１０２−１１０の要求を満たすために計算タスク実行用の多数のプロセッサ（又は処理ノード）１２２−１３０と、異なるクライアントジョブを異なるプロセッサに分散するスケジューリングサーバ（又はスケジューリングノード）１４０と、が含まれる。他の実施例において、データセンタ１２０には、処理のために異なるプロセッサに着信クライアントジョブを分散する段階に関連するタスクを実施するための多数のスケジューリングサーバを含み得る。本明細書で更に詳述するように、処理のために着信ジョブを異なるプロセッサに配分する際、スケジューリングサーバ（１つ又は複数）１４０は、ジョブに関連付けられた優先順位レベルを考慮して、どのプロセッサ１２２−１３０を配分してクライアントジョブを処理すべきか決定し得る。スケジューリング処理中、異なるジョブの優先順位レベルを考慮することによって、スケジューリングサーバ１４０は、資源が多量に用いられる間、恐らく低優先度レベルのジョブを犠牲にして、最も高い優先順位レベルのジョブがプロセッサから計算資源の最も大きい利用可能性を受けることを保証し得るが、一方で、資源が高優先度のジョブによって必要とされない時、適切な資源が低優先度のジョブに利用可能であることも保証し得る。更に、多数のジョブが多数のプロセッサ１２２−１３０上で走っている間、スケジューリングサーバ（１つ又は複数）１４０は、異なるジョブによって用いられる計算資源の利用率を監視することができ、必要ならば、異なるプロセッサ１２２−１３０にジョブを動的に再配分し得る。動的な再配分によって、低優先度のジョブは、異なるプロセッサに再配分され、最も高い優先順位のジョブが、計算資源の最も大きい利用可能性を受け続けることを保証し得る。
【００２２】
データセンタ１２０のプロセッサ１２２−１３０は、例えば、サーバコンピュータ、ブレードサーバ、パソコン、個別のプロセッサ、又は計算ジョブを実施するように構成されたいずれか他の種類の処理装置であってよい。一般的に、プロセッサ１２２−１３０は、処理コアを含んでおり、また、メモリ空間へアクセスする。
【００２３】
図２は、計算ジョブを処理するために図１のシステムに用い得る代表的なプロセッサ２００のブロック図である。プロセッサ２００は、例えば、パソコン、サーバコンピュータ、ブレード、ワークステーション、携帯情報端末（ＰＤＡ）、又はネットワーク２２０を介してスケジューリングサーバ１４０に連動連結可能ないずれか他の種類のコンピュータ処理装置であってよい。従って、プロセッサ２００は、スケジューリングサーバ１４０によってプロセッサにスケジューリングされた処理すべきジョブを受信し得る。プロセッサ２００がジョブ又はジョブの一部を完了した時、プロセッサ２００は、ジョブ又はジョブの一部を終了したことについてスケジューリングサーバ１４０に通知することができ、また、処理を要求したクライアント１０２−１１０に処理の結果を返し得る。結果は、スケジューリングサーバ１４０を含む又は含まない経路を介して返し得る。
【００２４】
プロセッサ２００には、中央処理装置（ＣＰＵ）２０２、固定記憶装置（例えば、ハードディスク）、不揮発性（例えば、フラッシュ）メモリ、又は着脱可能で記録可能な媒体（例えば、ＣＤ）２０３、及びランダムアクセスメモリ（ＲＡＭ）２０４を含み得るが、これらは、バス２０６（例えば、周辺構成要素相互接続（ＰＣＩ）バス又は他のそのようなコンピュータ拡張バス）を介して共に連動結合され情報を交信し得る。記憶装置２０３は、ＲＡＭ２０４に転送されＣＰＵ２０２によって実行し得るコンピュータ判読可能命令（例えば、ソフトウェア）を記憶することが可能な不揮発性メモリ装置であってよい。例えば、記憶装置２０３は、プロセッサ２００のＣＰＵ２０２によって実行できるオペレーティング・システム及び／又は１つ又は複数のアプリケーションプログラムを記憶し得る。ネットワーク２２０は、例えば、ＬＡＮ、ＷＡＮ、インターネット、又はイントラネットであってよい。ネットワーク２２０は、プロセッサに、例えば、電気信号が伝搬する物理媒体（例えば、銅線）を介して、光信号が伝搬する光ファイバケーブル（例えば、ガラスファイバ）を介して、電磁波信号が伝搬する無線通信チャネルを介して、又は様々な通信チャネルの何らかの組合せを介して、結合し得る。
【００２５】
プロセッサ２００には、更に、プロセッサ２００をネットワーク２２０に結合するように構成されたネットワークインターフェイス装置（ＮＩＤ）１１６が含まれる。ＮＩＤ２１６には、プロセッサ２００がデータをコンピュータネットワーク２２０と交信できるようにする様々なプロトコル処理モジュールを含み得る。これらのアプリケーションをサポートするのに必要なデータパケットの転送に対応するために、伝送制御プロトコル（ＴＣＰ）及び他の関連手法を用いて、データパケットを適切にフォーマット化し得る。このフォーマット化により、ネットワーク２２０を介してプロセッサ２００に接続された遠隔端設備によるこれらのパケットの受信が円滑化される。ＮＩＤ２１６は、ホストバス２１２及びブリッジ２１４を介して、ＣＰＵ１０２及びメモリ２０４に結合し得る。
【００２６】
ネットワーク２２０に接続されたプロセッサ２００が、スケジューリングサーバ１４０及び／又は他のプロセッサ及び／又はクライアント１０２−１１０と通信を行うためには、これらの様々な装置は、互いに識別できなければならない。従って、ネットワーク２２０に接続された各ＮＩＤ２１６は、ＭＡＣアドレスとしても知られている固有の通し番号（例えば、４８ビットの番号）を有するが、これは、ネットワーク２２０及びネットワークに接続された他のプロセッサ及びクライアントに対して、ＮＩＤ２１６（従って、プロセッサ２２０）を一意的に識別するために用い得る。
【００２７】
図３は、計算ジョブを処理する図１のシステムに用い得る他の代表的なプロセッサ３０２、３０４、３０８、及び３０８のブロック図である。プロセッサ３０２、３０４、３０８、及び３０８は、本明細書に用いるように、それ自体プロセッサと称し得るマルチコアシステム・オン・チップ（“ＳＯＣ”）の一部であってよい。プロセッサ３０２、３０４、３０８、及び３０８は、各々、中央処理装置コア、デジタル信号プロセッサ（“ＤＳＰ”）、又は他のデータ処理モジュールであってよい。
【００２８】
プロセッサ３０２、３０４、３０６、及び３０８は、主メモリ３１２（例えば、高速ランダムアクセスメモリ（“ＲＡＭ”）へのアクセスを制御するメモリコントローラ３１０に接続される。プロセッサ３０２、３０４、３０６、及び３０８は、また、プロセッサと外部装置との間の入出力動作を管理する入出力（Ｉ／Ｏ）プロセッサ３１４に接続される。例えば、Ｉ／Ｏプロセッサ１１４は、プロセッサ３０２、３０４、３０６、及び３０８と外部ディスクドライブとの間の通信を処理し得る。
【００２９】
各プロセッサ３０２、３０４、３０６、及び３０８は、それぞれキャッシュ要素３１６、３１８、３２０、及び３２２に関連付け得るが、これらは、各々、主メモリ３１２と交信されるデータのバッファリングを行う。キャッシュ要素３１６、３１８、３２０、及び３２２は、プロセッサ３０２、３０４、３０６、及び３０８の処理速度が、一般的に、主メモリ１１２にアクセスする速さより極端に速いことから、プロセッサ３０２、３０４、３０６、及び３０８により共通に用いられる。キャッシュ要素３１６、３１８、３２０、及び３２２によって、データは、メモリ３１２からブロック単位で取り込み可能であり、また、関連するプロセッサ３０２、３０４、３０６、及び３０８の近くに配置されるキャッシュ要素３１６、３１８、３２０、及び３２２に素早くアクセスし得るフォーマットで一時的に記憶し得る。そして、プロセッサ３０２、３０４、３０６、及び３０８は、それらの関連するキャッシュ要素３１６、３１８、３２０、及び３２２からデータに対して、そのデータを主メモリ３１２から取り込まねばならない場合よりも速くアクセスし得る。
【００３０】
プロセッサ３０２、３０４、３０６、及び３０８、キャッシュ要素、３１６、３１８、３２０、及び３２２、並びに主メモリ３１２間の通信は、一般的に、共有バスを介して行われるが、これには、アドレス・命令バス３２４及びデータバス３２６を含み得る。アドレス・命令バス３２４及びデータバス３２６は、別々に示してあるが、幾つかの実施例では、１つの物理的なバスに組み合わせ得る。共有バスを二重バス又は単一バスとして実装しているかどうかにかかわらず、一組のプロトコルを用いて、バス（即ち、“バスエージェント”）に接続された個々の要素３０２−３２２がどのようにそのバスを用いてそれら自体の間で通信を行うか管理し得る。
【００３１】
多くの場合、チップ３００の動作中、プロセッサ３０２、３０４、３０６、及び３０８は、同じデータで動作し、この場合、主メモリ３１２から取り込まれ、また、プロセッサ３０２に関連付けられたローカルキャッシュ要素３１６に記憶されるデータのコピーは、他の全てのプロセッサ３０４、３０６、及び１０８に関連付けられたローカルキャッシュ３１８、３２０、及び３２２に記憶されたコピーと同じでなければならない。従って、１つのプロセッサが、そのローカルキャッシュに記憶されたデータを修正する場合、全てのプロセッサが同じ共通のデータで動作し続けるように、この変更は、他の処理要素に関連付けられたキャッシュに伝えられなければならない。このようにバスエージェント間におけるキャッシュ整合が必要であることから、プロトコルが確立され、ローカルに記憶されたデータに対して個々のバスエージェントによりその関連するキャッシュになされた変更は、そのバスエージェントに接続された他のバスエージェントに関連する他の全てのキャッシュに確実に伝達される。
【００３２】
図２及び図３において説明した代表的なプロセッサは、プロセッサの幾つかの構成要素の例を提供しているだけであり、これらは、何らかの実施例に用いてよく、また、用い得るプロセッサのアーキテクチャに関して何ら限定しようとするものではない。計算ジョブを処理するように構成されているプロセッサであれば、どのようなプロセッサでも用い得る。
【００３３】
図４は、処理実行依頼される異なる計算ジョブに割り当て得る異なる優先順位レベルを示す表４００である。計算ジョブは、ジョブの処理要求の実行依頼を行ったユーザ４０２によって識別し得る。ユーザ４０２は、ジョブの処理要求に関連付けられた会社、組織、又はクライアントによって又は要求に関連付けられた個人によって識別し得る。また、計算ジョブは、ジョブの処理要求が送られたドメイン名４０４によって、要求が送られたＩＰアドレス４０６によって、又は要求が送られたハードウェアのＭＡＣアドレス４０８によって識別し得る。優先順位レベル４１２は、ジョブと関連付けることができ、また、優先順位レベルは、例えば、ユーザ４０２、ドメイン名４０４、ＩＰアドレス、及びＭＡＣアドレス４０８を含むジョブの処理要求に関する情報に基づき決定し得る。一実施例において、スケジューリングサーバ１４０が、ジョブの処理要求を受信すると、スケジューリングサーバは、表４００にリスト化された情報等のジョブに関する情報を抽出し、また、この情報を用いて、抽出された情報と優先順位レベルとの間の関係を調べることによって、ジョブの優先順位レベルを決定し得る。この場合、これらの関係は、サーバ１４０上のデータベースに記憶されている。
【００３４】
一例において、スケジューリングサーバ１４０が、ジョブの処理要求を受信する場合、スケジューリングサーバは、要求から行４２０にリスト化された情報を抽出することができ、また、この情報を用いて、ジョブの優先順位レベルを決定し得る。ユーザ情報４０２（即ち、“ＳＡＰ／Ｐｏｌｋ”）は、クライアントとスケジューリングサーバとの間にセッションが確立されている場合、ログイン情報から決定し得る。ドメイン名４０４、ＩＰアドレス４０６、及びＭＡＣアドレス４０８情報は、クライアントからサーバに送られたパケットのヘッダ情報からスケジューリングサーバによって抽出し得る。行４２０の情報の受信に基づき、スケジューリングサーバは、要求されたジョブの優先順位レベルが、できるだけ高くあるべきだと判断し、従って、優先順位レベル“１”をジョブに割り当て得る。（本明細書に用いる表記法では、高優先度のジョブが、小さい値の優先順位レベル４１２によって指定されている。優先順位レベル１−１０が、一例として本明細書に用いられるが、“１”は、最も高い優先順位レベルを示し、“１０”は、最も低い優先順位ジョブを示す）。この判断は、受信情報４０２、４０４、４０６、及び４０８の１つ又は複数又は表４００にリスト化されていない他の情報に基づき得る。
【００３５】
受信され抽出された情報の差異は、要求ジョブの異なる優先順位レベルを規定し得る。例えば、行４２２にリスト化された要求に関する情報は、ＩＰアドレスの値を除き、行４２０にリスト化された要求に関する情報と同じであり、行４２２におけるジョブ要求に割り当てられた優先順位レベルは、ジョブ４２０に割り当てられた“１”の代わりに値“３”を有し、これによって、ＩＰアドレス情報に基づき、低優先度のレベルが行４２２におけるジョブに割り当てられた可能性があることを示す。このようなことは、ユーザ（即ち、“Ｐｏｌｋ”）が、同じラップトップコンピュータを用いて、要求４２０及び４２２の実行依頼をしたが、異なるＩＰアドレスに関連付けられたそれらの要求を異なる地点から実行依頼した場合、起こり得る。例えば、ＩＰアドレス“１９２．１６８．９９．２３”は、会社“ＳＡＰ”の重要な研究所と関連付け得る一方で、ＩＰアドレス“１９２．１６８．９９．４”は、会社“ＳＡＰ”のカフェテリアエリアと関連付けることができ、従って、高優先度は、ジョブ要求４２２よりもジョブ要求４２０と関連付け得る。
【００３６】
他の例において、行４２４にリスト化された要求に関する情報は、行４２６にリスト化された要求に関する情報と同じであるが、異なる点は、行４２４にリスト化された要求については、ユーザ“Ｐｏｌｋ”がその要求を行い、一方、行４２６では、ユーザ“Ａｄａｍｓ”がその要求を行うこと、また、Ｐｏｌｋによって要求されたジョブに割り当てられた優先順位は、Ａｄａｍｓによって要求されたジョブに割り当てられた優先順位より高いということである。このことは、Ｐｏｌｋによって実行依頼されたジョブは、Ａｄａｍｓによって実行依頼されたジョブより貴重であると見なされている場合にあり得る。ジョブに付加された価値及び結果的に生じるジョブの優先順位は、会社に対する異なるユーザの仕事の相対的な価値に基づき、又は１人のユーザが自分のジョブを処理してもらうために他のユーザより多くの代価を支払うという理由で、決定し得る。本例において、Ｐｏｌｋは、Ａｄａｍｓが低い優先度で自分のジョブを処理してもらうために支払う代価より多くの代価を支払って、高い優先度で自分のジョブを処理してもらうことができる。
【００３７】
他の例において、行４２８、４３０、及び４３２にリスト化された要求に関する情報は、同じであるが、異なる点は、行４３０及び４３２において、フラグ４１２の値が設定されている、即ち、行４３０の要求については、フラグ＝１、行４３２の要求については、フラグ＝１０に設定されていることである。フラグの値は、ユーザによって設定され、ジョブ要求に関連付けられて優先順位レベルを無効にし得るが、そうでない場合、この優先順位レベルは、ユーザ４０２、ドメイン４０４、ＩＰアドレス４０６、及びＭＡＣアドレス４０８等の要求に関する情報に基づき、そのジョブに対して決定される。従って、フラグ４１２の値が設定されない場合、行４２８において要求されたジョブの優先順位レベルは、既定値レベル“３”に決定し得る。しかしながら、ユーザが特に重要なジョブを有する場合、ユーザは、高い優先度でジョブを処理してもらうために喜んで追加料金を支払うことがあり、従って、ユーザは、行４３０でのように、フラグ５１２を介して、既定値レベルより高い値をジョブに割り当て得る。同様に、ユーザが相対的にあまり重要でない又は緊急でないジョブを有する場合、ユーザは、低い優先度でジョブを処理してもらうために喜んで少ない代価を支払うことがあり、従って、ユーザは、行４３２でのように、フラグ５１２を介して、既定値レベルより低い値をジョブに割り当て得る。
【００３８】
また、ジョブ要求が受信されるドメイン名４０４は、要求されたジョブを処理するための優先順位レベルを決定するために用い得る。従って、行４２８及び４３４における情報の比較で分かることは、ジョブ要求の唯一の差異がドメイン“ｓａｐ．ｃｏｍ”よりもむしろ“ａｂｃ．ｃｏｍ”から来たものである場合、ジョブの優先順位が低いことである。このことは、例えば、フィールドサービス技能者又はコンサルタントが、異なる顧客のドメイン内からジョブの実行を依頼し、異なる優先順位レベルが異なる顧客に関連付けられている場合、あり得ることである。
【００３９】
更に他の例において、異なる優先順位レベルは、組織内における異なるユーザ及び／又はＭＡＣアドレス又はクライアントによって要求されたジョブに割り当て得る。従って、行４３６、４３８、及び４４０における要求に関する情報の比較によって分かることは、ＡＢＣ組織内において、ユーザ“Ｈａｒｄｉｎｇ”によって及び／又はＭＡＣアドレス“０８：００：６９：０２：０１：ＦＣ”から実行依頼されたジョブは、ユーザ“Ｂｕｓｈ”及び“Ｊｏｈｎｓｏｎ”によって及び／又はＭＡＣアドレス“０８：００：６９：０２：８８：ＣＴ”及び“０８：００：６９：０２：ＢＭ：７７”から実行依頼されたジョブより高い優先度を受け得ることである。
【００４０】
図５は、１つ又は複数のクライアント１０２、１０４、１０６、１０８、及び１１０からの計算ジョブを１つ又は複数のプロセッサ５０２にスケジューリングして、それらのプロセッサによって処理させるためのスケジューリングプロセッサ１４０のブロック図である。ジョブの処理に利用可能なプロセッサのバンク５２０におけるプロセッサ５２０の総数は、ｍによって示し得る。スケジューリングサーバ１４０は、直接又は他のネットワーク５０４を介して、プロセッサ５０２にジョブを転送し得る。計算ジョブの実施要求は、ネットワーク１１５を介してクライアントから受信され、どのプロセッサ５０２がジョブを処理すべきかスケジューリングサーバ１４０のスケジューリングエンジン５０８が決定するまで、ジョブは、待ち行列５０６に保持できる。本明細書で更に詳述するように、スケジューリングエンジンは、プロセッサ５０２の利用率及び要求されたジョブの優先順位レベルに基づき、要求されたジョブを処理する特定のプロセッサを選択し得る。ｉ番目のプロセッサの最新利用率は、Ｕｉによって示され、また、ジョブを関連付け得る異なる優先順位レベルの数は、ｌによって示し得るが、この場合、ｌ＜ｍである。
【００４１】
利用率サービスエンジン５１０を用いて、プロセッサ５０２に対してポーリングを行ってプロセッサの利用率を決定でき、また、この情報をスケジューリングエンジン５０８に報告し得る。利用率は、プロセッサが利用可能な計算資源の利用度の計測値であってよい。例えば、利用率は、プロセッサのＣＰＵ負荷の大きさ、例えば、ある時間期間中、ＣＰＵが稼働している時間の比であってよい。ほとんどの最近のオペレーティング・システムは、そのような計測を実施するためのルーチンを含むため、利用率サービスエンジン５１０は、プロセッサに対してポーリングを行って、そのようなルーチンを実行し、結果をエンジン５１０に報告できる。他の例において、利用率は、プロセッサによって用いられるメモリ空間の大きさをプロセッサが利用可能なメモリ空間の総量で除算したものであってよい。
【００４２】
更に、スケジューリングサーバ１４０には、計算ジョブを処理するために利用可能なプロセッサのバンク５２０における全てのプロセッサ５０２の部分集合を指定するために用い得るプロセッサグループ化エンジン５１２を含み得る。更に詳細に後述するように、プロセッサの異なる部分集合は、一般的に、ジョブの優先順位レベルに基づきジョブを処理するために指定し得る。特に、幾つかの部分集合は、高い優先度の（即ち、優先順位レベル４１２に対して小さい値を有する）ジョブを処理するために指定し得るが、一方、他の部分集合は、高い又は低い優先度のジョブを処理するために指定し得る。しかしながら、高優先度のジョブを処理するために指定された部分集合に属するプロセッサの利用率が充分に低い場合、スケジューリングサーバ１４０は、その部分集合に属するプロセッサ上で低優先度のジョブを開始し得る。このように、高優先度のジョブが要求された場合にも利用可能であり得るように、処理資源全部が、遊休状態のまま放置されるものではない。更に、低優先度のジョブが、高優先度のジョブ用に指定されているプロセッサ部分集合において走っている時、また、それらの処理ノードの利用度が高くなり過ぎて新しい高優先度のジョブに対応できない時はいつでも、スケジューリングサーバ１４０は、再配分手順を開始して、低優先度のジョブを他のプロセッサに移動し、プロセッサを解放して、高優先度のジョブを処理し得る。
【００４３】
一実施例において、プロセッサグループ化エンジン５１２は、ジョブに割り当て得る各優先順位レベル用の部分集合のプロセッサを定義し得る（即ち、プロセッサグループ化エンジン５１２は、ｌの異なる部分集合のプロセッサを定義し得る）が、特定の優先順位レベルに関連付けられたジョブは、一般的に、その優先順位レベルのジョブ用に定義された特定の部分集合に属するプロセッサによって処理されると予想される。各部分集合におけるプロセッサの数は、各優先順位レベルのジョブを処理するための顧客要請に依存し得るが、この要請は、過去の経験から推定すべきである。従って、ｐｃは、部分集合ｃ（ここで、１＝＜ｃ＝＜ｌ）の（プロセッサの数の）大きさを示すことができ、また、
【数１】
2008234632.tif 000003
である。
【００４４】
しかしながら、特定の優先順位レベルを有するジョブは、その優先順位レベルのジョブに対して定義された特定の部分集合におけるプロセッサのみによって処理されることに限定されない。むしろ、高優先度のジョブを処理するために割り当てられた部分集合のプロセッサの利用度が、所定のしきい利用レベルを超えない限り、低優先度の要求は、高優先度のジョブを処理するために割り当てられた部分集合に属するプロセッサ上で実行し得る。このことを行うためのアルゴリズムについては、以下に述べる。
【００４５】
しきい利用率Ｕｃｕは、部分集合ｃのプロセッサに対して予め定義し得る。部分集合ｃにおけるプロセッサの最新又は瞬間利用率ＵｃｉＭがＵｃｕより大きい場合、スケジューリングエンジン５０８は、ｕ（ここで、１＝＜ｕ＝＜ｌ）より高い優先順位レベルを有するジョブが、そのプロセッサ上で開始されることを禁止し得る。従って、低優先度のジョブは、一旦プロセッサがしきい値レベルのアクティビティに達すると、そのプロセッサを用いることができないが、高優先度の（即ち、ｕ以下の優先順位レベル番号を有する）ジョブは、そのプロセッサ上で開始し得る。
【００４６】
ｌの異なる部分集合のプロセッサが定義され、また、ｌの異なる優先順位レベルを異なるジョブに割り当て得るシステムの場合、この規則の実効性を持たせるためには、（ｌ２−ｌ）／２の自明でない利用値Ｕｃｕが存在しなければならない。例えば、図６は、ジョブの優先順位レベル及びジョブが走るプロセッサの部分集合に依存する異なる利用率しきい値を示す行列である。行列の最上行は、ジョブの優先順位レベルを示し、行列の左端列は、ジョブが走るプロセッサの部分集合を示す。ジョブの優先順位レベルに、及びジョブが走る部分集合のプロセッサに依存する利用率しきい値が、行列に提示されている。例えば、優先順位レベル“３”のジョブは、プロセッサの利用率が３０％未満であれば、最高優先順位の部分集合のプロセッサ上で実行可能であり、あるいは、プロセッサの利用率が５０％未満であれば、２番目に高い優先順位の部分集合のプロセッサ上で実行し得る。優先順位レベル＝３のジョブは、常に部分集合３又は部分集合４からのプロセッサ上で実行し得る。
【００４７】
従って、優先順位レベルｕ（ここで、１＝＜ｕ＝＜ｌ）を有するジョブの場合、ジョブの処理に利用可能なプロセッサの第１グループは、ｃ＞＝ｕである部分集合の全プロセッサを含む。また、プロセッサの第２グループは、それらのプロセッサの利用率がジョブの優先順位レベル及びそれらの各プロセッサが割り当てられた部分集合に依存するしきい値未満である時だけ、ジョブを処理するために利用可能である。例えば、１０の異なるジョブ優先順位レベル及び１０の異なるプロセッサ部分集合が存在すれば、優先順位レベル“３”を有するジョブの処理要求が受信された時、部分集合ｃ＝３、４、・・・、１０の全プロセッサが、ジョブの処理に利用可能であり、また、部分集合ｃ＝１及びｃ＝２のプロセッサは、それらの利用率が所定の利用率未満である時だけ、ジョブの処理に利用可能である。
【００４８】
一旦、ジョブの処理に利用可能なプロセッサが、利用率サービスエンジン５１０から受信された情報及びジョブの優先順位レベルに関する情報に基づきスケジューリングエンジン５０８によって決定されると、スケジューリングエンジンは、ジョブを処理する特定のプロセッサを選択し得る。例えば、ジョブの処理要求が、Ｎプロセッサでジョブを処理せよという要求を含み、また、Ｍ＞Ｎプロセッサが現在利用可能であるとスケジューリングエンジン５０８が判断すれば、スケジューリングエンジンは、最低利用率を有する少なくともＮの現在利用可能なプロセッサによって処理されるジョブをスケジュール化し得る。Ｍ＜Ｎプロセッサが現在利用可能であるとスケジューリングエンジン５０８が判断すれば、スケジューリングエンジンは、少なくともＮプロセッサがジョブの処理に利用可能になるまで、待ち行列５０６にジョブを保持し得る。要求がジョブ用の特定の最小数のプロセッサを明示的に要求しないが、或る性能基準（例えば、処理速度又は終了時間）を要求する場合、スケジューリングエンジン５０８は、提供された情報に基づき、ジョブを処理するのに必要なプロセッサの数を決定し得る。
【００４９】
幾つかの状況において、第１プロセッサグループのプロセッサの利用率は、実際には、これらのプロセッサが、新しいジョブの処理に対して効果的でないほど高い（例えば、最大ＣＰＵ利用率の９５％を超える）ことがある。そのような場合、プロセッサグループ化エンジン５１２は、新しいジョブの処理に対して一時的に利用不可能なものとして、これらの過剰に利用されたプロセッサを再指定し得る。そして、そのような再指定によって、第１グループ及び第２グループにおける利用可能なプロセッサの数の和が、Ｎ未満になれば、スケジューリングエンジン５０８は、少なくともＮプロセッサがジョブの処理に利用可能になるまで、待ち行列５０６にジョブを保持し得る。
【００５０】
これらの規則及び指針によれば、各着信ジョブ要求ｒについて、バンク５２０のプロセッサ５０２へのジョブの最終的な配分は、以下のアルゴリズムにより決定し得る。まず、要求ｒの優先順位レベルｗ及び要求を実施するために必要なプロセッサの数Ｎが、抽出される。そして、ジョブ処理に利用可能なプロセッサの組が、ゼロに設定される。そして、ｗ以上の優先順位レベルに関連付けられた部分集合ｐｃに属する全プロセッサｉが、利用可能なプロセッサ（“ＡＰ”）の組に追加される。そして、１＝＜ｃ＜ｗである部分集合ｐｃに属する残りの全てのプロセッサｉについて、プロセッサの実際の利用率ＵｃｉＭが決定される。ｉ番目のプロセッサについて、ＵｃｉＭ＜Ｕｃｗであれば、ｉ番目のプロセッサは、利用可能なプロセッサの組に追加される。利用可能なプロセッサの組が決定された後、全プロセッサｉは、ＵｃｉＭの昇順に並び替えられる。最後に、Ｎプロセッサが利用可能である場合、要求ｒにおいて指定されたジョブが、最小ＵｃｉＭを有する利用可能なプロセッサの組におけるＮプロセッサ上で開始される。Ｎプロセッサが利用可能でない場合、ジョブは、待ち行列に保持され、追加資源が利用可能になるのを待つ。
【００５１】
１つ又は複数のジョブが、複数のプロセッサ５０２上で走っている場合、プロセッサの利用率は、利用率サービスエンジン５２０によって定期的に監視することができ、また、ジョブは、異なるプロセッサが効率的に用いられていない場合、それらのプロセッサに再配分し得る。個々のジョブは、時系列的に割り当てられたジョブ番号によって追跡して、ジョブ間を区別し得る。一実施例において、ジョブは、必要ならば、以下のアルゴリズムに基づき、監視し再配分し得る。
【００５２】
まず、実行中のジョブｒの内の１つが、監視のために選択される。ジョブは、ジョブ番号及び優先順位レベルｗを有し、Ｎプロセッサ上で走っている。利用率サービスエンジン５２０は、ジョブを実行するＮの各プロセッサの利用率を計測する。ジョブが、部分集合ｐｃのプロセッサｉ上において利用率ＵｃｉＭで走っている場合、ｗ＝＜ｃであれば（即ち、プロセッサが、同等以下の優先順位部分集合の一部であれば）、ｉ番目のプロセッサ上で走る処理の再配分は、不要である。ｗ＞ｃ及びＵｃｉＭ＜Ｕｃｗであれば（即ち、プロセッサが、高優先度の部分集合の一部であるが、プロセッサの利用率が、しきい率未満であれば）、ｉ番目のプロセッサ上で走る処理の再配分は、不要である。ｗ＞ｃ及びＵｃｉＭ＞Ｕｃｗであれば（即ち、プロセッサが、高優先度の部分集合の一部であり、プロセッサの利用率が、しきい率と同等以上であれば）、ジョブは、異なるプロセッサに再配分しなければならない。
【００５３】
ジョブを異なるプロセッサに再配分する場合、まず、ジョブを処理するために利用可能なプロセッサの組が、スケジューリングエンジン５０８内のカウンタにおいてゼロに設定される。そして、ｗ以上の優先順位レベルに関連付けられた部分集合ｐｃに属する全プロセッサｉは、利用可能なプロセッサの組に追加される。そして、１＝＜ｃ＜ｗの部分集合ｐｃに属する残りの各プロセッサｉについて、プロセッサの実際の利用率ＵｃｉＭが、決定される。ｉ番目のプロセッサについてＵｃｉＭ＜Ｕｃｗであれば、ｉ番目のプロセッサは、見込みのある利用可能なプロセッサの組に追加される。見込みのある利用可能なプロセッサの組が決定された後、その組の全プロセッサｉは、ＵｃｉＭの昇順に並び替えられる。最後に、Ｎプロセッサが利用可能であれば、要求ｒにおいて指定されたジョブが、最低ＵｃｉＭを有する利用可能なプロセッサの組におけるＮプロセッサに移動される。Ｎプロセッサが利用可能でなければ、ジョブは、待ち行列に保持され、追加の資源が利用可能になるのを待つ。プロセッサの利用率を監視し、しきい利用率を超えた場合にジョブを移動するこの処理は、全ての実行中のジョブに対して実施される。
【００５４】
図７は、複数のプロセッサで計算ジョブを処理するための図１−６のシステムの動作例を示すフローチャート７００である。図７に示すように、複数のプロセッサでジョブを処理せよという要求が受信されるが、この場合、優先順位レベルが、ジョブに関連付けられている（ステップ７０２）。例えば、スケジューリングサーバ１４０は、プロセッサバンク５２０のプロセッサ５０２でジョブを処理せよというクライアント１０２ａからの要求を受信し得る。要求には、指定された数のプロセッサでジョブを処理せよという要求を含み得る。
【００５５】
第１グループのプロセッサが、ジョブの処理に利用可能なものとして指定され、この場合、第１グループにおけるプロセッサの数は、ジョブに関連付けられた優先順位レベルに基づく（ステップ７０４）。例えば、プロセッサグループ化エンジン５１２は、プロセッサバンク５２０の全てのプロセッサ５０２を多数の部分集合のプロセッサに分割し得る。部分集合の数は、ジョブ用の可能な異なる優先順位レベルの数に等しくてよい。要求が受信され、要求に関連付けられた優先順位レベルが決定されると、グループ化エンジン５１２及び／又はスケジューリングエンジン５０８は、要求されたジョブの優先順位レベル以上である（即ち、低優先度の）優先順位レベル値４１２に関連付けられる全ての部分集合からのプロセッサを含むように第１グループのプロセッサを指定し得る。
【００５６】
第２グループのプロセッサが、ジョブの処理に利用可能なものとして指定され、この場合、第２グループの各プロセッサについて、プロセッサの最新利用率は、第２の所定利用率未満である（ステップ７０６）。例えば、利用率サービスエンジン５１０は、各プロセッサ５０２の利用率を監視し、スケジューラ５０８にその利用率を報告し得る。スケジューラは、計測された利用率をスケジューリングサーバ１４０におけるデータベースに記憶されたしきい率と比較して、最新利用率が、プロセッサ用のしきい率以上であるかどうか判断し得る。図６を参照して上述したように、ジョブ用の優先順位値及びジョブの優先順位値より低い優先順位値に関連付けられた部分集合の各組合せにしきい値が必要であるため、複数の利用率しきい値を考慮しなければならないことがある。従って、スケジューラは、多数の異なる部分集合からのプロセッサを第２グループに含み得ると判断し得る。
【００５７】
これらの判断により、ジョブは、第１部分集合のプロセッサ及び第２部分集合のプロセッサから選択された１つ又は複数のプロセッサ５０２で処理し得る（ステップ７０８）。
【００５８】
図８は、複数のプロセッサで計算ジョブを処理するための図１−６のシステムの他の動作例を示すフローチャート８００である。図８に示すように、複数の計算ジョブが、複数のプロセッサで処理される（ステップ８０２）。第１グループのプロセッサが、第１ジョブの処理に利用可能なものとして指定され、この場合、第１グループにおけるプロセッサの数は、第１ジョブに関連付けられた優先順位レベルに基づく（ステップ８０４）。第２グループのプロセッサが、ジョブの処理に利用可能なものとして指定され、この場合、第２グループの各プロセッサについて、プロセッサの初期利用率は、所定の利用率以下である（ステップ８０６）。所定の利用率は、優先順位レベルに、また、プロセッサが属するプロセッサ部分集合に基づく。第１ジョブは、第１グループのプロセッサから及び第２グループのプロセッサから選択された複数のプロセッサで処理される（ステップ８０８）。そして、第１ジョブを処理している第２グループのプロセッサが、所定の利用率より大きい更新された利用率を有すると判断される（ステップ８１０）。この判断に応じて、第１ジョブは、利用率が第１の所定利用率より大きかったプロセッサを含まない第１グループのプロセッサ及び第２グループから選択された複数のプロセッサで処理される（ステップ８１２）。
【００５９】
本明細書に述べた様々な手法の実施例は、デジタル電子回路に、又は、コンピュータハードウェア、ファームウェア、ソフトウェア、もしくは、それらの組合せにおいて実現し得る。実施例は、コンピュータプログラムプロダクトとして、即ち、情報担体に、例えば、機械読み取り可能な記憶装置に又は伝搬信号に具体的に具現化されたコンピュータプログラムとして実現され、データ処理装置、例えば、プログラム可能なプロセッサ、コンピュータ、もしくは複数のコンピュータによって又はそれらの動作を制御するために実行し得る。上述したコンピュータプログラム（１つ又は複数）等のコンピュータプログラムは、コンパイル又はインタープリタ言語を含む任意の形態のプログラミング言語で作成可能であり、また、スタンドアローンのプログラムとして、又はモジュール、構成要素、サブルーチン、もしくは、コンピュータ処理環境での用途に適切した他のユニットとして含まれる任意の形態で配備し得る。コンピュータプログラムは、１つのコンピュータ上で、又は１つのサイトもしくは多数のサイト全体に分散され通信ネットワークによって相互接続された多数のコンピュータ上で実行されるように配備し得る。
【００６０】
方法ステップは、コンピュータプログラムを実行して、入力データで動作することによって、また、出力を生成することによって、機能を動作させる１つ又は複数のプログラム可能なプロセッサによって実施し得る。また、方法ステップは、専用論理回路、例えば、ＦＰＧＡ（フィールドプログラム可能なゲートアレイ）又はＡＳＩＣ（特定用途向け集積回路）によって実施してよく、また、装置をこれらのもので実現してよい。
【００６１】
コンピュータプログラムの実行に適するプロセッサには、一例として、汎用及び専用マイクロプロセッサの双方、及び任意の種類のデジタルコンピュータの任意の１つ又は複数のプロセッサが含まれる。一般的に、プロセッサは、読み出し専用メモリ又はランダムアクセスメモリ又は双方から命令及びデータを受け取る。コンピュータの要素には、命令を実行するための少なくとも１つのプロセッサ、並びに命令及びデータを記憶するための１つ又は複数のメモリ装置を含み得る。また、一般的に、コンピュータは、データを記憶するための１つ又は複数の大容量記憶装置、例えば、磁気、光磁気ディスク、又は光ディスクを含むことができ、あるいは、その装置からのデータの受信、それへのデータの送信、もしくは双方を行うように連動結合してよい。コンピュータプログラム命令及びデータを具現化するのに適する情報担体には、一例として、半導体メモリ装置、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリ装置；磁気ディスク、例えば、内部ハードディスク又は着脱可能なディスク；光磁気ディスク；ＣＤ−ＲＯＭ及びＤＶＤ−ＲＯＭディスクを含む全ての形態の不揮発性メモリが含まれる。プロセッサ及びメモリは、専用の論理回路によって補足したり、又は、それに組み込んだりしてよい。
【００６２】
ユーザとの対話を提供するために、実施例は、ユーザに情報を表示するための表示装置、例えば、陰極線管（ＣＲＴ）又は液晶表示（ＬＣＤ）装置と、キーボード及びポインティングデバイス、例えば、マウス又はトラックボールで等、これによってユーザがコンピュータに入力を提供し得るものとを有するコンピュータ上に実現し得る。他の種類の装置もまたユーザとの対話を提供するために用いてよく、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚的フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触感フィードバックであってよく、また、ユーザからの入力は、音響、音声、又は触感入力を含む任意の形態で受信してよい。
【００６３】
実施例は、例えば、データサーバとしてバックエンド構成要素が含まれるコンピュータ処理システム、又は、ミドルウェア構成要素、例えば、アプリケーションサーバが含まれるコンピュータ処理システム、又は、フロントエンド構成要素、例えば、ユーザがそれを介して実施例と対話し得るグラフィカルユーザーインターフェイス又はウェブブラウザを有するクライアントコンピュータが含まれるコンピュータ処理システム、又はそのようなバックエンド、ミドルウェア、又はフロントエンド構成要素の任意の組合せが含まれるコンピュータ処理システムに実現し得る。構成要素は、任意の形態又は媒体のデジタルデータ通信、例えば、通信ネットワークによって相互接続し得る。通信ネットワークの例には、ローカルエリアネットワーク（ＬＡＮ）及びワイドエリアネットワーク（ＷＡＮ）、例えば、インターネットが含まれる。
【００６４】
上記実施例の幾つかの特徴について本明細書に述べたように例示したが、当業者には、多くの修正、代替、変更及び等価物が直ちに起こるであろう。従って、添付の請求項は、本実施形態の真の精神の範囲に入る全てのそのような修正及び変更を網羅するものであることを理解されたい。
【図面の簡単な説明】
【００６５】
【図１】多数の計算ジョブを並列に処理するための多数のプロセッサを有するシステムのブロック図。
【図２】計算ジョブを処理するために図１のシステムに用い得る代表的なプロセッサのブロック図。
【図３】計算ジョブを処理するために図１のシステムに用い得る他の代表的なプロセッサのブロック図。
【図４】処理実行依頼された異なる計算ジョブに割り当て得る異なる優先順位レベルを示す表。
【図５】処理のために１つ又は複数のプロセッサに計算ジョブをスケジューリングするためのスケジューリングプロセッサのブロック図。
【図６】ジョブの優先順位レベルとジョブが走る部分集合のプロセッサとに依存する異なる利用率しきい値を示す行列。
【図７】複数のプロセッサで計算ジョブを処理するための動作例を示すフローチャート。
【図８】複数のプロセッサで計算ジョブを処理するための他の動作例を示すフローチャート。
【符号の説明】
【００６６】
１００・・・計算ジョブ処理システム、１０２、１０４・・・ラップトップコンピュータ（クライアント）、１０６・・・ワークステーション（クライアント）、１０８、１１０・・・パソコン（クライアント）、１１５・・・ネットワーク、１２０・・・データセンタ、１２２−１３０・・・プロセッサ（処理ノード）、１４０・・・スケジューリングサーバ（スケジューリングノード）
【図１】
2008234632.tif 000004
【図２】
2008234632.tif 000005
【図３】
2008234632.tif 000006
【図４】
2008234632.tif 000007
【図５】
2008234632.tif 000008
【図６】
2008234632.tif 000009
【図７】
2008234632.tif 000010
【図８】
2008234632.tif 000011