(57)【特許請求の範囲】
【請求項１】
複数のノードを備えるデータ処理システムを動作させる方法であって、
第一のジョブについてモードの指示を受信することと、
前記モードに基づいて前記第一のジョブのための利用可能な電力を決定することと、
前記利用可能な電力に基づいて前記第一のジョブを実行する前記複数のノードの第一の周波数を調整することであって、前記第一の周波数は前記第一のジョブを実行する前記複数のノードに共通である、ことと、
前記第一の周波数に基づいて前記複数のノードで実行される前記第一のジョブのための第一の電力を割り当てることと、
前記第一の周波数が所定の周波数より大きいかどうかを判定することと、
前記第一の周波数が所定の周波数より大きい場合、第二のジョブのための利用可能な電力を決定することと、
を含む方法。
【請求項２】
前記利用可能な電力が変化するとき、前記第一の電力を調整することを更に含む、
請求項１に記載の方法。
【請求項３】
前記第一のジョブのために必要な電力の量を決定することを更に含む、
請求項１に記載の方法。
【請求項４】
前記利用可能な電力が、モニタリングされた電力、推定された電力および較正された電力のうちの少なくとも一つに基づいて決定される、
請求項１に記載の方法。
【請求項５】
前記第一の電力が、前記第一のジョブのための平均電力に基づいて割り当てられる、
請求項１に記載の方法。
【請求項６】
前記モードは、前記第一のジョブが電力制限を受けるか否かに関する指示、前記第一のジョブについての電力ポリシーに関する指示、前記第一のジョブについての一時停止ポリシーに関する指示、又はこれらのいずれかの組合わせを含む、
請求項１に記載の方法。
【請求項７】
複数のノードを備えるデータ処理システムのためのパワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法であって、
第一のジョブのための利用可能な電力を決定することと、
前記利用可能な電力に基づいて前記第一のジョブを実行する前記複数のノードの第一の周波数を調整することであって、前記第一の周波数は前記第一のジョブを実行する前記複数のノードに共通である、ことと、
前記第一の周波数に基づいて前記複数のノードで実行される前記第一のジョブのための第一の電力を割り当てることと、
前記第一の周波数が所定の周波数より大きいかどうかを判定することと、
前記第一の周波数が所定の周波数より大きい場合、第二のジョブのための利用可能な電力を決定することと、
を含む方法。
【請求項８】
一つまたは複数の第二のジョブをモニタリングし；
前記モニタリングに基づいて前記第一の電力を調整することを更に含む、
請求項７に記載の方法。
【請求項９】
前記第一のジョブについてモードの指示を受信することを更に含み、
前記利用可能な電力は、前記モードに基づいて決定される、
請求項７に記載の方法。
【請求項１０】
割り当てられた電力が第一の閾値より大きい場合、前記第一の周波数を減少させ；
割り当てられた電力が第二の閾値より小さい場合、前記第一の周波数を増加させることを更に含む、
請求項７に記載の方法。
【請求項１１】
複数のノードを備えるデータ処理システムに動作を実行させる命令を含む非一時的な機械可読媒体であって、前記動作は：
第一のジョブについてモードの指示を受信することと、
前記モードに基づいて前記第一のジョブのための利用可能な電力を決定することと、
前記利用可能な電力に基づいて前記第一のジョブを実行する前記複数のノードの第一の周波数を調整することであって、前記第一の周波数は前記第一のジョブを実行する前記複数のノードに共通である、ことと、
前記第一の周波数に基づいて前記複数のノードで実行される前記第一のジョブのための第一の電力を割り当てることと、
前記第一の周波数が所定の周波数より大きいかどうかを判定することと、
前記第一の周波数が所定の周波数より大きい場合、第二のジョブのための利用可能な電力を決定することと、
を含む非一時的な機械可読媒体。
【請求項１２】
前記データ処理システムに、
前記第一の電力を調整することを含む動作を実行させるための命令を更に含む、
請求項１１に記載の非一時的な機械可読媒体。
【請求項１３】
前記データ処理システムに、
前記第一のジョブのために必要な電力の量を決定することを実行させるための命令を更に含む、
請求項１１に記載の非一時的な機械可読媒体。
【請求項１４】
前記利用可能な電力が、モニタリングされた電力、推定された電力および較正された電力のうちの少なくとも一つに基づいて決定される、
請求項１１に記載の非一時的な機械可読媒体。
【請求項１５】
前記第一の電力が、前記第一のジョブのための平均電力に基づいて決定される、
請求項１１に記載の非一時的な機械可読媒体。
【請求項１６】
前記モードは、前記第一のジョブが電力制限を受けるか否かに関する指示、前記第一のジョブについての電力ポリシーに関する指示、前記第一のジョブについての一時停止ポリシーに関する指示、又はこれらのいずれかの組合わせを含む、
請求項１１に記載の非一時的な機械可読媒体。
【請求項１７】
複数のノードと；
前記複数のノードに結合されたメモリと；
前記メモリに結合されたプロセッサとを有するデータ処理システムであって、前記プロセッサは：
第一のジョブについてモードの指示を受信することと、
前記モードに基づいて前記第一のジョブのための利用可能な電力を決定することと、
前記利用可能な電力に基づいて前記第一のジョブを実行する前記複数のノードの第一の周波数を調整することであって、前記第一の周波数は前記第一のジョブを実行する前記複数のノードに共通である、ことと、
前記第一の周波数に基づいて前記複数のノードで実行される前記第一のジョブのための第一の電力を割り当てることとを実行するものであり、
前記プロセッサは、
前記第一の周波数が所定の周波数より大きいかどうかを判定し、
前記第一の周波数が所定の周波数より大きい場合、第二のジョブのための利用可能な電力を決定するものである、
データ処理システム。
【請求項１８】
前記プロセッサが更に、前記第一の電力を調整する、
請求項１７に記載のデータ処理システム。
【請求項１９】
前記プロセッサが更に、前記第一のジョブのために必要な電力の量を決定する、
請求項１７に記載のデータ処理システム。
【請求項２０】
前記利用可能な電力が、モニタリングされた電力、推定された電力および較正された電力のうちの少なくとも一つに基づいて決定される、
請求項１７に記載のデータ処理システム。
【請求項２１】
前記モードは、前記第一のジョブが電力制限を受けるか否かに関する指示、前記第一のジョブについての電力ポリシーに関する指示、前記第一のジョブについての一時停止ポリシーに関する指示、又はこれらのいずれかの組合わせを含む、
請求項１７に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１４年８月２２日付けで出願された“SIMPLE  POWER-AWARE  SCHEDULER  TO  LIMIT  POWER  CONSUMPTION  BY  HPC  SYSTEM  WITHIN  A  BUDGET”と題される米国仮特許出願第６２／０４０，５７６号の利益を主張し、この仮特許出願の全体は、参照によって本明細書に援用される。本願は、２０１４年１２月２４日付けで出願された“METHOD  AND  APPARATUS  TO  ESTIMATE  POWER  PERFORMANCE  OF  A  JOB  THAT  RUNS  ON  MULTIPLE  NODES  OF  A  DISTRIBUTED  COMPUTER  SYSTEM”と題される米国特許出願第１４／５８２，７９５号（代理人文書番号４２Ｐ７３４９８）、２０１４年１２月２４日付けで出願された“METHOD  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”と題される米国特許出願第１４／５８２，７８３号（代理人文書番号４２Ｐ７４５６２）、２０１４年１２月２４日付けで出願された“ADJUSTMENT  OF  EXECUTION  OF  TASKS”と題される米国特許出願第１４／５８２，９７９号（代理人文書番号４２Ｐ７４５６３）、２０１４年１２月２４日付けで出願された“CONTROL  OF  POWER  CONSUMPTION”と題される米国特許出願第１４／５８２，９８５号（代理人文書番号４２Ｐ７４５６４）、２０１４年１２月２４日付けで出願された“FORECAST  FOR  DEMAND  OF  ENERGY”と題される米国特許出願第１４／５８２，９８８号（代理人文書番号４２Ｐ７４５６５）、２０１４年１２月２４日付けで出願された“METHODS  AND  APPARATUS  TO  MANAGE  JOBS  THAT  CAN  AND  CANNOT  BE  SUSPENDED  WHEN  THERE  IS  A  CHANGE  IN  POWER  ALLOCATION  TO  A  DISTRIBUTED  COMPUTER  SYSTEM”と題される米国特許出願第１４／５８２，７７２号（代理人文書番号４２P７４５６６）、２０１４年１２月２４日付けで出願された“MANAGING  POWER  PERFORMANCE  OF  DISTRIBUTED  COMPUTING  SYSTEMS”と題される米国特許出願第１４／５８２，７４３号（代理人文書番号４２Ｐ７４５６７）、及び２０１４年１２月２４日付けで出願された“PROFILING  A  JOB  POWER  AND  ENERGY  CONSUMPTION  FOR  A  DATA  PROCESSING  SYSTEM”と題される米国特許出願第１４／５８２，７５６号（代理人文書番号４２Ｐ７４５６８）に関連する。
【０００２】
本明細書に記載された実施形態は、電子機器製造に関し、詳しくは、データ処理システムに関する。
【背景技術】
【０００３】
一般に、高性能コンピューティング（ＨＰＣ）システムは、ジョブと称される計算割当を行うために複数のノードを併用することにより並列コンピューティングを実行する。各ノードは、典型的に、プロセッサ、メモリ、オペレーティングシステム、及びＩ／Ｏコンポーネントを含む。ノードは、高速ネットワークファブリックを経由して相互に通信し、共有ファイルシステム又は記憶装置を使用することがある。ジョブは、何千ものノードに分散した何千もの並列タスクに分割される。タスクは、毎秒何百回も相互に同期する。通常、ＨＰＣシステムは、何メガワットもの電力を消費する。
【０００４】
従来型の高性能コンピューティング（ＨＰＣ）システムＨＰＣ及びその他のビッグデータシステムは、電力に注意を払わない。最高のＨＰＣシステムは、約２０メガワット（ＭＷ）電力を消費し、３３ペタフロップ（ＰＦ）の性能を実現する。この性能は、およそ指数関数的な割合で伸びることが期待されるが、利用できる電力は、約２０ＭＷ以下に留まることが期待される。典型的に、電力割当量は、２０ＭＷである可能性が低く、１５分毎の頻度で変化することがある。
【０００５】
既存のＨＰＣジョブ・スケジューラは、決定論的性能を用いてＰＣジョブ電力を制限することができない。典型的なジョブ・スケジューラは、単にジョブについて電力キャップを設定する。同じジョブを実行するＨＰＣシステムのノードは、異なる周波数で動作し、不平衡かつ非決定論的な挙動をもたらすことがある。
【０００６】
現在のところ、ジョブの電力キャップは、設備電力割当量が変化し、一部のジョブが完了し、一部のジョブが一時停止されるとしても固定される。現行のＨＰＣシステムは、設備電力制限及び一時停止されたジョブ優先度に基づいてジョブの電力キャップを動的に変更することがない。
【０００７】
従来型のＰＣシステムでは、システムレベル電力制限は、ジョブへの電力を制限することによって達成される。典型的に、計算作業は、何千ものチャンクに分割され、何千ものノードに分散する。これらのノードシステムは、先に進む前に毎秒何百回も相互に同期する。システム内の最も遅いノードは、他の全てのノードを待機させる。この課題に取り組む従来型のアプローチは、全てのノードを同じ周波数で動かすことである。計算に基づいて、ノードによって消費される電力は、増減することがあり得る。従来型のＨＰＣシステムでは、ジョブがこのジョブに割り当てられた電力を超える電力を消費しないことを確実にするために、全てのノードは、最大電力を消費すること、及び、全てのノードに対し最低周波数が選択されることが仮定される。しかしながら、このことは、システムが電力ヘッドルームを有する場合であってもシステム内のノードの一部が低減された周波数で動作する必要があることを意味する。従来型のシステムでは、ジョブは、このジョブに割り当てられた、又は、確保された電力の全てを使用していない。この割り当てられ、かつ、使用されていない電力は、ストランデッド電力と呼ばれる。非零のストランデッド電力は、重要かつ乏しいエネルギー資源の無駄である。
【図面の簡単な説明】
【０００８】
発明の実施形態は、発明の実施形態を例示して説明する以下の記述及び添付図面を参照して最もよく理解されることがある。
【図１】一実施形態に係る、データ処理システムへの電力入力を例示して説明するブロック図である。
【図２】一実施形態に係る、ジョブをスケジュールに入れるユーザ入力を提供するユーザインターフェースを例示して説明する図である。
【図３】一実施形態に係る、電力管理を提供するロジックの例示的なブロック図である。
【図４】一実施形態に係る、電力監視情報を使用してジョブを管理するデータ処理システムを例示して説明するブロック図である。
【図５Ａ】一実施形態に係る、パワーアウェア開始時刻スケジューラ及びランタイム・ジョブ・マネージャを備えるデータ処理システムを例示して説明するブロックである。
【図５Ｂ】一実施形態に係る、データ処理システムを動作させる方法のフローチャートである。
【図５Ｃ】一実施形態に係る、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法のフローチャートである。
【図６】一実施形態に係る、電力監視が利用できるときに４つのジョブモードに対して均一周波数を設定するアルゴリズムを例示して説明する表である。
【図７】一実施形態に係る、電力監視が利用できないときに４つのジョブモードに対して均一周波数を設定するアルゴリズムを例示して説明する表である。
【図８】一実施形態に係る、パワーアウェア・スケジューラ及びマネージャのための電力余裕を例示して説明する図である。
【図９Ａ】一実施形態に係る、電力をジョブに動的に割り当てるパワーアウェア・ジョブ・スケジューラ及びマネージャのための例示的な校正表を示す図である。
【図９Ｂ】一実施形態に係る、電力をジョブに割り当てる方法のフローチャートである。
【図９Ｃ】別の実施形態に係る、電力をジョブに割り当てる方法のフローチャートである。
【図９Ｄ】一実施形態に係る、ジョブへの電力を削減する方法のフローチャートである。
【図９Ｅ】一実施形態に係る、ジョブを終了する方法のフローチャートである。
【図９Ｆ】一実施形態に係る、より多くのジョブを受け入れるために電力を再平衡化する方法のフローチャートである。
【図９Ｇ】別の実施形態に係る、ジョブへの電力を削減する方法のフローチャートである。
【図９Ｈ−１】一実施形態に係る、パワーアウェア・ジョブ・スケジューラ及びジョブ・マネージャを提供する方法のフローチャートである。
【図９Ｈ−２】一実施形態に係る、パワーアウェア・ジョブ・スケジューラ及びジョブ・マネージャを提供する方法のフローチャートである。
【図９Ｈ−３】一実施形態に係る、パワーアウェア・ジョブ・スケジューラ及びジョブ・マネージャを提供する方法のフローチャートである。
【図１０】一実施形態に係る、電力監視の有無の下でシステムの性能の例を表す図である。
【図１１】一実施形態に係る、異なるモードで同時に実行するジョブを有する混合モード構成を例示して説明する表である。
【図１２−１】一実施形態に係る、図１１に表された混合モード構成の結果を表す図である。
【図１２−２】一実施形態に係る、図１１に表された混合モード構成の結果を表す図である。
【図１３】一実施形態に係る、同時に実行する異なるモードで２つのジョブを有する構成を例示して説明する表である。
【図１４】一実施形態に係る、図１３に表された構成への時変システム電力制限（ＰＳＹＳ）の影響を例示して説明する図である。
【図１５】一実施形態に係る、図１３に描かれた２つの事例に関する時変ＰＳＹＳの影響を表す図である。
【図１６】一実施形態に係る、自動モードで実行するジョブの可変ＰＳＹＳへの適合性を例示して説明する図である。
【図１７】一実施形態に係る、利用できるシステム電力（ＰＳＹＳ）と対比して同じ作業負荷に関して自動モードでのジョブについての周波数と固定周波数モードでのジョブについての周波数との比率を示す図である。
【図１８】一実施形態に係る、固定周波数モードでのジョブと相対的な自動モードでのジョブの完了までの時間の増加率百分率を表すグラフである。
【図１９】一実施形態に係る、データ処理システムを例示して説明する図である。
【発明を実施するための形態】
【０００９】
電力制限の範囲内で、高エネルギー効率でＨＰＣシステムを動作させるパワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法及び装置について説明する。電力制限（キャップ）の下での動作をサポートするために、本明細書において記載された通りのＨＰＣジョブ開始時刻スケジューラ及びランタイム・マネージャは、固定電力バジェットの範囲内で最良の性能を発揮するために電力を認識している。設備電力割当量が変化すると、一部のジョブは、完了するか、又は、一時停止され、本明細書に記載された通りのパワーアウェア・ジョブ開始時刻スケジューラ及びランタイム・マネージャは、電力キャップ増加の時間的期間をジョブに提供するためにジョブ電力割当量を調整するので有利である。
【００１０】
以下の説明では、例示的に説明する実装の様々な態様は、当業者によって自分の業績の実体を他の当業者に伝えるために一般的に使用される用語を使用して記載されるであろう。しかしながら、本発明は、前述の態様のうち一部だけを用いて実施されてもよいことが当業者に明白であろう。説明の目的のため、具体的な数字、材料及び構成は、例示的に説明する実装の徹底的な理解をもたらすために記載される。しかしながら、本発明は、具体的な詳細なしで実施されることがあることが当業者に明白であろう。他の事例では、周知の特徴は、例示的に説明する実装を不明瞭にしないように省かれる、又は、簡略化される。
【００１１】
様々な動作は、本発明を理解するのに最も役立つ方法で、順番に、複数の別々の動作として記載されるが、記載の順序は、これらの動作が必然的に順序依存性であることを意味するものとして解釈されるべきではない。特に、これらの動作は、提示の順序に実行される必要はない。
【００１２】
ある種の例示的実施形態が記述され、添付図面に表されているが、これらの実施形態は、単に例示的に説明するものであって、限定的ではないこと、及び、実施形態は、当業者が変更を思い付くことがあるので、図示され、記述された具体的な構成及び配置に限定されないことが理解されるべきである。
【００１３】
明細書全体を通じて、「一実施形態」、「別の実施形態」、又は「実施形態」への言及は、この実施形態に関連して記載された特別な特徴、構造、又は特性が少なくとも１つの実施形態に含まれることを意味する。従って、明細書全体を通じて様々な箇所における「一実施形態」及び「実施形態」などの言い回しの出現は、必ずしも全てが同じ実施形態を参照しているのではない。更に、特別な特徴、構造、又は特性は、１つ以上の実施形態において何らかの適当な方法で組み合わされることがある。
【００１４】
その上、発明の態様は、単一の開示された実施形態の特徴のうち全部に満たない特徴にある。従って、詳細な説明の後に続く特許請求の範囲は、本明細書によって明示的に詳細な説明に組み込まれ、各請求項は、別個の実施形態として独立している。例示的実施形態が本明細書に記載されているが、当業者は、これらの例示的実施形態が本明細書に記載された通りの変更及び変化を加えて実施され得ることを認めるであろう。記述は、このようにして、限定的ではなく例示的に説明するものとして扱われるべきである。
【００１５】
本明細書に記載されたパワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法及び装置は、電力バジェットをジョブに動的に割り当て、ジョブ寿命中に、従来型のシステムと比べて、ジョブを開始する確率を上げる、ジョブをより高速に実行する、及び、ストランデッド電力を削減するという点で有利である電力バジェットの動的制御を行う。少なくとも一部の実施形態では、ジョブのための電力割当量は、ユーザの選択、例えば、ジョブが何らかの電力制限を受ける可能性があるか否か、システム電力割当量が所定の閾値を下回るときジョブが一時停止され得るか否か、又は、これらのいずれかの組合わせに依存する。少なくとも一部の実施形態では、ジョブを開始するため、ジョブのため必要とされる電力は、２０１４年１２月２４日付けで出願された“METHODS  AND  APPARATUS  TO  ESTIMATE  POWER  PERFORMANCE  OF  A  JOB  THAT  RUNS  ON  MULTIPLE  NODES  OF  A  DISTRIBUTED  COMPUTER  SYSTEM”と題される関連米国特許出願第１４／５８２，７８５号（代理人文書番号４２Ｐ７４３９８）に記載されている通り電力推定技術のうち１つを使用して、及び、２０１４年１２月２４日付けで出願された“METHOD  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”と題される関連米国特許出願第１４／５８２，７８３号（代理人文書番号４２Ｐ７４５６２）に記載されている通り電力校正技術のうち１つを使用して推定される。
【００１６】
少なくとも一部の実施形態では、ジョブを実行する全てのノードの均一周波数は、システムの電力ヘッドルーム（利用できる電力）に基づいて動的に変更される。同じジョブを実行する各ノードで均一周波数が使用される。ＨＰＣ分野専門家は、自分のアプリケーションを均一周波数で微調整した。パワーアウェア・スケジューラ及びマネージャは、更に詳細に後述される通り、付加的な不平衡を招かない点で有利である。
【００１７】
少なくとも一部の実施形態では、ジョブ電力、システム電力、ジョブの完了、及びジョブ一時停止状態は、２０１４年１２月２４日付けで出願された“PROFILING  A  JOB  POWER  AND  ENERGY  CONSUMPTION  FOR  A  DATA  PROCESSING  SYSTEM”と題される関連米国特許出願第１４／５８２，７５６号（代理人文書番号４２Ｐ７４５６８）に記載されている通り、１つ以上の監視技術を使用して監視される。活動中のジョブの電力キャップは、監視に基づいて動的に調整される。これは、活動中のジョブの性能を最大化する点で有利である。ＨＰＣ設備電力が変化を制限するとき、ジョブの電力キャップ動的調整は、システムの最適スループットを保証する点で有利である。
【００１８】
少なくとも一部の実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャは、更に詳細に後述される通り、作業負荷最大電力（Ｐｍａｘ）、作業負荷最小電力（Ｐｍｉｎ）、作業負荷平均電力（Ｐａｖｇ）、及びプラットフォーム最大電力（ＰＭＰ）を取得するために、（２０１４年１２月２４日付けで出願された“METHOD  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”と題される関連米国特許出願第１４／５８２，７８３号（代理人文書番号４２Ｐ７４５６２）に記載された）電力校正装置、及び、（２０１４年１２月２４日付けで出願された“METHOD  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”と題される関連米国特許出願第１４／５８２，７８３号（代理人文書番号４２Ｐ７４５６２）に記載された）電力推定装置とインターフェースをとる。パワーアウェア・ジョブ・スケジューラ及びマネージャは、校正装置及び推定装置からの現実的な入力を使用するので、電力調整ガードバンドが最小化され、システムの性能が最大化される点で有利である。
【００１９】
一実施形態では、ジョブ電力調整毎に均一周波数が提供される。ジョブを実行する全てのノードは、同じ周波数にあるので、不平衡は招かれない。ジョブ毎の電力キャップは、設備電力能力及び一時停止されたジョブ優先度のうち少なくとも一方に基づいて動的に設定される。パワーアウェア・ジョブ・スケジューラ及びマネージャは、従来型のシステムと比べてパワーアウェア・スケジューリングをより正確にするために開始時刻及びランタイム電力校正装置及び推定装置とインターフェースをとる。
【００２０】
少なくとも一部の実施形態では、データ処理システム及びジョブのための電力消費を制限する方法について記述する。ジョブのための電力は、更に詳細に後述される通り、共通周波数で動く全てのノードを有するシステム内で制限される。
【００２１】
図１は、一実施形態に係るデータ処理システム１０１への電力入力を例示で説明するブロック図１００である。データ処理システム１０１は、複数のノード、例えば、１つ以上のヘッドノード１０２と、中央処理ユニット（ＣＰＵ）ノード１０３及びＣＰＵノード１０４などの１つ以上の計算ノードと、１つ以上の入出力（ＩＯ）ノード１０５と、１つ以上のオペレーティングシステム（ＯＳ）ノードと、高速ファブリック１０６に結合されたその他のノードとを備える。一実施形態では、ヘッドノード１０２は、１つ以上のオペレーティングシステム（ＯＳ）ノードを備える。高速ファブリックは、１つ以上のスイッチを介して相互接続されたノードのネットワークトポロジーでもよい。一実施形態では、ノード１０３、１０４及び１０５などのノードは、それぞれ、メモリに結合された１つ以上のプロセッサ、１つ以上のコントローラ、又は両方を備える。ヘッドノード１０２は、パワーアウェア・ジョブ・スケジューラ及びマネージャ１１３の少なくとも一部がメモリに記憶されたリソース・マネージャを備える。少なくとも一部の実施形態では、リソース・マネージャは、複数のノード上で動く分散リソース・マネージャである。代替的な実施形態では、リソース・マネージャは、１つ以上のヘッドノード、１つ以上のＣＰＵノード、１つ以上のＩＯノード、又はこれらのいずれかの組合わせの上で動く。一実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャ１１３は、ジョブについてのモードの指示を受信し、モードに基づいてジョブのために利用できる電力を決定し、利用できる電力に基づいて電力をジョブに割り当てるように構成される。一実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャ１１３は、利用できる電力に基づいてジョブについての均一周波数を決定するように構成される。一実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャ１１３は、監視された電力、推定された電力、及び校正された電力のうち少なくとも１つに基づいてジョブのために利用できる電力を決定するように構成される。パワーアウェア・ジョブ・スケジューラ及びマネージャ１１３は、更に詳細に後述される通り、電力消費に関する情報を受信し、電力バジェットを各ジョブに分配し、電力を制限するために均一周波数メカニズムを実装するように構成される。
【００２２】
一実施形態では、ヘッドノード１０２は、２０１４年１２月２４日付けで出願されたPROFILING  A  JOB  POWER  AND  ENERGY  CONSUMPTION  FOR  A  DATA  PROCESSINGと題される米国特許出願第１４／５８２，７５６号（代理人文書番号４２Ｐ７４５６８）に記載されている通り電力モニタ（図示せず）と、２０１４年１２月２４日付けで出願されたMETHODS  AND  APPARATUS  TO  ESTIMATE  POWER  PERFORMANCE  OF  A  JOB  THAT  RUNS  ON  MULTIPLE  NODES  OF  A  DISTRIBUTED  COMPUTER  SYSTEMと題される米国特許出願第１４／５８２，７９５号（代理人文書番号４２Ｐ７３４９８）に記載された電力推定装置（図示せず）と、２０１４年１２月２４日付けで出願されたMETHOD  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と題される米国特許出願第１４／５８２，７８３号（代理人文書番号４２Ｐ７４５６２）に記載された電力校正装置（図示せず）と、を備える。一実施形態では、ＣＰＵ  １０３などの１つ以上のＣＰＵノードは、メモリに記憶されたパワーアウェア・ジョブ・スケジューラ及びマネージャ１１３の一部（図示せず）を備える。一実施形態では、１つ以上のＩＯノードノード１０５は、メモリに記憶されたパワーアウェア・ジョブ・スケジューラ及びマネージャ１１３の一部（図示せず）を備える。入力１０８、１０９、１１０、１１１及び１つ以上の入力１１２などの複数の電源入力がシステム１０１に設けられる。入力１０８は、システム電力割当量に関するデータ（Ｐｓｙｓ）を含む。入力１０９は、ユーザ１１６などの１人以上のユーザからのジョブＸに対する電力ポリシーを含み、入力１１０は、ユーザ１１６などの１人以上のユーザからのョブＹに対する電力ポリシーを含み、入力１１１は、ユーザ１１６などの１人以上のユーザからのジョブＮに対する電力ポリシーを含む。入力１１２は、ジョブと、ジョブ・スケジューラと、ジョブ・ランチャー及びその他のリソース・マネージャと、データ処理システムと、又は、これらのいずれかの組合わせに対する１つ以上の管理ポリシーを含む。
【００２３】
一実施形態では、高速ファブリック１０６は、ネットワーク、例えば、イーサネット（登録商標）、Ｏｍｎｉ−Ｐａｔｈ、ＩｎｆｉｎｉＢａｎｄ、又はその他のネットワークである。１つ以上のＩＯノード１０５は、１つ以上のストレージノード１０７に結合される。ストレージノード１０４は、揮発性メモリ（例えば、各種のランダム・アクセス・メモリ「ＲＡＭ」）などの非永続ストレージ、不揮発性メモリ（例えば、リード・オンリ・メモリ「ＲＯＭ」、パワーバック型ＲＡＭ、フラッシュメモリ、相変化メモリなど）などの永続ストレージ、固体メモリ、ハードディスクドライブ、光ディスクドライブ、携帯型記憶装置、又はこれらのいずれかの組合わせを備えることがある。
【００２４】
一実施形態では、１つ以上のストレージノード１０７は、システム１００の一部分である。別の実施形態では、１つ以上のストレージノード１０７は、ネットワークを介して１つ以上のノード１０５に結合される。一実施形態では、システム１００は、ＨＰＣシステムである。別の実施形態では、システム１００は、クラウド・コンピューティング・システムである。一実施形態では、システム１００は、ジョブを実行する何千ものノードを有するＨＰＣクラスタシステムである。更に別の実施形態では、システム１００は、企業ネットワークシステム、又はその他のデータ処理システムである。
【００２５】
ヘッドノード１０２は、計算ノード、例えば、計算ノード１０３及び１０４へのアクセスのゲートウェイを提供することがある。例えば、計算ノードでの処理のためジョブを投入する前に、ユーザは、ヘッドノード１０２を介することがあるシステム１００へのログインを要求されることがある。一実施形態では、ヘッドノード１０２は、ユーザによって投入されたジョブを受け付け、計算ノードによって処理されるジョブの開始及び管理を支援することがある。
【００２６】
一実施形態では、計算ノードは、処理及び計算能力の大半を提供する。Ｉ／Ｏノードは、計算ノードと、システム１００に入力を提供する、又は、ＨＰＣシステムから出力を受信することがある外部機器（例えば、別個のコンピュータ）との間にインターフェースを提供することがある。
【００２７】
システム電力割当量（Ｐｓｙｓ）は、（例えば、データセンター・マネージャなどのシステムアドミニストレータ又は管理ソフトウェアによって決定された通り）例えば、ユーティリティ管理設備によってシステム１００に提供されることがある。典型的に、Ｐｓｙｓは、１人以上のユーザによって要求されたジョブのうち１つ以上を実行するために使用される。各ジョブは、電力をジョブに割り当てる際にシステム１００を支援し、システム１００によって実行されている１つ以上のジョブの管理を補助する電力ポリシーを含む。
【００２８】
その上、管理ポリシーは、システム１００の動作を定義する包括的なポリシーを提供することによりジョブを実行する管理を案内する。管理ポリシー１１２に含まれることがあるポリシーの例は、制限されることなく、又は、限定されることなく、（１）全てのハードウェア及びソフトウェア資源の利用を最大化すること（例えば、より少ないジョブを高い電力で実行して、資源を未使用状態にしておくのではなく、できる限り多くの資源を使用するためにできる限り多くのジョブを実行する）、（２）全ての実行中のジョブの中で電力制限のないジョブに最高優先度を与えること、及び／又は、（３）一時停止されたジョブは、再開のためより高い優先度にあることを含む。これらの管理ポリシーは、システム１００が１つ以上のジョブをスケジュールに入れる、開始する、一時停止する、及び再開することがある。
【００２９】
一実施形態では、システム１００のための電力可用性は、開始され、一時停止され得ないジョブのため電力を確保するために決定される。パワーアウェア・スケジューラは、電力制限の有無にかかわらずジョブを管理するために使用される。パワーアウェア・スケジューラは、ジョブを実行するために必要とされる電力を推定するために使用される。ノードの電力性能校正は、この推定を進めるために使用される。一実施形態では、電力推定値は、サンプル作業負荷又は過去のジョブの実行について収集された電力性能データに基づいて決定される。推定値は、ガードバンドが埋め込まれていることがあるが、ジョブの実際の電力消費量は、異なることがあり得る。ジョブレベルの電力監視は、推定値と実際の電力消費量との間の差を評価する。この評価は、各ジョブへの電力割当量を微調整する機会を生み出す。
【００３０】
一般に、電力ポリシーは、ジョブによって消費された電力がジョブ割当量の範囲内に留まることを確実にするために使用される制御メカニズムである。電力監視は、電力ポリシーに影響を与える。電力監視の欠如は、ジョブが割当量より多くの電力を消費することがないように、大量の電力割当ガードバンドを必要とすることがある。この多量の割当量は、最悪の事態の作業負荷に対する最大電力以上であることが必要である。
【００３１】
図２は、一実施形態に従って、ジョブをスケジュールに入れるためにユーザ入力を提供するユーザインターフェース２００を例示して説明する図である。ユーザ入力は、ジョブについてのモード選択を含む。ジョブについてのモード選択は、ジョブが電力制限を受けるか否かに関する指示、ジョブについての電力制限ポリシーに関する指示、ジョブについての一時停止ポリシーに関する指示、又はこれらのいずれかの組合わせを含む。ユーザインターフェース２００は、表示エリア２１０、２２０及び２３０を含む。表示エリア２１０は、ユーザにジョブが電力制限を受けるか否かを指定させる。図２に表されるように、選択肢「はい」２０１は、ジョブに電力制限があることを指示し、選択肢「いいえ」２０２は、ジョブに電力制限がないことを指示する。
【００３２】
表示エリア２２０は、ユーザによってジョブが電力制限を受けることが許されるときに、所定の電力制限ポリシーのうち１つの選択に関連する。選択肢２０３は、電力を制限するポリシーが固定周波数ポリシー（「固定周波数」）であることを指示し、この固定周波数ポリシーでは、ユーザは、ジョブが実行することになる１つ以上のノードが動作すべき特定の周波数２０８を指定する。選択肢２０４は、ポリシーが最小ジョブ電力ポリシー（「最小電力モード」）であることを指示し、この最小ジョブ電力ポリシーによれば、ユーザは、ジョブが実行することになる１つ以上のノードに供給されるべき最小電力２１１を指定する。選択肢２０５は、ポリシーが最大ジョブ電力ポリシー（「最大電力モード」）であることを指示し、この最大電力ポリシーによれば、ユーザは、ジョブが実行することになる１つ以上のノードに供給されるべき最大電力２１２を指定する。選択肢２０９は、ポリシーが自動モード（「自動モード」）であることを指示し、この自動モードによれば、１つ以上ノードがジョブを実行するために動作する周波数、ジョブが動いている１つ以上のノードに供給される電力、又は両方は、ジョブに対する電力割当量に基づいて動的に調整され得る。
【００３３】
表示エリア２３０は、ジョブが処理中に一時停止されることがあるか否かの選択に関連する。選択肢「はい」２０６は、ジョブが一時停止され得ることを指示する。選択肢「いいえ」２０７は、ジョブが一時停止され得ないことを指示する。一実施形態では、ジョブは、２０１４年１２月２４日付けで出願された“METHODS  AND  APPARATUS  TO  MANAGE  JOBS  THAT  CAN  AND  CANNOT  BE  SUSPENDED  WHEN  THERE  IS  A  CHANGE  IN  POWER  ALLOCATION  TO  A  DISTRIBUTED  COMPUTER  SYSTEM”と題される関連米国特許出願第１４／５８２，７７２号（代理人文書番号４２Ｐ７４５６６）に記載されたジョブ一時停止技術のうち１つを使用して一時停止される。
【００３４】
ユーザインターフェース画面は、ユーザが、例えば、電力ポリシー、最小必要周波数、最小必要電力、最大電力、及び／又は、ジョブが一時停止されることがあるか否かなどの入力パラメータをデータ処理システム１００に提供する唯一の方法ではない。代替的に、これらのパラメータは、ジョブ投入の一部分として、及び／又は、構成ファイル（例えば、テキストファイル）としてシステム１００に提供されることがある。更に別の実施形態では、これらのパラメータは、システムアドミニストレータ、設備マネージャ／アドミニストレータによって設定されることがあり、及び／又は、システム１００とのユーザのアカウントの一部分として予め定められることがある。更に別の実施形態では、これらのパラメータは、ジョブを使用して設定されることがある。例えば、ジョブがチェックポインティングをサポートしない場合、ジョブは、一時停止され得ない。
【００３５】
一実施形態では、ジョブについての均一周波数は、利用できる電力に基づいて決定される。一実施形態では、ジョブについての均一周波数は、ユーザによって選択されたモードのうち１つを使用して決定される。同じジョブを実行するノードの全てのプロセッサは、同じ均一周波数で動作する。均一周波数電力制限は、周波数がどのようにして選択されるか、及び、同じ周波数がジョブの間中ずっと維持されるか否かに基づいて様々な方法で発動される。均一周波数でジョブを実行する４つのポリシー：ａ）ユーザは、ジョブの持続期間中の動作周波数を選択する（固定周波数モード）、ｂ）ユーザは、ジョブに割り当てられるべき最小電力レベルを指定する（最小電力モード）、ｃ）ユーザは、ジョブに割り当てられるべき最大電力レベルを指定する、ｄ）ユーザは、ジョブに対し自動モードを指定するは、ジョブ周波数を決定するために使用される。自動モード、最小電力及び最大電力モードのうち１つを用いて、パワーアウェア・ジョブ・スケジューラ及び作業負荷マネージャは、電力ヘッドルームに基づいてジョブについての均一周波数を調整する。
【００３６】
図３は、一実施形態に係る電力管理を提供する論理３００の例示的ブロック図である。一実施形態では、ロジック３００は、システム１００の一部分である。ロジック３００は、ジョブをスケジュールに入れ、開始するリソース・マネージャ３０１と、校正装置３０６と、推定装置３０５と、１つ以上のジョブ・マネージャ３１２とを備える。リソース・マネージャ３０１は、パワーアウェア・ジョブ・ランチャー３０３に結合されたパワーアウェア・ジョブ・スケジューラ３０２を備える。一実施形態では、各ジョブは、ジョブ・マネージャを有する。一実施形態では、リソース・マネージャ３０１は、図１に描かれたヘッドノード３０２などのヘッドノードの一部分である。一実施形態では、図１に描かれたパワーアウェア・ジョブ・スケジューラ１１３は、リソース・マネージャ３０１の少なくとも一部を表現する。
【００３７】
リソース・マネージャ３０１は、複数の入力、例えば、１つ以上のユーティリティルール３０８と、１つ以上の設備ルール３０９と、ユーザポリシー入力３１０及びアドミニストレータポリシー入力３１１と、推定装置３０５、校正装置３０６、及びノードのパワーアウェア・セレクタ３０７からの入力とを受信する。
【００３８】
推定装置３０５は、ジョブ、例えば、ジョブ３０４の電力及び性能を推定するように構成される。推定装置３０５は、リソース・マネージャ３０１に各ジョブについての電力消費量の推定値を提供し、リソース・マネージャ４０１が１人以上のジョブ所有者（例えば、ユーザ）によって要求された各ジョブを効率的にスケジュールに入れ、監視することを可能にする。推定装置３０５は、例えば、校正データベースに記憶された最大電力値及び平均電力値に基づいて電力消費推定値を提供することがあり、校正データベースは、校正装置３０６の処理によってデータ投入される。その上、各ジョブに対して要求される最小電力が考慮されることがある。電力消費推定値を作成するために推定装置３０５によって使用されることがあるその他の要因は、制限されることなく、又は、限定されることなく、ジョブの所有者によってジョブが電力制限を受けることが許されるか否か、ジョブに供給される電力を制限するジョブ電力ポリシー（例えば、ジョブが実行することになる所定の固定周波数、ジョブについての最小必要電力、又は、リソース・マネージャ３０１によって決定された可変周波数及び／又は供給電力）、ジョブの起動電力、ジョブが動くときの周波数、システム１００に利用できる電力、システム１００に割り当てられた電力、又は両方を含む。一実施形態では、推定装置３０５は、２０１４年１２月２４日付けで出願された“METHODS  AND  APPARATUS  TO  ESTIMATE  POWER  PERFORMANCE  OF  A  JOB  THAT  RUNS  ON  MULTIPLE  NODES  OF  A  DISTRIBUTED  COMPUTER  SYSTEM”と題される関連米国特許出願第１４／５８２，７９５号（代理人文書番号４２Ｐ７３４９８）に記載された推定装置のうち１つを表現する。
【００３９】
校正装置３０６は、データ処理システムのノードの電力及び性能を校正するように構成される。校正装置３０６は、データ処理システム１００の内部の各ノードの電力、熱散逸及び性能を校正する。校正装置３０６は、ＨＰＣシステム３０６の内部のノードを校正する複数の方法を提供することがある。一実施形態では、校正装置３０６は、システム１００の内部のあらゆるノードがサンプル作業負荷（例えば、ミニアプリケーション及び／又はテストスクリプト）を実行する校正の方法を提供することがあるので、校正装置３０６は、例えば、各ノードに対する（１）平均電力、（２）最大電力、及び（３）最小電力を決定するために、所定の時間間隔で様々なパラメータ（例えば、消費電力）をサンプリングすることがある。その上、サンプル作業負荷は、ノードのあらゆる動作周波数で各ノードにおいて実行されることがある。
【００４０】
別の実施形態では、校正装置３０６は、１つ以上のノードの校正がジョブの実行時に行われる校正方法を提供することがある。この状況では、校正装置３０６は、ジョブが実行されている（例えば、処理している）１つ以上のノードをサンプリングすることがある。校正装置３０６は、実際の実行時に各ノードの電力測定値を取得する。一実施形態では、校正装置３０６は、２０１４年１２月２４日付けで出願された“METHOD  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”と題される関連米国特許出願第１４／５８２，７８３号（代理人文書番号４２Ｐ７４５６２）に記載された電力校正装置のうち１つを表現する。
【００４１】
一実施形態では、電力校正装置と推定装置との間のインターフェースは、以下の通りである。ＰＭＰ（プラットフォーム最大電力）：利用できる各周波数（例えば、１．２ＧＨｚから公称周波数（Ｐ１周波数）、及びターボ周波数）に対し、ノードの最大電力（ノードＰＭＰ）が決定される。Ｐｍａｘは、ジョブ寿命中の最大ノード電力である。Ｐｍｉｎは、ジョブ寿命中の最小ノード電力である。Ｐａｖｇは、ジョブ寿命中の平均ノード電力である。ＰＭＰは、作業負荷非依存性である。Ｐｍａｘ、Ｐｍｉｎ及びＰａｖｇは、作業負荷依存性である。
【００４２】
ユーザ（例えば、ジョブの所有者）によって要求された各ジョブは、ユーザポリシー入力３１０を伴う。ユーザポリシーは、図２に関連して記載された通り、少なくともジョブ３０４が電力制限を受けるか否かに関する決定と、電力制限が許可される場合、電力を制限するポリシー（例えば、固定周波数、最小必要電力、若しくは可変周波数及び／又はリソース・マネージャ３０１によって決定された電力）と、ジョブ３０１が一時停止されることがあるか否かと、を含む。
【００４３】
ノード３０３のパワーアウェア・セレクタは、ジョブ、例えば、ジョブ３０４を実行するノードを選択するように構成される。代替的な実施形態では、ノード３０３のパワーアウェア・セレクタは、ジョブ、例えば、ジョブ電力割当量、ジョブ構成パラメータ、ジョブ通信レイテンシー、距離、ホップ数、その他の基準、又はこれらのいずれかの組合わせに基づいてノードを選択する。例えば、ユーザは、ジョブを実行するために必要とされるコア、スレッド、又は両方の数を指定することができる。例えば、ユーザは、選択されたノードが制限された距離（又はネットワークファブリックのホップ）の範囲内であることが必要であるように、通信レイテンシーが限度の範囲内でなければならないことを宣言することができる。リソース・マネージャ３０１は、受信された入力、例えば、入力３０５、３０６、３０７、３０８、３０９、３１０、３１１のうち１つ以上に基づいてジョブ３０４をスケジュールに入れ、開始するためにパワーアウェア・ジョブ・スケジューラ３０２及びパワーアウェア・ジョブ・ランチャー３０３を使用する。一実施形態では、リソース・マネージャ３０１は、ユーザが実行したい対話式ジョブ及びバッチジョブのための計算資源及びＩ／Ｏ資源の割当を担当しているソフトウェアオブジェクトである。典型的に、リソース・マネージャ３０１は、スケジュール通りに実行するためにジョブをスケジュールされたジョブキューから取り出し、開始することも担当している。
【００４４】
一般に、ユーザは、実行されるべきプログラム（「ジョブ」）をキューに入れる。ジョブキューは、実行すべきジョブを収容するデータ構造体を指す。一実施形態では、パワーアウェア・ジョブ・スケジューラ３０２は、適切な時点に（周期的に、又は、ある種のイベント時、例えば、既に実行しているジョブの終了時に）ジョブキューを検査し、ジョブを実行するために必要とされる電力などの資源を割り当てることができるかどうかを決定する。場合によっては、これらの資源は、未来の時点だけに割り当てることができ、この場合、ジョブは、指定された未来の時点で実行するようにスケジュールに入れられる。
【００４５】
ジョブが実行されるようにスケジュールに入れられているとき、ジョブ・ランチャー３０３は、キューからジョブを抜き取り、適切な資源（例えば、計算ノード、ネットワーク、時間）が割り当てられていると決定した後、ジョブ・ランチャー３０３は、ユーザによって指定された入力（例えば、ジョブポリシー、電力モード、及びその他の入力パラメータ）に従ってジョブを始動するために、割り当てられた資源を使用してプロセスをスポーンする。ジョブ・ランチャー３０３は、ジョブを開始する前に実行されるプロローグタスク及びジョブの終了時に実行されるエピローグタスクを有することもあり得る。プロローグ及びエピローグは、コンピュータの状態をセットアップし、実行後に状態を除去するために使用される。
【００４６】
ジョブ・マネージャ３１２は、より詳細に後述される通り、ジョブに割り当てられた電力バジェットの範囲内に留まるようにジョブ３０４を制御するために構成される。一実施形態では、ジョブ・マネージャ３１２は、ジョブが開始された後、１つ以上の電力ポリシーの制約の範囲内でジョブを動作させることを担当する。一実施形態では、ジョブ・マネージャ３１２は、ユーザとアドミニストレータとの少なくとも一方によって指定されたポリシーの通りジョブの実行に関与する全てのコンポーネント（例えば、ノード、又はその他のコンポーネント）の電力性能を制御するために使用される。
【００４７】
図４は、一実施形態に従って、電力監視情報を使用してジョブを管理するデータ処理システム４００を例示して説明するブロック図である。データ処理システムは、ノード４０２及びノード４０３などの１つ以上のノードに結合されたヘッドノード４０１を備える。一実施形態では、ヘッドノード４０１は、ヘッドノード１０２を表現する。一実施形態では、ノード４０２は、計算ノードである。一実施形態では、ノード４０２は、計算ノード１０３を表現する。別の実施形態では、ノード１０２は、ＩＯノードである。別の実施形態では、ＩＯノード４０３は、ＩＯノード１０５を表現する。ヘッドノード４０１は、ジョブ・マネージャ４０４に結合されたリソース・マネージャ４０６を備える。一実施形態では、ヘッドノード４０１は、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供するためにクラスタコントローラとしての役目を果たす。
【００４８】
一般に、リソース・マネージャ４０６及びジョブ・マネージャ４０４のそれぞれは、ヘッドノードだけにあること、又は、複数のノードに分散していることがある。一実施形態では、リソース・マネージャ４０６は、リソース・マネージャ３０１を表現する。一実施形態では、ジョブ・マネージャ４０４は、ジョブ・マネージャ３１２の一部を表現する。一実施形態では、リソース・マネージャ４０６及びジョブ・マネージャ４０４のそれぞれは、１つ以上のヘッドノードにある。別の実施形態では、リソース・マネージャ４０６及びジョブ・マネージャ４０４のそれぞれは、ヘッドノード及び計算ノードに分散している。一実施形態では、リソース・マネージャ４０６及びジョブ・マネージャ４０４は、２０１４年１２月２４日付けで出願された“PROFILING  A  JOB  POWER  AND  ENERGY  CONSUMPTION  FOR  A  DATA  PROCESSING  SYSTEM”と題される関連米国特許出願第１４／５８２，７５６号（代理人文書番号４２Ｐ７４５６８）に記載されている通り、ジョブ電力データを収集するように構成される。一実施形態では、リソース・マネージャ４０６及びジョブ・マネージャ４０４は、センサを読み取ることによりジョブ電力データを収集するように構成される。別の実施形態では、リソース・マネージャ４０６及びジョブ・マネージャ４０４は、データベース（例えば、データベース４０５）から読み取ることによりデータを収集するように構成される。更に別の実施形態では、リソース・マネージャ４０６及びジョブ・マネージャ４０４は、電力消費量の推定値を生じさせるために他のパラメータ、例えば、利用率、帯域幅、電力仕様を使用する。より具体的な実施形態では、リソース・マネージャ４０６は、インテリジェンス・プラットフォーム・マネジメント・インターフェース（ＩＰＭＩ）プロトコルを使用して電力情報を収集する。より具体的な実施形態では、ジョブ・マネージャ４０４は、ジョブ電力データベース４０５にアクセスし、ジョブについての電力情報を記憶又は取得する。一部の実施形態では、ジョブ電力データベース４０５は、ヘッドノード４０１の一部分である。別の実施形態では、ジョブ電力データベース４０５は、ネットワークを介してヘッドノード４０１に結合される。
【００４９】
ノード４０２は、ジョブ・マネージャ４０７を備える。一実施形態では、ジョブ・マネージャ４０７は、１つ以上の計算ノードにある。別の実施形態では、ジョブ・マネージャ４０７は、１つ以上のヘッドノード及び１つ以上の計算ノードに分散している。ジョブ・マネージャ４０７は、ジョブ・マネージャ４０４及びリソース・マネージャ４０６に結合される。ジョブ電力及びジョブ周波数を含むジョブデータは、ジョブ・マネージャ４０４とジョブ・マネージャ４０７との間で通信される。ノード電力、ネットワーク利用率、ネットワーク帯域幅を含む他の電力データは、ジョブ・マネージャ４０７とリソース・マネージャ４０６との間で通信される。一部の実施形態では、ジョブ・マネージャ４０７は、ジョブ・マネージャ３１２の一部を表現する。一実施形態では、ジョブ・マネージャ４０４及びジョブ・マネージャ４０７のそれぞれは、ジョブについての入力電力、出力電力、又は両方を報告するために、メモリに記憶され、プロセッサによって実行されるエージェント（アプリケーション、又はその他のコンピュータプログラム）を備える。ジョブ・マネージャ４０７は、インターフェース４１２に結合され、ジョブについての電力データを取得する。一実施形態では、電力データは、ジョブについてのノード電力、プロセッサ電力及びメモリ電力を含む。一実施形態では、インターフェース４１２は、ＩＰＭＩインターフェースである。ジョブ・マネージャ４０７は、ストレージ機器４１１を介してプロセッサ４１０に結合される。一実施形態では、プロセッサ４１０は、ＣＰＵである。代替的な実施形態では、プロセッサ４１０は、グラフィックス処理ユニット（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、又は他のプロセッサである。一実施形態では、プロセッサ周波数値は、ジョブ・マネージャ４０７とストレージ機器４１１との間で通信される。一実施形態では、ストレージ機器４１１は、オペレーティングシステム（ＯＳ）モデル固有レジスタ（ＭＳＲ）モジュール、又はその他のストレージ機器を備える。一実施形態では、ジョブ・マネージャ４０７は、ＯＳ  ＭＳＲモジュールを介してプロセッサ周波数に関連したプロセッサレジスタ値を取得し、設定する。
【００５０】
図５Ａは、一実施形態に従って、パワーアウェア開始時刻ジョブ・スケジューラ及びランタイム・ジョブ・マネージャ５０１を備えるデータ処理システムを例示して説明するブロック図５００である。パワーアウェア開始時刻ジョブ・スケジューラ及びランタイム・ジョブ・マネージャ５０１は、電力割当装置５０９に結合された電力推定装置５０８に結合されたノード・セレクタ５０７を備える。パワーアウェア・ジョブ・スケジューラ及びマネージャ５０１は、設備電力及びシステム電力５０２と監視対象電力５１１とのうち少なくとも一方を受け取る。パワーアウェア・ジョブ・スケジューラ及びマネージャ５０１は、電力制限を伴わない１つ以上のジョブ５０５と、電力制限及びモード入力のうち少なくとも一方を伴う１つ以上のジョブ５０６とを受け取る。設備電力及びシステム電力５０２は、システムの要求に応答してインターフェース５１２を介してエネルギー生産者５０４から受け取る。インターフェース５１２は、例えば、需要／応答インターフェースでもよく、又は、その他の適切なインターフェースでもよい。一実施形態では、電力推定装置５０８は、電力校正５０３を使用してジョブについての電力を推定する。ノード・セレクタ５０７は、設備電力及びシステム電力５０２と監視対象電力５１１とのうち少なくとも一方に基づいてジョブを実行するために１つ以上のノードを選択する。電力割当装置５０９は、ノード選択と電力推定とのうち少なくとも一方に基づいて電力をジョブに割り当てる。パワーアウェア・ジョブ・スケジューラ及びマネージャ５０１は、ジョブの電力性能５１０を制御する。
【００５１】
一実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャを備えるリソース・マネージャは、リアルタイムで、ジョブを管理し、電力バジェットを維持し、電力制約付きエネルギー効率を管理するように構成される。
【００５２】
一実施形態では、パワーアウェア・リソース・マネージャの機能は、
・システムの平均電力消費をプロビジョンされた電力レベルに又はプロビジョンされた電力レベルを少し下回るレベルに維持したままジョブを実行すること
・割り当てられた電力の全てを使用することによりジョブの性能及びエネルギー効率を最大化すること
・未使用資源をスリープ状態で動作させることにより無駄を削減すること
・設備仕様への電力消費ランプを管理すること
である。
【００５３】
［０００２］
用語の説明
プロビジョンされたシステムへの電力（ＰＳＹＳ）
ＰＳＹＳは、計算ノード、ＩＯノード、１つ以上のヘッドノード（例えば、ＯＳノード）、ネットワークスイッチ、及びストレージシステムを備えるシステムに対する電力割当量である。一実施形態では、需要／応答インターフェース５１２がＰＳＹＳを決定する。
【００５４】
システムのために利用できる電力
パワーアウェア・スケジューラは、ＰＳＹＳを様々なジョブに分配するために使用される。分配のために利用できる電力は、予め割り当てられた電力及び監視に依存する。監視無しの場合：利用できる電力＝（ＰＳＹＳ−割当電力）である。監視有りの場合：利用できる電力＝（ＰＳＹＳ−システムによる消費電力−ガードバンド）である。
【００５５】
プラットフォーム最大電力（ＰＭＰ）
監視が使用されないとき、パワーアウェア・スケジューラは、ジョブが使用できる最大電力に基づいて電力を割り当てざるを得ない。最大ジョブ電力は、ノードのプラットフォーム最大電力（ＰＭＰ）に基づいている。ＰＭＰは、最悪の場合の作業負荷に対してプログラムを実行することにより測定される。
【００５６】
ジョブのスタートアップ電力
ジョブは、開始するために、又は、一時停止から再開するために最小電力割当量、又はスタートアップ電力を必要とする。パワーアウェア・スケジューラは、スタートアップ電力を推定する。監視無しの場合、スタートアップ電力は、ＰＭＰである。監視有りの場合、スタートアップ電力は、校正に基づいて決定され得る。利用できる電力がスタートアップ電力より小さいとき、ジョブは、実行し得ない。
【００５７】
ジョブの最小必要電力（ＭＲＰ）
スケジューラは、不適切な電力に起因してある種のジョブを一時停止又は中止できないことがある。これらの「特殊な」ジョブには２つのカテゴリー：電力制限無しのジョブ及び一時停止できないジョブが存在する。パワーアウェア・スケジューラは、残っている電力を残りのジョブに分配する前に、これらのジョブのための電力を確保する。「特殊な」ジョブのそれぞれのために確保された電力の量は、最小必要電力（ＭＲＰ）と呼ばれる。電力制限有りのジョブに対して、ＭＲＰは、ＰＭＰ又は作業負荷最大電力のうち一方である。一時停止できないジョブに対して、ＭＲＰは、ジョブを最低周波数で動作させるために必要な電力である。ＭＲＰは、他のジョブ全てに対して零である。一実施形態では、電力制限無しで実行されるジョブは、ＰＳＹＳの減少による影響を受けない。一時停止できるジョブは、ＰＳＹＳが減少したとき、一時停止させられることがある。一時停止できないジョブは、最低周波数まで降下することがある。ＰＳＹＳは、システムが「特殊な」ジョブを実行し続けることができないこの低レベルまで降下することもある。このことは、ユーティリティがこれの電力割当量を減らしたとき、又は、電力供給若しくは冷却インフラストラクチャに故障が発生したときに起こることがあり得る。これらは、インフラストラクチャの高信頼性及び可用性を確保したままシステムに対するＭＲＰを通信するために需要／応答インターフェースを使用することにより回避され得る。
【００５８】
ジョブに対する割当電力
リソース・マネージャは、電力バジェットをジョブに割り当てる。この割当は、２つの目的のため：ａ）システムのために利用できる電力を決定するため、及びｂ）消費電力が割り当てられた電力とは著しく異なる場合に対して措置を講じるため使用される。
【００５９】
ストランデッド電力
理想的には、ジョブは、計算のため電力バジェット全体を使用する。実際には、消費量は、より少ない場合がある。電力がジョブに割り当てられたとき、この電力は、他のジョブのために利用できない。ジョブが割り当てられた電力の全てを使用しないとき、システムの性能は、影響が与えられる。割り当てられた消費量と実際の消費量との間の差は、ストランデッド電力である。ストランデッド電力は、未使用であり、かつ、システムの性能を発揮するために利用できず、従って、浪費される。本明細書に記載されたパワーアウェア・ジョブ・スケジューラ及びマネージャは、ストランデッド電力を最小化する。
【００６０】
システムに対する電力（ＰＳＹＳ）の決定
一実施形態では、ＰＳＹＳは、設備への電力割当量、設備内部の分配損失、サーバの外側での電圧変換損失、システムを冷却するために必要とされる電力、又は、これらのいずれかの組合わせから得られる。別の実施形態では、ＰＳＹＳの値は、スケジューラパラメータとして提供される。
【００６１】
ジョブを実行するために必要とされる電力の推定
スケジューラがジョブを開始できる前に、どれだけの電力が必要とされるかが推定される。電力推定値は、以下の条件：ａ）ノードの電力及び性能校正、ｂ）ジョブレベル電力を監視する能力、及びｃ）ジョブに対する電力を制限する電力ポリシーのユーザ選択のうち少なくとも１つによって支配される。
【００６２】
ノード校正
データ処理システムは、何千もの「同一の」ノードを使用することがあるが、電力及び性能特性は、ノード間で大きく異なることがあるエラー！参照元が見つかりません。。ハードウェア及び環境のばらつきは、同じ周波数で同じジョブを実行する別の同一のノードの異なるレベルの電力消費をもたらすことがあり得る。逆に、ハードウェア電力制限メカニズムが各ノードの消費量を強制的に同一にするとき、これらのノードの性能は、異なることがある。ノードレベル電力及び性能校正は、パワーアウェア・ジョブ・スケジューラにより良い決定のためのより小さい控えめな電力推定値を生成させる。一実施形態では、プログラムは、最悪の状況の作業負荷に対して実行され、各動作周波数での各ノードのＰＭＰが測定される。別の実施形態では、プロセッサ周波数は、複数の代表的なミニアプリケーションの間で変化する。周波数毎に、平均電力、最大電力、電力偏差、及びジョブの終了までの時間がデータベースに記憶される。
【００６３】
ジョブ電力推定
ノード校正データベースは、ジョブ電力を推定するために使用される。動的な電力監視無しの場合、スケジューラは、ジョブがＰＭＰを要求することを仮定しなければならない。監視は、閉ループ制御と、ＰＭＰより低い電力推定値とを提供する。電力監視有りの場合、制御つまみが制限された柔軟性のないポリシーであっても作業負荷最大電力に基づいて推定することができる。柔軟性のある制御は、動的なジョブ電力管理を可能にする。スタートアップ電力は、作業負荷平均電力になる。スケジューラは、一時停止できないジョブの最大必要電力（ＭＲＰ）を推定することも必要であろう。スケジューラは、ジョブ推定値を生成するために各ノードに対する推定値を単純に合計する。このプロセスは、サンプルと実際の作業負荷との間の差を考慮することによって精緻化され得る。
【００６４】
ジョブ電力割当のユーザ選択
ユーザは、ジョブ優先度と、電力及びエネルギーポリシーを指定することができる。例示的なポリシーは、ａ）ジョブが電力制限を受けるべきか否か、ｂ）ジョブを一時停止できるか否か、及びｃ）電力制限有りのジョブに対して、ユーザは、制限を強要するために複数のモードのうち１つを更に選択する、というものである。
【００６５】
ジョブ電力を制限の範囲内に維持する方法
ユーザは、ジョブ電力を制限できるか否かを指定する。一実施形態では、ジョブ電力は、図２に関連して前述の通り、ユーザによるモードの選択に基づいて電力制限の範囲内に維持される。
【００６６】
図５Ｂは、一実施形態に従って、データ処理システムを動作させる方法５２０のフローチャートである。動作５２１で、ジョブについてモードの選択が、前述の通り、受信される。動作５２２で、ジョブのために利用できる電力は、モードに基づいて決定される。一実施形態では、利用できる電力は、監視対象電力と、推定電力と、校正電力とのうち少なくとも１つに基づいて決定される。動作５２３で、ジョブについての周波数は、利用できる電力に基づいて決定される。動作５２４で、ジョブを実行するために必要な電力量が決定される。動作５２５で、電力が必要電力に基づいてジョブに割り当てられる。一実施形態では、電力は、ジョブについての平均電力に基づいて割り当てられる。動作５２６で、割り当てられた電力が調整されるべきかどうかが決定される。代替的な実施形態では、システムへの電力割当量が変化する場合、ジョブにより消費される電力が電力割当量とは異なる（例えば、ガードバンドを超える）場合、ジョブが終了した場合、故障が起こった場合、又は、これらのいずれかの組合わせの場合、調整が必要である。割当電力が調整されるべきであると決定された場合、割り当てられた電力が動作５２７で調整される。割り当てられた電力が調整されるべきではないと決定された場合、方法５２０は、動作５２２に戻る。
【００６７】
一実施形態では、ユーザ入力に基づいて、パワーアウェア・スケジューラ及びマネージャ５０１は、ジョブを開始するために必要とされる電力（スタートアップ電力）の推定値を決定する。この推定値は、ノード校正と、ジョブが一時停止することを許されるか否かと、に基づいている。スケジューラは、その後、利用できる電力をチェックする。スケジューラは、利用できる電力がスタートアップ電力以上である場合、ジョブを開始する。動的な監視が利用できる場合、ある種の電力ポリシーでは、例えば、自動モードでは、システムの全てのノードによって使用される均一周波数が電力ヘッドルームに基づいて周期的に変更されることがある。一実施形態では、時間的により早く開始したジョブは、付加的な電力ヘッドルームを使用する際により高い優先度を有する。電力バジェット及び均一周波数の再評価は、ランタイム中に周期的に行われる。利用できる電力は、全てのジョブが実行し続けることができない程に降下することがある。この場合、パワーアウェア・ジョブ・スケジューラが一時停止可能なジョブのリストから最低優先度のジョブを取り上げる。一実施形態では、割り当てられた電力がジョブの一時停止後に増加するとき、一時停止されたジョブが再開される。
【００６８】
一実施形態では、監視無しの場合、電力及び冷却システムの完全性は、実際の消費量が最悪の状況の限界を超えないように十分な電力をジョブに割り当てることによってのみ確保され得る。このようなシナリオに関して、推定ジョブ電力は、ＰＭＰに基づいている。
【００６９】
一実施形態では、ユーザは、ジョブが中断なしで終了するまで実行する必要があること、又は、ジョブが一時停止できないことを指定することがある。チェックポインティングを実装しないジョブは、一般にこのカテゴリーに入る。パワーアウェア・スケジューラは、ジョブの連続動作のための最小必要電力（ＭＲＰ）を推定する。利用できる電力は、ＭＲＰを考慮する必要がある。システム内の必要電力の合計は、追跡され、需要／応答インターフェースを介して通信されるので、ＰＳＹＳは、合計されたＭＲＰを下回ることがない。
【００７０】
一実施形態では、電力は、ジョブ優先度に基づいてジョブに割り当てられる。一実施形態では、最初に開始した又はスケジュールに入れられたジョブは、より高い優先度を有する、と想定される。別の実施形態では、ジョブ優先度は、ユーザによって指定される。代替的な実施形態では、その他の優先度メカニズムが電力をジョブに割り当てるために使用される。
【００７１】
一実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャは、所定の限界の範囲内で電力消費量の変化率を維持するように構成される。一実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャは、割り付けられた電力の消費量を最大化し、ストランデッド電力を最小化するように構成される。一実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャは、エネルギー効率を高め、計算のために利用できる電力を増加させるために遊休資源によって使用される電力を減らすように構成される。一実施形態では、パワーアウェア・ジョブ・スケジューラ及びマネージャは、できる限り多くのジョブをスケジュールに入れるために、ＰＳＹＳの範囲内に収まる最良の候補を識別してスケジュールに入れるためジョブキューを徹底的に検査するように構成される。
【００７２】
図５Ｃは、一実施形態に従って、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法５３０のフローチャートである。動作５３１で、１つ以上のジョブが監視される。動作５３２で、ジョブのために利用できる電力が決定される。動作５３３で、ジョブが動くことができるように利用できる電力が十分であるかどうかが決定される。利用できる電力が、ジョブが動くには十分でない場合、方法５３０は、動作５３１に戻る。ジョブが実行できる場合、動作５３４で、ジョブについての周波数が利用できる電力に基づいて決定される。動作５３４で、電力は、周波数に基づいてジョブに割り当てられる。動作５３６で、割り当てられた電力が第１の閾値より大きいかどうかが決定される。割り当てられた電力が第１の閾値より大きい場合、ジョブについての周波数は、減少させられる。割り当てられた電力が第１の閾値より大きくない場合、方法５３０は、動作５３１に戻る。動作５３８で、割り当てられた電力が第２の閾値より小さいがどうかが決定される。割り当てられた電力が第２の閾値より小さい場合、動作５３９で、ジョブについての周波数が増加させられる。割り当てられた電力が第２の閾値より小さくない場合、方法５３０は、動作５３１に戻る。
【００７３】
図６は、一実施形態に従って、電力監視が利用できるときに４つのジョブモードに対して均一周波数を設定するアルゴリズムを例示して説明する表６００を表す。列６０１は、ジョブパラメータ、例えば、ジョブのために利用できる電力６０６と、ジョブを開始できないとき又はジョブを一時停止すべきときの条件６０７と、ジョブについての周波数６０８と、一時停止できないジョブの最小必要電力６０９と、ジョブに対する割当電力６１０と、ジョブについての周波数が再調整可能であるか否かの指示６１１とを含む。列６０２は、固定周波数モード（モードＡ）に対するジョブパラメータを表し、列６０３は、最小電力モード（モードＢ）に対するジョブパラメータを表し、列６０４は、最大電力モード（モードＣ）に対するジョブパラメータを表し、列６０５は、自動モード（モードＤ）に対するジョブパラメータを表す。一実施形態では、均一周波数設定が同じジョブを実行するあらゆるノードで使用される。
【００７４】
一実施形態では、モードＡに関して、ユーザは、ジョブを実行するために固定周波数を指定する。現在電力消費量（Ｐｃｏｎｓｕｍｅｄ）が設備電力制限（Ｐｓｙｓ）を下回り、かつ、システムがユーザ指定固定周波数で実行しているジョブを受け入れることができる場合、パワーアウェア・スケジューラ及びマネージャは、ジョブを開始するようにジョブ・ランチャーに指示する。ジョブのために利用できる電力は、システム電力、消費電力、及びガードバンドの間の差として決定される。利用できる電力（Ｐａｖａｉｌａｂｌｅ）がユーザ選択周波数でのジョブに対する最大電力（Ｍａｘ）未満である場合、ジョブは、開始させることができない、又は、一時停止させる必要がある。一時停止できないジョブに対する最小必要電力は、選択周波数での最大電力である。一時停止できるジョブに対して、最小必要電力は、零である。ジョブに割り当てられる電力は、選択周波数における最大電力である。このモードでは、ユーザは、ジョブが選択周波数で実行される必要があることを選択しているので、ジョブを実行するノードの周波数は変化しない。
【００７５】
モードＢに関して、ユーザは、ジョブを実行するために必要最小電力（Ｐｍｉｎ）を指定する。利用できるシステム電力（システムの残存電力ヘッドルーム）がＰｍｉｎより大きい場合、パワーアウェア・スケジューラ及びマネージャは、ジョブを開始するようにジョブ・ランチャーに指示する。ジョブのために利用できる電力は、システム電力、消費電力、及びガードバンドの間の差として決定される。ジョブが可能な限りの最低周波数状態Ｐｎで動いているときに、利用できる電力（Ｐａｖａｉｌａｂｌｅ）がユーザ設定最小電力Ｐｍｉｎ未満である場合、又は、利用できる電力が平均電力未満である場合、ジョブは、開始させることができない、又は、一時停止させる必要がある。この周波数は、計算周波数である。一実施形態では、周波数は、ジョブによって消費される平均電力がＰａｖａｉｌａｂｌｅ以下である最大周波数として計算される。一時停止できないジョブに対する最小必要電力は、最小ジョブ電力Ｐｍｉｎである。一時停止できるジョブに対して、最小必要電力は、零である。ジョブに割り当てられた電力は、最小必要電力と計算周波数における平均電力とのうちの最大値である。ジョブの周波数は、新しい周波数でジョブによって消費される電力がＰａｖａｉｌａｂｌｅ以下である限り調整することができる。
【００７６】
モードＣに関して、ユーザは、ジョブを実行するために最大電力（Ｐｍａｘ）を指定する。ジョブのために利用できる電力は、システム電力、消費電力、及びガードバンドの間の差として決定される。最低周波数状態Ｐｎで動作しているジョブによって消費される最大電力がＰｍａｘより大きい場合、ジョブは、開始させることができない、又は、一時停止させる必要がある。この周波数は、計算周波数である。一実施形態では、周波数は、作業負荷最大電力がＰａｖａｉｌａｂｌｅとＰｍａｘとのうちの最小値以下である場合に最大周波数として計算される。最小必要電力は、一時停止できるジョブに対して零である。一時停止できないジョブに対して、最小必要電力は、最低周波数状態Ｐｎで動作している間の作業負荷最大電力である。一時停止できるジョブに対して、最小必要電力は、零である。ジョブに割り当てられた電力は、計算周波数における最大電力とＰｍａｘとのうちの最小値である。本モードでのジョブへの周波数は、新しい周波数で消費された作業負荷最大電力がＰａｖａｉｌａｂｌｅとＰｍａｘとのうちの最小値未満である限り調整され得る。
【００７７】
モードＤに関して、パワーアウェア・スケジューラ及びマネージャは、現在のシステム電力割当量とシステム上で実行しているジョブによる電力の消費量とに基づいて、ジョブについての周波数を自動的に選択する。パワーアウェア・スケジューラ及びマネージャは、ジョブに対する残存電力ヘッドルームを決定する。ヘッドルームに影響を与える可能性がある複数のポリシーが存在する。一実施形態では、最大スループットがシステム電力ヘッドルームに影響を与えるためにポリシーとして使用される。ジョブのために利用できる電力は、システム電力、消費電力、及びガードバンドの間の差として決定される。ジョブが最低周波数状態Ｐｎで実行している間にＰａｖａｉｌａｂｌｅが平均電力未満である場合、ジョブは、開始させることができない、又は、一時停止させる必要がある。この周波数は、計算周波数である。一実施形態では、周波数は、平均電力がＰａｖａｉｌａｂｌｅ以下であるときの最大周波数として計算される。最小必要電力は、一時停止できるジョブに対して零である。一時停止できないジョブに対して、最小必要電力は、最低周波数状態Ｐｎで動作している間の作業負荷最大電力である。ジョブに対して割り当てられた電力は、最小必要電力と計算周波数における平均電力とのうちの最大値である。ジョブの周波数は、この周波数におけるジョブの平均電力がＰａｖａｉｌａｂｌｅ未満であるときの最大周波数に調整され得る。
【００７８】
図７は、一実施形態に従って、電力監視が利用できないときに４つのジョブモードに対して均一周波数を設定するアルゴリズムを例示して説明する表７００を表す。列７０１は、ジョブパラメータ、例えば、ジョブに対する平均電力７０６と、ジョブを開始できないとき、又は、ジョブを一時停止すべきときの条件７０７と、ジョブについての周波数７０８と、一時停止できないジョブに対する最小必要電力７０９と、ジョブに対する割当電力７１０と、ジョブについての周波数を再調整できる場合の指示７１１とを含む。列７０２は、固定周波数モード（モードＡ）についてのジョブパラメータを表し、列７０３は、最小電力モード（モードＢ）についてのジョブパラメータを表し、列７０４は、最大電力モード（モードＣ）についてのジョブパラメータを表し、列７０５は、自動モード（モードＤ）についてのジョブパラメータを表す。一実施形態では、均一周波数設定は、同じジョブを実行するあらゆるノードで使用される。
【００７９】
一実施形態では、モードＡに関して、ユーザは、ジョブを実行するために固定周波数を指定する。ジョブのために利用できる電力は、システム電力と割り当てられた電力との間の差として決定される。利用できる電力（Ｐａｖａｉｌａｂｌｅ）がユーザ選択周波数でのプラットフォーム最大電力（ＰＭＰ）より小さい場合、ジョブは、開始させることができない、又は、一時停止させる必要がある。一時停止できないジョブに対する最小必要電力は、選択周波数でのＰＭＰ電力である。一時停止できるジョブに対して、最小必要電力は零である。ジョブに対して割り当てられた電力は、選択周波数でのＰＭＰ電力である。選択周波数は、調整することができない。本モードでは、ユーザは、ジョブがユーザ選択周波数で実行される必要があることを選択しているので、ジョブを実行しているノードの周波数は変化しない。
【００８０】
モードＢに関して、ユーザは、ジョブを実行するために必要とされる最小電力（Ｐｍｉｎ）を指定する。ジョブのために利用できる電力は、システム電力と割り当てられた電力との間の差として決定される。利用できる電力（Ｐａｖａｉｌａｂｌｅ）がユーザ設定最小電力Ｐｍｉｎより小さい場合、又は、利用できる電力が最低周波数状態Ｐｎにおけるジョブ動作のためのＰＭＰより小さい場合、ジョブは、開始させることができない、又は、一時停止させる必要がある。この周波数は、計算周波数である。一実施形態では、周波数は、ＰＭＰがＰａｖａｉｌａｂｌｅ以下であるときの最大周波数として計算される。一時停止できないジョブに対する最小必要電力は、最小ジョブ電力Ｐｍｉｎである。一時停止できるジョブに対して、最小必要電力は、零である。ジョブに割り当てられた電力は、最小必要電力と計算周波数におけるＰＭＰとのうちの最大値である。周波数は、ＰＭＰがＰａｖａｉｌａｂｌｅより小さいときの最高周波数に調整することができる。
【００８１】
モードＣに関して、ユーザは、ジョブを実行するために最大電力（Ｐｍａｘ）を指定する。ジョブのために利用できる電力は、システム電力と割り当てられた電力との間の差として決定される。最低周波数状態Ｐｎに対するＰＭＰがＰａｖａｉｌａｂｌｅより大きい場合、又は、ＰｎにおけるＰＭＰがＰｍａｘより大きい場合、ジョブは、開始させることができない、又は、一時停止させる必要がある。この周波数は、計算周波数である。一実施形態では、周波数は、ＰＭＰがＰａｖａｉｌａｂｌｅとＰｍａｘとのうちの最小値以下であるときの最高周波数として計算される。一時停止できないジョブに対する最小必要電力は、最低周波数状態Ｐｎ状態におけるＰＭＰである。一時停止できるジョブに対して、最小必要電力は、零である。ジョブに割り当てられた電力は、計算周波数におけるＰＭＰとＰｍａｘとのうちの最小値である。周波数は、ＰＭＰがＰａｖａｉｌａｂｌｅとＰｍａｘとのうちの最小値未満であるときの最大周波数に調整することができる。
【００８２】
モードＤに関して、パワーアウェア・スケジューラ及びマネージャは、現在のシステム電力消費量及びその他のジョブ実行条件に基づいてジョブを実行するために周波数を自動的に選択する。パワーアウェア・スケジューラ及びマネージャは、ジョブに対する残存電力ヘッドルームを決定する。ヘッドルームに影響を与える可能性がある複数のポリシーが存在する。一実施形態では、最大スループットがシステム電力ヘッドルームに影響を与えるためにポリシーとして使用される。ジョブのために利用できる電力は、システム電力と割り当てられた電力との間の差として決定される。Ｐａｖａｉｌａｂｌｅが最低周波数状態Ｐｎに対するＰＭＰ未満である場合、ジョブは、開始させることができない、又は、一時停止させる必要がある。この周波数は、計算周波数である。一実施形態では、周波数は、ＰＭＰがＰａｖａｉｌａｂｌｅ以下であるときの最高周波数として計算される。一時停止できないジョブに対する最小必要電力は、最低周波数状態ＰｎにおけるＰＭＰである。一時停止できるジョブに対して、最小必要電力は、零である。ジョブに割り当てられた電力は、最小必要電力と計算周波数におけるＰＭＰとのうちの最大値である。周波数は、ＰＭＰがＰａｖａｉｌａｂｌｅより小さいときの最高周波数に調整することができる。
【００８３】
一実施形態では、パワーアウェア・スケジューラが１組の計算ノード上で動くジョブを開始するとき、ジョブは、最小及び最大電力制限を受けることがある。作業負荷マネージャは、ジョブの電力消費量が所定の制限の範囲内に確実に留まるように構成される。一実施形態では、精密高分解能センサを使用する電力監視は、ガードバンディングの軽減をもたらす。典型的に、電力制限において使用されるガードバンディングは、ストランデッド電力及びより低いエネルギー効率を生じさせる。
【００８４】
一実施形態では、ユーザは、一部のジョブが電力制限されないことを指定する。パワーアウェア・ジョブ・スケジューラは、ジョブが消費することができる最大電力を推定し、電力が利用できるときジョブを開始するために使用される。作業負荷マネージャは、ストランデッド電力を削減し、効率を最大化するように電力を他の（例えば、電力制限付きの）ジョブの間で再分配するために使用される。一実施形態では、ＰＳＹＳが降下する場合、作業負荷マネージャは、これらの指定されたジョブの電力割当量がそのままであることを確実にする。
【００８５】
一実施形態では、固定周波数モードに関して、ユーザは、ジョブについての周波数を指定する。ユーザ選択は、各周波数についての性能及び電力を指示する表に基づくことがある。一旦、ジョブが本モードで開始すると、周波数が固定される。固定周波数モードの利点は、ジョブが周波数偏移に関連付けられたオーバーヘッドを被ることがなく、その結果、スケーラブルである、ということである。ユーザは、ジョブが投入されたときに利用できる電力に基づいて周波数を選択することがある。
【００８６】
別の実施形態では、ユーザは、ジョブに対する所定の電力量を指定する。一実施形態では、所定の電力量は、ジョブに対する最小電力である。別の実施形態では、電力量は、ジョブに対する最大電力である。最小電力、最大電力、又は両方は、電力−性能表と、ジョブに対して要求されたノードの数とに基づいて計算される。利用できる能力に基づいて、スケジューラは、ジョブに対する最良周波数を計算する。動的な電力監視が使用されるとき、作業負荷マネージャは、ジョブが利用できる電力の増減に基づいて実行している間に周波数を上昇又は降下させることがある。利用できる電力が指定された最小電力閾値を下回る場合、ジョブは、一時停止するか、又は、終了する。最小電力モード及び最大電力モードの利点は、これらが正しい周波数を推測するユーザ負担を軽減することである。第２に、動的な電力監視を用いると、作業負荷マネージャは、周波数を上昇させることにより性能を改善することができる。周波数は、ジョブを実行している間に、作業負荷によって消費された電力に基づいて変更される可能性がある。一実施形態では、ジョブを開始するために、パワーアウェア・スケジューラは、前述の通り、電力要件の校正及び推定を頼りにする。
【００８７】
別の実施形態では、自動モードは、ユーザが自分のジョブによって使用される電力又は周波数を推定する必要性を取り除く。均一周波数選択は、利用できる電力に基づいて自動化される。動的な電力監視があれば、作業負荷マネージャは、電力ヘッドルームに基づいて均一周波数を周期的に調整する。自動モードは、ジョブが全ての利用できる周波数で動作することを許す。ユーザ定義最小ジョブ電力要件が存在しないので、ジョブは、最低周波数でジョブを実行するために十分な電力がある限り、開始し、継続することができる。自動モードの利点は、この自動モードが電力可用性の低下のためジョブが十分な電力を待機する確率、又は、ジョブが一時停止する確率を下げることである。自動モードは、資源使用量及びスループットを下げる。ユーザは、全てのハードウェア資源を使用するために、電力制限を減らし、より多くのジョブを実行することができる。
【００８８】
固定周波数モード及び最小電力モードに加えて、最低及び／又は最高周波数と、最小及び／又は最大電力を使用する変形が存在することがあり得る。周波数及び電力についての設定を組み合わせるモードが存在することがあり得る。これら全ては、ユーザ計算及び実験を必要とする。自動モードは、この負担を取り除き、多数のシナリオにおいて最良性能を発揮する。
【００８９】
一実施形態では、パワーアウェア・スケジューラ及びマネージャは、開始時刻に、更にプログラマブル間隔で起動する。起動の都度、パワーアウェア・スケジューラ及びマネージャは、各ジョブに対する電力キャップ（Ｐａｖａｉｌａｂｌｅ）を再計算する。これは、前述の通り、動的な電力キャッピング及び電力調整を可能にさせる。一実施形態では、ジョブに対して平均電力（Ｔａｖｅｒａｇｅ）を維持する周期及び制御周期（Ｔｃｏｎｔｒｏｌ）が定義される。各制御周期において、電力バジェット、電力割当量及び周波数選択のうち少なくとも１つが再評価される。一実施形態では、Ｔｃｏｎｔｒｏｌは、Ｔａｖｅｒａｇｅの１０分の１である。Ｔａｖｅｒａｇｅは、プログラマブルである。設備が平均電力を１５分に亘って維持することを必要とすると仮定すれば、ジョブについてのＴａｖｅｒａｇｅは、結果的には９秒になる。最小／最大電力及び自動モードに関して、制御システムは、約９００ミリ秒毎に、均一周波数が変更される必要があるか否かを評価する。
【００９０】
図８は、一実施形態に従って、パワーアウェア・スケジューラ及びマネージャのための電力余裕を例示して説明する。図８に表されるように、（例えば、動作周波数Ｆｏで実行している）ジョブに対する電力割当量９０３は、ジョブの実際の電力消費量が上方閾値（高電力余裕）９０１を上回ることがないようなものである。ジョブ実行のための電力割当量９０３は、ジョブの実際の電力消費量が下方閾値（低電力余裕）９０２より小さくないようなものである。動作周波数Ｆｏは、ジョブ電力消費量が高い余裕９０１より大きい場合、減少させられる。動作周波数Ｆｏは、ジョブ電力消費量が低い余裕９０２より小さい場合、増加させられる。
【００９１】
一実施形態では、周波数振動を防ぐために、低い電力余裕９０２は、ビン１つ分だけ高い周波数におけるジョブに対する平均電力Ｐ（Ｆｏ＋１）と、現在周波数Ｆｏにおけるジョブに対する平均電力Ｐ（Ｆｏ）との間の差として設定される。ビン１つ分だけ高い周波数とは、Ｆｏよりビン１つ分だけ高い周波数である。現在の周波数Ｆｏからビン１つ分だけ高い周波数へのホッピングが電力キャップを超える電力消費を引き起こす場合、パワーアウェア・スケジューラ及びマネージャは、周波数を上昇させることを選ばない。一実施形態では、より高い電力余裕９０１は、最大作業負荷電力と平均作業負荷電力との間の差として設定される。別の実施形態では、高い電力余裕９０１は、最大作業負荷電力と平均負荷電力との間の差として設定される。別の実施形態では、高い電力余裕９０１は、平均作業負荷電力の全てに亘る平均偏差として設定される。一実施形態では、電力余裕は、プラットフォーム最大電力（ＰＭＰ）と、現在の周波数Ｆｏにおける平均電力Ｐａｖｇとの間の差として設定される。
【００９２】
一実施形態では、高い電力余裕９０１は、電力測定値の精度の２倍に実質的に等しくなるように設定される。動作周波数Ｆｏは、ジョブに対する電力割当量が減るとき、減少させられる。別の実施形態では、高い電力余裕９０１は、ジョブに対する現在の電力消費レベルにＦｏよりビン１つ分だけ低い周波数における電力消費量を加えたものに実質的に等しくなるように設定される。一実施形態では、低い電力余裕９０２は、ジョブに対する現在の電力消費レベルにＦｏよりビン１つ分だけ高い周波数における電力消費量を加えたものに実質的に等しくなるように設定される。
【００９３】
図９Ａは、一実施形態に従って、電力をジョブに動的に割り当てるパワーアウェア・ジョブ・スケジューラ及びマネージャのための校正表の例を示す図である。表９１１は、異なる周波数における計算ノード毎に、作業負荷当たりのジョブに対する平均電力を含む校正表の例である。表９１２は、異なる周波数における計算ノード毎に、作業負荷当たりの最大電力を含む校正表の例である。表９１３は、異なる周波数における計算ノード毎のＰＭＰを含む校正表の例である。一実施形態では、ＰＭＰは、全てのプラットフォームに最大電力量を消費させる特別な作業負荷を使用して決定された、ノードが引き出すことができるプラットフォーム最大電力である。時には、この作業負荷は、電力ウィルスと呼ばれることがある。
【００９４】
図９Ｂは、一実施形態に従って、電力をジョブに割り当てる方法９２０のフローチャートである。動作９３０で、システムに割り当てられた電力（Ｐｓｙｓ）が決定される。動作９３１で、システムによって消費された電力（Ｐｃｓｙｓ）が決定される。動作９３２で、ＰｃｓｙｓがＰｓｙｓと第１のシステムガードバンド（SystemGurdBand1）との間の差より大きく、かつ、Ｐｓｙｓと第２のシステムガードバンド（SystemGurdband2）との合計より小さいかどうかが決定される。ＰｃｓｙｓがＰｓｙｓと第１のシステムガードバンド（SystemGurdBand1）との間の差より大きく、かつ、Ｐｓｙｓと第２のシステムガードバンド（SystemGurdband2）との合計より小さい場合、動作９３３で、ジョブが利用できるかどうかが決定される。ジョブが利用できる場合、動作９３４で、ジョブに対する電力ヘッドルームが作り出される。例えば、ジョブに対する電力ヘッドルームは、ノード又は他のハードウェア資源の使用量を最大化するために作り出される。ジョブが利用できない場合、方法９３０は、動作９３０に戻る。ＰｃｓｙｓがＰｓｙｓと第１のシステムガードバンド（SystemGurdBand1）との間の差以下であり、かつ、Ｐｓｙｓと第２のシステムガードバンド（SystemGurdband2）との合計以上である場合、動作９３５で、ＰｃｓｙｓがＰｓｙｓより小さいかどうかが決定される。ＰｃｓｙｓがＰｓｙｓより小さい場合、動作９３７で、ジョブが選択される。一実施形態では、ジョブは、利用できる電力に基づいて選択される。ＰｃｓｙｓがＰｓｙｓ以上である場合、動作９３６で、ジョブへの電力割当量が減らされる。
【００９５】
図９Ｃは、別の実施形態に従って、電力をジョブに割り当てる方法９４０のフローチャートである。動作９４１で、ジョブの中で最高優先度を有するジョブを識別する。一実施形態では、ジョブを識別することは、ジョブの優先度を他のジョブの優先度と比較することを含む。一実施形態では、ジョブ優先度は、キュー内のジョブの位置に基づいて識別される。別の実施形態では、ジョブ優先度は、ジョブが動いている周波数に基づいて識別される。例えば、所定の周波数（例えば、他のジョブと比べて最低周波数、最高周波数、又はその他の所定の周波数）を有するジョブは、最高優先度を有する可能性がある。別の実施形態では、ジョブ優先度は、ジョブが動いているノードの数に基づいて識別される。例えば、所定の数のノード（例えば、最大の数のノード、最小の数のノード、又は他の所定の数のノード）で動いているジョブは、最高優先度を有するものとして識別される。更に別の実施形態では、ジョブ優先度は、ジョブによって消費された電力に基づいて識別される。例えば、所定の電力（例えば、最大量の電力、最小量の電力、又は他の所定の量の電力）を消費するジョブは、最高優先度を有するものとして識別される。更に別の実施形態では、ジョブ優先度は、ジョブが動いている時間に基づいて識別される。例えば、所定の時間（Ｐａｖａｉｌａｂｌｅ）例えば、最長時間、最短時間、又は他の所定の期間）動いているジョブは、最高優先度を有するものとして識別される。動作９４２で、ジョブが最高周波数で動くかどうかが決定される。ジョブが最高周波数で動く場合、方法４００は、動作９４１に戻る。ジョブが最大周波数で動かない場合、動作９４３で、付加的な電力がジョブに割り当てられる。動作９４４で、ジョブの周波数は、増加させられる。
【００９６】
図９Ｄは、一実施形態に従って、ジョブへの電力を削減する方法９５０のフローチャートである。動作９５１で、システムに対する電力削減量が決定される。動作９５２で、現在のジョブに対する電力割当量を削減できるかどうかが決定される。現在のジョブに対する電力割当量を削減できない場合、動作９５５で、現在のジョブは、一時停止される。現在のジョブに対する電力を削減できる場合、動作９５３で、１つ以上の他のジョブに対する電力割当量を削減できるかどうかが決定される。１つ以上の他のジョブに対する電力割当量を削減できない場合、動作９５６で、現在のジョブに対する電力割当量は、システムに対する電力割当量に基づいて削減される。１つ以上の他のジョブに対する電力割当量を削減できる場合、動作９５４で、現在のジョブ及び１つ以上の他のジョブを含むジョブのグループに対する電力割当量が削減される。一実施形態では、ジョブのグループに対する電力割当量は、同時に１つのジョブによって削減される。別の実施形態では、電力割当量は、実質的に一斉にグループ内の全てのジョブに対して削減される。
【００９７】
図９Ｅは、一実施形態に従って、ジョブを終了する方法９６０のフローチャートである。動作９６１で、システムによって消費される電力（Ｐｃｓｙｓ）が監視される。動作９６２で、システムによって消費された電力（Ｐｃｓｙｓ）がシステムに割り当てられた電力（Ｐｓｙｓ）より小さいかどうかが決定される。ＰｃｓｙｓがＰｓｙｓより小さくない場合、動作９６３で、現在のジョブに対する優先度が他のジョブの優先度より低いかどうかが決定される。現在のジョブに対する優先度が他のジョブの優先度より低い場合、動作９６５で、ジョブが停止される。現在のジョブの優先度が他のジョブの優先度より低くない場合、動作９６４で、キュー内に次のジョブがあるかどうかが決定される。一実施形態では、ＰｃｓｙｓがＰｓｙｓより大きいと決定された場合、動作９６４が実行される。キュー内に次のジョブが存在する場合、方法９６０は、動作９６３に戻る。キュー内に次のジョブが存在しない場合、動作９６６で、システムは、止められる。一実施形態では、ジョブ優先度は、キュー内のジョブの位置に基づいて識別される。別の実施形態では、ジョブ優先度は、ジョブが動いている周波数に基づいて識別される。更に別の実施形態では、ジョブ優先度は、ジョブが動いているノードの数に基づいて識別される。更に別の実施形態では、ジョブ優先度は、ジョブによって消費された電力に基づいて識別される。更に他に、ジョブ優先度は、前述の通り、ジョブが動いている時間に基づいて識別される。
【００９８】
図９Ｆは、一実施形態に従って、より多くのジョブを受け入れるために電力を再平衡化する方法９７０のフローチャートである。動作９７１で、１つ以上のジョブが監視される。動作９７２で、現在のジョブに対する電力割当量を削減できるかどうかが決定される。現在のジョブに対する電力割当量を削減できる場合、方法は、動作９７１に戻る。現在のジョブに対する電力割当量を削減できる場合、動作９７３で、ジョブが最低周波数より高い周波数で動くかどうかが決定される。ジョブが最低周波数より高くない周波数で動く場合、方法は、動作９７１に戻る。ジョブが最低周波数より高い周波数で動く場合、動作９７４で、キュー内の次のジョブに対する電力推定値が決定される。動作９７５で、電力ヘッドルームが次のジョブのために利用できるかどうかが決定される。電力ヘッドルームが次のジョブのために利用できる場合、動作９７６で、次のジョブは、受け入れられる。電力ヘッドルームが次のジョブのために利用できない場合、方法９７０は、動作９７３に戻る。
【００９９】
図９Ｇは、別の実施形態に従って、ジョブに対する電力を削減する方法９８０のフローチャートである。動作９８１で、消費されたシステム電力（Ｐｃｓｙｓ）が割り当てられたシステム電力（Ｐｓｙｓ）より大きい、と決定される。動作９８２で、ジョブの動作周波数（Ｆｏ）が最低動作周波数（Ｆｍｉｎ）より高いか、又は、ジョブ電力がジョブに対する最小電力より大きいかが決定される。ＦｏがＦｍｉｎより高くない場合、ジョブは、動作９８７で一時停止させられる。ＦｏがＦｍｉｎより高い場合、ジョブに対する電力削減量が動作９８３で決定される。動作９８４で、ジョブに対する電力割当量が電力削減量に基づいて削減される。動作９８５で、電力ヘッドルームがジョブを実行するために十分であるかどうかが決定される。電力ヘッドルームがジョブを実行するために十分である場合、動作９８６で、利用できる次のジョブが存在するかどうかが決定される。電力ヘッドルームがジョブを実行するために十分ではない場合、動作９８８で、ジョブは一時停止させられる。次のジョブが存在する場合、方法９８０は、動作９８２に戻る。次のジョブが存在しない場合、動作９９９で、システムは電源を遮断される。
【０１００】
［０００３］
一実施形態に係るパワーアウェア・ジョブ・スケジューラ及びマネージャを備えるデータ処理システムを動作させる例示的な設計ワークフローを以下に示す。簡単にするため、２つのジョブ・マネージャ・ポリシーだけが使用される。データ処理システムの当業者は、３つ以上のジョブ・マネージャ・ポリシーが使用できることが分かる。
【０１０１】
１．校正装置
１．１．１．入力
１．１．２．作業負荷：実行するコマンド
１．１．３．ノードのリスト（Ｎ１，Ｎ２．．．Ｎｎ）
１．１．２．実行コマンドは、１ノード当たりのコア数及びノード数に基づいて修正される。
１．１．３．周波数のリスト（Ｆ１，Ｆ２，．．．Ｆｎ）
１．２  データベースに保存された出力
１．２．１．周波数毎
１．２．１．１  電力（作業負荷最大、作業負荷平均）
１．２．１．２  温度（作業負荷最大、作業負荷平均）
１．２．１．３  完了時間
２．推定装置Ｐ（電力推定装置）
２．１  入力
２．１．１  作業負荷：ユーザは（アプリケーションにより近いサンプル作業負荷のリストから）作業負荷を指示する。
２．１．２  ノードのリスト（Ｍ１，Ｍ２．．．Ｍｎ）
２．１．３  周波数のリスト（Ｆ１，Ｆ２，．．．Ｆｎ）
２．２  出力
２．２．１  周波数毎
２．２．１．１  電力（作業負荷最大、作業負荷平均、作業負荷最小（予約電力））；予約電力：最低周波数で動くジョブを保つために必要な電力（最小電力）
２．２．１．２  温度（作業負荷最大、作業負荷平均）
２．２．１．３  完了時間
３．推定装置Ｆ（周波数推定装置）
３．１  入力
３．１．１  作業負荷：ユーザは（アプリケーションにより近いサンプル作業負荷のリストから）作業負荷を指示する。
３．１．２  ノードのリスト（Ｎ１，Ｎ２．．．Ｎｎ）
３．１．３  利用できる電力
３．１．４  電力レベル（ＰＭＰ、作業負荷最大、作業負荷平均）
１つのパラメータだけが定義され、その他は零である。
３．２  出力
３．２．１  動作周波数ＦＳ
３．２．２  ＦＳにおけるジョブ電力、Ｆ（Ｓ−１）におけるジョブ電力、Ｆ（Ｓ＋１）におけるジョブ電力；
ＦＳ＝周波数案；Ｆ（Ｓ＋１）＝提案周波数より１つ大きい周波数；ＦＳ＝提案周波数より１つ小さい周波数；
４．パワーアウェア・スケジューラ及びジョブ・マネージャ
仮定：
１．電力監視は利用できる。
【０１０２】
２．ノードはシングルテナンシーを有する。同時にノードは唯一のジョブを実行する。同一ノードにおいて、コアは複数のジョブに亘って分割されない。
４．１  入力
４．１．１  ジョブ
４．１．１．１  ジョブ電力制限（はい／いいえ）
４．１．１．２  ジョブは一時停止できるか（はい／いいえ）
４．１．１．３  ジョブ・マネージャ・ポリシー数（１：２）の間
これは、より多くの電力ポリシーが追加されるのにつれて変化する。
【０１０３】
ジョブ・マネージャ・ポリシー１番：ユーザはジョブに対する動作周波数を選択する。
【０１０４】
ジョブ・マネージャ・ポリシー２番：自動モード（ジョブ・マネージャは電力ヘッドルームに基づいてジョブに対する周波数を選択／修正する）。
パワーアウェア・スケジューラ
（Ａ）ＰＳＹＳ：システムに割り当てられた電力
（Ｂ）ＰＣＳＹＳ：システムによって消費された電力
（Ｃ）システムガードバンド（１：２）：システムレベル制御イベントを抑える値
ａ．ＰＳＹＳより低いときSysGuardband1余裕：例えば、１０％低い。
【０１０５】
ｂ．ＰＳＹＳより高いときSysGuardband2余裕：例えば、１％低い高い。
【０１０６】
（Ｄ）ＰＪＯＢ：ジョブに割り当てられた電力
（Ｅ）ＰＣＪＯＢ：ジョブによって消費された電力
１．１  ＰＳＹＳ−SystemGuardband1＜ＰＣＳＹＳ＜ＰＳＹＳ＋SystemGuardband2（システム消費電力が割当量より小さいか？）であるか。
【０１０７】
ａ．はい→
ｉ．キュー内に実行する準備が完了したジョブ（新しい又は一時停止中のいずれか）が存在するか？実行準備完了とは、ジョブが電力以外の全ての資源を有することを意味する。
【０１０８】
Ａ．はいの場合、１．１３へ進み、新しいジョブ／一時停止中のジョブに対するヘッドルームを作成するために実行中のジョブの電力を削減する。
【０１０９】
Ｂ．いいえの場合、１．１へ進み、監視し続ける。
【０１１０】
１．２  ＰＣＳＹＳ＜ＰＳＹＳであるか？
ａ．はいの場合；再開する（一時停止中のジョブを再開する、若しくは、新しいジョブを開始する）又はより多くの電力を実行中のジョブに割り当てる；１．３（複数のアプローチが考えられる）へ進む。
【０１１１】
ｂ．いいえの場合；システムはより多くの電力を消費している；ジョブへの割当量を削減する；１．１０へ進む。
【０１１２】
１．３  割り当てるべきより多くの電力が存在するとき、実行準備が完了している最優先度ジョブ（次のジョブ）を選択する（複数のアプローチが考えられる）（ここでは、以下の２つの可能性、（ａ）新しいジョブの優先度を一時停止中のジョブの優先度と比較し、優先度が高い方を開始／再開する、又は（ｂ）一時停止中のジョブを再開する、即ち、一時停止中のジョブの優先度がより高い、と仮定する、がある。
【０１１３】
ａ．一時停止中のジョブを再開したいか？
ｉ．はいの場合、次のジョブが最優先度の一時停止中ジョブであり、１．６へ進む。
【０１１４】
ｉｉ．いいえの場合、１．４に続く。
【０１１５】
１．４  新しいジョブを開始できるか？（これは、できる限り多くのジョブを実行するためにできる限り多くのノードを使用する方が良いことを指示するポリシーが使用されることを仮定する。つまり、割り当てられた電力が複数のジョブに亘ってパンケーキ状になる）（複数のアプローチが考えられる）
ａ．はいの場合、１．５に続く。
【０１１６】
ｂ．いいえの場合、１．９へ進む。
【０１１７】
１．５  ジョブは電力制限を受けるか？
ａ．はい→１．６に続く。
【０１１８】
ｂ．いいえ→ＪｏｂＰｒｏｆｉｌｅ＝ＰＭＰ、ＪｏｂＦｒｅｑｕｅｎｃｙ＝ＦＭＡＸを設定；１．７へ進む。
【０１１９】
１．６  ジョブ・マネージャ・ポリシー
ａ．ジョブ・マネージャ・ポリシー１番に対して、ＪｏｂＰｒｏｆｉｌｅ（ユーザがリストから選択、０を参照）、ＪｏｂＦｒｅｑｕｅｎｃｙ＝ＦＵｓｅｒＳｅｌｅｃｔｅｄを設定；１．７ａへ進む。
【０１２０】
ｂ．ジョブ・マネージャ・ポリシー２番に対して、ＪｏｂＰｒｏｇｉｌｅ（ユーザがリストから選択、０を参照）を設定；１．７ｃへ進む。
【０１２１】
１．７  電力をジョブに割り当て、動作周波数を選択する。
【０１２２】
ａ．推定装置Ｐから電力を取得する（作業負荷＝ＪｏｂＰｒｏｆｉｌｅ、周波数＝ＪｏｂＦｒｅｑｕｅｎｃｙ、ノードのリスト）；ＪｏｂＰｏｗｅｒを出力する。
【０１２３】
ｂ．ＪｏｂＰｏｗｅｒ＞（ＰＳＹＳ＋SystemGuardband2−ＰＣＳＹＳ）？（ユーザは、ジョブ・マネージャ・ポリシー１番に対する周波数を選択したが、このモードで実行するために十分な電力がない）
ｉ．はいの場合、ジョブ１．１０を実行する電力を削減するために進む（新しいジョブを受け入れることができるようにジョブを実行する電力を削減する）失敗した場合、新しいジョブを開始するために十分な電力がない、と言える。（複数のアプローチが考えられる）
ｉｉ．いいえの場合、１．８へ進む。
【０１２４】
ｃ．ジョブを自動モードで実行するため。
【０１２５】
ｉ．推定装置Ｆから周波数を獲得する（作業負荷＝ＪｏｂＰｒｏｆｉｌｅ、利用できる電力＝（ＰＳＹＳ−SystemGuardband1−ＰＣＳＹＳ）、電力レベル＝ＷｏｒｋｌｏａｄＡｖｅｒａｇｅ）、期待出力ＪｏｂＦｒｅｑｕｅｎｃｅ及びＪｏｂＰｏｗｅｒ（これは、周波数を上昇させることができるとき、又は、低下させるべきとき、ジョブに対する電力レベルも提供する）。
【０１２６】
１．８  ジョブへの電力の割当量ＰＪＯＢ＝ＪｏｂＰｏｗｅｒ、周波数＝ＪｏｂＦｒｅｑｕｅｎｃｙを用いてジョブを開始する。１．１へ進む。
【０１２７】
１．９  （新しいジョブを開始できないので、より多くの電力を実行中のジョブに割り当てる）
ａ．余剰電力＝ＰＳＹＳ−SystemGuardband1−ＰＣＳＹＳ
ｂ．既に実行中であり、かつ、自動モードで実行中であるより高い優先度ジョブを識別する（ジョブ・マネージャ・ポリシー２番）；例えば、ジョブＸ
ｃ．ジョブＸの周波数＝ＦＭＡＸか？（ジョブは既に最高周波数で実行中か）
ｉ．はいの場合、次の優先度のジョブを獲得し、１．９ｃへ進む。（このような全てのジョブを使い尽くした場合、つまり、新しいジョブ若しくは既存のジョブをより高い性能で実行するために使用することができない余剰電力を有する場合、ここで終了する）。
【０１２８】
ｉｉ．いいえの場合、続く。
【０１２９】
ｄ．付加的な電力をジョブＸに割り当てる。
【０１３０】
ｉ．推定装置Ｆを使用する。ジョブのために利用できる電力を増大することにより新しい周波数及び新しいジョブ電力を獲得する。ジョブＸに対する新たな利用できる電力＝余剰電力＋ジョブＸに対する元のジョブ電力（複数のアプローチが考えられる）（代わりに周波数を１ステップずつ増加させることもできる）。
【０１３１】
ｅ．１．７ｃ．ｉ．へ進む。
【０１３２】
１．１０  （ジョブへの電力を削減する方法）ここに至るのは、ＰＣＳＹＳ＞ＰＳＹＳ＋SystemGuardband2の場合（即ち、１つ以上のジョブによる電力消費量が期待値を超えている）、又は、ＰＳＹＳが前の値から低下した場合である。（複数のアプローチが考えられる）
ａ．必要とされる電力削減量＝ＰＣＳＹＳ−ＰＳＹＳである。
【０１３３】
ｂ．自動モードで実行中のジョブがあるか？
ｉ．はいの場合、１．１０ｃへ進み、自動モードでのジョブへの電力を削減する。
【０１３４】
ｉｉ．いいえの場合、ジョブへの電力を削減する機会がなく、１．１１のジョブ一時停止へ進む。
【０１３５】
ｃ．全てのジョブへの電力を一斉に削減するか？
ｉ．はいの場合、１．１４へ進み、自動モードにおける全てのノードへ電力割当量を削減する。
【０１３６】
ｉｉ．いいえの場合、１つの周波数における１つのジョブに対する電力を同時に削減し、次のステップに続くだけである。
【０１３７】
ｄ．既に実行中である、及び、自動モードで実行しているより低優先度のジョブを識別する（ジョブ・マネージャ・ポリシー２番）；例えば、ジョブＹ。
【０１３８】
ｅ．ジョブＹ周波数＝ＦＭＩＮ？（ジョブは最低周波数で既に実行中か）
ｉ．はいの場合、次のより優先度の高いジョブを獲得し、１．１０ｅへ進む（このような全てのジョブを使い尽くした場合、つまり、何れのジョブによっても電力消費量を削減できず、かつ、電力消費量を削減するためにジョブを一時停止する必要がある場合、１．１１へ進む。
【０１３９】
ｉｉ．いいえの場合、続く（ジョブＹは、ＦＭＩＮより高い周波数で実行中であるので、周波数を低下させることができる）。
【０１４０】
ｆ．ジョブＹに対する電力割当量を削減する。
【０１４１】
ｇ．ジョブＹに対して、Ｆ（Ｓ−１）におけるジョブＹのＪｏｂＰｏｗｅｒ≧（ＰＣＳＹＳ−ＰＳＹＳ）？
ｉ．はいの場合、ジョブＹに対するＰＪＯＢ＝ジョブＹに対する元のＰＪＯＢ−Ｆ（Ｓ−１）におけるＪｏｂＰｏｗｅｒ
ｉｉ．いいえの場合、
Ａ．ジョブＹに対して、Ｆ（Ｓ−１）におけるＪｏｂＰｏｗｅｒ？＜（ＰＣＳＹＳ−ＰＳＹＳ）
Ｂ．（ＰＣＳＹＳ＜ＰＳＹＳ）まで、自動モードで実行中の全てのジョブの電力を１つずつ削減する。
【０１４２】
Ｃ．同時に１周波数毎に、又は、ジョブがＦＭＩＮに到達するまで、自動モードでのジョブの周波数を削減するためこのプロセスを反復する。
【０１４３】
Ｄ．（自動モードにおける）全てのジョブがＦＭＩＮまで低下し、それでもなお（ＰＣＳＹＳ＞ＰＳＹＳ）である場合、１．１１へ進み、１つ以上のジョブを一時停止する。
【０１４４】
１．１１  （ジョブを一時停止する）ここに至るのは、（ＰＣＳＹＳ＞ＰＳＹＳ）であり、かつ、自動モードにおける全てのジョブがＦＭＩＮで動作している場合である。ＰＣＳＹＳを削減するためにジョブを一時停止する必要がある。（複数のアプローチが考えられる）
ａ．一時停止することができるより低い優先度ジョブ（固定周波数又は自動モード）を識別し、このジョブを一時停止する。
【０１４５】
ｂ．新しいＰＣＳＹＳ＝元のＰＣＳＹＳ−一時停止されたジョブによって消費された電力
ｃ．ＰＳＹＳを下回るかどうかを確かめるために新しいＰＣＳＹＳをチェックする。いいえの場合、１．１１ａへ進む。
【０１４６】
ｄ．（一時停止することができ、かつ、それでもなお（ＰＣＳＹＳ＞ＰＳＹＳ）である全てのジョブを一時停止した場合、一時停止できない、かつ、再開できないジョブを中止する必要がある。
【０１４７】
１．１２  （一時停止できないジョブを終了する）。ここに至るのは、一時停止できないジョブを終了する必要がある場合である。仮定：一時停止できる全てのジョブが既に存在する。
【０１４８】
ａ．一時停止できるより優先度の低いジョブを識別し、このジョブを終了させる（止める）。
【０１４９】
ｂ．ＰＳＹＳを下回るかどうかを確認するために新しいＰＣＳＹＳをチェックする。いいえの場合、１．１２ａへ進む。
【０１５０】
ｃ．全てのジョブを終了させ、かつ、それでもなお（ＰＣＳＹＳ＞ＰＳＹＳ）である場合、システムの電源を遮断する必要がある。
【０１５１】
１．１３  （より多くのジョブを受け入れるために電力を再平衡化する）：ここに至るのは、ジョブを実行するために利用できる（新しい、又は、一時停止された）ノードが存在するが、ＰＣＳＹＳがＰＳＹＳに近い場合である。これは電力ヘッドルームではない。ジョブを実行するために電力ヘッドルームを作り出すことができるかどうかをチェックする。
【０１５２】
ａ．自動モードで実行中のジョブが存在するか？
ｉ．はいの場合、１．１３ｂに続く。
【０１５３】
ｉｉ．いいえの場合、１．１へ進む。
【０１５４】
ｂ．自動モードでのジョブの中でＦＭＩＮより高い周波数で実行中のジョブはあるか？
ｉ．はいの場合、１．１３ｃに続く。
【０１５５】
ｉｉ．いいえの場合、１．１へ進む。
【０１５６】
ｃ．（新しい又は一時停止された）キュー内の次のジョブに対する電力の推定値（ＪｏｂＰｏｗｅｒＦｏｒＮｅｘｔ）（次のジョブが自動モードを選ぶ場合、ＦＭＩＮ状態の電力）を獲得する。
【０１５７】
ｄ．ヘッドルーム＝ＪｏｂＰｏｗｅｒＦｏｒＮｅｘｔを作り出すために全ての実行中のジョブに対する電力割当量を削減する必要がある。
【０１５８】
ｉ．自動モードにおける各ジョブに対して周波数と消費された電力とを獲得する。
【０１５９】
ｉｉ．新しいジョブが開始している間に全ての実行中のジョブがＦＭＩＮ以上の周波数で動作するように、自動モードで実行中の全てのジョブに対する電力をこれらの現在の電力消費量に比例して削減できるかどうかを推定する。（比例は、現在の電力消費量、ノードの数、又は優先度に基づく可能性がある）。
【０１６０】
ｉｉｉ．十分な電力ヘッドルームが存在するか？
Ａ．はいの場合、自動モードでのジョブに対する電力を削減し、１．２ａ１．１に進む。
【０１６１】
Ｂ．いいえの場合、実行準備完了キュー内の次のジョブをチェックし、１．１３ｃへ進む。キューが終了するまで、これを徹底的に行う。キューが終了したとき、１．１へ進む。
【０１６２】
１．１４  （ＰＣＳＹＳ＞ＰＳＹＳであるので、自動モードでのジョブへの電力を削減する）。
【０１６３】
ａ．自動モードでのジョブの中でＦＭＩＮより高い周波数で実行中のジョブはあるか？
ｉ．はいの場合、１．１４ｂへ続く。
【０１６４】
ｉｉ．いいえの場合、自動モードでのジョブへの電力を削減する機会が存在せず、ジョブ一時停止へ進む。このため、１．１１へ進む。
【０１６５】
ｂ．必要とされる電力の削減、ＲｅｄｕｃｅＰｏｗｅｒ＝（ＰＣＳＹＳ−ＰＳＹＳ−SystemGuardband1）
ｃ．ヘッドルーム＝ＲｅｄｕｃｅＰｏｗｅｒを作り出すために全ての実行中ジョブへの電力割当量を削減することが必要である。
【０１６６】
ｉ．自動モードにおける各ノードに対する周波数及び消費された電力を獲得する。
【０１６７】
ｉｉ．新しいジョブが開始している間に全ての実行中のジョブがＦＭＩＮ以上の周波数で動作するように、自動モードで実行中の全てのジョブに対する電力がこれらの電力消費量に比例して削減できるかどうかを推定する。（比例は、現在の電力消費量、ノードの数、又は優先度に基づく可能性がある）。
【０１６８】
ｉｉｉ．十分な電力ヘッドルームが存在するか？
Ａ．はいの場合、自動モードでのジョブに対する電力を削減し、１．１へ進む。
【０１６９】
Ｂ．いいえの場合、ジョブを一時停止し、１．１１へ進む必要がある。
【０１７０】
図９Ｈ−１〜３は、一実施形態に従って、パワーアウェア・ジョブ・スケジューラ及びジョブ・マネージャを提供する方法９９０のフローチャートである。方法９９０の一部の動作は、前述のパワーアウェア・スケジューラ・ワークフローの動作の項目に関連している。動作９９１で、ユーザからの１つ以上の入力が受け取られる。動作９９２で、ＰＣＳＹＳがＰＳＹＳと下方システムガードバンド（SysGuardband1）との間の差より大きく、かつ、Ｐｓｙｓと上方システムガードバンド（SysGuardband2）との合計より小さいか否かが決定される（パワーアウェア・スケジューラ、項目１．１）。ＰＳＹＳ−SystemGuardband1＜ＰＣＳＹＳ＜ＰＳＹＳ＋SystemGuardband2である場合、動作９９３で、キュー内にジョブが存在するか否かが決定される。キュー内にジョブが存在しない場合、方法９９０は、動作９９１に戻る。ＰＣＳＹＳがＰＳＹＳと下方システムガードバンド（SysGuardband1）との間の差より大きくなく、かつ、ＰＳＹＳと上方システムガードバンド（SysGuardband2）との合計より小さくない場合、動作９９４で、ＰＣＳＹＳがＰＳＹＳより小さいか否かが決定される（パワーアウェア・スケジューラ、項目１．２）。
【０１７１】
動作９９３で、キュー内にジョブが存在する、と決定された場合、より多くのジョブを受け入れるために電力ヘッドルームを作り出す電力再平衡化方法（パワーアウェア・スケジューラ、項目１．１３）が実行される。これは、動作９９５で、自動モードでのジョブが存在するかどうかを決定することを含む（パワーアウェア・スケジューラ、項目１．１３）。自動モードでのジョブが存在しない場合、方法９９０は、動作９９１に戻る。自動モードでのジョブが存在する場合、動作９９６で、ジョブの動作周波数が最低周波数Ｆｍｉｎより大きいかどうかが決定される（パワーアウェア・スケジューラ、項目１．１３ｂ）。ジョブの動作周波数が最低周波数より高くない場合、つまり、実行中のジョブに対する電力を削減する機会がない場合、方法９９０は、動作９９１に戻る。
【０１７２】
ジョブの動作周波数が最低周波数より高い場合、次のジョブ（新しいジョブ、又は一時停止中のジョブ）のため必要とされる電力ヘッドルームの量が決定される（パワーアウェア・スケジューラ、項目１．１３ｅ）。動作９９８で、利用できる電力（Ｐヘッドルーム）が自動モードでのジョブに対する電力削減量より小さいかどうかが決定される（パワーアウェア・スケジューラ、項目１．１３ｃ）。利用できる電力（Ｐヘッドルーム）がジョブに対する電力削減量より小さい場合、動作１０２０で、ジョブに割り当てられた電力（Ｊａｕｔｏ電力）が削減される。動作９９９で、ジョブが開始され、方法は、動作９９１に戻る。
【０１７３】
利用できる電力（Ｐヘッドルーム）がジョブに対する電力削減量より小さくない場合、動作９９７で、新しいジョブと一時停止されたジョブとのうちの少なくとも一方が存在するかどうかが決定される。新しいジョブも一時停止されたジョブも存在しない場合、方法９９０は、動作９９８に戻る（パワーアウェア・スケジューラ、項目１．１３ｃ）。新しいジョブ、又は一時停止されたジョブの少なくとも一方が存在する場合、方法９９０は、動作９９１に戻る。
【０１７４】
動作９９４で、ＰｃｓｙｓがＰｓｙｓより小さいと決定された場合、ジョブに対する電力を削減する方法（パワーアウェア・スケジューラ、項目１．１０）が実行される。電力削減量Ｐｒｅｄは、Ｐｃｓｙｓ−Ｐｓｙｓ−SystemGuardband1の間の差として決定され、動作１０３７で、自動モードでのジョブが存在するかどうかが決定される（パワーアウェア・スケジューラ、項目１．１０ｂ）。自動モードでのジョブが存在しない場合、ジョブに対する電力を削減する機会が存在せず、ジョブは、一時停止され（パワーアウェア・スケジューラ、項目１．１１）、方法９００は、動作１０３３へ進み、一時停止されるべきジョブを識別する。
【０１７５】
自動モードでのジョブが存在する場合、動作１０４０で、ジョブのグループへの電力を削減すべきかどうかが決定される。ジョブのグループへの電力が削減されるべき場合、自動モードでのジョブに対する電力を削減する方法（パワーアウェア・スケジューラ、項目１．１４）が実行される。動作１０４１（パワーアウェア・スケジューラ、項目１．１４ａ）で、Ｆｍｉｎより高い周波数で実行中のジョブが存在するかどうかが決定される。Ｆｍｉｎより高い周波数であるジョブが存在する場合、自動モードで実行中の全てのジョブに対する考えられる電力削減量（Ｐｒｅｄｕｃｔｉｏｎ）が決定される（パワーアウェア・スケジューラ、項目１．１４ｂ）。
【０１７６】
動作１０４３で、ＰｒｅｄａｕｔｏがＰｒｅｄより大きいかどうかが決定され、電力は、動作１０４２で削減され、方法９９０は、動作９９１に戻る。ＰｒｅｄａｕｔｏがＰｒｅｄより大きくない場合、方法９９０は、動作１０３３へ進む。Ｆｍｉｎより高い周波数で実行しているジョブが存在しない場合、動作１０３３で、最低優先度を有するアクティブな（実行中の）ジョブが決定される。動作１０３３で、最低優先度を有するジョブが一時停止される。動作１０３１で、ＰｃｓｙｓがＰｓｙｓより小さいかどうかが決定される。はいの場合、方法は、動作９９１に戻る。ＰｃｓｙｓがＰｓｙｓより小さくない場合、動作１０３４で、電力を一時停止できる全てのジョブが一時停止されるかどうかがチェックされる。一時停止できるジョブの全てが一時停止されたとは限らない場合、方法は、動作１０３３に戻り、キュー内の次のジョブを一時停止する。一時停止できる全てのジョブが一時停止された場合、方法９９０は動作１０２３へ進み、システム電力消費量Ｐｃｓｙｓがシステム割当量Ｐｓｙｓより下に削減され得るようにジョブを止めるために最低優先度を有するジョブを決定することを伴う。
【０１７７】
動作１０２７Ａで、最低優先度を有するジョブが止められ、その後、方法９９０は、動作１０２７へ進み、Ｐｃｓｙｓ＜Ｐｓｙｓであるかどうかを決定することを伴う。ＰｃｓｙｓがＰｓｙｓより小さい場合、方法９９０は、動作９９１に戻る。ＰｃｓｙｓがＰｓｙｓより小さくない場合、動作１０２９で、アクティブなジョブが存在するかどうかが決定される。アクティブなジョブが存在する場合、方法９９０は、動作１０２８に戻る。アクティブなジョブが存在しない場合、システムは、動作１０３０で電源を遮断される。
【０１７８】
動作１０４０で、全てのジョブへの電力を削減しないことが決定され、動作１０３６で、最低優先度を有するジョブに対する電力が削減される。動作１０３５で、Ｐｃｓｙｓ＜Ｐｓｙｓであるかどうかが決定される。ＰｃｓｙｓがＰｓｙｓより小さい場合、方法９９０は、動作９９１に戻る。ＰｃｓｙｓがＰｓｙｓより小さくない場合、方法９９０は、動作１０３３へ進む。
【０１７９】
動作９９４で、ＰｃｓｙｓがＰｓｙｓより小さいと決定され、より多くの電力をジョブに割り当てる方法が実行され（パワーアウェア・スケジューラ、項目１．３）、動作１０２１で新しいジョブ及び一時停止されたジョブのリストから最高優先度ジョブを取り出す。動作１０２２で、最高優先度ジョブが一時停止されたジョブであるかどうかが決定される（パワーアウェア・スケジューラ、項目１．３．ａ．ｉ）。ジョブ最高優先度ジョブが一時停止されたジョブである場合、動作１０２３で、ジョブのポリシーが自動モードであるかどうか決定される（パワーアウェア・スケジューラ、項目１．６）。ジョブのポリシーが自動モードである場合、ジョブに対する周波数推定値及び電力推定値が決定され（パワーアウェア・スケジューラ、項目１．７ｃ）、動作１０２６で、ジョブが開始され（パワーアウェア・スケジューラ、項目１．８）、方法９９０は、動作９９１に戻る。
【０１８０】
動作１０２３で、ジョブのポリシーが自動モードではないと決定された場合、ジョブに対する電力推定値が決定される（作業負荷タイプ、周波数、ノード）（パワーアウェア・スケジューラ、項目１．７ａ）。その後、電力推定値がＰｓｙｓ＋SysGuardBand2−Ｐｃｓｙｓより大きいかどうかが決定される（パワーアウェア・スケジューラ、項目１．７ｂ）。電力推定値がＰｓｙｓ＋SysGuardBand2−Ｐｃｓｙｓより大きい場合、方法９９０は、動作１０３７に進み、ジョブへの電力を削減する方法を実行する（パワーアウェア・スケジューラ、項目１．１０）。電力推定値がＰｓｙｓ＋SysGuardBand2−Ｐｃｓｙｓより大きくない場合、方法９９０は、動作１０２６へ進み、ジョブを開始する（パワーアウェア・スケジューラ、項目１．８）。
【０１８１】
動作１０２２で、最高優先度ジョブが一時停止されたジョブではない、と決定された場合、新しいジョブを開始できるか否かを決定することを含む動作１０２４が実行される（パワーアウェア・スケジューラ、項目１．４）。新しいジョブを開始できる場合、動作１０２５で、ジョブが電力制限を受けるかどうかが決定される（パワーアウェア・スケジューラ、項目１．５）。ジョブが電力制限を受ける場合、方法９９０は、動作１０２３へ進む。新しいジョブを開始できない場合、方法９００は、動作１０４４へ進む。動作１０４４で、キュー内にこれ以上の新しいジョブ、一時停止されたジョブ、又は両方が存在するかどうかがチェックされる。存在する場合、動作１０２１は、優先度によって次のジョブを取り出すために実行される。キュー内にこれ以上のジョブが存在しないと決定された場合、動作１０２３から、この方法は、動作１０３８へ進む。余剰電力は、Ｐｓｙｓ−SystemGuardband1−Ｐｃｓｙｓとして決定され、方法９９０は、ジョブが存在するかどうかを決定することを伴う動作１０３８へ進む。余剰電力が存在するにもかかわらず、新しいジョブを開始できないので、余剰電力は、システム上で既に実行しているジョブに割り当てられる。ジョブが存在する場合、動作１０３９で、現在のジョブの周波数が最高周波数に等しいかどうかが決定される。現在のジョブの周波数が最高周波数に等しい場合、方法９９０は、動作１０３８に戻り、次のジョブをチェックする。
【０１８２】
現在のジョブ周波数が最高周波数に等しくない場合、現在のジョブ周波数及び割り当てられた電力は、増加させられ、方法９９０は、動作１０２６へ進む。全てのジョブが動作１０３８でチェックされた場合、方法９９０は、動作９９１に戻る。動作１０２５で、ジョブが電力制限を受けないと決定された場合、ジョブプロファイル（ＰＭＰ、ジョブ周波数、最大で）が設定され、ジョブに対する電力は、推定装置から割り当てられる（パワーアウェア・スケジューラ、項目１．７ａ）。
【０１８３】
図１０は、一実施形態に従って、電力監視の有無の下でシステムの性能の例を表す。固定周波数モード、最小電力モード及び自動モードがジョブに対する均一周波数を選定するために使用された。グラフ１００１は、電力監視の有無の下で、利用できるシステム電力（Ｐｓｙｓ）１００３と対比してジョブに対するＣＰＵ周波数１００２を表す。グラフ１０１０は、電力監視の有無の下で、利用できるシステム電力（Ｐｓｙｓ）１０１２と対比してジョブを完了するまでの時間１０１１を表す。性能は、ジョブを完了するまでの実時間として測定されるので、数字が小さいほど、性能が優れている。実線１００４、１００５，及び１００６は、監視有りの下でＣＰＵ周波数を表し、点線１００７、１００８、及び１００９は、監視無しの下でＣＰＵ周波数を表す。実線１０１６、１０１７、及び１０１８は、監視有りの下でジョブを完了するまでの時間を表し、点線１０１３、１０１４、及び１０１５は、監視無しの下でジョブを完了するまでの時間を表す。
【０１８４】
グラフ１０１０及び１００１に表されるように、リソース・マネージャは、あらゆるモードにおけるあらゆる電力制限において監視有りの下でより良い性能を獲得する。利得は、４０％に達する可能性がある。自動モードは、固定周波数モード及び最小電力モードと比べると、最小の利用できる電力でジョブを開始することを可能にする。自動モードにおける自動均一周波数調整は、利用できる電力の使用量を最大化する。自動モードでのジョブは、固定周波数モードにおける周波数より約４０％高い均一周波数で動作することができる。その上、３つ全ての事例において実線は、対応する点線よりＹ軸の近くで始まる。これは、監視がスケジューラに、より低いシステム電力制限の下でジョブを開始できるようにさせることを示す。
【０１８５】
図１１は、一実施形態に従って、異なるモードで同時に実行するジョブを有する混合モード構成を例示して説明する表である。列１１０２は、ジョブ１（作業負荷Ｌｕｌｅｓｈ（Ｐｒ  １））が電力制限無しで２つのノード上で実行することを表す。列１１０３は、ジョブ２（作業負荷Ｑｂｏｘ（Ｐｒ  ２））が固定周波数モードにおいて２つのノード上で実行することを表す。列１１０４は、ジョブ３（作業負荷ＭＣＢ（Ｐｒ  ３））が事例１、行１１０５に関して固定周波数において、及び、事例２、行１１０６に関して４つのノード上で実行することを表す。
【０１８６】
図１２−１〜２は、一実施形態に従って、図１１に表された混合モード構成の結果を表す。グラフ１２００は、事例１及び事例２に対する３つのジョブに関して時間と対比して周波数を表す。グラフ１２０１は、事例１及び事例２に対する３つのジョブに関して時間と対比して電力消費量を表す。グラフ１２０２は、事例１及び事例２に対する３つのジョブに関して時間と対比してストランデッド電力を表す。
【０１８７】
図１１及び図１２−１〜２に表されるように、混合モード技術は、ジョブ性能を最大化したままで複数のジョブに対して同時に異なるモードを使用する柔軟性を提供する。図１１及び図１２−１〜２に表されるように、ジョブ３は、事例１では固定周波数モードで動き、事例２では自動モードで動く。事例２では、ジョブ１が３８秒で完了したとき、ジョブ１によって解放された電力は、電力を割り当て、ジョブ３の周波数を２．９ＧＨｚまで増加させる付加的な電力ヘッドルームをもたらす。その結果、ジョブ３は、固定周波数モード（事例１）より早く自動モードにおいて終了する。グラフ１２０１は、実行全体に亘る電力消費量がＣＰＵ周波数に類似したパターンに従うことを表す。グラフ１２０２は、事例１及び事例２における全電力消費量及び結果として生じるストランデッド電力を表す。図１２−１〜２に表されるように、事例１では、システムは、利用できる全ての電力を消費するものではないので、ストランデッド電力は、最大で６２０Ｗであり、ジョブ３は、終わるのが遅い。事例２では、システム電力消費量は、安定的であり、（ストランデッド電力が僅かに約３４０Ｗである）１８７０ＷというＰＳＹＳ値により接近し、ジョブ３をより早く終わらせる。
【０１８８】
図１３は、一実施形態に従って、同時に実行する異なるモードで２つのジョブを有する構成を例示して説明する表１３００である。列１３０１は、ジョブ１が事例１及び事例２の両方の場合に電力制限のない４つのノード上で作業負荷ＭＣＢ（Ｐｒ１）を実行することを表す。列１３０２は、ジョブ２が事例１（行１３０３）では固定周波数モードにおいて、及び事例２（行１３０４）では自動モードにおいて４つのノード上で作業負荷ＭＣＢ（Ｐｒ１）を実行することを表す。表１３００に表されるように、事例１及び事例２のそれぞれは、一斉に動く２つのジョブを有する。２つの事例の間の相違は、ジョブ２が事例１では、２．０ＧＨｚという固定周波数で動き、事例２では自動モードにおいて動くことである。
【０１８９】
図１４は、一実施形態に従って、図１３に表された構成への時変電力制限（Ｐｓｙｓ）の影響を例示して説明する。グラフ１４０１は、事例１に関して時間と対比して周波数を例示して説明する。グラフ１４０２は、事例２に関して時間と対比して周波数を例示して説明する。図１４に表されるように、自動モードでは、Ｐｓｙｓが時間と共に変化するとき、各ジョブに対する電力キャップ及び均一周波数設定は、動的に調整される。グラフ１４０１及びグラフ１４０２に表されるように、Ｐｓｙｓが低下するとき、事例１におけるジョブ２は、一時停止されるが、事例２におけるジョブ２は、より低い周波数で実行し続け、事例１におけるジョブ２より早く完了する。
【０１９０】
図１５は、一実施形態に従って、図１３に描かれた２つの事例に関する時変ＰＳＹＳの影響を表す。グラフ１５０１は、事例１に関して時間と対比して全電力消費量、ストランデッド電力及びＰｓｙｓを表す。グラフ１５０２は、事例２に関して時間と対比して全電力消費量、ストランデッド電力及びＰｓｙｓを表す。図１５に表されるように、事例２では、実際の電力消費量は、時変ＰＳＹＳにより近く、ストランデッド電力は、零の近くに留まる。ストランデッド電力は、時には、短期間に亘ってマイナスになる。ＰＳＹＳは、比較的長期間に亘って維持された平均電力であるが、全電力は、かなり短期間に亘って監視される。ＰＳＹＳは、長期間に亘って維持されることが期待され、Ｐｓｙｓを上回る全電力の小さい偏位は、より長い時間平均が指定されたシステム電力制限より下に留まる限り許容される。
【０１９１】
図１６は、一実施形態に従って、自動モードで実行するジョブの可変ＰＳＹＳへの適合性を例示して説明する図である。グラフ１６０１は、時間と対比して、かつ、一実施形態に従って、固定周波数モードでのジョブに対するＣＰＵ周波数（曲線１６０４）と、自動モードでのジョブに対するＣＰＵ周波数（曲線１６０３）と、Ｐｓｙｓ（曲線１６０５）とを表す。グラフ１６０１に表されるように、ジョブに対するＣＰＵ周波数は、Ｐｓｙｓが増加するときに増大させられる。グラフ１６０１に表されるように、自動モードでのジョブは、固定周波数モードでのジョブより約１８％早く完了する。
【０１９２】
グラフ１６０２は、一実施形態に従って、時間と対比して全電力消費量（曲線１６１２）と、固定周波数モードでのジョブの電力消費量（曲線１６１１）と、自動モードでのジョブの電力消費量（曲線１６１４）と、Ｐｓｙｓ（曲線１６１３）とを表す。グラフ１６０２に表されるように、自動モードでのジョブの完了時間は、固定周波数モードでのジョブの完了時間と比べて約１８％減少した。自動モードでのジョブの電力消費量は、固定周波数モードでのジョブの電力消費量と比べて約１７％増加する。自動モードでのジョブに関連付けられたエネルギーは、固定周波数モードでのジョブのエネルギーと比べて約４％減少する。
【０１９３】
図１７は、一実施形態に従って、利用できるシステム電力（ＰＳＹＳ）と対比して同じ作業負荷に対する自動モードでのジョブの周波数と固定周波数モードでのジョブの周波数との比率を示す図である。曲線１７０１、１７０２、１７０３、１７０４及び１７０５は、異なる作業負荷を有する異なるジョブに対応する。ＰＳＹＳの範囲は、制約を受けない作業負荷電力の約５０％から約１００％までになるように選定される。図１７に表されるように、自動モードで動いているジョブは、最大で４０％の周波数の増加を生じさせる。１２００Ｗと１７００Ｗとの間では、この範囲において、ジョブは、自動モードだけで開始することができるので、データ点が存在しない。図１７に表されるように、自動モードは、全ての作業負荷に対して固定周波数モードを凌ぐ。
【０１９４】
図１８は、一実施形態に従って、固定周波数モードでのジョブと相対的な自動モードでのジョブの完了までの時間の増加率百分率を表す。曲線１８０１、１８０２、１８０３、１８０４及び１８０５は、異なる作業負荷を有する異なるジョブに対応する。図１８に表されるように、全ての作業負荷は、自動モードでは固定周波数モードより早く完了する。
【０１９５】
図１９は、一実施形態に従って、データ処理システム１９００を例示して説明する。データ処理システム処理１９００は、図１〜図１８に関連して本明細書において記載された通り、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供する何らかのデータ処理システムを表現する。代替的な実施形態では、データ処理システム１９００は、ローカル・エリア・ネットワーク（ＬＡＮ）、イントラネット、エクストラネット、又はインターネット上の他の機械と接続される（例えば、ネットワーク化される）ことがある。データ処理システム１９００は、クライアント・サーバ・ネットワーク環境におけるサーバ若しくはクライアント・マシンの役割として、又は、ピア・ツー・ピア（若しくは分散）ネットワーク環境におけるピア・マシンとして動作することがある。
【０１９６】
データ処理システム１９００は、パーソナル・コンピュータ（ＰＣ）、タブレットＰＣ、セット・トップ・ボックス（ＳＴＢ）、パーソナル・デジタル・アシスタント（ＰＤＡ）、携帯電話機、ウェブアプライアンス、サーバ、ネットワークルーター、スイッチ若しくはブリッジ、又は、このデータ処理システムによって行われる操作を指定する（順次又はそれ以外の）命令の組を実行する能力がある何らかのマシンでもよい。更に、単一のデータ処理システムだけが例示して説明されているが、用語「データ処理システム」は、本明細書に記載された技法のいずれか１つ以上を行うために１組（又は複数の組）の命令を個別に又は共同で実行するデータ処理システムの何らかの集まりも含めるように解釈されるべきである。
【０１９７】
プロセッサ１９０４は、マイクロプロセッサ、中央処理ユニット、又はその他の処理機器などの１つ以上の汎用処理機器を表現する。より詳しくは、プロセッサ１９０４は、複雑命令セット計算（ＣＩＳＣ）マイクロプロセッサ、縮小命令セット計算（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、他の命令セットを実装するプロセッサ、又は命令セットの組合わせを実装するプロセッサでもよい。プロセッサ１９０４は、更に、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサなどの１つ以上の専用処理機器でもよい。プロセッサ１９０４は、図１〜図１８に関連して記載された動作を行う処理ロジックを制御するように構成される。
【０１９８】
データ処理システム１９００は、ある程度の数のコンポーネントを含むことがある。一実施形態では、これらのコンポーネントは、１つ以上のマザーボードに装着される。代替的な実施形態では、これらのコンポーネントは、マザーボードではなく、単一のシステム・オン・チップ（ＳｏＣ）ダイ上に製造される。データ処理システム１９００内のコンポーネントは、集積回路ダイ１９０２及び少なくとも１つの通信チップ１９０８を含むがこれらに限定されない。一部の実装では、通信チップ１９０８は、集積回路ダイ１９０２の一部分として製造される。集積回路ダイ１９０２は、プロセッサ１９０４と、キャッシュメモリとして使用されることがよくあり、内蔵ＤＲＡＭ（ｅＤＲＡＭ）若しくはスピン転送トルク・メモリ（ＳＴＴＭ若しくはＳＴＴＭ−ＲＡＭ）などの技術によって提供される可能性があるオンダイ・メモリ１９０６とを含むことがある。
【０１９９】
データ処理システム１９００は、物理的及び電気的にマザーボードに結合される、若しくは、ＳｏＣダイの内部に製造されるかもしれないし、又は、されないかもしれないその他のコンポーネントを含むことがある。これらのその他のコンポーネントは、揮発性メモリ１９１０（例えば、ＤＲＡＭ）、不揮発性メモリ１９１２（例えば、ＲＯＭ又はフラッシュメモリ）、グラフィックス処理ユニット１９１４（ＧＰＵ）、デジタル信号プロセッサ１９１６、暗号プロセッサ１９４２（ハードウェア内部で暗号アルゴリズムを実行する特殊プロセッサ）、チップセット１９２０、アンテナ１９２２、ディスプレイ又はタッチスクリーン・ディスプレイ１９２４、タッチスクリーン・コントローラ１９２６、バッテリ１９２８又はその他の電源、電力増幅器（ＰＡ）１９４４、グローバル・ポジショニング・システム（ＧＰＳ）機器１９２８、コンパス１９３０、（ノードによる消費電力、システムによる消費電力、若しくは両方を測定する電力センサ、運動センサ、又はその他のセンサ）を含むことがある）１つ以上のセンサ１９３２、スピーカ１９３４、カメラ１９３６、ユーザ入力機器１９３８（キーボード、マウス、スタイラス、及びタッチパッドなど）、及びマス・ストレージ機器１９４０（ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）など）を含むが、これらに限定されることはない。
【０２００】
通信チップ１９０８は、データ処理システム１９００とやりとりするデータの転送のための無線通信を可能にする。用語「無線」及びこれの派生語は、非固体媒体を通して変調電磁放射を利用してデータを通信することがある回路、機器、システム、方法、技術、通信チャネルなどを説明するために使用されることがある。この用語は、関連した機器が配線を全く含まないことを暗示するものではないが、一部の実施形態では、関連した機器は、配線を全く含まないかもしれない。通信チップ１９０８は、限定されることなく、Ｗｉ−Ｆｉ（ＩＥＥＥ  ８０２．１１ファミリー）、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ファミリー）、ＩＥＥＥ  ８０２．２０、ロング・ターム・エボリューション（ＬＴＥ）、Ｅｖ−ＤＯ、ＨＳＰＡ＋、ＨＳＤＰＡ＋、ＨＳＵＰＡ＋、ＥＤＧＥ、ＧＳＭ（登録商標）、ＧＰＲＳ、ＣＯＭＡ、ＴＯＭＡ、ＤＥＣＴ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、これらの派生物と、３Ｇ、４Ｇ、５Ｇ、及びその先のものとして表されたその他の無線プロトコルとを含む、ある程度の数の規格又はプロトコルのうちいずれかを実装することがある。データ処理システム１９００は、複数の通信チップ１９０８を含むことがある。例えば、第１の通信チップ１９０８は、Ｗｉ−Ｆｉ及びＢｌｕｅｔｏｏｔｈ（登録商標）などの短距離無線通信に特化されることがあり、第２の通信チップ１９０８は、ＧＰＳ、ＥＤＧＥ、ＧＰＲＳ、ＣＯＭＡ、ＷｉＭＡＸ、ＬＴＥ、Ｅｖ−ＤＯなどの長距離無線通信に特化されることがある。
【０２０１】
用語「プロセッサ」は、レジスタ及び／又はメモリからの電子データを処理し、この電子データをレジスタ及び／又はメモリに記憶されることがある他の電子データに変換する何らかの機器、又は、機器の一部を指すことがある。
【０２０２】
様々な実施形態では、データ処理システム１９００は、ラップトップ・コンピュータ、ネットブック・コンピュータ、ノートブック・コンピュータ、ウルトラブック・コンピュータ、スマートフォン、タブレット、パーソナル・デジタル・アシスタント（ＰＤＡ）、ウルトラ・モバイルＰＣ、携帯電話機、デスクトップ・コンピュータ、サーバ、プリンタ、スキャナ、モニタ、セット・トップ・ボックス、エンターテインメント制御ユニット、デジタルカメラ、携帯型音楽プレーヤ、又はデジタル・ビデオ・レコーダでもよい。更なる実装では、データ処理システム１９００は、データを処理する他の電子機器でもよい。
【０２０３】
マス・ストレージ機器１９４０は、本明細書に記載された技法又は機能のうちいずれか１つ以上を具現化する１組以上の命令の組（例えば、ソフトウェア）が記憶された機械アクセス可能な記憶媒体（又は、より具体的には、コンピュータ読み取り可能な記憶媒体）１９４５を含むことがある。ソフトウェアは、メモリ１９１０、メモリ１９１２、メモリ１９０６の内部に、及び／又は、データ処理システム１９００によるこのソフトウェアの実行中にプロセッサ１９０４の内部に完全に、又は、少なくとも部分的に常駐することもあり、オンダイ・メモリ１９０６及びプロセッサ１９０４は、機械読み取り可能なストレージ媒体も構成する。ソフトウェアは、ネットワークインターフェース機器を介してネットワーク上を更に送受信されることもある。
【０２０４】
機械アクセス可能な記憶媒体１９４４は、例示的実施形態において、単一の媒体であるように表されているが、用語「機械読み取り可能な記憶媒体」は、１組以上の命令の組を記憶する単一の媒体又は複数の媒体（例えば、集中若しくは分散データベース、及び／又は、関連付けられたキャッシュ及びサーバ）を含むように解釈されるべきである。用語「機械読み取り可能な記憶媒体」は、マシンによる実行のための命令の組を記憶又は符号化する能力があり、本発明の技法のうちいずれか１つ以上をマシンに行わせる何らかの媒体を含むようにも解釈されるべきである。用語「機械読み取り可能な記憶媒体」は、その結果、限定されることなく、固体メモリと、光学及び磁気媒体とを含むように解釈されるべきである。
【０２０５】
要約に記載された事項を含めて、例示して説明された発明の実装の上記記載は、網羅的であること、又は、発明を開示されたまさにその形式に限定するように意図されていない。発明の具体的な実装及び例は、例示的な説明の目的のため本明細書に記載されているが、当業者が認めるように、様々な等価的な変形が発明の範囲内で考えられる。
【０２０６】
これらの変形は、前述の詳細な説明を考慮して発明に加えられることがある。請求項において使用された用語は、発明を明細書及び請求項に開示された具体的な実装に限定するように解釈されるべきではない。それどころか、発明の範囲は、請求項解釈の確立した原則に従って解釈されるべきである請求項によって完全に決定されるべきである。
【０２０７】
以下の例は、更なる実施形態に関連する。
【０２０８】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１の電力をジョブに割り当てることとを含む、データ処理システムを動作させる方法。
【０２０９】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、利用できる電力に基づいてジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力をジョブに割り当てることとを含む、データ処理システムを動作させる方法。
【０２１０】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１の電力をジョブに割り当てることと、第１の電力を調整することとを含む、データ処理システムを動作させる方法。
【０２１１】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、ジョブのために必要な電力の量を決定することと、利用できる電力と必要な電力とのうち少なくとも一方に基づいて第１の電力をジョブに割り当てることとを含む、データ処理システムを動作させる方法。
【０２１２】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、監視された電力、推定された電力及び校正された電力のうち少なくとも１つに基づいて決定される利用できる電力に基づいて、第１の電力をジョブに割り当てることとを含む、データ処理システムを動作させる方法。
【０２１３】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、利用できる電力に基づいて、ジョブについての平均電力に基づいて決定される第１の電力をジョブに割り当てることとを含む、データ処理システムを動作させる方法。
【０２１４】
ジョブについてモードの指示を受信することと、ジョブが電力制限を受けるか否かに関する指示、ジョブについての電力ポリシーに関する指示、ジョブについての一時停止ポリシーに関する指示、又はこれらのいずれかの組合わせとを含むモードに基づいて、ジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１の電力をジョブに割り当てることとを含む、データ処理システムを動作させる方法。
【０２１５】
第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力を第１のジョブに割り当てることとを含む、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法。
【０２１６】
第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１のジョブを実行する複数のノードで使用される第１の周波数に基づいて、第１の電力を第１のジョブに割り当てることとを含む、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法。
【０２１７】
第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力を第１のジョブに割り当てることと、１つ以上の第２のジョブを監視することと、監視に基づいて第１の電力を調整することとを含む、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法。
【０２１８】
第１のジョブについてモードの指示を受信することと、モードに基づいて第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力を第１のジョブに割り当てることとを含む、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法。
【０２１９】
第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力を第１のジョブに割り当てることと、割り当てられた電力が第１の閾値より大きい場合、第１の周波数を減少させることと、割り当てられた電力が第２の閾値より小さい場合、第１の周波数を増加させることとを含む、パワーアウェア・ジョブ・スケジューラ及びマネージャを提供する方法。
【０２２０】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１の電力をジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２１】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、利用できる電力に基づいてジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力をジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２２】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１の電力をジョブに割り当てることと、第１の電力を調整することとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２３】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、ジョブのために必要な電力の量を決定することと、利用できる電力と必要な電力とのうち少なくとも一方に基づいて第１の電力をジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２４】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、監視された電力、推定された電力及び校正された電力のうち少なくとも１つに基づいて決定される利用できる電力に基づいて、第１の電力をジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２５】
ジョブについてモードの指示を受信することと、モードに基づいてジョブのために利用できる電力を決定することと、利用できる電力に基づいて、ジョブについての平均電力に基づいて決定される第１の電力をジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２６】
ジョブについてモードの指示を受信することと、ジョブが電力制限を受けるか否かに関する指示、ジョブについての電力ポリシーに関する指示、ジョブについての一時停止ポリシーに関する指示、又はこれらのいずれかの組合わせを含むモードに基づいて、ジョブのために利用できる電力を決定し、利用できる電力に基づいて第１の電力をジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２７】
第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力を第１のジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２８】
第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１のジョブを実行する複数のノードで使用される第１の周波数に基づいて、第１の電力を第１のジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２２９】
第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力を第１のジョブに割り当てることと、１つ以上の第２のジョブを監視することと、監視に基づいて第１の電力を調整することとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２３０】
第１のジョブについてモードの指示を受信することと、モードに基づいて第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力を第１のジョブに割り当てることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２３１】
第１のジョブのために利用できる電力を決定することと、利用できる電力に基づいて第１のジョブについて第１の周波数を決定することと、第１の周波数に基づいて第１の電力を第１のジョブに割り当てることと、割り当てられた電力が第１の閾値より大きい場合、第１の周波数を減少させることと、割り当てられた電力が第２の閾値より小さい場合、第１の周波数を増加させることとを含む動作をデータ処理システムに実行させる命令を含む、非一時的機械可読記憶媒体。
【０２３２】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、ジョブについてモードの指示を受信し、モードに基づいてジョブのために利用できる電力を決定し、利用できる電力に基づいて第１の電力をジョブに割り当てるように構成されている、データ処理システム。
【０２３３】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、ジョブについてモードの指示を受信し、モードに基づいてジョブのために利用できる電力を決定し、利用できる電力に基づいてジョブについて第１の周波数を決定し、第１の周波数に基づいて第１の電力をジョブに割り当てる、データ処理システム。
【０２３４】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、ジョブについてモードの指示を受信し、モードに基づいてジョブのために利用できる電力を決定し、利用できる電力に基づいて第１の電力をジョブに割り当て、第１の電力を調整する、データ処理システム。
【０２３５】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、ジョブについてモードの指示を受信し、モードに基づいてジョブのために利用できる電力を決定し、ジョブのために必要な電力の量を決定し、利用できる電力と必要な電力とのうち少なくとも一方に基づいて第１の電力をジョブに割り当てる、データ処理システム。
【０２３６】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、ジョブについてモードの指示を受信し、モードに基づいてジョブのために利用できる電力を決定し、監視された電力、推定された電力及び校正された電力のうち少なくとも１つに基づいて決定される利用できる電力に基づいて、第１の電力をジョブに割り当てる、データ処理システム。
【０２３７】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、ジョブについてモードの指示を受信し、モードに基づいてジョブのために利用できる電力を決定し、利用できる電力に基づいて、ジョブについての平均電力に基づいて決定される第１の電力をジョブに割り当てる、データ処理システム。
【０２３８】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、ジョブについてモードの指示を受信し、ジョブが電力制限を受けるか否かに関する指示、ジョブについての電力ポリシーに関する指示、ジョブについての一時停止ポリシーに関する指示、又はこれらのいずれかの組合わせを含むモードに基づいて、ジョブのために利用できる電力を決定し、利用できる電力に基づいて第１の電力をジョブに割り当てる、データ処理システム。
【０２３９】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、第１のジョブのために利用できる電力を決定し、利用できる電力に基づいて第１のジョブについて第１の周波数を決定し、第１の周波数に基づいて第１の電力を第１のジョブに割り当てる、データ処理システム。
【０２４０】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、第１のジョブのために利用できる電力を決定し、利用できる電力に基づいて第１のジョブについて第１の周波数を決定し、第１のジョブを実行する複数のノードで使用される第１の周波数に基づいて、第１の電力を第１のジョブに割り当てる、データ処理システム。
【０２４１】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、第１のジョブのために利用できる電力を決定し、利用できる電力に基づいて第１のジョブについて第１の周波数を決定し、第１の周波数に基づいて第１の電力を第１のジョブに割り当て、１つ以上の第２のジョブを監視し、監視に基づいて第１の電力を調整する、データ処理システム。
【０２４２】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、第１のジョブについてモードの指示を受信し、モードに基づいて第１のジョブのために利用できる電力を決定し、利用できる電力に基づいて第１のジョブについて第１の周波数を決定し、第１の周波数に基づいて第１の電力を第１のジョブに割り当てる、データ処理システム。
【０２４３】
メモリと、メモリに結合されたプロセッサとを備え、プロセッサは、第１のジョブのために利用できる電力を決定し、利用できる電力に基づいて第１のジョブについて第１の周波数を決定し、第１の周波数に基づいて第１の電力を第１のジョブに割り当て、割り当てられた電力が第１の閾値より大きい場合、第１の周波数を減少させ、割り当てられた電力が第２の閾値より小さい場合、第１の周波数を増加させる、データ処理システム。
【０２４４】
システムに割り当てられた電力を決定することと、システムによって消費された電力を決定することと、ジョブを識別することと、システムによって消費された電力に少なくとも基づいて、電力を識別されたジョブに割り当てることとを含む、データ処理システムの電力を管理する方法。
【０２４５】
システムに割り当てられた電力を決定することと、システムによって消費された電力を決定することと、システムによって消費された電力がシステムに割り当てられた電力より小さい場合、ジョブを識別することと、システムによって消費された電力に少なくとも基づいて、電力を識別されたジョブに割り当てることとを含む、データ処理システムの電力を管理する方法。
【０２４６】
システムに割り当てられた電力を決定することと、システムによって消費された電力を決定することと、ジョブの優先度を１つ以上の他のジョブと相対的に決定し、優先度に基づいてジョブを選択してジョブを識別することと、システムによって消費された電力に少なくとも基づいて、電力をジョブに割り当てることとを含む、データ処理システムの電力を管理する方法。
【０２４７】
システムに割り当てられた電力を決定することと、システムによって消費された電力を決定することと、システムによって消費された電力がシステムに割り当てられた電力より大きい場合、ジョブを識別することと、識別されたジョブに割り当てられた電力を削減することとを含む、データ処理システムの電力を管理する方法。
【０２４８】
システムに割り当てられた電力を決定することと、システムによって消費された電力を決定することと、ジョブを識別することと、識別されたジョブのモードを決定することと、少なくともシステムによって消費された電力及びモードに基づいて、電力を識別されたジョブに割り当てることとを含む、データ処理システムを管理する方法。
【０２４９】
システムに対する余剰電力を決定することと、ジョブによって消費された現在の電力を決定することと、余剰電力及び現在の電力のうち少なくとも一方に基づいて付加的な電力をジョブに割り当てることとを含む、データ処理システムを管理する方法。
【０２５０】
システムに対する余剰電力を決定することと、他の実行中のジョブと相対的に最高優先度を有するジョブを識別することと、識別されたジョブによって消費された現在の電力を決定することと、余剰電力及び現在の電力のうち少なくとも一方に基づいて、付加的な電力を識別されたジョブに割り当てることとを含む、データ処理システムを管理する方法。
【０２５１】
システムに対する余剰電力を決定することと、ジョブによって消費された現在の電力を決定することと、ジョブに対する現在の周波数を決定することと、余剰電力及び現在の電力のうち少なくとも一方に基づいて、付加的な電力をジョブに割り当てることと、現在の電力を増加させることとを含む、データ処理システムの電力を管理する方法。
【０２５２】
システムに割り当てられた電力、システムによって消費された電力、及び電力ガードバンドの間の差として決定されるシステムに対する余剰電力を決定することと、ジョブによって消費された現在の電力を決定することと、余剰電力及び現在の電力のうち少なくとも一方に基づいて、付加的な電力をジョブに割り当てることとを含む、データ処理システムの電力を管理する方法。
【０２５３】
システムに対する余剰電力を決定することと、第１のジョブによって消費された現在の電力を決定することと、余剰電力及び現在の電力のうち少なくとも一方に基づいて、付加的な電力を第１のジョブに割り当てることと、付加的な電力を第２のジョブに割り当てることとを含む、データ処理システムの電力を管理する方法。
【０２５４】
システムに対する電力削減量を決定することと、システムに対する電力削減量に基づいてジョブへの電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２５５】
システムに対する電力削減量を決定することと、ジョブのモードを決定することと、システムに対する電力削減量及びモードに基づいてジョブに対する電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２５６】
システムに対する電力削減量を決定することと、他のジョブと相対的に最低優先度を有するジョブを識別することと、システムに対する電力削減量に基づいて、識別されたジョブに対する電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２５７】
システムに対する電力削減量を決定することと、ジョブに対する動作周波数を決定することと、動作周波数に基づいてジョブに対する電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２５８】
システムに対する電力削減量を決定することと、ジョブを実行するノードの数を決定することと、ノードの数に基づいてジョブへの電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２５９】
１つ以上の第１のジョブを監視することと、第２のジョブに対する電力推定値を決定することと、第２のジョブを受け入れるために電力推定値に基づいて１つ以上の第１のジョブへの電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６０】
１つ以上の第１のジョブを監視することと、第２のジョブに対する電力推定値を決定することと、１つ以上の第１のジョブの優先度を識別することと、第２のジョブを受け入れるために優先度及び電力推定値に基づいて、１つ以上の第１のジョブへの電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６１】
１つ以上の第１のジョブを監視することと、１つ以上の第１のジョブの動作周波数を決定することと、第２のジョブに対する電力推定値を決定することと、第２のジョブを受け入れるために動作周波数及び電力推定値に基づいて、１つ以上の第１のジョブへの電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６２】
１つ以上の第１のジョブを監視することと、第２のジョブに対する電力推定値を決定することと、システムのために利用できる電力を決定することと、第２のジョブを受け入れるために電力推定値及び利用できる電力に基づいて、１つ以上の第１のジョブへの電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６３】
１つ以上の第１のジョブを監視することと、新しいジョブ及び一時停止されたジョブのうち一方である第２のジョブに対する電力推定値を決定することと、第２のジョブを受け入れるために電力推定値に基づいて、１つ以上の第１のジョブへの電力割当量を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６４】
ジョブの動作周波数を決定することと、ジョブに対する電力削減量を決定することと、電力削減量に基づいてジョブに割り当てられた電力を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６５】
ジョブの動作周波数を決定することと、消費されたシステム電力と割り当てられたシステム電力との間の差が所定の閾値より小さい場合、ジョブに対する電力削減量を決定することと、電力削減量に基づいてジョブに割り当てられた電力を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６６】
ジョブの動作周波数を決定することと、動作周波数が最低周波数より高い場合、ジョブに対する電力削減量を削減することと、電力削減量に基づいてジョブに割り当てられた電力を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６７】
第１のジョブの動作周波数を決定することと、第１のジョブに対する電力削減量を決定することと、第２のジョブに対する電力削減量を決定することと、電力削減量に基づいて第１のジョブ及び第２のジョブのうち少なくとも一方に割り当てられた電力を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６８】
ジョブの動作周波数を決定することと、システムによって消費された電力、システムに割り当てられた電力、及びシステムガードバンドに少なくとも基づいて、ジョブに対する電力削減量を決定することと、電力削減量に基づいて、ジョブに割り当てられた電力を削減することとを含む、データ処理システムの電力を管理する方法。
【０２６９】
以上明細書では、方法及び装置がこれらの具体的な例示的な実施形態を参照して記載されている。様々な変形が請求項に記載された通りの実施形態のより広義の趣旨及び範囲から逸脱することなくこれらに加えられることは、明白であろう。明細書及び図面は、その結果、限定的な意味ではなく、実例的な意味に考えられるべきである。
【図１】
0006701175.tif 000002
【図２】
0006701175.tif 000003
【図３】
0006701175.tif 000004
【図４】
0006701175.tif 000005
【図５Ａ】
0006701175.tif 000006
【図５Ｂ】
0006701175.tif 000007
【図５Ｃ】
0006701175.tif 000008
【図６】
0006701175.tif 000009
【図７】
0006701175.tif 000010
【図８】
0006701175.tif 000011
【図９Ａ】
0006701175.tif 000012
【図９Ｂ】
0006701175.tif 000013
【図９Ｃ】
0006701175.tif 000014
【図９Ｄ】
0006701175.tif 000015
【図９Ｅ】
0006701175.tif 000016
【図９Ｆ】
0006701175.tif 000017
【図９Ｇ】
0006701175.tif 000018
【図９Ｈ−１】
0006701175.tif 000019
【図９Ｈ−２】
0006701175.tif 000020
【図９Ｈ−３】
0006701175.tif 000021
【図１０】
0006701175.tif 000022
【図１１】
0006701175.tif 000023
【図１２−１】
0006701175.tif 000024
【図１２−２】
0006701175.tif 000025
【図１３】
0006701175.tif 000026
【図１４】
0006701175.tif 000027
【図１５】
0006701175.tif 000028
【図１６】
0006701175.tif 000029
【図１７】
0006701175.tif 000030
【図１８】
0006701175.tif 000031
【図１９】
0006701175.tif 000032