(57)【特許請求の範囲】
【請求項１】
命令を含むコンピュータプログラムであって、前記命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、
前記分散コンピュータシステムによって消費される電力が前記分散コンピュータシステムに割り振られている電力よりも大きいかどうかを判定するステップと、
前記分散コンピュータシステムによって消費される前記電力が前記分散コンピュータシステムに割り振られている前記電力よりも大きいと判定することに応じて、前記分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理しているかどうかを、前記各ジョブを処理する計算ノードの動作周波数に従って判定するステップであって、ジョブは前記分散コンピュータシステムの前記１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、
前記各ジョブを処理する前記計算ノードが指定された最低動作周波数で動作している場合に、前記分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに前記最低電力状態で処理していると判定することに応じて、前記分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップとを含む操作を実行する、コンピュータプログラム。
【請求項２】
前記分散コンピュータシステムによって処理されているすべてのジョブの中で前記最低優先順位を有する前記ジョブを中断するステップの前に、及び前記分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに前記最低電力状態で処理していると判定することに応じて、前記分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有する前記ジョブをチェックポインティングするステップをさらに備える、請求項１に記載のコンピュータプログラム。
【請求項３】
前記分散コンピュータシステムによって処理されているすべてのジョブのうちの第１のジョブの前記最低電力状態は、前記分散コンピュータシステムによって処理されているすべてのジョブのうちの第２のジョブの前記最低電力状態とは異なる、請求項１に記載のコンピュータプログラム。
【請求項４】
前記分散コンピュータシステムによって処理されているすべてのジョブの中で前記最低優先順位を有する前記ジョブを中断するステップの後に、前記分散コンピュータシステムによって消費される前記電力を再計算するステップをさらに備える、請求項３に記載のコンピュータプログラム。
【請求項５】
前記分散コンピュータシステムによって消費される前記電力を再計算するステップの後に、２番目に低い優先順位を有する第２のジョブを中断するステップをさらに備える、請求項４に記載のコンピュータプログラム。
【請求項６】
前記分散コンピュータシステムによって処理されているすべてのジョブの中で前記最低優先順位を有する前記ジョブを中断することに応じて、前記分散コンピュータシステムによって消費される前記電力が前記分散コンピュータシステムに割り振られている前記電力よりも大きいかどうかを判定するステップと、
前記分散コンピュータシステムによって消費される前記電力が前記分散コンピュータシステムに割り振られている前記電力よりも大きいと判定することに応じて、２番目に低い優先順位を有する第２のジョブを終了するステップをさらに備える、請求項１に記載のコンピュータプログラム。
【請求項７】
命令を含むコンピュータプログラムであって、前記命令は、１つ又は複数のプロセッサによって実行可能であり、
分散コンピュータシステムによって消費される電力が前記分散コンピュータシステムに割り振られている電力よりも小さいかどうかを判定するステップと、
前記分散コンピュータシステムによって消費される電力が前記分散コンピュータシステムに割り振られている電力よりも小さいと判定することに応じて、割り振られていないリソースが使用可能であるかどうかを判定するステップと、
割り振られていないリソースが使用可能であると判定することに応じて、ジョブキュー内の最高優先順位のジョブに対してリソースが使用可能であるかどうかを判定するステップであって、ジョブは前記分散コンピュータシステムの前記１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、
ジョブキュー内の最高優先順位のジョブに対してリソースが使用可能である場合、前記最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップと、
前記最高優先順位のジョブを処理するための前記電力が使用可能である場合、前記最高優先順位のジョブを開始するステップとを含む操作を実行する、コンピュータプログラム。
【請求項８】
割り振られているリソースが使用可能であるかどうかを判定する前に、及び前記分散コンピュータシステムによって消費される前記電力が前記分散コンピュータシステムに割り振られている前記電力よりも小さいと判定することに応じて、前記ジョブキュー内のジョブに余剰電力を割り振るプリファレンスが存在するかどうかを判定するステップと、
前記ジョブキュー内のジョブに余剰電力を割り振るプリファレンスが存在すると判定することに応じて、前記分散コンピュータシステムによって処理されている１つ又は複数のジョブに余剰電力を割り振るステップとをさらに備える、請求項７に記載のコンピュータプログラム。
【請求項９】
前記最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップは、前記最高優先順位のジョブを処理するために必要とされる電力が、前記分散コンピュータシステムに割り振られている前記電力から、前記分散コンピュータシステムによって消費される前記電力を差し引き、第１のシステムガードバンドを差し引いた値よりも小さいかどうかを判定するステップを含む請求項７に記載のコンピュータプログラム。
【請求項１０】
前記第１のシステムガードバンドは、前記分散コンピュータシステムの電力消費の変動が、前記分散コンピュータシステムに割り振られている前記電力を超えることを防止するために、１つ又は複数のジョブに割り振られるべきではない事前定義された電力量を含む請求項９に記載のコンピュータプログラム。
【請求項１１】
前記最高優先順位のジョブを開始するステップは、前記ジョブキュー内の最高優先順位を有する新しく要求されたジョブを開始するステップを含む請求項７に記載のコンピュータプログラム。
【請求項１２】
前記最高優先順位のジョブを開始するステップは、前記ジョブキュー内の最高優先順位を有する中断状態のジョブを再開するステップを含む請求項７に記載のコンピュータプログラム。
【請求項１３】
前記ジョブキューは、（１）１つ又は複数の新しく要求されたジョブ、又は（２）１つ又は複数の中断状態のジョブのうちの１つ又はその両方を含むように構成された優先順位付きキューである、請求項７に記載のコンピュータプログラム。
【請求項１４】
命令を含むコンピュータプログラムであって、前記命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、
（１）前記分散コンピュータシステムに割り振られている電力から第１のシステムガードバンドを差し引いた値が前記分散コンピュータシステムによって消費される電力よりも小さく、そして（２）前記分散コンピュータシステムによって消費される前記電力が前記分散コンピュータシステムに割り振られている前記電力に第２のシステムガードバンドを加えた値よりも小さいと判定するステップと、
解放される電力を計算するステップであって、前記解放される電力は、前記分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することによって、ジョブキュー内の１つ又は複数のジョブに割り振るために使用可能にされ得る電力量であり、ジョブは前記分散コンピュータシステムの前記１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、
前記解放される電力を計算することに応じて、前記ジョブキュー内の最高優先順位のジョブに必要とされる電力が、前記解放される電力に割り振られていない電力を加えた値よりも小さいかどうかを判定するステップであって、前記割り振られていない電力は、前記分散コンピュータシステムに割り振られているがしかし前記分散コンピュータシステムによって処理されているジョブには割り振られていない電力である、ステップと、
前記ジョブキュー内の前記最高優先順位のジョブに必要とされる前記電力が、前記解放される電力に前記割り振られていない電力を加えた値よりも小さいと判定することに応じて、前記分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減するステップと、
前記分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される前記電力量を低減することに応じて、前記最高優先順位のジョブを開始するステップとを含む操作を実行する、コンピュータプログラム。
【請求項１５】
前記最高優先順位のジョブを開始するステップは、前記ジョブキュー内の最高優先順位を有する新しく要求されたジョブを開始するステップを含む請求項１４に記載のコンピュータプログラム。
【請求項１６】
前記最高優先順位のジョブを開始するステップは、前記ジョブキュー内の最高優先順位を有する中断状態のジョブを再開するステップを含む請求項１４に記載のコンピュータプログラム。
【請求項１７】
前記最高優先順位のジョブに必要とされる前記電力が、前記解放される電力に前記割り振られていない電力を加えた値よりも小さいかどうかを判定するステップの前に、前記最高優先順位のジョブの電力推定値を生成するステップをさらに備える、請求項１４に記載のコンピュータプログラム。
【請求項１８】
前記最高優先順位のジョブを処理するためにリソースが使用可能ではなく、２番目に高い優先順位のジョブを処理するためにリソースが使用可能である場合、前記２番目に高い優先順位のジョブを開始するステップをさらに備える、請求項１４に記載のコンピュータプログラム。
【請求項１９】
前記最高優先順位のジョブに必要とされる前記電力が、前記解放される電力に前記割り振られていない電力を加えた値よりも大きく、２番目に高い優先順位のジョブに必要とされる電力が、前記解放される電力に前記割り振られていない電力を加えた値よりも小さい場合、前記２番目に高い優先順位のジョブを開始するステップをさらに備える、請求項１４に記載のコンピュータプログラム。
【請求項２０】
請求項１から請求項６のいずれか一項に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項２１】
請求項７から請求項１３のいずれか一項に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項２２】
請求項１４から請求項１９のいずれか一項に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により全体を本明細書において援用する、２０１４年８月２２日に出願された「SIMPLE  POWER-AWARE  SCHEDULER  TO  LIMIT  POWER  CONSUMPTION  BY  HPC  SYSTEM  WITHIN  A  BUDGET」と題する米国仮特許出願第62/040,576号明細書の利益を主張するものである。
【０００２】
本出願は、２０１４年１２月２４日に出願された、「METHODS  AND  APPARATUS  TO  ESTIMATE  POWER  PERFORMANCE  OF  A  JOB  THAT  RUNS  ON  MULTIPLE  NODES  OF  A  DISTRIBUTED  COMPUTER  SYSTEM」と題する米国特許出願第14/582,795号明細書（整理番号42P73498）、２０１４年１２月２４日に出願された、「METHODS  AND  APPARATUS  TO  GENERATE  AND  USE  POWER,  THERMAL  AND  PERFORMANCE  CHARACTERISTICS  OF  NODES  TO  IMPROVE  ENERGY  EFFICIENCY  AND  REDUCING  WAIT  TIME  FOR  JOBS  IN  THE  QUEUE」と題する米国特許出願第14/582,783号明細書（整理番号42P74562）、２０１４年１２月２４日に出願された、「ADJUSTMENT  OF  EXECUTION  OF  TASKS」と題する米国特許出願第14/582,979号明細書（整理番号42P74563）、２０１４年１２月２４日に出願された、「CONTROL  OF  POWER  CONSUMPTION」と題する米国特許出願第14/582,985号明細書（整理番号42P74564）、２０１４年１２月２４日に出願された、「FORECAST  FOR  DEMAND  OF  ENERGY」と題する米国特許出願第14/582,988号明細書（整理番号42P74565）、２０１４年１２月２４日に出願された、「MANAGING  POWER  PERFORMANCE  OF  DISTRIBUTED  COMPUTING  SYSTEMS」と題する米国特許出願第14/582,743号明細書（整理番号42P74567）、２０１４年１２月２４日に出願された、「PROFILING  A  JOB  POWER  AND  ENERGY  CONSUMPTION  FOR  A  DATA  PROCESSING  SYSTEM」と題する米国特許出願第14/582,756号明細書(整理番号42P74568)、及び２０１４年１２月２４日に出願された、「A  POWER  AWARE  JOB  SCHEDULER  AND  MANAGER  FOR  A  DATA  PROCESSING  SYSTEM」と題する米国特許出願第14/582,764号明細書（整理番号42P74569）に関する。
【０００３】
技術分野
本開示の実施形態は、概して、コンピュータシステムにおける電力節約の分野に関する。さらに詳細には、本開示の１つの実施形態は、分散コンピュータシステムへの電力割り振りに変更がある場合に分散コンピュータシステムのジョブを管理することに関する。
【背景技術】
【０００４】
分散コンピュータシステムは、複数のノードの同時使用によって並列コンピューティングを実行して、ジョブと称される計算の割り当てを実行することができる。各ノードは、１つ又は複数のプロセッサ、メモリ、オペレーティングシステム、及び１つ又は複数の入出力（Ｉ／Ｏ）コンポーネントを含むことができる。ノードは、高速ネットワークファブリックを通じて相互に通信することができ、共有ファイルシステム又はストレージを使用することができる。ジョブは、数千のノードにわたり分散される数千の並列タスクに分解されてもよい。これらのノードは、１秒間に数百回も相互に同期することができる。
【０００５】
将来の分散コンピュータシステムは、数十メガワットの電力を必要とすることになり、それらの電力管理が業界の最重要懸念事項となるものと予想される。これらの分散コンピュータシステムは、限られた電力及びエネルギーバジェットでエクサスケールのパフォーマンスをもたらすことが期待される。現在の分散コンピュータシステムは、電力キャッピングを適用して、限られた電力及びエネルギーバジェットに従うことができる。しかし、電力キャッピングとは関わりなく、分散コンピュータシステム（「システム」）への電力割り振りが低減されて、その結果、システムによって消費される電力がシステムに割り振られている電力を上回るような場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
現在実行中のジョブ、中断状態のジョブ、及びシステムのキュー内の新しく要求されたジョブの管理は、システムの予想されるパフォーマンスを保持し、システムによって消費される電力をシステムに割り振られている電力よりも低く維持することを保証する上で重要である。システムに割り振られる電力が変動するにつれて、１つ若しくは複数の現在実行中のジョブを中断及び／若しくは終了するか、１つ若しくは複数の中断状態のジョブを再開するか、並びに／又は、すでにキュー内にある１つ若しくは複数の新しいジョブを開始する必要が生じることもある。加えて、システムは、特定のタイプのジョブへの電力割り振りに関する優先順位に従うことが要求される場合もある。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、添付図面の図表において、限定としてではなく一例として示され、ここで同種の参照は類似する要素を指し示す。
【図面の簡単な説明】
【０００８】
【図１】複数の入力を受け取るＨＰＣシステム１００を示す例示的なブロック図である。
【図２】ＨＰＣシステム１００を備えるロジックを示す例示的なブロック図である。
【図３】ＨＰＣシステム１００によって消費される電力がシステムに割り振られている電力を超える場合に、システム内のジョブを管理するサンプルの方法を示す流れ図である。
【図４Ａ】ＨＰＣシステム１００によって消費される電力がＨＰＣシステム１００に割り振られている電力よりも小さいか又はその電力とほぼ等しい場合に、１つ又は複数のジョブを管理するための方法の１つの実施形態を示す流れ図である。
【図４Ｂ】ＨＰＣシステム１００によって消費される電力がＨＰＣシステム１００に割り振られている電力よりも小さいか又はその電力とほぼ等しい場合に、１つ又は複数のジョブを管理するための方法の１つの実施形態を示す流れ図である。
【図４Ｃ】ＨＰＣシステム１００によって消費される電力がＨＰＣシステム１００に割り振られている電力よりも小さいか又はその電力とほぼ等しい場合に、１つ又は複数のジョブを管理するための方法の１つの実施形態を示す流れ図である。
【発明を実施するための形態】
【０００９】
本開示のさまざまな実施形態は、分散コンピュータシステムによって処理されているジョブ（「現在実行中のジョブ」）、分散コンピュータシステムによって中断されているジョブ（「中断状態のジョブ」）、及び分散コンピュータシステムのキューに置かれた新しく要求されたジョブ（「新しいジョブ」）を管理することに関する。１つの実施形態において、ジョブの管理は、分散コンピュータシステムが、１つ若しくは複数のジョブを中断及び／又は終了する前に１つ若しくは複数のジョブによって消費される電力を低減しようと試みることを要求することができる。第２の実施形態において、ジョブの管理は、分散コンピュータシステムに割り振られた電力が低減した場合に、分散コンピュータシステムが１つ若しくは複数のジョブを中断及び／又は終了することを要求することができる。加えて、ジョブの管理は、分散コンピュータシステムが、１つ若しくは複数の中断状態のジョブを再開、及び／又は１つ若しくは複数の新しいジョブを開始できるようにすることができる。ジョブの管理は、「METHODS  AND  APPARATUS  TO  ESTIMATE  POWER  PERFORMANCE  OF  A  JOB  THAT  RUNS  ON  MULTIPLE  NODES  OF  A  DISTRIBUTED  COMPUTER  SYSTEM」と題する米国特許出願第14/582,795号明細書（整理番号42P73498）において説明されるように分散コンピュータシステムによって生成される推定値に依存することができる。分散コンピュータシステムは、たとえば、ハイパフォーマンスコンピューティング（ＨＰＣ）システムであってもよい。本開示の一部の実施形態において、ジョブは、ジョブの所有者によって示されるようにジョブに供給される電力を制限する電力ポリシーに従わない場合もあるが、しかし、ＨＰＣシステムは、ＨＰＣシステムによって処理されるジョブの組み合わせによって超えてはならない総合制限電力バジェットを有することができるとともに、有する可能性がある。
【００１０】
本開示の実施形態は、システムに割り振られている電力の低減が、１つ若しくは複数の現在のジョブが中断及び／又は終了されることを必要とするかどうかを判定することに関する。本開示のその他の実施形態は、システムに割り振られている電力の増加、又は使用可能な電力の増加（たとえば、ジョブが処理を終了）が、ＨＰＣシステムが１つ若しくは複数の中断状態のジョブを再開できるようにするか、及び／又はＨＰＣシステムのキューにおいて待機中の新しいジョブを開始できるようにするかどうかを判定することに関する。特定の実施形態は、どの１つ若しくは複数のジョブが中断、終了、再開、及び／又は開始するかを判定する際に、ＨＰＣシステム内の特定のジョブ及び／又はジョブタイプの優先順位を判定することに関する。
【００１１】
本開示の一部の実施形態は、システムによって消費される電力がシステムに割り振られている電力からの事前定義されたしきい値（たとえば、システムガードバンド）内である場合に、１つ又は複数のジョブの電力消費が低減され得るかどうかを判定することに関する。１つ又は複数のジョブによって消費される電力は、可能な限りの最大数の計算ノードを利用するために、低減されてもよい。したがって、１つの実施形態において、１つ又は複数のジョブによって消費される電力が低減される場合、取り戻される電力は、割り振られていない電力と組み合わされてもよく、新しいジョブを開始するか又は中断状態のジョブを再開するために使用されてもよい。
【００１２】
図１を参照すると、さまざまな入力を受け取るＨＰＣシステムを示す例示的なブロック図が示される。ＨＰＣシステム１００は、１つ又は複数のオペレーティングシステム（ＯＳ）ノード１０１、１つ又は複数の計算ノード１０２、１つ又は複数の入出力（Ｉ／Ｏ）ノード１０３、及びストレージ１０４を含む。高速ファブリックは、ＯＳノード１０１、計算ノード１０２、及びＩ／Ｏノード１０３を通信可能に接続する。高速ファブリックは、１つ又は複数のスイッチを介して相互接続されたノードのネットワークトポロジであってもよい。１つの実施形態において、図１に示されるように、Ｉ／Ｏノード１０３は、ストレージ１０４に通信可能に接続される。ストレージ１０４は、揮発性メモリ（たとえば、任意のタイプのランダムアクセスメモリ「ＲＡＭ」）のような非永続的ストレージ、不揮発性メモリ（たとえば、読み取り専用メモリ「ＲＯＭ」、電力バックアップ付き（power-backed）ＲＡＭ、フラッシュメモリ、相変化メモリなど）、ソリッドステートドライブ、ハードディスクドライブ、光ディスクドライブ、又はポータブルメモリデバイスのような永続的ストレージであってもよい。
【００１３】
ＯＳノード１０１は、計算ノード１０２にアクセスするためのゲートウェイを提供することができる。たとえば、計算ノード１０２上で処理するためにジョブをサブミットする前に、ユーザは、ＯＳノード１０１を経由し得るＨＰＣシステム１００へのログインを要求されてもよい。本開示の実施形態において、ＯＳノード１０１は、ユーザによってサブミットされたジョブを受け付けて、計算ノード１０２によって処理されているジョブの開始及び管理を支援することができる。１つの実施形態において、ＯＳノード１０１は、「Methods  and  apparatus  to  profile  power  and  energy  consumption  by  a  job  running  in  multiple  nodes  and  uses  shared  resources  of  a  distributed  computer  system(HPC)」と題する米国特許出願第14/582,756号明細書（整理番号42P74568）において説明される電力モニタ（図示せず）、電力推定器（図示せず）、及び「Methods  and  apparatus  to  generate  and  use  power,  thermal  and  performance  characteristics  of  nodes  to  improve  energy  efficiency  and  reducing  wait  time  for  jobs  in  the  queue」と題する米国特許出願第14/582,783号明細書（整理番号42P74562）において説明される電力較正器（図示せず）を備える。
【００１４】
１つの実施形態において、計算ノード１０２は、処理及び／又は計算能力の大部分を提供する。Ｉ／Ｏノード１０３は、計算ノード１０２と、外部デバイス（たとえば、別個のコンピュータ）との間のインターフェイスを提供することができ、外部デバイスはＨＰＣシステム１００に入力を提供するか又はＨＰＣシステム１００から出力を受け取ることができる。
【００１５】
システム電力割り振り（Ｐｓｙｓ）は、（たとえば、システム管理者又はデータセンターマネージャのような管理ソフトウェアによって判定されるように）たとえばユーティリティ管理ファシリティ（facility）によってＨＰＣシステム１００に提供されてもよい。通常、Ｐｓｙｓは、ＨＰＣシステム１００がジョブ１２０の１つ又は複数を実行するために使用することになる、ＨＰＣシステム１００に割り振られている制限された電力量である。ジョブ１２０は、１つ又は複数のユーザによりＨＰＣシステム１００によって実行されるよう要求された１つ又は複数のジョブを備える。各ジョブは、「電力ポリシー」を含むが、これについては後段において詳細に説明されることになる。電力ポリシーは、ジョブに電力を割り振る際にＨＰＣシステム１００を支援し、ＨＰＣシステム１００によって実行されている１つ又は複数のジョブ１２０の管理を補助することになる。
【００１６】
加えて、管理ポリシー１３０は、ＨＰＣシステム１００の操作を定義する包括的なポリシーを提供することによって、ジョブ１２０実行の管理を導くことになる。管理ポリシー１３０に含まれ得るポリシーの例は、（１）すべてのハードウェア及びソフトウェアリソースの使用を最大にすること（たとえば、高電力でより少ないジョブを実行してリソースを未使用にしておくのではなく、可能な限り多くのジョブを実行して可能な限り多くのリソースを使用する）、（２）電力制限のないジョブには、すべての実行中のジョブの中で最高の優先順位が与えられること、及び／又は（３）中断状態のジョブは再開に向けて最優先されること、を含むが、これらに限定若しくは制約されることはない。そのような管理ポリシーは、ＨＰＣシステム１００が１つ又は複数のジョブをスケジュール、開始、中断、及び再開することができる方法を規定する。
【００１７】
用語
以下の説明において、特定の用語が本発明の特徴を説明するために使用される。たとえば、特定の状況において、「ロジック」と「エンジン」という用語は共に、１つ若しくは複数の機能を実行するように構成されるハードウェア、ファームウェア、及び／又はソフトウェアを表す。ハードウェアとして、ロジック（又はエンジン）は、データ処理又はストレージ機能を有する回路を含むことができる。そのような回路の例は、マイクロプロセッサ、１つ若しくは複数のプロセッサコア、プログラマブルゲートアレイ、マイクロコントローラ、特殊用途向け集積回路、無線受信機、送信機、及び／若しくは送受信機回路、半導体メモリ、又は組み合わせロジックを含むことができるが、これらに限定若しくは制約されることはない。
【００１８】
ロジック（又はエンジン）は、実行可能アプリケーションの形態の実行可能コード、アプリケーションプログラミングインターフェイス（ＡＰＩ）、サブルーチン、関数、プロシージャ、アプレット、サーブレット、ルーチン、ソースコード、オブジェクトコード、共有ライブラリ／ダイナミックロードライブラリ、又は１つ若しくは複数の命令のような、１つ若しくは複数のソフトウェアモジュールの形態をとるソフトウェアであってもよい。これらのソフトウェアモジュールは、任意のタイプの適切な非一時的ストレージ媒体又は一時的ストレージ媒体（たとえば、搬送波、赤外線信号、若しくはデジタル信号のような伝搬される信号の電気、光、音響、又は他の形態）に格納されてもよい。非一時的ストレージ媒体の例は、プログラマブル回路、半導体メモリ、揮発性メモリ（たとえば、任意のタイプのランダムアクセスメモリ「ＲＡＭ」）のような非永続的ストレージ、不揮発性メモリ（たとえば、読み取り専用メモリ「ＲＯＭ」、パワーバックＲＡＭ、フラッシュメモリ、相変化メモリなど）のような永続的ストレージ、ソリッドステートドライブ、ハードディスクドライブ、光ディスクドライブ、又はポータブルメモリデバイスを含むことができるが、これらに限定若しくは制約されることはない。ファームウェア、実行可能コードは、永続的ストレージに格納される。
【００１９】
「電力監視」という用語は、ＨＰＣシステムを備えるコンポーネントの１つ又は複数による電力消費の動的な測定として解釈されるべきである。得られる測定値は、たとえば、個々のジョブ及び／又はジョブのグループによる電力消費を計算し、ＨＰＣシステムの全体的な電力消費の統計を提供するために使用されてもよい。
【００２０】
「電力ポリシー」という用語は、所与のジョブへの電力の割り振り及び管理についてガイダンスをもたらすＨＰＣシステムに提供される入力（たとえば、１つ又は複数のパラメータ）として解釈されるべきである。入力は、ジョブ要求サブミッションの一部として提供されてもよいか、及び／又は（たとえば、ユーザインターフェイス画面若しくは構成ファイルを介して）別個の入力として提供されてもよい。たとえば、入力は、特に、（ｉ）ジョブが電力制限を受け得るか、（ｉｉ）ジョブが実行し得る最大及び／若しくは最小の電力、並びに／又は（ｉｉｉ）ジョブを処理している１つ若しくは複数のノードが動作し得る最大及び／若しくは最小の周波数を指示することができる。
【００２１】
「ノード」という用語は、少なくとも、システムメモリ及び／又は１つ若しくは複数の入出力（Ｉ／Ｏ）コンポーネントとオプションでグループ化される１つ又は複数のプロセッサとして解釈されるべきである。１つ又は複数のプロセッサ、システムメモリ、及び１つ又は複数のＩ／Ｏコンポーネントは、本明細書及び請求項の全体を通じてノードの「コンポーネント」として称されてもよい。本明細書及び請求項の全体を通じて、「プロセッサ」、「コンピュータ処理ユニット（ＣＰＵ）」、及び「コア」という用語は、同義的に使用される。
【００２２】
「ジョブ」という用語は、ＨＰＣシステム上で実行されるあらかじめ定められた計算として解釈されるべきである。たとえば、ユーザ（たとえば、ジョブの所有者）は、ジョブがＨＰＣによって実行されるよう要求することができ、つまりユーザは、ユーザによって提供された入力パラメータ及び／又はデータに従って１つ若しくは複数の計算ノードに計算を実行させるよう要求している。ジョブ要求は、ジョブの処理に使用されるべき１つ又は複数の計算（たとえば、アプリケーション）を指定することができる。
【００２３】
「システム電力（Ｐｓｙｓ）」という用語は、たとえばファシリティ又はデータセンターマネージャによって、ＨＰＣシステムに提供される電力量として解釈されるべきである。Ｐｓｙｓは、ＨＰＣシステムが任意の所与の時間において１つ又は複数のジョブに割り振る必要のある合計電力量である。
【００２４】
「ガードバンド」という用語は、ＨＰＣシステムの電力バジェットの管理を補助するためのメカニズムとして解釈されるべきである。１つの実施形態において、ガードバンドは、余剰電力の割り振りであり、これはジョブに割り振られる電力のあらかじめ定められた割合であってもよい。たとえば、ＨＰＣシステムが、ジョブに割り振る３ＭＷの電力を有する場合、ＨＰＣシステムは、２．８ＭＷのみを割り振り、０．２ＭＷをガードバンドとして保持して、ジョブの電力消費が３ＭＷを超える原因になる計算のスパイクを防止することができる。ガードバンドの１つの目的は、ジョブによる一貫した電力消費を保持することである。
【００２５】
最後に、本明細書において使用される「又は」及び「及び／又は」という用語は、包含的、又は任意の１つ若しくは任意の組み合わせを意味すると解釈されるべきである。したがって、「Ａ、Ｂ、又はＣ」又は「Ａ、Ｂ、及び／又はＣ」は、「Ａ、Ｂ、Ｃ、Ａ及びＢ、Ａ及びＣ、Ｂ及びＣ、Ａ、Ｂ、及びＣのいずれか」を意味する。この定義の例外は、要素、機能、ステップ、又は行為の組み合わせが本質的に相互排他的である場合に限り生じる。
【００２６】
本発明は、ハイパフォーマンスコンピューティング（ＨＰＣ）システムのような、分散コンピュータシステムの電力管理のために使用されてもよい。特に、本開示の実施形態は、ＨＰＣシステム内のノードの較正の結果としての各ジョブの電力消費の推定値に基づいて、ＨＰＣシステムで実行される１つ又は複数のジョブへの電力割り振りを管理することに関する。本発明は多くのさまざまな様式の実施形態が可能であるので、本発明の原理の例として本開示が考慮されるべきであることが意図されており、示され説明されている固有の実施形態に本発明を限定することは意図されていない。
【００２７】
省電力指向の分散コンピュータシステム
図２を参照すると、ＨＰＣシステム１００を備えるロジックを示す例示的なブロック図が示される。図２に示されるＨＰＣシステム１００のロジックは、ＨＰＣシステム１００の電力管理を備え、省電力指向のジョブスケジューラ２１１及び省電力指向にジョブランチャ２１２を含むリソースマネージャ２１０、較正器２２０、推定器２３０、１つ又は複数のジョブマネージャ２４０（各ジョブは各自のジョブマネージャを有する）、ジョブ２５０、ユーザポリシー２０５、及び管理ポリシー１３０を含む。１つの実施形態において、リソースマネージャ２１０及びジョブマネージャ２４０は、ジョブ電力データを収集するように構成される。
【００２８】
較正器２２０は、ＨＰＣシステム１００内の各ノードの電力、熱放散、及びパフォーマンスを較正する。較正器２２０は、ＨＰＣシステム１００内のノードを較正するための複数の方法を提供することができる。１つの実施形態において、較正器２２０は、ＨＰＣシステム１００内のあらゆるノードがサンプルワークロード（たとえば、ミニアプリケーション、アプリケーションの一部、及び／又はテストスクリプト）を実行する較正の第１の方法を提供して、較正器２２０が、特に、各ノードの（１）平均電力、（２）最大電力、及び（３）最小電力を判定するためにあらかじめ定められた時間間隔において１つ又は複数の測定値（たとえば、消費された電力）をサンプリングできるようにすることができる。加えて、サンプルワークロードは、ノードのあらゆる動作周波数において各ノード上で実行されてもよい。もう１つの実施形態において、較正器２２０は、１つ又は複数のノードの較正がジョブのランタイム中に生じる較正の第２の方法を提供することができる。そのような状況において、較正器２２０は、ジョブが実行している（たとえば、処理している）１つ又は複数のノードをサンプリングすることができる。第２の方法において、較正器２２０は、実際のランタイム中の各ノードの電力測定値を取得する。
【００２９】
推定器２３０は、各ジョブの電力消費の推定値をリソースマネージャ２１０に提供し、リソースマネージャ２１０が１つ又は複数のジョブ所有者（たとえば、ユーザ）によって要求された各ジョブを効率的にスケジュール及び監視できるようにする。推定器２３０は、たとえば較正器データベースに格納されている最大及び平均電力値に基づいて電力消費推定値を提供することができ、較正器データベースは較正器２２０の処理によってデータが満たされる。加えて、各ジョブに必要とされる最小電力が考慮されてもよい。電力消費を作成するために推定器２３０によって使用され得るその他の要因は、電力制限にジョブが従うことをジョブの所有者が許容するかどうか、ジョブに供給される電力を制限するジョブ電力ポリシー（たとえば、ジョブが実行されることになるあらかじめ定められた固定の周波数、ジョブに必要とされる最小電力、又はリソースマネージャ２１０によって判定された可変の周波数及び／若しくは供給される電力）、ジョブの始動電力、ジョブが実行されることになる周波数、ＨＰＣシステム１００への使用可能な電力、及び／又はＨＰＣシステム１００に割り振られている電力を含むが、これらに限定されることはない。
【００３０】
ユーザ（たとえば、ジョブの所有者）によって要求された各ジョブには、ユーザポリシー２０５が付随している（図１にも示されている）。ユーザポリシーは、少なくとも、ジョブ２５０が電力制限を受け得るかどうか、電力制限が許容される場合の電力を制限するポリシー（たとえば、固定の周波数、最小必要電力、又はリソースマネージャ２１０によって判定された可変の周波数及び／若しくは電力）、及びジョブ２５０が中断され得るかどうかに関する判定を含む。
【００３１】
１つの実施形態において、省電力指向のジョブスケジューラ２１１は、（たとえば、ユーザポリシー２０５内に含まれる）ジョブに関するモードの選択を受け取って、モードに基づいてジョブのための使用可能な電力を判定し、使用可能な電力に基づいてジョブに電力を割り振るように構成される。１つの実施形態において、省電力指向のジョブスケジューラ２１１は、使用可能な電力に基づいてジョブのための一様な周波数を判定するように構成される。１つの実施形態において、省電力指向のジョブスケジューラ２１１は、監視された電力、推定された電力、及び較正された電力のうちの少なくとも１つに基づいてジョブのための使用可能な電力を判定するように構成される。省電力指向のジョブスケジューラ２１１及びリソースマネージャ２１０は、後段においてさらに詳細に説明されるように、電力消費に関する情報を受け取って、電力バジェットを各ジョブに分配し、電力を制限する一様周波数メカニズムを実施するように構成される。
【００３２】
リソースマネージャ２１０は、省電力指向のジョブスケジューラ２１１及び省電力指向のジョブランチャ２１２を使用して、受け取った電力入力、たとえばユーザポリシー２０５及び管理ポリシー２０６に基づいてジョブをスケジュールして開始する。１つの実施形態において、リソースマネージャ２１０は、１つ又は複数のユーザが実行しようとするインタラクティブ及びバッチジョブへの計算及び入出力リソースの割り振りに責任を負うソフトウェアオブジェクトである。通常、リソースマネージャ２１０はまた、ジョブキューの外のジョブをスケジュールし、スケジュールどおりにジョブを開始することに責任を負う。ジョブマネージャ２４０は、後段においてさらに詳細に説明されるように、ジョブに割り振られた電力バジェット内にジョブをとどめるよう制御するように構成される。１つの実施形態において、ジョブマネージャ２４０は、ジョブが開始された後に１つ又は複数の電力ポリシーの制約内でジョブを動作させることに責任を負う。１つの実施形態において、ジョブマネージャ２４０は、ユーザ及び／又は管理者のうちの少なくとも１つによって指定されたポリシーにより、ジョブの実行に関与するすべてのコンポーネント（たとえば、ノード、又は他のコンポーネント）の電力パフォーマンスを制御するために使用される。省電力指向のジョブスケジューラ２１１及びジョブマネージャ２４０。
【００３３】
図３を参照すると、システムによって消費される電力がシステムに割り振られている電力を超える場合に、ＨＰＣシステム１００内のジョブを管理するサンプルの方法を説明する流れ図が示される。図３に示される各ブロックは、１つ又は複数のジョブを中断すること、及び／又は１つ若しくは複数のジョブを終了することによって、ＨＰＣシステム１００内のジョブを管理する方法３００において実行される操作を表す。方法３００は、ＨＰＣシステム１００に割り振られている電力が低減する場合に、人間の介入なしで、自動的にＨＰＣシステム１００のジョブを管理することを目指して、計算ノード１０２上でジョブスケジューラ２１１、ジョブマネージャ２４０及び推定器２３０によって実施される操作を示す。
【００３４】
操作３０１において、方法３００は開始する。操作３０２において、ＨＰＣシステム１００に消費される電力（Ｐｃｓｙｓ）が、ＨＰＣシステム１００に割り振られている電力（Ｐｓｙｓ）以下であるかどうかに関して判定が行われる。ＰｓｙｓがＰｃｓｙｓよりも大きい場合（操作３０２においてはいである）場合、ＨＰＣシステム１００は、ＨＰＣシステム１００への電力割り振りにおける任意のさらなる変動によりＰｃｓｙｓがＰｓｙｓよりも大きくなる結果をもたらすかどうかを監視する。ＰｓｙｓがＰｃｓｙｓよりも小さい（操作３０２においていいえである）場合、すべての現在のジョブがそれらの最低電力状態において動作しているかどうかに関して判定が行われる（操作３０３）。１つの実施形態において、処理に対して最小電力がジョブの所有者によって要求され、ジョブが要求された最小電力で処理している場合に、ジョブはその最低電力状態において動作することができる。もう１つの実施形態において、ユーザは、計算ノード１０２がジョブを処理すべき固有の周波数を要求した場合もあり、計算ノード１０２が要求された周波数において動作する間の計算ノード１０２の電力状態が、所与のジョブについての最低の電力状態であってもよい。もう１つの実施形態において、ジョブマネージャ２４０がジョブの周波数を自動的に調整し（たとえば、周波数を計算ノード１０２の最低動作周波数に低下させて）、ジョブは、その最低の電力状態において動作して（たとえば、そのジョブについての最小の電力量を消費して）いてもよい。
【００３５】
すべての現在のジョブがそれらの最低電力状態において動作していない（操作３０３においていいえである）場合、ＨＰＣシステム１００は、１つ若しくは複数のジョブの動作電力状態又は電力割り振りを低減する（操作３０４）。１つの実施形態において、各ジョブの最低周波数は、ＨＰＣシステム１００及び／又は個々のジョブに関連付けられている電力ポリシーを分析する間に、リソースマネージャ２１０によって判定される（たとえば、１つの実施形態において、最低周波数において動作することは、最小の電力量を消費することになり、ジョブをその最低電力状態に置く）。もう１つの実施形態において、ジョブは、いかなる電力制限もジョブの処理に適用されないものとする電力ポリシーを有することができる。そのような状況において、ジョブを処理している計算ノード１０２は、それらの最高周波数において常に動作し、可能な最大電力量を消費することになり、したがって、動作周波数及び電力状態は低減され得ない。第２の実施形態において、ジョブは、ＨＰＣシステム１００がジョブに割り振られている電力及び／又はジョブを処理している計算ノード１０２の動作周波数を設定できるようにする電力ポリシーを有することができる。そのような状況において、ＨＰＣシステム１００は、計算ノード１０２の動作周波数が低減されて、それにより電力状態を低減することができるかどうかを判定することができる。その後、Ｐｃｓｙｓは再計算され（操作３０５）、方法３００は、操作３０２に戻ってＰｃｓｙｓがＰｓｙｓ以下であるかどうか判定する。
【００３６】
すべての現在のジョブがそれらの最低電力状態において動作している（操作３０３においてはいである）場合、中断されてもよい最低優先順位の実行中ジョブが識別される（操作３０６）。一部の実施形態において、ジョブが中断され得るかどうかは、ジョブの所有者がそのようなポリシーを選択したかどうか、ＨＰＣシステム１００が（たとえば、すべてのジョブが中断されてもよいなど）ジョブの中断に関する特定のポリシーを有しているかどうか、及び／又はジョブがチェックポインティングをサポートするかどうかによって異なる。チェックポインティングは、ジョブの処理の進捗状況を保持するために、ジョブの状態を保存することを伴う。ハードウェア又はソフトウェアの障害の場合、チェックポインティングは、ジョブが最後の認識された作業状態から再開されることを可能にする。一部の実施形態において、チェックポインティングは、事前定義された間隔で、ジョブの中断の直前に、又はその両方において生じてもよい。操作３０７において、識別されたジョブは、チェックポインティングが行われ、操作３０８において、識別されたジョブは中断される。
【００３７】
操作３０９において、Ｐｃｓｙｓは、最近中断されたジョブを考慮に入れて再計算される。「再計算」という用語は、１つ又は複数の計算ノード１０２の１つ又は複数のコンポーネントを測定すること、較正器データベースを参照すること、新しい電力推定値を推定器２３０に要求すること、及び／又は１つ若しくは複数の測定値に基づいて計算を実行することを意味することができる。操作３１０において、ＰｃｓｙｓがＰｓｙｓ以下であるかどうかに関して判定が行われる。ＰｃｓｙｓがＰｓｙｓ以下である（操作３１０においてはいである）場合、方法３００は完了する（３１１）。
【００３８】
ＰｃｓｙｓがＰｓｙｓ以下ではない（操作３１０においていいえである）場合、すべての中断可能なジョブが中断されているかどうかに関して判定が行われる（操作３１２）。すべての中断可能なジョブが中断されていない（操作３１２においていいえである）場合、方法３００は操作３０６に戻り、最低優先順位の実行中ジョブが識別される。或いは、すべての中断可能なジョブが中断されている（操作３１２においてはいである）場合、最低優先順位を有する現在のジョブが識別される（操作３１３）。操作３１４において、識別されたジョブは終了される。
【００３９】
操作３１５において、Ｐｃｓｙｓは、最近終了されたジョブを考慮に入れて再計算される。操作３１６において、ＰｃｓｙｓがＰｓｙｓ以下であるかどうかに関して判定が行われる。ＰｃｓｙｓがＰｓｙｓ以下である（操作３１６においてはいである）場合、方法３００は完了する（操作３１７）。
【００４０】
ＰｃｓｙｓがＰｓｙｓ以下ではない（操作３１６においていいえである）場合、すべてのジョブが終了されているかどうかに関して判定が行われる（操作３１８）。すべてのジョブが終了されていない（操作３１８においていいえである）場合、方法３００は操作３１３に戻り、中断され得ない最低優先順位の実行中ジョブを識別する。すべてのジョブが終了されている（操作３１８においてはいである）場合、ＨＰＣシステムは、強制的に電源オフにされる（操作３１９）。
【００４１】
図４Ａ〜４Ｃは、ＨＰＣシステム１００（Ｐｃｓｙｓ）によって消費される電力がＨＰＣシステム１００（Ｐｓｙｓ）に割り振られている電力よりも小さいか又はその電力とほぼ等しい場合に、１つ又は複数のジョブを管理するための方法４００の１つの実施形態を示す。図４Ａを参照すると、消費される電力が、システムに割り振られている電力に第２のシステムガードバンドを加えた値と、システムに割り振られている電力から第１のシステムガードバンドを差し引いた値との間であるかどうかに関して判定が行われる（操作４０１）。操作４０１の判定が正の回答をもたらす（操作４０１においてはいである）場合、方法４００は、操作４２８に進められ、その操作は図４Ｃにおいて詳細に説明される。操作４０１の判定が負の回答をもたらす（操作４０１においていいえである）場合、消費される電力が、割り振られている電力から第１のシステムガードバンドを差し引いた値よりも小さいかどうかに関して判定が行われる（操作４０２）。Ｐｃｓｙｓ及びＰｓｙｓが、平均値であること、たとえば時間の経過に伴うエネルギーの平均消費率であることに留意されたい。システムガードバンドは、電力消費における小さな変動を説明する目的に役立つ。
【００４２】
操作４０２における判定が正の結果をもたらす（操作４０２においてはいである）場合、方法４００は、操作４１７に進められ、その操作は図４Ｂにおいて詳細に説明される。操作４０２における判定が負の結果をもたらす（操作４０２においていいえである）場合、現在のジョブ（たとえば、ＨＰＣシステム１００で現在実行している）の１つ又は複数について電力が低減され得るかどうかに関して判定が行われる（操作４０３）。電力が１つ又は複数の現在のジョブに対して低減され得る（操作４０３においてはいである）場合、電力が低減されるべき１つ又は複数の現在のジョブが識別される（操作４０４）。電力の低減の例は、上記で説明されている。操作４０５において、１つ又は複数の識別された現在のジョブの電力が低減され、続いて方法４００は操作４０１に戻る。
【００４３】
１つ又は複数の現在のジョブの電力が低減され得ない（操作４０３においていいえである）場合、任意の現在のジョブが中断されてもよいかどうかに関して判定が行われる（操作４０６）。１つ又は複数の現在のジョブが中断されてもよい（操作４０６においてはいである）場合、中断可能なジョブの優先順位リストが生成される（操作４０７）。操作４０８において、生成されたリストにおいて最低優先順位の中断可能なジョブは、チェックポインティングを実施するように指示される。チェックポインティングが完了すると、最低優先順位の中断可能なジョブは中断される（操作４０９）。操作４１０において、消費された電力が、割り振られている電力から第１のシステムガードバンドを差し引いた値以下であるかどうかに関して判定が行われる。消費された電力が、割り振られている電力から第１のシステムガードバンドを差し引いた値以下である（操作４１０においてはいである）場合、方法４００は操作４０１に戻る。消費された電力が、割り振られている電力から第１のシステムガードバンドを差し引いた値よりも小さくない（操作４１０においていいえである）場合、方法４００は操作４０６に戻り、任意の現在のジョブが中断されてもよいかどうかを判定する。
【００４４】
現在のジョブが中断され得ない（たとえば、ユーザポリシー及び／若しくはシステムポリシーがそのようなアクションを阻止するか、及び／又は現在のジョブがチェックポインティングをサポートしない）（操作４０６においていいえである）場合、１つ又は複数のジョブが現在実行中であるかどうかに関して判定が行われる（操作４１１）。ＨＰＣシステム１００上でジョブが現在実行していない場合、ＨＰＣシステム１００は、強制的に電源ダウンし（操作４１２）、続いて、方法４００は終了する（操作４１３）。
【００４５】
１つ又は複数のジョブが現在実行している（操作４１１においてはいである）場合、現在のジョブの優先順位リストが生成される（操作４１４）。操作４１５において、生成されたリストにおいて最低優先順位のジョブは終了される（１つの実施形態において、リストは１つのリスト内の現在実行中のジョブ及び中断状態のジョブの両方を優先順位付けすることができる）。操作４１６において、消費された電力が、割り振られている電力から第１のシステムガードバンドを差し引いた値以下であるかどうかに関して判定が行われる。消費された電力が、割り振られている電力から第１のシステムガードバンドを差し引いた値以下である（操作４１６においてはいである）場合、方法４００は操作４０１に戻る。消費された電力が、割り振られている電力から第１のシステムガードバンドを差し引いた値以下ではない（操作４１６においていいえである）場合、方法４００は操作４１１に戻り、現在実行中のジョブがあるかどうかを判定する。
【００４６】
図４Ｂを参照すると、図４Ａの操作４０２における判定が正の結果をもたらす（操作４０２においてはいである）場合、現在のジョブに余剰電力を割り振るプリファレンスが存在するかどうかに関して判定が行われる（操作４１７）。１つの実施形態において、プリファレンスはユーザポリシー及び／又はシステムポリシーから導かれてもよい。余剰電力を現在のジョブに割り振るプリファレンスが存在する（操作４１７においてはいである）場合、余剰電力が現在実行中のジョブに割り振られ（操作４２０）、方法４００は操作４０１に戻る。
【００４７】
余剰電力は、複数の方式で現在実行中のジョブに割り振られてもよい。リソースマネージャ２１０が余剰電力を割り振ることができる方式の例は、現在実行中のジョブの各々に一様に、最長実行時間を有するジョブに次いで（第１のジョブがその最高電力状態で動作しているのであれば）２番目に長い実行時間を有するジョブへと次々続く、最高優先順位を有する現在実行中のジョブに次いで（第１のジョブがその最高電力状態で動作しているのであれば）２番目に高い優先順位を有するジョブへと次々続く、又は現在実行中のジョブの各々に比例して（たとえば、各ジョブの実行時間に比例して、各ジョブの優先順位に比例してなど）を含むことができるが、これらに限定若しくは制約されることはない。余剰電力の割り振りのためにジョブを優先順位付けする様式の例は、現在実行中のジョブの優先順位付けリスティング、現在実行中の各ジョブが実行している時間量、現在実行中の各ジョブの電力状態（たとえば、それらの最低電力状態で実行しているジョブと、それらのほぼ最高電力状態で実行しているジョブとの比較）、現在実行中の各ジョブを現在処理している計算ノード１０２の数、及び／又は現在実行中の各ジョブがその次の電力状態で実行するために必要とする追加の電力量を含むが、これらに限定若しくは制約されることはない。
【００４８】
余剰電力を現在のジョブに割り振るプリファレンスが存在しない（操作４１７においていいえである）場合、割り振られていないリソースが使用可能であるかどうかに関して判定が行われる（操作４１８）。リソースの例は、１つ若しくは複数の計算ノード及び／又は１つ若しくは複数のストレージデバイスを含むが、これらに限定若しくは制約されることはない。割り振られていないリソースが使用可能ではない（操作４１８においていいえである）場合、余剰電力が現在実行中のジョブに割り振られ（操作４１９）、方法４００は操作４０１に戻る。割り振られていないリソースが別のジョブの処理を開始するために使用可能である（操作４１８においてはいである）場合、ジョブキューが空であるかどうかに関して判定が行われる（操作４２０）。ＨＰＣシステム１００は、ジョブがシステムによって処理されるのを待機するためのジョブキューを保持する。１つの実施形態において、ジョブキューは、システム上で処理をまだ開始していない新しいジョブ、及びシステム上で以前処理されていたが中断されているジョブの両方を含むことができる。代替の実施形態は、新しいジョブに１つ、そして中断状態のジョブに１つ、の別個のキューを含むことができる。本開示は、ジョブキューが、新しいジョブ及び／又は中断状態のジョブの両方を含むことができる単一のキューであると仮定する。
【００４９】
ジョブキューが空である（操作４２０においてはいである）場合、余剰電力が現在実行中のジョブに割り振られ（操作４２１）、方法４００は操作４０１に戻る。
【００５０】
ジョブキューが空ではない（操作４２０においていいえである）場合、キュー内で次に高い優先順位のジョブであるＪｎｅｘｔが取り出される（操作４２２）。操作４２３において、十分なリソースがＪｎｅｘｔに使用可能であるかどうか（たとえば、計算ノード１０２の十分な計算ノードが使用可能であるかどうか）に関して判定が行われる。十分なリソースがＪｎｅｘｔに使用可能ではない（操作４２３においていいえである）場合、追加のジョブがキュー内にあるかどうかに関して判定が行われる（操作４２７）。キュー内にさらに多くのジョブがある（操作４２７においてはいである）場合、方法４００は操作４２２に戻り、次に高い優先順位のジョブをキューから取り出す。キュー内に追加のジョブがない（操作４２７においていいえである）場合、余剰電力が現在実行中のジョブに割り振られ（操作４１９）、続いて方法４００は操作４０１に戻る。
【００５１】
しかし、十分なリソースがＪｎｅｘｔに使用可能である（操作４２３においてはいである）場合、Ｊｎｅｘｔの電力推定値が取り出される（操作４２４）。電力推定値は、推定器２３０によって生成されてもよい。電力推定値が生成された場合、割り振られていないリソースでＪｎｅｘｔを実行するのに十分な割り振られていない電力があるかどうかに関して判定が行われる（操作４２５）。Ｊｎｅｘｔを実行するのに十分な割り振られていない電力がある（操作４２５においてはいである）場合、Ｊｎｅｘｔが新しいジョブであればＪｎｅｘｔは開始されるか、又はＪｎｅｘｔが中断状態のジョブであればＪｎｅｘｔは再開される（操作４２６）。Ｊｎｅｘｔを実行するのに十分な割り振られていない電力がない（操作４２５においていいえである）場合、上記で説明されるように、追加のジョブがキュー内にあるかどうかに関して判定が行われる（操作４２７）。
【００５２】
図４Ｃを参照すると、操作４０１の判定が正の回答をもたらす（操作４０１においてはいである）場合、ジョブが現在キュー内にあるかどうかに関して判定が行われる（操作４２８）。ジョブが現在キュー内にない（操作４２８においていいえである）場合、方法４００は操作４０１に戻る。ジョブが現在キュー内にある（操作４２８においてはいである）場合、任意の現在実行中のジョブがより低い電力で動作され得るかどうかに関して判定が行われる（操作４２９）。任意の現在実行中のジョブがより低い電力で動作され得るかどうかに関する判定が行われて、電力が追加のジョブ（たとえば、キュー内で待機中の１つ又は複数のジョブ）を実行するために再割り振りされてもよいかどうかを判定する。
【００５３】
より低い電力で処理され得る現在のジョブがない（操作４２９においていいえである）場合、方法４００は操作４０１に戻る。しかし、１つ又は複数の現在のジョブがより低い電力で動作され得る（操作４２９においてはいである）場合、より低い電力状態で現在のジョブを動作することにより使用可能にされ得る電力の量（Ｐｆｒｅｅｄ）が計算される。Ｐｆｒｅｅｄにシステムによって割り振られていない電力を加えた量は、新しいジョブ又は中断状態のジョブに再割り振りされてもよい。
【００５４】
操作４３１において、１つ又は複数のジョブに対する電力を低減することによって使用可能にされ得る追加のリソースが判定される。その後、操作４３２において、Ｊｎｅｘｔはジョブキューから取り出され、操作４３３において、電力推定値（Ｐｎｅｘｔ）がＪｎｅｘｔから生成される。ジョブキュー及び取り出し（たとえば、優先順位に基づく編成及び取り出し）は、上記で説明されている。同様に、電力推定値の生成もまた、上記で説明されている。
【００５５】
操作４３４において、十分な割り振られていないリソースがＪｎｅｘｔを実行するために使用可能であるかどうかに関して判定が行われる。Ｊｎｅｘｔを実行するために使用可能な十分な割り振られていないリソースがない（操作４３４においていいえである）場合、上記で説明されるように、追加のジョブがキュー内にあるかどうかに関して判定が行われる（操作４３５）。追加のジョブが現在キュー内にない（操作４３５においていいえである）場合、方法４００は操作４０１に戻る。キュー内に追加のジョブがある（操作４３５においてはいである）場合、方法４００は操作４３２に戻り、次に高い優先順位のジョブをキューから取り出す。
【００５６】
しかし、ジョブを実行するために使用可能なリソース（たとえば、使用可能なノード及び割り振られていない電力）がある（操作４３４においてはいである）場合、１つ又は複数のジョブによって消費される電力を低減することによって使用可能にされ得る追加のリソースが判定される（操作４３２）。操作４３３において、次に高い優先順位を有するジョブがキューから取り出される。操作４３４において、Ｊｎｅｘｔの電力推定値が（たとえば、推定器２３０に推定値を要求することによって）取得される。操作４３５において、１つ又は複数のジョブによって消費される電力を低減することなく十分なリソースがＪｎｅｘｔを実行するために使用可能であるかどうかに関して判定が行われる。
【００５７】
Ｊｎｅｘｔを実行するために十分なリソースが使用可能である（操作４３４においてはいである）場合、Ｊｎｅｓｔを開始するために必要な電力（電力推定値Ｐｎｅｘｔの一部によって表される）が、Ｐｆｒｅｅｄに割り振られていない電力を加えた値以下であるかどうかに関して判定が行われる。Ｐｎｅｘｔが、Ｐｆｒｅｅｄに割り振られていない電力を加えた値よりも大きい（操作４３６においていいえである）場合、方法４００は操作４３５に戻り、キュー内に現在待機している追加のジョブがあるかどうかを判定する。Ｐｎｅｘｔが、Ｐｆｒｅｅｄに割り振られていない電力を加えた値以下である（操作４３６においてはいである）場合、１つ又は複数のジョブの電力は、最大限でも、Ｐｎｅｘｔだけ低減され（操作４３７）、続いて、Ｊｎｅｘｔが新しいジョブであればＪｎｅｘｔは開始されるか、又はＪｎｅｘｔが中断状態のジョブであればＪｎｅｘｔは再開される（操作４３８）。操作４３８においてＪｎｅｘｔが開始されると、方法４００は操作４０１に戻る。
【００５８】
以下の例は、さらなる実施形態に関する。
【００５９】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいかどうかを判定するステップと、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいと判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理しているかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理していると判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６０】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいかどうかを判定するステップと、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいと判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理しているかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理していると判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブをチェックポインティングするステップと、最低優先順位を有するジョブをチェックポインティングすることに応じて、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６１】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいかどうかを判定するステップと、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいと判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理しているかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理していると判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップであって、分散コンピュータシステムによって処理されているすべてのジョブのうちの第１のジョブの最低電力状態は、分散コンピュータシステムによって処理されているすべてのジョブのうちの第２のジョブの最低電力状態とは異なる、ステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６２】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいかどうかを判定するステップと、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいと判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理しているかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理していると判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップと、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップの後に、分散コンピュータシステムによって消費される電力を再計算するステップであって、分散コンピュータシステムによって処理されているすべてのジョブのうちの第１のジョブの最低電力状態は、分散コンピュータシステムによって処理されているすべてのジョブのうちの第２のジョブの最低電力状態とは異なる、ステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６３】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいかどうかを判定するステップと、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいと判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理しているかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理していると判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップと、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップの後に、分散コンピュータシステムによって消費される電力を再計算するステップと、分散コンピュータシステムによって消費される電力を再計算するステップの後に、２番目に低い優先順位を有する第２のジョブを中断するステップであって、分散コンピュータシステムによって処理されているすべてのジョブのうちの第１のジョブの最低電力状態は、分散コンピュータシステムによって処理されているすべてのジョブのうちの第２のジョブの最低電力状態とは異なる、ステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６４】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいかどうかを判定するステップと、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも大きいと判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理しているかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、分散コンピュータシステムによって処理されているすべてのジョブが各ジョブごとに最低電力状態で処理していると判定することに応じて、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断するステップと、分散コンピュータシステムによって処理されているすべてのジョブの中で最低優先順位を有するジョブを中断することに応じて、分散コンピュータシステムによって消費される電力がシステムに割り振られている電力よりも大きいかどうかを判定するステップと、分散コンピュータシステムによって消費される電力がシステムに割り振られている電力よりも大きいと判定することに応じて、２番目に低い優先順位を有する第２のジョブを終了するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６５】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも小さいかどうかを判定するステップと、分散コンピュータシステムによって消費される電力が分散コンピュータシステムに割り振られている電力よりも小さいと判定することに応じて、割り振られていないリソースが使用可能であるかどうかを判定するステップと、割り振られていないリソースが使用可能であると判定することに応じて、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能であるかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能である場合、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップと、最高優先順位のジョブを処理するための電力が使用可能である場合、最高優先順位のジョブを開始するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６６】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいかどうかを判定するステップと、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいと判定することに応じて、ジョブキュー内のジョブに余剰電力を割り振るプリファレンスが存在するかどうかを判定するステップと、ジョブキュー内のジョブに余剰電力を割り振るプリファレンスが存在しないと判定することに応じて、割り振られていないリソースが使用可能であるかどうかを判定するステップと、割り振られていないリソースが使用可能であると判定することに応じて、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能であるかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能である場合、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップと、最高優先順位のジョブを処理するための電力が使用可能である場合、最高優先順位のジョブを開始するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６７】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいかどうかを判定するステップと、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいと判定することに応じて、ジョブキュー内のジョブに余剰電力を割り振るプリファレンスが存在するかどうかを判定するステップと、ジョブキュー内のジョブに余剰電力を割り振るプリファレンスが存在すると判定することに応じて、分散コンピュータシステムによって処理されている１つ又は複数のジョブに余剰電力を割り振るステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００６８】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいかどうかを判定するステップと、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力がよりも小さいと判定することに応じて、割り振られていないリソースが使用可能であるかどうかを判定するステップと、割り振られていないリソースが使用可能であると判定することに応じて、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能であるかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能である場合、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップと、最高優先順位のジョブを処理するための電力が使用可能である場合、最高優先順位のジョブを開始するステップとを含む操作を実行し、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップは、最高優先順位のジョブを処理するために必要とされる電力が、分散コンピュータシステムに割り振られている電力から、分散コンピュータシステムによって消費される電力を差し引き、第１のシステムガードバンドを差し引いた値よりも小さいかどうかを判定するステップを含む、非一時的コンピュータ可読ストレージ媒体。
【００６９】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいかどうかを判定するステップと、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力がよりも小さいと判定することに応じて、割り振られていないリソースが使用可能であるかどうかを判定するステップと、割り振られていないリソースが使用可能であると判定することに応じて、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能であるかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能である場合、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップと、最高優先順位のジョブを処理するための電力が使用可能である場合、最高優先順位のジョブを開始するステップとを含む操作を実行し、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップは、最高優先順位のジョブを処理するために必要とされる電力が、分散コンピュータシステムに割り振られている電力から、分散コンピュータシステムによって消費される電力を差し引き、第１のシステムガードバンドを差し引いた値よりも小さいかどうかを判定するステップを含み、第１のシステムガードバンドは、分散コンピュータシステムの電力消費の変動が、分散コンピュータシステムに割り振られている電力を超えることを防止するために、１つ又は複数のジョブに割り振られるべきではない事前定義された電力量を含む、非一時的コンピュータ可読ストレージ媒体。
【００７０】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいかどうかを判定するステップと、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力がよりも小さいと判定することに応じて、割り振られていないリソースが使用可能であるかどうかを判定するステップと、割り振られていないリソースが使用可能であると判定することに応じて、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能であるかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能である場合、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップと、最高優先順位のジョブを処理するための電力が使用可能である場合、最高優先順位のジョブを開始するステップとを含む操作を実行し、最高優先順位のジョブを開始するステップは、ジョブキューからの新しいジョブを開始するステップを含む、非一時的コンピュータ可読ストレージ媒体。
【００７１】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいかどうかを判定するステップと、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力がよりも小さいと判定することに応じて、割り振られていないリソースが使用可能であるかどうかを判定するステップと、割り振られていないリソースが使用可能であると判定することに応じて、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能であるかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能である場合、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップと、最高優先順位のジョブを処理するための電力が使用可能である場合、最高優先順位のジョブを開始するステップとを含む操作を実行し、最高優先順位のジョブを開始するステップは、ジョブキュー内の中断状態のジョブを再開することを含む、非一時的コンピュータ可読ストレージ媒体。
【００７２】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、１つ又は複数のプロセッサによって実行可能であり、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力よりも小さいかどうかを判定するステップと、分散コンピュータシステムに割り振られている電力が分散コンピュータシステムによって消費される電力がよりも小さいと判定することに応じて、割り振られていないリソースが使用可能であるかどうかを判定するステップと、割り振られていないリソースが使用可能であると判定することに応じて、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能であるかどうかを判定するステップであって、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、ジョブキュー内の最高優先順位のジョブに対して十分なリソースが使用可能である場合、最高優先順位のジョブを処理するための電力が使用可能であるかどうかを判定するステップと、最高優先順位のジョブを処理するための電力が使用可能である場合、最高優先順位のジョブを開始するステップとを含む操作を実行し、ジョブキューは、（１）１つ若しくは複数の新しいジョブ又は（２）１つ若しくは複数の中断状態のジョブのうちの１つ又は両方を含むように構成された優先順位付きキューである、非一時的コンピュータ可読ストレージ媒体。
【００７３】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、（１）分散コンピュータシステムに割り振られている電力から第１のシステムガードバンドを差し引いた値が分散コンピュータシステムによって消費される電力よりも小さく、そして（２）分散コンピュータシステムによって消費される電力がシステムに割り振られている電力に第２のシステムガードバンドを加えた値よりも小さいと判定するステップと、解放される電力を計算するステップであって、解放される電力は、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することによって、ジョブキュー内の１つ又は複数のジョブに割り振るために使用可能にされ得る電力量であり、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、解放される電力を計算することに応じて、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいかどうかを判定するステップであって、割り振られていない電力は、分散コンピュータシステムに割り振られているがしかし分散コンピュータシステムによって処理されているジョブには割り振られていない電力である、ステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定することに応じて、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減するステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定すること、及び分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することに応じて、最高優先順位のジョブを開始するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００７４】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、（１）分散コンピュータシステムに割り振られている電力から第１のシステムガードバンドを差し引いた値が分散コンピュータシステムによって消費される電力よりも小さく、そして（２）分散コンピュータシステムによって消費される電力がシステムに割り振られている電力に第２のシステムガードバンドを加えた値よりも小さいと判定するステップと、解放される電力を計算するステップであって、解放される電力は、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することによって、ジョブキュー内の１つ又は複数のジョブに割り振るために使用可能にされ得る電力量であり、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、解放される電力を計算することに応じて、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいかどうかを判定するステップであって、割り振られていない電力は、分散コンピュータシステムに割り振られているがしかし分散コンピュータシステムによって処理されているジョブには割り振られていない電力である、ステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定することに応じて、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減するステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定すること、及び分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することに応じて、最高優先順位のジョブを開始するステップとを含む操作を実行し、最高優先順位のジョブを開始するステップは、ジョブキューからの新しいジョブを開始するステップを含む、非一時的コンピュータ可読ストレージ媒体。
【００７５】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、（１）分散コンピュータシステムに割り振られている電力から第１のシステムガードバンドを差し引いた値が分散コンピュータシステムによって消費される電力よりも小さく、そして（２）分散コンピュータシステムによって消費される電力がシステムに割り振られている電力に第２のシステムガードバンドを加えた値よりも小さいと判定するステップと、解放される電力を計算するステップであって、解放される電力は、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することによって、ジョブキュー内の１つ又は複数のジョブに割り振るために使用可能にされ得る電力量であり、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、解放される電力を計算することに応じて、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいかどうかを判定するステップであって、割り振られていない電力は、分散コンピュータシステムに割り振られているがしかし分散コンピュータシステムによって処理されているジョブには割り振られていない電力である、ステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定することに応じて、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減するステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定すること、及び分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することに応じて、最高優先順位のジョブを開始するステップとを含む操作を実行し、最高優先順位のジョブを開始するステップは、ジョブキュー内の中断状態のジョブを再開するステップを含む、非一時的コンピュータ可読ストレージ媒体。
【００７６】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、（１）分散コンピュータシステムに割り振られている電力から第１のシステムガードバンドを差し引いた値が分散コンピュータシステムによって消費される電力よりも小さく、そして（２）分散コンピュータシステムによって消費される電力がシステムに割り振られている電力に第２のシステムガードバンドを加えた値よりも小さいと判定するステップと、解放される電力を計算するステップであって、解放される電力は、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することによって、ジョブキュー内の１つ又は複数のジョブに割り振るために使用可能にされ得る電力量であり、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、解放される電力を計算するステップの後に、最高優先順位のジョブの電力推定値を生成するステップと、電力推定値を計算することに応じて、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいかどうかを判定するステップであって、割り振られていない電力は、分散コンピュータシステムに割り振られているがしかし分散コンピュータシステムによって処理されているジョブには割り振られていない電力である、ステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定することに応じて、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減するステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定すること、及び分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することに応じて、最高優先順位のジョブを開始するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００７７】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、（１）分散コンピュータシステムに割り振られている電力から第１のシステムガードバンドを差し引いた値が分散コンピュータシステムによって消費される電力よりも小さく、そして（２）分散コンピュータシステムによって消費される電力がシステムに割り振られている電力に第２のシステムガードバンドを加えた値よりも小さいと判定するステップと、解放される電力を計算するステップであって、解放される電力は、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することによって、ジョブキュー内の１つ又は複数のジョブに割り振るために使用可能にされ得る電力量であり、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、解放される電力を計算することに応じて、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいかどうかを判定するステップであって、割り振られていない電力は、分散コンピュータシステムに割り振られているがしかし分散コンピュータシステムによって処理されているジョブには割り振られていない電力である、ステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定することに応じて、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減するステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定すること、及び分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することに応じて、最高優先順位のジョブを開始するステップと、最高優先順位のジョブを処理するために十分なリソースが使用可能ではなく、２番目に高い優先順位のジョブを処理するために十分なリソースが使用可能である場合、２番目に高い優先順位のジョブを開始するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００７８】
命令を格納している非一時的コンピュータ可読ストレージ媒体であって、命令は、分散コンピュータシステムの１つ又は複数のプロセッサによって実行可能であり、（１）分散コンピュータシステムに割り振られている電力から第１のシステムガードバンドを差し引いた値が分散コンピュータシステムによって消費される電力よりも小さく、そして（２）分散コンピュータシステムによって消費される電力がシステムに割り振られている電力に第２のシステムガードバンドを加えた値よりも小さいと判定するステップと、解放される電力を計算するステップであって、解放される電力は、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することによって、ジョブキュー内の１つ又は複数のジョブに割り振るために使用可能にされ得る電力量であり、ジョブは分散コンピュータシステムの１つ又は複数のプロセッサによって実行される１つ又は複数の計算を含む、ステップと、解放される電力を計算することに応じて、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいかどうかを判定するステップであって、割り振られていない電力は、分散コンピュータシステムに割り振られているがしかし分散コンピュータシステムによって処理されているジョブには割り振られていない電力であるステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定することに応じて、分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減するステップと、ジョブキュー内の最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さいと判定すること、及び分散コンピュータシステムによって処理されている１つ又は複数のジョブによって消費される電力量を低減することに応じて、最高優先順位のジョブを開始するステップと、最高優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも大きく、２番目に高い優先順位のジョブに必要とされる電力が、解放される電力に割り振られていない電力を加えた値よりも小さい場合、２番目に高い優先順位のジョブを開始するステップとを含む操作を実行する、非一時的コンピュータ可読ストレージ媒体。
【００７９】
前述の説明において、本発明は、その特定の例示的な実施形態を参照して説明される。しかし、添付の請求項に説明された本発明のより広い趣旨及び範囲から逸脱することなく、さまざまな修正及び変更がなされ得ることは明らかであろう。
【図１】
0006386165.tif 000002
【図２】
0006386165.tif 000003
【図３】
0006386165.tif 000004
【図４Ａ】
0006386165.tif 000005
【図４Ｂ】
0006386165.tif 000006
【図４Ｃ】
0006386165.tif 000007