(57)【要約】【課題】  個々のユーザの資源使用量に基づいた公平な共用分のスケジューリング機能を提供する。【解決手段】  本発明のスケジューリング機能は、使用可能な資源の合計量を有限な数の共用分に分割し、個々のユーザまたはユーザ・グループによって有効であるとされる資源比率を指定する方法として、共用分の一部を個々のユーザまたはユーザ・グループに割り振る。ユーザまたはユーザ・グループに対するジョブのスケジューリング優先順位は、割り振られた共用分および使用された共用分のカスタマイズ可能な数式に依存する。一片のデータおよび更新タイムスタンプによってユーザまたはユーザ・グループに対する履歴的な資源使用量を追跡するために、ユーザまたはユーザ・グループによる使用量が累算され、指数減衰関数がそれに適用される。【選択図】  図１
2007299401.tif 000002
【特許請求の範囲】
【請求項１】
処理環境におけるジョブのスケジューリング優先順位の決定を容易にする方法であって、
資源のゼロまたはそれ以上の共用分を前記処理環境のユーザ・エンティティに割り振るステップであって、前記ゼロまたはそれ以上の共用分は、１つまたは複数のユーザ・エンティティによって消費された資源の量に関係なく前記処理環境内の使用可能な資源の合計量に基づいて前記処理環境に対して定義された複数の共用分の少なくとも一部分である、ステップと、
前記ユーザ・エンティティの実行されるべきジョブにジョブ・スケジューリング優先順位を割り当てるステップであって、前記ジョブ・スケジューリング優先順位は、前記ユーザ・エンティティの割り振られた共用分および使用された共用分に基づいており、他のユーザ・エンティティによる前記資源の使用に無関係である、ステップと、
を含む、方法。
【請求項２】
前記複数の共用分を定義するステップを更に含み、
前記定義するステップは、
前記処理環境内の使用可能な資源の量を表す標識を得るステップであって、該量が資源の消費量に無関係であり、指数減衰関数に従って変化する、ステップと、
前記複数の共用分の間で前記資源の量を分割するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記割り当てるステップは前記ジョブ・スケジューリング優先順位を計算するステップを含み、前記計算するステップは、前記ユーザ・エンティティが未使用の共用分を有するかどうかを表す標識および前記ユーザ・エンティティの残りの共用分の数の少なくとも一方に基づいた数式を使用する、請求項１に記載の方法。
【請求項４】
前記ユーザ・エンティティの未使用の共用分が多ければ多いほど、前記ジョブ・スケジューリング優先順位が高くなるか、未使用の共用分を有するユーザ・エンティティに対するジョブ・スケジューリング優先順位が高くなるか、および割り振られた共用分を使いきったユーザ・エンティティまたはそれを超えたユーザ・エンティティに対するジョブ・スケジューリング優先順位が低くなるか、の少なくとも１つが生じる、請求項３に記載の方法。
【請求項５】
１つまたは複数の周期的時間間隔で前記ジョブ・スケジューリング優先順位を再計算するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記ジョブを実行するステップと、
前記ジョブの終了に応答して資源使用量データを収集するステップと、
を更に含む、請求項１に記載の方法。
【請求項７】
前記収集するステップは前記ユーザ・エンティティによる前記資源の使用量に関連したデータを累算するステップを含み、累算された前記データは前記ユーザ・エンティティによる過去の資源使用量の影響を含み、累算中に少なくとも１回は減衰関数が適用される、請求項６に記載の方法。
【請求項８】
前記減衰関数は前記資源の最近の使用量に大きいウェートをおき、前記資源の遠い過去の使用量に小さいウェートをおく、請求項７に記載の方法。
【請求項９】
前記減衰関数は指数減衰関数を含む、請求項７に記載の方法。
【請求項１０】
前記累算されたデータは前記ユーザ・エンティティの使用された共用分に変換され、前記ユーザ・エンティティのジョブに対するジョブ・スケジューリング優先順位を計算する場合に使用される、請求項７に記載の方法。
【請求項１１】
複数の結合されたコンピューティング・ユニットを含むクラスタ・コンピューティング環境におけるジョブのスケジューリング優先順位の決定を容易にする方法であって、
前記クラスタ・コンピューティング環境の１つまたは複数のユーザ・エンティティに割り振るために使用可能な前記クラスタ・コンピューティング環境内の資源の共用分の数を選択するステップと、
前記クラスタ・コンピューティング環境内の使用可能な資源の量を表す標識を得るステップであって、該量が資源の消費量に無関係であり、指数減衰関数に従って変化する、ステップと、
選択された数の共用分の間で前記資源の量を分割するステップと、
前記選択された数の共用分のゼロまたはそれ以上の共用分を前記クラスタ・コンピューティング環境のユーザ・エンティティに割り振るステップと、
実行されるべき前記ユーザ・エンティティのジョブに対するジョブ・スケジューリング優先順位を決定するステップであって、前記決定するステップは、前記ユーザ・エンティティの割り振られた共用分よりも前記ユーザ・エンティティの使用された共用分に基づいており、１つまたは複数の他のユーザ・エンティティによる前記資源の使用量に無関係である、ステップと、
実行すべきジョブを前記ジョブのスケジューリング優先順位に基づいてスケジュールするステップと、
少なくとも１つのジョブの終了に応答してまたは周期的に資源使用量データを収集するステップであって、前記収集するステップは前記ユーザ・エンティティによる前記資源の使用量に関連したデータを累算するステップを含み、累算された前記データは前記ユーザ・エンティティによる過去の資源使用量がある場合にはその使用量の影響を含み、累算中に少なくも１回は指数減衰関数が適用され、前記収集された資源使用量データが前記ユーザ・エンティティの１つまたは複数の他のジョブに対するジョブ・スケジューリング優先順位を決定するために使用可能である、ステップと、
を含む、方法。
【請求項１２】
処理環境におけるジョブのスケジューリング優先順位の決定を容易にするシステムであって、少なくと１つの処理ユニットを含み、
該処理ユニットは、
資源のゼロまたはそれ以上の共用分を前記処理環境のユーザ・エンティティに割り振るように適応し、前記ゼロまたはそれ以上の共用分は、１つまたは複数のユーザ・エンティティによって消費された資源の量に関係なく前記処理環境内の使用可能な資源の合計量に基づいて前記処理環境に対して定義された複数の共用分の少なくとも一部分であり、
前記ユーザ・エンティティの実行されるべきジョブにジョブ・スケジューリング優先順位を割り当てるように適応し、前記ジョブ・スケジューリング優先順位は、前記ユーザ・エンティティの割り振られた共用分および使用された共用分に基づいており、他のユーザ・エンティティによる前記資源の使用に無関係である、
システム。
【請求項１３】
前記少なくとも１つの処理ユニットは前記複数の共用分を定義するように更に適応し、前記定義するということは、
前記処理環境内の使用可能な資源の量を表す標識を得ることであって、該量は資源の消費量に無関係であり、指数減衰関数に従って変化する、ということ、および
前記複数の共用分の間で前記資源の量を分割すること、
を含む、請求項１２に記載のシステム。
【請求項１４】
前記少なくとも１つの処理ユニットは、
前記ジョブを実行するように適応し、
前記ジョブの終了に応答して資源使用量データを収集するように適応し、前記収集するということは前記ユーザ・エンティティによる前記資源の使用量に関連したデータを累算することを含み、累算された前記データは前記ユーザ・エンティティによる過去の資源使用量の影響を含み、累算中に少なくとも１回は指数減衰関数が適用される、
請求項１２に記載のシステム。
【請求項１５】
前記累算されたデータは前記ユーザ・エンティティの使用された共用分に変換され、前記ユーザ・エンティティのジョブに対するジョブ・スケジューリング優先順位を計算する場合に使用される、請求項１４に記載のシステム。
【請求項１６】
処理環境におけるジョブのスケジューリング優先順位の決定を容易にするためのコンピュータ可読プログラムであって、該プログラムがコンピュータに、
資源のゼロまたはそれ以上の共用分を前記処理環境のユーザ・エンティティに割り振るための割り振り機能であって、前記ゼロまたはそれ以上の共用分は、１つまたは複数のユーザ・エンティティによって消費された資源の量に関係なく前記処理環境における使用可能な資源の合計量に基づいて前記処理環境に対して定義された複数の共用分の少なくとも一部分である、割り振り機能と、
前記ユーザ・エンティティの実行されるべきジョブにジョブ・スケジューリング優先順位を割り当てるための割り当て機能であって、前記ジョブ・スケジューリング優先順位は、前記ユーザ・エンティティの割り振られた共用分および使用された共用分に基づいており、他のユーザ・エンティティによる前記資源の使用に無関係である、割り当て機能と、
を実現させる、コンピュータ可読プログラム。
【請求項１７】
前記割り当て機能は前記ジョブ・スケジューリング優先順位を計算するための計算機能を含み、前記計算機能は、前記ユーザ・エンティティが未使用の共用分を有するかどうかを表す標識および前記ユーザ・エンティティの残りの共用分の数の少なくとも一方に基づいた数式を使用する、請求項１６に記載のコンピュータ可読プログラム。
【請求項１８】
前記ジョブを実行するための実行機能と、
前記ジョブの終了に応答して資源使用量データを収集するための収集機能と、
を更に含む、請求項１６に記載のコンピュータ可読プログラム。
【請求項１９】
前記収集機能は前記ユーザ・エンティティによる前記資源の使用量に関連したデータを累算するための累算機能を含み、累算された前記データは前記ユーザ・エンティティによる過去の資源使用量の影響を含み、累算中に少なくとも１回は減衰関数が適用される、請求項１８に記載のコンピュータ可読プログラム。
【請求項２０】
前記累算されたデータは前記ユーザ・エンティティの使用された共用分に変換され、前記ユーザ・エンティティのジョブに対するジョブ・スケジューリング優先順位を計算する場合に使用される、請求項１９に記載のコンピュータ可読プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、公平な共用分のスケジューリングに関し、詳しく言えば、個々のユーザの資源使用量に基づいて行われ、その使用量の追跡を容易にする、公平な共用分のスケジューリングに関するものである。
【背景技術】
【０００２】
公平な共用分のスケジューリングは、ワークロード管理製品における１つの機能的な特徴である。クラスタ環境のような分散処理環境では、ワークロード管理のソフトウェア製品が、その環境の種々のマシン上で稼動するユーザ・プログラムまたはジョブをスケジュールするために使用される。公平な共用分のスケジューリングは、事前定義された比率に従ってユーザまたはユーザ・グループ間で処理資源を分割するという方向でスケジューリングの決定を行う。
【０００３】
公平な共用分のスケジューリングでは、ユーザまたはユーザ・グループが環境の資源を或る比率で割り振られ、そのユーザまたはユーザ・グループのジョブのスケジューリング優先順位が、すべてのユーザまたはユーザ・グループによって使用される資源の量に比べたときの、そのユーザまたはユーザ・グループによって使用される資源の量に依存する。従って、１つのユーザまたはユーザ・グループのジョブのスケジューリング優先順位は他のユーザにより消費された資源の量に依存する。資源の比率は、多くの場合、資源の全使用量のパーセンテージとして表される。
【０００４】
他のユーザによる資源消費量に基づいたスケジューリングは、個々のユーザにとって不安定な望ましくないスケジューリングを生じることがある。それは、任意の時点で激しく変化し得る他人のワークロードに依存するので不安定である。それは、他のユーザによる資源消費量に基づいているので望ましくない。
【０００５】
公平な共用分のスケジューリングでは、より最近使用された資源がより大きな影響をスケジューリング決定に与え得るように、履歴的な資源使用量が徐々に減衰する。履歴的な資源使用量を記録および減衰させる機構が必要であり、多くの場合、それは、多数の有限な長さの直近の数期間におけるステップ状減衰関数によって達成される。多くのユーザを有するクラスタにとって、大量の履歴的な資源使用量データを追跡することが必要である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、個々のユーザまたはユーザ・グループに対してより安定した且つ公平な先進的な共用分のスケジューリング機能を提供することにある。更に、本発明のもう１つの目的は、減衰機構を単純化して、追跡すべき履歴的な資源使用量データの量を少なくする方法を提供することにある。
【課題を解決するための手段】
【０００７】
処理環境におけるジョブのスケジューリング優先順位の決定を容易にする方法の提供によって、従来技術の欠点が克服され、更なる利点がもたらされる。例えば、その方法は、資源のゼロまたはそれ以上の共用分を処理環境のユーザ・エンティティに割り振るステップ（そのゼロまたはそれ以上の共用分は、１つまたは複数のユーザ・エンティティによって消費されるその資源の量に関係なくその処理環境における使用可能な資源の合計量に基づいてその処理環境に対して定義された複数の共用分の少なくとも一部分である）と、ユーザ・エンティティの実行されるべきジョブにジョブ・スケジューリング優先順位を割り当てるステップ（そのジョブ・スケジューリング優先順位は、ユーザ・エンティティの割り振られた共用分および使用された共用分に基づいており、他のユーザ・エンティティによるその資源の使用量に無関係である）と、を含む。
【０００８】
更なる実施態様では、複数の結合されたコンピューティング・ユニットを有するクラスタ・コンピューティング環境におけるジョブのスケジューリング優先順位の決定を容易にする方法が提供される。その方法は、例えば、クラスタ・コンピューティング環境の１つまたは複数のユーザ・エンティティに割り振るために使用し得るそのクラスタ・コンピューティング環境内の資源の共用分の数を選択するステップと、そのクラスタ・コンピューティング環境内の使用可能な資源の量（その量は資源の消費に無関係であり、指数減衰関数に従って変化する）を表す標識を得るステップと、選択された数の共用分の間でその資源の量を分割するステップと、その選択された数の共用分のゼロまたはそれ以上の共用分をクラスタ・コンピューティング環境のユーザ・エンティティに割り振るステップと、実行されるべきユーザ・エンティティのジョブに対するジョブ・スケジューリング優先順位を決定するステップ（その決定は、ユーザ・エンティティの割り振られた共用分ではなくユーザ・エンティティの使用された共用分に基づいており、１つまたは複数の他のユーザ・エンティティによる資源の使用量に無関係である）と、実行すべきジョブをジョブ・スケジューリング優先順位に基づいてスケジュールするステップと、少なくとも１つのジョブの終了に応答してまたは周期的に資源使用量データを収集するステップ（その収集するステップはユーザ・エンティティによる資源の使用量に関連したデータを累算するステップを含み、その累算されたデータはユーザ・エンティティによる過去の資源使用量がある場合にはその使用量の影響を含み、累算中に少なくとも１回は指数減衰関数が適用され、収集された資源使用量データがユーザ・エンティティの１つまたは複数のジョブに対するジョブ・スケジューリング優先順位を決定するために使用可能である）と、を含む。
【０００９】
上記方法のうちの１つまたは複数の方法に対応するシステムおよびコンピュータ・プログラムが本明細書において開示される。
【００１０】
本発明の技術によって更なる特徴および利点が実現される。本発明の他の実施例および態様が本明細書によって詳しく開示されるが、それらも本発明の一部であると考えられる。
【発明を実施するための最良の形態】
【００１１】
本発明の１つの態様によれば、個々のユーザまたはユーザ・グループのジョブの安定した且つ公平なスケジューリングを可能にする公平な共用分のスケジューリング機能が提供される。そのスケジューリングは、他のユーザまたはユーザ・グループによる資源割り振りおよび使用量ではなく、個々のユーザまたはユーザ・グループによる資源割り振りおよび使用量に依存する。処理環境の使用可能な資源は多数の共用分に分割される。これらは、その環境のために構成され且つ使用することが可能な資源であり、資源の消費量に無関係のものである。ユーザまたはユーザ・グループがそれらの共用分の一部を割り振られる。そこで、実行されるべきユーザまたはユーザ・グループの各ジョブがジョブ実行優先順位を割り当てられる。この優先順位は、ユーザまたはユーザ・グループが如何に多くの共用分を割り当てられているかということに基づいており、処理環境における他のユーザによる資源使用量に無関係である。
【００１２】
ジョブ・スケジューリング優先順位は、割り振られた数に比べて、ユーザまたはユーザ・グループにより使用される共用分の数によって多く影響されるので、ユーザまたはユーザ・グループによる資源使用量が追跡および累算される。更に、本発明の１つの態様によれば、ジョブ・スケジューリング優先順位は、遠い過去の使用量によるよりも直近の使用量によって大きく影響され、従って、現在の使用量に大きなウェートをおき、遠い過去の使用量に小さいウェートをおくように、累算データに対して指数減衰機構が適用される。
【００１３】
図１を参照して、本発明の１つまたは複数の態様を組み込みおよび使用する処理環境の１つの実施例を説明する。１つの例では、その処理環境は、システム・タスクを遂行するために環境の資源が共用されるというクラスタ環境のような分散処理環境である。本明細書では、本発明の１つまたは複数の態様を組み込みおよび使用するものとしてクラスタ環境を説明するが、非クラスタ環境を含む他のタイプの環境も本発明の１つまたは複数の態様から利益を受けることが可能である。
【００１４】
図１は、例えば、１つまたは複数の接続機構１０４を介して相互に結合された複数の処理ユニット１０２を含む。接続機構１０４は、有線接続、無線接続、あるいは、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、トークン・リング、Ethernet（登録商標）接続等のような任意のタイプのネットワーク接続を含むがそれに限定されない。
【００１５】
１つの例では、処理ユニットは、例えば、パーソナル・コンピュータ、ラップトップ、ワークステーション、メインフレーム、ミニ・コンピュータ、または任意のタイプの処理ユニットを含む。１つの特定の例として、各処理ユニットは、米国ニューヨーク州アーモンクにあるインターナショナル・ビジネス・マシーンズ・コーポレーション（以下、ＩＢＭ社という）によって提供される pSeries サーバである（なお、「pSeries」はＩＢＭ社の商標である）。各処理ユニットは、他の処理ユニットと同じタイプの処理ユニットであってもよく、あるいはそうでなくてもよい。１つの例では、各処理ユニットは、ＬＩＮＵＸ、またはＩＢＭ社によって提供されるＡＩＸのようなオペレーティング・システム１０６を実行する（なお、「ＡＩＸ」はＩＢＭ社の商標である）。１つの処理ユニットのオペレーティング・システムは、他の処理ユニットと同じであるかまたは異なっていてもよい。更に、別の例では、それらのうちの１つまたは複数の処理ユニットがオペレーティング・システムを含まなくてもよい。
【００１６】
本発明の１つの態様によれば、本明細書ではマネージャとも呼ばれる１つまたは複数の処理ユニットがジョブ・スケジューラ１０８を実行する。ジョブ・スケジューラ１０８は、例えば、ユーザ・エンティティのジョブをスケジュールする責任を負うプログラムである。本明細書において使用されるように、「ユーザ・エンティティ」という用語はユーザまたはユーザ・グループを指す。ジョブ・スケジューラは公平な共用分のスケジューリング技術を使用してジョブをスケジュールする。
【００１７】
本発明の１つの態様である公平な共用分のスケジューリング技術は、ユーザにより消費される資源の合計量の代わりに、処理環境において使用可能な資源の合計量に基づいて資源共用分を定義する。更に、ジョブ・スケジューリング優先順位は、割り振られた共用分および個々のユーザによって使用された共用分に基づいて割り当てられる。更に、本発明の１つの態様の公平な共用分のスケジューリング機能に関する更なる詳細は図面を参照して説明することにする。
【００１８】
図２を参照して、資源の共用分をユーザ・エンティティに割り振ることに関連したロジックの一実施例を説明する。このロジックは、例えば、ジョブ・スケジューラが処理環境における１つまたは複数の処理ユニットを実行することによって実行される。更に、このロジックは、その環境のユーザまたはユーザ・グループによって共用されるべき各タイプの資源に対して実行される。先ず、図２のステップ２００において、その環境における共用されるべき特定の資源の量に関して決定が行われる。１つの実施例では、決定されるのはその資源の合計量である。その資源の合計量は、時間が現時点から遠く離れれば離れるほど資源の量が少なくみなされるというように減衰関数が適用された場合の過去から現時点までの処理資源における使用可能なすべての資源である。例えば、ＣＰＵ資源の合計量を決定するためには、次の式が使用される。
【数１】
2007299401.tif 000003
【００１９】
上記「数１」において、ｋは、減衰過程の速度を決定する減衰定数であり、その関数に対する入力である。ｔは、経過時間の量である。
【００２０】
資源の量を決定することに関する１つの特定の例として、中央プロセッサ（ＣＰＵ）資源が共用されることになっている場合、その処理環境における使用可能なプロセッサの数が決定される。この決定は、例えば、処理ユニットによって提供される統計上の情報を分析することによって行われる。例えば、各処理ユニットは、ジョブ・スケジューラを実行している（１つまたは複数の）マネージャに、その処理ユニットにおける使用可能な中央プロセッサの数を知らせる。そのマネージャは、この情報を累算し、減衰関数を適用し、その結果をジョブ・スケジューラに入力する。
【００２１】
ステップ２０２において、その得られた資源の量が望ましい共用分の合計数に分割される。１つの例では、その望ましい共用分の合計数は管理者によって選択される。一般的には、その環境に多数のユーザが存在する場合、多数の共用分が望ましい。共用分の合計数が大きければ大きいほど、使用された共用分の数は資源使用量にとって更にセンシティブになる。共用分の合計数の例は、１００共用分、１０００共用分、または任意の所望の数の共用分である。
【００２２】
次に、ステップ２０４において、共用分が処理環境の１つまたは複数のユーザおよび／またはユーザ・グループに割り振られる。この割り振りは管理者によって指定され、スケジューラ・プログラムに入力として提供されてもよく、或いはそのプログラムが、割り振りを定義するために経験則または数式を含むことも可能である。その割り振りを決定するために、予算、重要度、管理者の選択等を含むがそれに限定されない１つまたは複数の要素を使用することが可能である。種々の割り振りの例は、ユーザ１が１０個の共用分に割り振られ、ユーザ２が５個の共用分に割り振られ、グループ１が２０個の共用分に割り振られる、等を含む。
【００２３】
それらの共用分を所望のユーザおよび／またはユーザ・グループに割り振った後、ステップ２０６において、それらのユーザおよび／またはユーザ・グループに対する有効であるとされる資源比率が決定される。この比率は、ユーザに割り振られた共用分の数をその環境の共用分の合計数で割ることによって決定される。従って、１００個の合計共用分が存在し、ユーザ１が上記の例のように１０個の共用分を割り振られる場合、ユーザ１に対する比率は１０％である。同様に、ユーザ２に対する比率は５％であり、グループ１に対する比率は２０％である。
【００２４】
共用分をユーザ・エンティティに割り振った後、或るユーザ・エンティティは、その割り振られた共用分および使用された共用分に基づいてスケジュールされるジョブを稼動することが可能である。即ち、スケジュールされるべきジョブの優先順位は、スケジューリングを要求するユーザ・エンティティが有するその割り振られた共用分の数およびそのユーザ・エンティティの使用された共用分の数に基づいている。一般に、残りの共用分がある場合または残りの共用分が多ければ多いほど、そのジョブ優先順位は高くなる。本発明の１つの態様を表す公平な共用分のスケジューリングによる、スケジューリング・ジョブと関連したロジックの１つの実施例が、図３を参照して説明される。１つの例として、ジョブ・スケジューラがそのロジックを遂行する（ステップ３００を除く）。
【００２５】
先ず、ステップ３００において、ユーザが処理環境で稼動すべきジョブを実行依頼する。ステップ３０２において、そのジョブの優先順位が、例えば、ジョブ・スケジューラによって計算される。ジョブ優先順位を決定するための多くの方法およびその決定において使用し得る多くの変数が存在する。これらの変数の例は、例えば、次のものを含む。
（ａ）UserTotalShares - 管理者によってユーザに割り振られた共用分の合計数。
（ｂ）UserUsedShares - ユーザによって使用される共用分の数。その数はジョブ・スケジューラによって計算される。
（ｃ）UserRemainingShares - UserTotalSharesの値と UserUsedShares との差。
（ｄ）UserHasShares - ユーザが残りの共用分を有するかどうかを表す導出された値。（例えば、０は残りの共用分がないことを表し、１は少なくとも１つの残りの共用分があることを表す）。
（ｅ）UserSharesExceeded - ユーザがそれの共用分の数を超えたかどうかを表す値（０はそれがそれの共用分の数を超えてないことを表し、１はそれが超えたことを表す）。
（ｆ）GroupTotalShares - 管理者によってユーザ・グループに割り振られた共用分の合計数。
（ｇ）GroupUsedShares - そのグループによって使用される共用分の数。その数はジョブ・スケジューラによって計算される。
（ｈ）GroupRemainingShares -GroupTotalShares の値と GroupUsedShare の値との差。
（ｉ）GroupHasShares - グループが残りの共用分を有するかどうかを表す導出された値。（例えば、０は残りの共用分がないことを表し、１は少なくとも１つの残りの共用分があることを表す）。
（ｊ）GroupSharesExceeded - グループがそれの共用分の数を超えたかどうかを表す値（０はそれがそれの共用分の数を超えてないことを表し、１はそれが超えたことを表す）。
【００２６】
上記値のうちの１つまたは複数の値がジョブ優先順位を得るためにジョブ優先順位数式において使用される。図４を参照して、これらの数式の例を説明する。ステップ４００において、管理者は、ジョブ優先順位を計算するために使用される１つまたは複数のジョブ優先順位数式を指定することが可能である。これらの数式の例は次のものを含む。
1000 * UserHasShares（４０２）
1000 * (UserHasShares +GroupHasShares)（４０４）
100 * GroupRemainingShares（４０６）
可能な他の多くの数式が存在する。
【００２７】
照会ステップ４０８において、選択された数式に基づきユーザが依然として未使用の共用分を有する場合、その優先順位は、すべてのそれの共用分が使用された場合よりも高い。１つの例では、優先順位値は選択された優先順位数式の結果である。例えば、選択された数式が上記の４０２である場合、および UserHasShares = 1 である場合、優先順位は１００００である。
【００２８】
図３に戻ると、ジョブの優先順位を決定した後、ステップ３０４において、そのジョブは優先順位によって順序付けられた待ち行列に入れられる。しかる後、ステップ３０６において、より高い優先順位のジョブが最初に実行されることによって、それらのジョブが実行される。
【００２９】
１つのジョブが終了すると、ステップ３０８において、そのジョブに対する資源使用量がジョブ・スケジューラによって収集される。特に、１つの実施例では、ジョブはユーザおよびユーザ・グループに属し、ステップ３１０において、そのジョブによって使用された資源がそのユーザまたはそのユーザ・グループに関して収集および累算される。１つの例として、スケジューラがジョブ終了時に適切な情報をアクセスすることによってこの使用量が収集される。
【００３０】
次に、ステップ３１２において、累算された資源使用量が、使用済み共用分に変換される。例えば、UserUsedShares は、そのユーザに対する累算された資源使用量を、１共用分当たりの資源によって割算することによって計算される（１共用分当たりの資源＝合計資源／共用分の合計数。１つの例では、合計の資源は、それらが時間センシティブな量である場合、即ち、それらがＣＰＵの時間のように時間と共に消滅する場合、使用された資源と同じ減衰関数に従って変化する）。同様に、GroupUsedSharesは、そのグループに対する累算された資源使用量を、１共用分当たりの資源によって割算することによって決定される。
【００３１】
その累算された資源使用量を、使用された共用分に変換した後、プロセスは、ステップ３０２において次のジョブに対するジョブ優先順位を計算することによって継続する。
【００３２】
１つの例では、ジョブ待ち行列におけるジョブの優先順位は、周期的時間間隔でジョブ・スケジューラによって再計算される。図５を参照して、この処理と関連するロジック一実施例を説明する。先ず、ステップ５００において、ジョブ優先順位を再計算する頻度に関する決定が行われる。１つの例では、例えば、管理者によって５分毎の時間間隔が選択される。別の時間間隔を選択することも可能である。
【００３３】
ステップ５０２に示されるように、指定された時間間隔の終了時に、待ち行列におけるすべてのジョブに対するジョブ優先順位が、前述のように、任意の所望の数式および／または変数を使って再計算される。次に、ステップ５０４において、待ち行列におけるジョブが新しい優先順位に従って再順序付けされる。しかる後、ステップ５０６において、ロジックはジョブ優先順位を再計算するための次の機会を待つ。例えば、時間間隔が満了するとき、ステップ５０２においてジョブ優先順位を再計算することによって処理が継続する。
【００３４】
前に説明したように、ジョブが終了するとき、資源使用量が収集および累算され、しかる後、その累算された使用量が、使用された共用分に変換される。この累算された資源使用量は、本来、履歴的であり、スケジューリングの判断に影響を与える。資源使用量の収集および累算は多くの方法で行うことが可能である。しかし、本発明の１つの態様によれば、最近の資源使用量が遠い過去の使用量よりも大きくカウントされる。即ち、同じ量の資源が時間の経過につれて少ない値になる。例えば、図６に示されるように、現時点では、資源使用量はそれの最大値（６００）にあるが、その時間が遠い過去になればなるほど、小さい値になる。
【００３５】
１つの例では、各ユーザまたはグループによる履歴的な資源使用量に対して、１つの累算データしか記録されない。更に、資源使用量データの影響は、累算データにおける時間と共に自然に減少するので、いずれの古いデータも廃棄する必要がない。累算データは、すべての過去の資源使用量データ（または選択された量）の影響を含み、有限の期間は必要ない。累算データが、時間と共に減衰する資源使用量を全体的に反映するよう、データ累算過程の間、実質的に継続して減衰機構が適用される。
【００３６】
１つの実施例では、使用される減衰関数は指数関数 exp(-k*t)である。但し、kは、減衰過程の速度を決定する減衰定数であってその関数に対する入力であり、t は、資源使用量が最初に報告または収集された以後の経過時間の量である。
【００３７】
資源使用量Ｒ１が収集されるとき、累算した履歴的な資源使用量に対するそれの影響は減衰関数に従って減少する。新しい資源使用量Ｒ２が収集されとき、それはその時点におけるＲ１の減衰した値に直接に加えられ、累算値は時間の経過につれて減衰する。このプロセスは、新しい資源使用量が収集されるときに反復することが可能である。従って、個々の資源使用量を追跡することは最早必要ない。そのような指数関数の特性は次のように表される。
R1*exp(-k*(t-t1))+
R2*exp(-k*(t-t2))+
R3*exp(-k*(t-t3))=S4
但し、
S1=R1  [t1時]
S2=S1*exp(-k*(t2-t1))+R2  [t2時]
S3=S2*exp(-k*(t3-t2))+R3  [t3時]
S4=S3*exp(-k*(t-t3))  [t時]
【００３８】
図７には、この減衰関数の１つを概略的に表示したものが示される。図示のように、水平ライン７００と接続する垂直ラインは過去の種々の時間（この例では、同じスルーアウト時間（throughout time）である）における報告された資源使用量の初期値を表す。指数曲線の下の垂直ラインの部分は最初に報告された資源使用量値の現在値を表す。現時点７０２では、その値は最高である。減衰定数を決定する公平な共用の時間間隔７０４が選択される。１つの例では、公平な共用の時間間隔は存続期間の５％に等しいし、それは初期値の５％まで減衰するために必要な時間である。時間７０６において報告された資源使用量は、最初に報告された値の５％よりも小さい現時点における値を有する。
【００３９】
図８を参照して、累算された資源使用量を減衰させるための減衰関数の用法を説明する。１つの実施例では、ステップ８００において、例えば、ジョブの終了に応答してまたは周期的に、新しい資源使用量がスケジューラに報告される。次に、ステップ８０２において、スケジューラが前の累算値を現時点の値まで減衰させ、ステップ８０４において新しい値がその累算値に加えられる。例えば、５分前（t）に、収集された値が１００ＣＰＵ分であった場合、その値は、100 x exp(-k*5)の乗算を行うことによって減衰させられ、１つの結果を得る。そこで、現時点における新しい使用量、例えば、１１０ＣＰＵ分がその結果に加えられ、それが新しい累算値となる。そこで、処理はステップ８００によって継続する。
【００４０】
更に、ステップ８０６では、新しい累算値が現時点の値まで減衰し、ステップ８０８において、その減衰した累算値が、使用された共用分に変換される。このプロセスは、例えば、スケジューラによって遂行される。
【００４１】
資源の分割が、他のユーザにより消費される資源の量ではなく、その環境の使用可能な全資源に基づくようにする公平な共用分のスケジューリング機能を詳しく上述した。資源を分割し、共用分を定義するというこの方法は、安定した且つ公平なものである。それは、現在のワークロードに無関係であるので更に安定している。ユーザが消費する資源の数は、他のユーザがたまたま使用する資源の量ではなく、そのユーザが有する資源の量およびそのユーザが使用した資源の量に依存するので、それはいっそう公平なものとなる。
【００４２】
ユーザ・エンティティによって使用された資源の量が記録され、それが、使用された共用分の数を決定するために使用される。１つの例では、最近の使用量により多くのウェートをおくために履歴的な資源使用量に対して減衰機構が適用される。有利なことに、例えば、過去に収集された資源使用量を含む唯一のデータ片およびそのデータが更新された時のタイムスタンプが各ユーザ・エントリに関して追跡されるので、追跡されるべきデータの量は大きく減少する。更に、有限の時間間隔内のものとなるように履歴的な資源使用量を制限する必要がない。その最も重要な効果は直近の履歴的な資源使用量から自然に生じる。これは、使用量情報を記録するための簡単且つ容易な技術であり、この技術はパフォーマンスを高め且つソフトウェア開発努力を少なくさせる。
【００４３】
適正な減衰が施された場合のその記録された履歴的な資源使用量が、ユーザおよび／またはユーザ・グループに対する使用された共用分の数を得るために１共用分当たりの資源量によって割り算される。１共用分当たりの資源量は同じ減衰機構に従って生じる。遠い過去から現時点までの資源の合計量は、減衰がなければ莫大である。各時点における資源および遠い過去から現時点までの集積に減衰関数が適用される場合、資源の合計量は有限の分量となる。１共用分当たりの資源量は、この有限の分量を共用分の合計数によって割り算することにより得られる。使用するために有効であるとされるその比率の資源をユーザが使用することを可能にする試みとしてジョブ・スケジューリング優先順位を決定する場合、使用された共用分および割り振られた共用分の数が使用される。使用された共用分および／または割り振られた共用分の数は絶えず変化するので、ジョブ優先順位は時々再計算される。
【００４４】
本発明の１つまたは複数の態様を、例えば、コンピュータ使用可能媒体に含まれる物品（例えば、１つまたは複数のコンピュータ・プログラム）に包含することも可能である。その媒体は、例えば、本発明の１つまたは複数の態様に関する機能を提供および促進するためのコンピュータ可読プログラム・コード手段またはロジック（例えば、命令、コード、コマンド等）を有する。その物品を、コンピュータ・システムにその一部として含むかまたは別個に販売することも可能である。
【００４５】
図９を参照して、本発明の１つまたは複数の態様を組み込んだ物品またはコンピュータ・プログラムの一例を説明する。コンピュータ・プログラム製品９００は、例えば、本発明の１つまたは複数の態様を提供し且つそれを促進するコンピュータ可読プログラム・コード手段またはロジック９０４を記憶するための１つまたは複数のコンピュータ使用可能媒体９０２を含む。その媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体システム（または、装置またはデバイス）、あるいは伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、取外し可能コンピュータ・ディスケット（フロッピ・ディスク）、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、固定磁気ディスク、および光ディスクを含む。光ディスクの例は、コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク読取り／書込み（ＣＤ−Ｒ／Ｗ）およびＤＶＤを含む。
【００４６】
１つまたは複数のコンピュータ可読プログラム・コード手段またはロジックにより定義される一連のプログラム命令または１つまたは複数の相互関連したモジュールの論理的アセンブリが本発明の１つまたは複数の態様の実行を指示する。
【００４７】
本明細書において開示された公平な共用分のスケジューリング機能の１つまたは複数の態様は、ＩＢＭ社によって提供される Tivoli Workload Scheduler LoadLeveler のようなワークロード管理製品を含むがそれに限定されない種々の製品に含まれており、或いはそれに含まれることが可能である（なお、「LoadLeveler」はＩＢＭ社の商標である）。他のワークロード管理製品を含むがそれの限定されない他の製品が本発明の１つまたは複数の態様を含むことも可能である。
【００４８】
有利なことに、本発明の１つまたは複数の態様は、処理環境における使用可能な資源の合計量が、その処理環境における資源の共用分の合計量である有限な数の共用分に分割されることを可能にする。管理者は、資源が分割される共用分の合計数および各ユーザまたはユーザ・グループが割り振られる共用分の数を指定する。その割り振られた共用分の数対共用分の合計数の比が、ユーザ・エンティティに割り振られた資源の比率を指定する。その定義された比率は他のユーザ・エンティティによって消費される資源の量に無関係であり、ジョブ・スケジューリング優先順位は他のユーザ・エンティティによる資源の使用に無関係である。資源比率の付与量を割り当てるこの方法は、資源使用量に対する使用された資源の数の精度を調節することができ、ユーザまたはユーザ・グループに共用分を割り振ることを容易に且つ融通性のあるものにすることができるという利点を有する。一定量の資源のクラスタの場合、共用分の資源値は安定している。更に、有利なことに、管理者は、ユーザおよびユーザ・グループ間でクラスタ資源を公平に共用するという目的を達成するために、その使用された共用分および割り振られた共用分がジョブ・スケジューリング優先順位にどの程度の影響を与えるかを指定することが可能となる。これは、マシンのクラスタにおけるジョブ・スケジューリング時に公平な共用分のスケジューリングがもたらす影響の程度を調節するための融通性を管理者に与える。本発明の１つまたは複数の態様によって、かなり以前の資源使用量は減衰のために資源使用量の履歴データにほとんど影響しないので、実際の資源が或る時間期間にわたって効果的に共用される。
【００４９】
本明細書では１つまたは複数の例が示されたが、これらは単なる例に過ぎない。本発明の主旨から逸脱することなく、これらの例に関して多くの変更を行うことが可能である。例えば、本明細書において提供された例とは別の処理環境が本発明の１つまたは複数の態様を含み得るし、それらから利益を受けることも可能である。例えば、その環境は、クラスタ環境でなくてもよく、本明細書において説明された処理ユニットよりも多いまたは少ない処理ユニットを含むことも可能である。更に、その環境は Linux または AIX 以外のオペレーティング・システムを含むことも可能である。更に、本明細書において説明されたもの以外のネットワークおよび／またが接続機構を使用することも可能である。更に、１つまたは複数の処理ユニットがpSeries サーバ以外のものであってもよい。その他の多くの変種が存在する。
【００５０】
例えば、システム・バスを介してメモリ素子に直接的または間接的に結合された少なくとも１つのプロセッサを含み、プログラム・コードを保存および／または実行するに適したデータ処理システムも使用可能である。それらのメモリ素子は、例えば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、および、プログラム・コードが実行中に大容量記憶装置から検索されなければならない回数を減らすために、少なくとも幾つかのプログラム・コードの一時的記憶装置を提供するキャッシュ・メモリを含む。
【００５１】
入出力装置、即ち、Ｉ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイス等を含むが、それに限定されない）は、直接にまたは介在のＩ／Ｏコントローラを介してシステムに接続することが可能である。データ処理システムが介在の私設ネットワークまたは公衆ネットワークを介して他のデータ処理システム或いはリモート・プリンタまたは記憶装置に結合されることを可能にするために、ネットワーク・アダプタをそのシステムに結合することも可能である。モデム、ケーブル・モデム、および Ethernet（登録商標）カードは数少ない利用可能なタイプのネットワーク・アダプタである。
【００５２】
本発明の１つまたは複数の態様の機能は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで具現化することも可能である。本発明の機能を遂行するためにマシンにより実行し得る少なくとも１つの命令プログラムを具体化するマシンによって読取ることが可能な少なくとも１つのプログラム記憶装置を提供することも可能である。
【００５３】
上述の流れ図は単なる例である。本発明の主旨から逸脱することなくこれらの流れ図または上述のステップ（またはオペレーション）に対する多くの変更が存在し得る。例えば、それらのステップは異なる順序で遂行されてもよく、或いは追加、削除、または修正されてもよい。これらの変更はすべて本発明の一部であると考えられる。
【００５４】
好適な実施例を図示し、詳細に説明したが、本発明の主旨から逸脱することなく種々の修正、追加、代用等を行うことが可能であり、従って、これらが「特許請求の範囲」で定義されるような本発明の範囲内にあると考えられることは当業者には明らかであろう。
【図面の簡単な説明】
【００５５】
【図１】本発明の１つまたは複数の態様を組み込み、それを使用する処理環境の一実施例のブロック図である。
【図２】本発明の態様に従って、資源共用分を割り振るために使用されるロジックの一実施例を示す。
【図３】本発明の態様に従って、公平な共用分のスケジューリングに基づいてジョブを実行依頼および実行することに関連したロジックの一実施例を示す。
【図４】本発明の態様に従って、公平な共用分のスケジューリングにおいて使用されるジョブ優先順位を計算するために使用されるジョブ優先順位の数式の例を示す。
【図５】本発明の態様に従って、ジョブ優先順位の再計算と関連したロジックの一実施例を示す。
【図６】本発明の態様に従って、時間に対する資源の減衰を概略的に示す図である。
【図７】本発明の態様に従って、時間に対する資源の減衰を更に概略的に示す図である。
【図８】本発明の態様に従って、公平な共用分のスケジューリングに対する資源使用量の累算と関連したロジックの一実施例を示す。
【図９】本発明の１つまたは複数の態様を組み込んだコンピュータ・プログラム製品の一実施例を示す。
【図１】
2007299401.tif 000004
【図２】
2007299401.tif 000005
【図３】
2007299401.tif 000006
【図４】
2007299401.tif 000007
【図５】
2007299401.tif 000008
【図６】
2007299401.tif 000009
【図７】
2007299401.tif 000010
【図８】
2007299401.tif 000011
【図９】
2007299401.tif 000012