(57)【特許請求の範囲】
【請求項１】
非集約コンピューティング・システムにおけるパワーマネジメントのための方法であって、プロセッサ・デバイスによって、
予測される所望のワークロードに従って、前記非集約コンピューティング・システム内のプロセッサコアのセットに、総計すると初期集合的契約電力レベルになる初期電力レベルのセットを割り当てることと、
前記プロセッサコアのセット内のそれぞれのプロセッサコアに電力を動的に割り当てて、前記プロセッサコアのセットに対する前記電力を前記初期集合的契約電力レベルの閾値内でほぼ一定の電力レベルに維持しながら、集合的な被需要ワークロードを実行するための容量を生成することと、
を含む、方法。
【請求項２】
前記所望のワークロードは、前記それぞれのプロセッサコアに関連付けられたそれぞれのワークロードで構成され、前記それぞれのプロセッサコアに関連付けられた前記それぞれのワークロードは、複数のテナントによって要求される、請求項１に記載の方法。
【請求項３】
前記それぞれのプロセッサコアに関連付けられた前記それぞれのワークロードのワークロード・スループットに基づく統計的情報を監視して、前記所望のワークロードを予測することをさらに含む、請求項２に記載の方法。
【請求項４】
前記複数のテナントのセットは、サービス品質保証（ＳＬＡ）を有し、前記電力は、前記ＳＬＡに従って前記それぞれのプロセッサコアに動的に割り当てられる、請求項２又は請求項３のいずれか１項に記載の方法。
【請求項５】
前記電力を前記ＳＬＡの優先順位レベルに従って動的に割り当てることをさらに含み、それぞれのＳＬＡは、他のＳＬＡよりも高い優先順位を有する、請求項４に記載の方法。
【請求項６】
パワーマネジメント・アルゴリズムを用いて、前記それぞれのプロセッサコアに関連付けられた前記それぞれのワークロードの各々に対する電力モデルを時間枠内で計算することをさらに含む、請求項２から請求項５のいずれか１項に記載の方法。
【請求項７】
前記パワーマネジメント・アルゴリズムを用いて、前記電力を前記それぞれのワークロードの１つから前記それぞれのワークロードの別の１つに動的に配分することをさらに含み、ここで前記電力は、前記初期集合的契約電力レベルの前記閾値内で前記ほぼ一定の電力レベルを維持するように動的に配分される、請求項６に記載の方法。
【請求項８】
前記電力モデルを、前記時間枠の最後まで、各々それぞれのワークロードの１つ及びその次に従って、前記パワーマネジメント・アルゴリズムを用いて反復的に更新することをさらに含む、請求項７に記載の方法。
【請求項９】
非集約コンピューティング・システムにおけるパワーマネジメントのためのシステムであって、前記システムは、
少なくとも１つのプロセッサ・デバイスを含み、前記少なくとも１つのプロセッサ・デバイスは、
予測される所望のワークロードに従って、前記非集約コンピューティング・システム内のプロセッサコアのセットに、総計すると初期集合的契約電力レベルになる初期電力レベルのセットを割り当て、
前記プロセッサコアのセット内のそれぞれのプロセッサコアに電力を動的に割り当てて、前記プロセッサコアのセットに対する前記電力を前記初期集合的契約電力レベルの閾値内でほぼ一定の電力レベルに維持しながら、集合的な被需要ワークロードを実行するための容量を生成する、
システム。
【請求項１０】
前記所望のワークロードは、前記それぞれのプロセッサコアに関連付けられたそれぞれのワークロードで構成され、前記それぞれのプロセッサコアに関連付けられた前記それぞれのワークロードは、複数のテナントによって要求される、請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つのプロセッサ・デバイスは、前記それぞれのプロセッサコアに関連付けられた前記それぞれのワークロードのワークロード・スループットに基づく統計的情報を監視して、前記所望のワークロードを予測する、請求項１０に記載のシステム。
【請求項１２】
前記複数のテナントのセットは、サービス品質保証（ＳＬＡ）を有し、前記電力は、前記ＳＬＡに従って前記それぞれのプロセッサコアに動的に割り当てられる、請求項１０又は請求項１１のいずれか１項に記載のシステム。
【請求項１３】
前記少なくとも１つのプロセッサ・デバイスは、前記電力を前記ＳＬＡの優先順位レベルに従って動的に割り当て、それぞれのＳＬＡは、他のＳＬＡよりも高い優先順位を有する、請求項１２に記載のシステム。
【請求項１４】
前記少なくとも１つのプロセッサ・デバイスは、パワーマネジメント・アルゴリズムを用いて、前記それぞれのプロセッサコアに関連付けられた前記それぞれのワークロードの各々に対する電力モデルを時間枠内で計算する、請求項１０から請求項１３のいずれか１項に記載のシステム。
【請求項１５】
前記少なくとも１つのプロセッサ・デバイスは、前記パワーマネジメント・アルゴリズムを用いて、前記電力を前記それぞれのワークロードの１つから前記それぞれのワークロードの別の１つに動的に配分し、ここで前記電力は、前記初期集合的契約電力レベルの前記閾値内で前記ほぼ一定の電力レベルを維持するように動的に配分される、請求項１４に記載のシステム。
【請求項１６】
前記少なくとも１つのプロセッサ・デバイスは、前記電力モデルを、前記時間枠の最後まで、各々それぞれのワークロードの１つ及びその次に従って、前記パワーマネジメント・アルゴリズムを用いて反復的に更新する、請求項１５に記載のシステム。
【請求項１７】
非集約コンピューティング・システムにおけるパワーマネジメントのためのコンピュータプログラムであって、
請求項１から請求項８のいずれか１項による方法をコンピューティング・システムに実行させる、コンピュータプログラム。
【請求項１８】
請求項１７に記載のコンピュータプログラムをコンピュータ可読媒体に格納した、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に大規模コンピューティングに関し、より具体的には非集約（disaggregated）コンピューティング環境におけるパワーマネジメントに関する。
【背景技術】
【０００２】
普及型の大規模コンピューティングは、クラウドコンピューティングであり、リソースは、コンピュータネットワークのような通信システムを介して相互作用する及び／又はアクセスすることができる。リソースは、コンピューティング・デバイス、ストレージデバイス、アプリケーション、及び／又は他のコンピュータ関連デバイス及び／又は１つ又は複数のコンピューティング・デバイス上で実行されるサービス、例えばサーバなどの、ソフトウェアで表現されたシミュレーション及び／又はエミュレーションであり得る。例えば、複数のサーバが情報を通信する及び／又は共有することができ、この情報は、要求されたタスクを達成するのに必要とされる処理パワー、ストレージ空間、及び／又は他のコンピューティング・リソースに依存して、サーバを横断して拡張し及び／又は収縮することができる。「クラウド」という語は、このような配置で相互作用するコンピューティング・デバイス、コンピュータネットワーク、及び／又は他のコンピュータ関連デバイス間の相互接続性の図表の雲（クラウド）形の外観を暗示している。
【０００３】
クラウドコンピューティングは、インターネット上のサービスとして、「Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ」（ＩａａＳ）、「Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ」（ＰａａＳ）及び／又は「Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ」（ＳａａＳ）のような形で提供され得る。ＩａａＳは、典型的には物理的又は仮想コンピューティング・デバイス及び／又はアクセサリをフィー・フォー・サービス（fee-for-service）形式で提供することができ、クライアント／ユーザは、プラットフォーム、アプリケーション、及び／又はデータを、その上にロード及び／又はインストールし、管理することができる。ＰａａＳは、例えば、ソフトウェア開発プラットフォーム、チームコラボレーションのようなアプリケーションサービス、ウェブサービス・インテグレーション、データベース・インテグレーション、及び／又は開発者コミュニティ・ファシリテーションのようなコンピューティング・プラットフォーム及びソリューションスタックをサービスとして配信することができる。ＳａａＳは、オンデマンドでサービスとしての使用のためのソフトウェア使用許諾をアプリケーションとして顧客に配布することができる。ＳａａＳソフトウェアベンダは、自身が所有するクラウド上にアプリケーションをホストしてもよく、又はこのようなアプリケーションをクラウドからクラウド・クライアントにダウンロードしてもよく、使用後又はオンデマンド契約の期限切れの後、アプリケーションを無効にする。
【０００４】
このようなサービスのプロビジョニングは、ユーザが、サービスを提供するのに必要とし得るハードウェア及び／又はソフトウェアのようなインフラストラクチャを購入する及び／又は維持することなく、コンピューティング・リソースに関してユーザが必要とし得るだけの量にアクセスすることを可能にする。例えば、ユーザは、その代わりに、加入、購入、及び／又はその他のセキュリティ保護されたアクセスを介して、アクセス権を得ることができる。このように、クラウドコンピューティングは、情報技術サービスを配信するための費用対効果が高い方式であり得る。この急成長産業をサポートし及び維持する基礎をなすシステム及びインフラストラクチャを強化する、根本的な必要性が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って発明が解決しようとする課題は非集約コンピューティング・システムにおけるパワーマネジメントの方法、システム、およびコンピュータプログラムを提供することである。
【課題を解決するための手段】
【０００６】
第１の態様から見て、本発明は、非集約コンピューティング・システムにおけるパワーマネジメントのための方法であって、プロセッサ・デバイスによって、予測される所望のワークロードに従って、非集約コンピューティング・システム内のプロセッサコアのセットに、総計すると初期集合的契約電力レベルになる初期電力レベルのセットを割り当てることと、プロセッサコアのセット内のそれぞれのプロセッサコアに電力を動的に割り当てて、プロセッサコアのセットに対する電力を初期集合的契約電力レベルの閾値内でほぼ一定の電力レベルに維持しながら、集合的な被需要ワークロードを実行するための容量を生成することと、を含む、方法を提供する。
【０００７】
さらなる態様から見て、本発明は、非集約コンピューティング・システムにおけるパワーマネジメントのためのシステムを提供し、このシステムは、少なくとも１つのプロセッサ・デバイスを含み、少なくとも１つのプロセッサ・デバイスは、予測される所望のワークロードに従って、非集約コンピューティング・システム内のプロセッサコアのセットに、総計すると初期集合的契約電力レベルになる初期電力レベルのセットを割り当て、プロセッサコアのセット内のそれぞれのプロセッサコアに電力を動的に割り当てて、プロセッサコアのセットに対する電力を初期集合的契約電力レベルの閾値内でほぼ一定の電力レベルに維持しながら、集合的な被需要ワークロードを実行するための容量を生成する。
【０００８】
さらなる態様から見て、本発明は、非集約コンピューティング・システムにおけるパワーマネジメントのためのコンピュータプログラム製品を提供し、このコンピュータプログラム製品は、処理回路によって可読の、本発明のステップを行うための方法を行うために処理回路によって実行される命令を格納するコンピュータ可読ストレージ媒体を含む。
【０００９】
さらなる態様から見て、本発明は、コンピュータ可読媒体に格納され、デジタルコンピュータの内部メモリにロード可能なコンピュータプログラムであって、プログラムがコンピュータ上で実行されたときに本発明のステップを行うためのソフトウェアコード部分を含む、コンピュータプログラムを提供する。
【００１０】
プロセッサによる、非集約コンピューティング・システムにおけるパワーマネジメントのための種々の実施形態が提供される。１つの実施形態において、方法は、予測される所望のワークロードに従って、非集約コンピューティング・システム内のプロセッサコアのセットに、総計すると初期集合的契約電力レベルになる初期電力レベルのセットを割り当てることと、プロセッサコアのセット内のそれぞれのプロセッサコアに電力を動的に割り当てて、プロセッサコアのセットに対する電力を初期集合的契約電力レベルの閾値内でほぼ一定の電力レベルに維持しながら、集合的な被需要ワークロードを実行するための容量を生成することと、を含む。
【００１１】
前述の例示的な実施形態に加えて、種々の他のシステム及びコンピュータプログラム製品の実施形態が提供され、関連した利点をもたらす。前述の概要は、概念の選択を簡略化された形式で導入するために提示したものであり、これを詳細な説明においてさらに後述する。この概要は、特許請求される主題の重要な特徴又は必須の特徴を特定することを意図したものでもなく、特許請求される主題の範囲を決定することを支援するために用いられることを意図したものでもない。特許請求される主題は、背景において記したいずれかの又はすべての不利点を解決する実装に限定されない。
【００１２】
本発明は、ここで例示のみの目的で、以下の図面に示すような好ましい実施形態を参照して説明される。
【図面の簡単な説明】
【００１３】
【図１】本発明の態様を実現することができる非集約コンピューティング環境のハードウェア構造を示すブロック図である。
【図２】本発明の態様を実現することができる非集約コンピューティング環境のハードウェア構造を示す付加的なブロック図である。
【図３】本発明の態様による非集約コンピューティング・システムにおけるパワーマネジメントのための方法を示すフローチャート図である。
【図４】本発明の態様による非集約コンピューティング・システムにおけるパワーマネジメントの高レベル図を示すブロック図である。
【図５】本発明の態様による非集約コンピューティング・システムにおけるパワーマネジメントのためのパワーマネジメント・アルゴリズムを示すフローチャート図である。
【図６】本発明の態様による非集約コンピューティング・システムにおけるパワーマネジメントのための優先順位スケジュールを示すチャート図である。
【発明を実施するための形態】
【００１４】
コンピューティング・リソースは、通常、ベンダによって固定レベルの構成で事前構成される。１つの態様は、メモリサイズ、中央処理ユニット（ＣＰＵ）の数、ディスクサイズ等のような各々個々のコンピューティング・リソースが、制限された境界を有することである。他の態様は、各コンピューティング・プラットフォームが、制限された数の物理的なカスタマイゼーションの選択肢を有することである。今日のワークロードは、これらの制限の下で稼働しており、これがひいては、メモリスワッピング及びキャッシング最適化のような技術がコンピューティング環境において用いられることの理由である。
【００１５】
クラウドコンピューティングの出現は、人々がコンピューティング・リソースを利用する方式のパラダイムを、従量料金制（pay-as-you-go）モデルを提供することによって変化させた。サービスプロバイダによってパブリッククラウドが創出されており、このようなコンピューティング・リソースを必要とする人々にオンデマンドでアクセスを許可する。上述のように、クラウド・リソースへのアクセスは、インターネット又はプライベートネットワーク接続を通じて提供され、又は、ベースとして保持され、必要時にオンデマンド・リソースによって増強される、固定インフラストラクチャの共通ロケーションを通じて提供される。しかしながら、基礎をなすインフラストラクチャは、固定されたコンピューティング構成のセットであり、これはスケール拡大又はスケール縮小の需要がふさわしいときに柔軟性を欠く。
【００１６】
Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ  （ＩａａＳ）クラウドの基礎をなすアーキテクチャは、一般に、上述のようなデータセンタで用いられる伝統的なハードウェアである。ユーザは、ハードウェアに直接アクセスするか、又はハードウェア上に収容された仮想マシンにアクセスする。しかしながら、筐体（enclosure）が建造されるときに一度に構成される、筐体としてのビルディング・サーバ（building server）の固定された性質ゆえに、データセンタの下の基本アーキテクチャは、非常に剛直で、柔軟性を欠く。そのため、クラウドサービスがそれによって知られているところの柔軟なオンデマンド機能を創出するためのエミュレーションを提供するのが、クラウド・ソフトウェアである。しかしながらこの機能は極めて限定されており、なぜなら多くの機構は、サーバ筐体に依拠するソフトウェアに依存しており、そのアーキテクチャは、初期のパーソナルコンピュータ時代に端を発し、オンデマンド・サービスへと変化してきたものだからである。
【００１７】
仮想マシン（ＶＭ）は、サーバの一部で稼働するエンティティに基づき、場合によっては同じサーバを共有する他のこのようなエンティティを伴う、ソフトウェア技術である。これはオンデマンド・コンピューテーションの単位を表し、このような各エンティティには、事前定義された数の仮想ＣＰＵ及びメモリが指定される。ひとたび定義されると、ＶＭは、そのベースリソースを変更すること、例えばメモリを追加すること又は仮想ＣＰＵを追加することはできない。なぜなら、このようなＶＭは、固定された事前建造されたサーバ筐体のハードウェアリソースを他のＶＭと共有しているからであり、他のユーザを退去させて第１のユーザのリソース拡張のための余地を作ることは不可能であり得るからである。このようなことは原理的には（例えば、他のユーザを他のサーバに移行させる（ライブＶＭマイグレーション）ことによって）可能であるが、このような操作は、トラフィックの多大な増大を引き起こし、データセンタ・ネットワーク上の過負荷を必要とする。加えて、オンデマンドで新たなＶＭをプロビジョニングすることは、相対的に言っても非実用的な量の時間を要し得る（例えば、分単位、それに対して現実世界のイベントはサブ秒時間でイベントに応答することを必要とし得る）。そのため、真の、現実世界の、対応するオンデマンド・クラウドインフラストラクチャの概念は、存在しない。この状況は、最悪の場合のニーズ（最大プロセッサ数／速度、最大メモリ）に対するリソースをプロビジョニングすること、及び、たとえ不必要であっても現実世界のイベントに相対的時間で応答することを可能にするためだけにＶＭを保持しておくことを、ユーザに強いることになり得る。
【００１８】
アプリケーション・プログラム・インタフェース（ＡＰＩ）を介して達成されるクラウドサービスの場合、ユーザは、オペレーティングシステムに直接アクセスせず、ＡＰＩを介して要求を発行する。このときコンピューテーションは、基礎をなすオペレーティングシステム及びハードウェア・インフラストラクチャによって扱われる。ベンダによっては、ユーザＡＰＩに対して透明な、特定のレベルのスケール変更及び弾力性を提供するものもある。しかしながら、スケール変更のレベルは、アプリケーションのタイプによって、及び個々のコンピューティング・リソースの容量によって制限される。例えば、ワークロードが高需要のメモリ使用量を要求する場合、メモリサイズを個別にスケールアップすることは不可能である。従って、全体としてのリソース使用率（resource utilization）は低く、このソリューションは費用対効果も高くない。
【００１９】
上述のことに鑑み、非集約コンピューティング・システムは、クラウドでの使用のためのベアメタル・コンピューティング・システムの構築における柔軟性及び弾力性を提供し、オンデマンド柔軟性をクラウドユーザ、すなわち「テナント」に提供する。非集約コンピューティング・システムとは、ＣＰＵ、アクセラレータ、メモリデバイス、及びストレージデバイスのような物理的ハードウェアの大きいプールを有するシステムであって、個々のハードウェアリソース同士の相互の接続性を、どのハードウェアも又は稼働中のアプリケーションもシャットダウンすることなく、動的に切り換えることができるシステムのことを指す。これらのプールから個々のハードウェアリソースを選択して、オンデマンドでコンピュータシステムを組み立てることができる。このように、柔軟な容量の個々のコンピューティング・リソースを有するベアメタルコンピュータシステムを非集約システムにおいて組み立てることができ、それぞれのワークロードに最も適したハードウェアリソース構成に基づいてワークロードが計算されるようになっている。１つの実施形態において、例えば、メモリ集中型ワークロードの場合、極めて高能力のメモリサイズを用いるが、より中程度の容量のＣＰＵ及び他のリソースを用いて、システムを構築することができる。
【００２０】
これらの非集約システム内で、種々のアプリケーションレベルのサービス品質保証（ｓｅｒｖｉｃｅ  ｌｅｖｅｌ  ａｇｒｅｅｍｅｎｔ、ＳＬＡ）を使用することができ、クラウドサービスプロバイダとテナントの両方に対して全体としての費用及び性能効率モデルを保持しながら、ハードウェアリソースをオンデマンドで動的にプロビジョニングし、テナントが購入したコンピューティングサービスを受け取ることを保証する。
【００２１】
電力利用の視点から、現代のデータセンタ運営は、以下の２つの望ましい目標を有する。第１に、現代のデータセンタでは、サーバ、ラック、ケーブル、及びストレージにおける大きな設備投資、並びにこのようなシステム内に組み込まれたソフトウェアのライセンス許諾費用ゆえに、常駐システムを可能な限り１００％に近いコンポーネント使用率で稼動させることが望ましい。従って、機器のパワーダウン（すなわち、休止又はスリープモード）は、ハードウェアのすべての設備投資及びそれに付随するソフトウェアライセンスが無駄になることを意味するので、望ましくない。
【００２２】
第２に、電力会社からデータセンタに割り当てられた（契約した）電力の範囲を前提として、その割当（契約）電力範囲内で、ある小さい変動（例えば割当電力内の＋／−５％）で動作することが非常に望ましい。電力は高価なリソースであり、電力会社が発電し、電力網で送電して供給することができる総電力は限られている。電力会社は、電力消費の急速かつ大きい変動に適合するように電力の発電を迅速に調整することはできない。従って、データセンタは、いやおうなく、契約した特定の範囲の電力使用量を消費しなければならない。電力会社の発電機は、周期的な需要に合わせて調整することはできるが、これらの大きな不規則な電力使用量変化に合わせて調整することはできないので、電力会社は、発電と電力消費とを均衡させる必要がある。データセンタが不規則に契約電力よりも過少に使用すると、電力会社は、発電機に損傷を与えないように、発電された余計な電力を消費しなければならないことがある。従って、外部電力供給契約は、消費者（例えばデータセンタのオペレータ）による電力使用量の大きな変動が追加課金の形で費用面のペナルティを招くことがあることを規定している。それゆえ、すばやくスリープモードに移行して電力を節約し、単にすばやく元に戻ってその電力を再び使用することは、必ずしも常に有益であるとは限らない。
【００２３】
上記の２つの目標の組合せを実現することができれば、性能、スループット、使用率、費用の著しい便益があり、ここで恩恵を受ける当事者には、電力会社（費用便益）、データセンタ／クラウドプロバイダ（性能、使用率、及び費用便益）、及びエンドユーザ／クラウド顧客（性能、スループット、及び費用便益）が含まれる。２つの目標の組合せを実現することは、割当電力範囲内で稼動しながら、ハードウェアリソースの使用率、性能及びユーザのワークロードのスループットを同時に増大させることを補助することであり、その結果、電力会社、データセンタプロバイダ、及びエンドユーザにとっての費用が低下することになる。
【００２４】
上記の２つの考慮事項に基づいて、本発明は、処理コアが稼働させるワークロードのＳＬＡのニーズに基づいて、処理コアに対する電力割当の管理の問題を検討する。この問題に対処するためには、処理コアが動作するクロック速度及び電圧（それゆえ、回路、トランジスタのクロック周波数）を動的に再調整することによって、ワークロードのスループットを最適化しなければならない。スループットは性能とは異なり、なぜなら、より高いスレッド又はコア当たりの性能を達成することは、相対的により多くの電力を使用すれば可能であるのに対し、より低性能（すなわち、より低いクロック速度）のより多くのコアをより少ないコア当たり電力で使用すると、より高い全スループットが達成されるからである。
【００２５】
非集約コンピューティング環境において、顧客（テナント）は、ある特定の数のリソースを有するサーバをプロビジョニングすることができ、必ずしもそれらリソースのすべてがワークロードを稼働するのに同じスループット（それによって同じクロック速度）を常時必要とするわけではない。ワークロードによっては、より低い／高いクロック速度を必要とするときに電圧を再調整して、電力消費が、処理コアが動作しているところのスループットとより良く整合するようにすることが有益であり得るものもある。より高い性能（より高いクロック速度）に飛び込む（jump in）ことは非線形であり、それゆえ、より低いクロック速度で動作するよりも多くの電力を使うことに留意されたい。スループットが目標であれば、それはより低いクロック速度でより多くのコアを用いることによって達成することができるが、しかしながら、使用される全電力はより少ないが、より高いリソース使用（すなわち、より多くの処理コア）がある。
【００２６】
従来技術のプロセッサ、サーバ及びオペレーティングシステムは、標準化フェアシェア（fair share ）ポリシーのような固定されたポリシーに基づいて、各プロセッサコアに対して電圧及びクロック周波数を調整する能力を有する。しかしながら、これらは、既知の、予測された又は要求されたワークロードニーズに基づいてこのような調整を行うことはできない。それゆえ、これらは、処理コアのスループットに対する変更を行うときにＳＬＡ項を考慮に入れることができない。このような欠点に対処するために、本発明は、電力会社からの全契約電力割当の使用量を最大化しながら、ワークロードのＳＬＡコミットメントに基づいて電力を割り当てる技術を提案する。付加的に、本発明は、使用量パターン及び予想に基づいて、次の契約期間に契約すべき電力会社からデータセンタに対する総電力を決定する技術を提供する。
【００２７】
以下の用語及び変数が開示全体を通じて用いられ、これらの定義は明確性及び理解のために提供される：
ａ．Ｔｏｔａｌ＿Ｕｔｉｌｉｚｅｄ：データセンタ内のすべてのワークロードにわたって現在利用されている電力で表現された総能力
ｂ．Ｔｏｔａｌ＿Ｃｏｎｔｒａｃｔｅｄ：電力会社からデータセンタに対して契約された総電力割当
ｃ．Ｃｏｎｔｒａｃｔｅｄ  Ｖａｒｉａｔｉｏｎ：データセンタと電力会社との間で合意された、ペナルティを負わない許容可能な変動（例えば＋／−５％）を伴う電力範囲
ｄ．Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ：ワークロードに再割当てすることが可能な電力で表現された、データセンタの総処理能力（Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＝Ｔｏｔａｌ＿Ｃｏｎｔｒａｃｔｅｄ−Ｔｏｔａｌ＿Ｕｔｉｌｉｚｅｄ）
ｅ．Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄ：各ワークロードに割り当てられた電力で表現された、現在の処理能力
ｆ．Ｗｏｒｋｌｏａｄ＿Ｐｒｅｄｉｃｔｅｄ＿Ｄｅｍａｎｄ：学習されたワークロードモデルに基づくリソース使用量予測
ｇ．Ｗｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅ：現在のリソース割当と比較した予測需要に基づいて電力で表現された、ワークロード需要又は余剰能力
（特定のワークロードに対して、Ｗｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅ＝Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄ−Ｗｏｒｋｌｏａｄ＿Ｐｒｅｄｉｃｔｅｄ＿Ｄｅｍａｎｄであり、ここでＷｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅ＞０である場合、電力で表現された処理能力の余剰を有する。そうでない場合、ワークロードは、現在割り当てられているよりも多くの電力を必要とする）。
ｈ．Ｗｏｒｋｌｏａｄ＿Ａｌｌｏｃａｔｅｄ＿Ｐｒｏｐｏｒｔｉｏｎ：すべてのワークロードにわたって割り当てられた総電力に対する特定のワークロードに現在割り当てられている電力で表現された、処理能力の割合
ｉ．Ｔｏｔａｌ＿Ｗｏｒｋｌｏａｄ＿Ａｌｌｏｃａｔｅｄ：すべてのワークロードにわたって割り当てられた電力で表現された、総処理能力
ｊ．Ｒｅｓｏｕｒｃｅ＿Ｕｎｉｔ：最大化されているリソースの単位。リソース単位は、電力（すなわちメガワット）で表現された処理能力を含む。この事例でのリソース単位の例は、特定のワークロードの処理コア又は特定のワークロードに動的に割り当てることができる処理コンポーネントに対する電力の増大から導き出される付加的な処理能力である。
ｋ．Ｔｉｍｅ＿Ｗｉｎｄｏｗ：Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ電力が最大化されている持続期間の時間窓である。任意の特定のＴｉｍｅ＿Ｗｉｎｄｏｗを、構成可能な粒度（例えば、毎秒、分、時間、日、週、等）で定めることができる。
【００２８】
ここで図１を見ると、クラウド環境１００を含む非集約コンピューティング環境が示されている。クラウド環境１００は、物理的ハードウェアリソース２００を含む、非集約コンピューティング・システムである。物理的ハードウェアリソース２００は、ストレージデバイスプール２０２、グラフィック処理ユニット（ＧＰＵ）デバイスプール２０４、ＣＰＵデバイスプール２０６、メモリデバイスプール２０８、及びネットワークデバイスプール２１０のようなハードウェアリソースの分類で構成され得る。物理的ハードウェアリソース２００は、パワーマネジメント・モジュール２５０と通信している。パワーマネジメント・モジュール２５０は、ワークロードリソース使用率予測器２５８、電力最大化エンジン２６０、及び電力割当器２６２のようなコンポーネントで構成することができ、その各々は、ワークロード統計データベース２５４、構成データベース２５２、ワークロードリソース使用率監視システム２５６、及び電力プロビジョニングエンジン２６４と通信することができる。
【００２９】
さらに論じるように、構成データベース２５２は、データセンタレベル変数（例えば、Ｔｏｔａｌ＿Ｃｏｎｔｒａｃｔｅｄ、Ｔｏｔａｌ＿Ｕｔｉｌｉｚｅｄ、及びＴｏｔａｌ＿Ａｖａｉｌａｂｌｅで表された電力）の所定の値を格納する。ワークロード統計データベース２５４は、データセンタにおける期待ワークロードの統計情報（例えば、一意のワークロードＩＤ、割り当てられたリソース（Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄ）、予測需要（Ｗｏｒｋｌｏａｄ＿Ｐｒｅｄｉｃｔｅｄ＿Ｄｅｍａｎｄ）、リソース余剰高（Ｗｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅ）、現在の消費、平均使用率及び他の実行時統計量、ワークロードＳＬＡタイプ、ビジネス論理及びワークロードインパクトに関する）を受け取ることを担当する。
【００３０】
ワークロードリソース使用率予測器２５８は、システム内の各ワークロードの使用率の監視を担当するワークロードリソース使用率監視システム２５６から収集したメトリクスに基づいて、ワークロード使用量パターンをモデル化する。電力割当器２６２は、電力最大化エンジン２６０のコンピューテーションに基づいて電力割当命令を準備し、電力割当命令を電力プロビジョニングエンジン２６４に送る。電力プロビジョニングエンジン２６４は、電力割当器２６２から受け取った命令を発動する（すなわち、特定のワークロードの処理コアに対する電力を増大し若しくは減少させ、又は解放された（freed-up）処理コンポーネントを特定のワークロードに移行する）。電力最大化エンジン２６０は、ワークロードリソース使用率予測器２５８からの入力を受け取り、予め定義された種々の変数を計算する。
【００３１】
クラウド環境１００、パワーマネジメント・モジュール２５０、プロビジョニングコンポーネント２６０、及び物理的ハードウェアリソース２００と通信するのは、テナント２１２Ａ、２１２Ｂ、及び２１２ｎである。テナント２１２Ａ、２１２Ｂ、及び２１２ｎは、いずれかの信号搬送媒体（signal-bearing medium）によって提供されるクラウド環境１００と通信することができる。
【００３２】
図１に示す要素は、非集約コンピューティングアーキテクチャに含めることができる関連コンポーネントの一例を提供するに過ぎないことに留意されたい。例えば、パワーマネジメント・モジュール２５０は、本発明の範囲内にとどまりながら、ワークロードリソース使用率予測器２５８、電力最大化エンジン２６０、電力割当器２６２、ワークロード統計データベース２５４、構成データベース２５２、ワークロードリソース使用率監視システム２５６、及び電力プロビジョニングエンジン２６４以外のコンポーネントを含むことができる。加えて、マネジメントモジュール２５０及びその中のコンポーネントは、分離したエンティティで物理的に構成されてもよく、又は１つのエンティティに組み合わされてもよい。さらに、パワーマネジメント・モジュール２５０、従ってその内部のコンポーネントの責務は、複数のコンポーネント、コンピュータコード、又はそれらの組合せで行われ、かつそれらで構成されることができる。
【００３３】
図２は、図１の物理的ハードウェアリソース２００部分を示すブロック図である。ストレージデバイスプール２０２には、ストレージデバイス２０２Ａ、２０２Ｂ、及び２０２ｎが含まれる。ＧＰＵデバイスプール２０４は、ＧＰＵデバイス２０４Ａ、２０４Ｂ、及び２０４ｎを含む。ＣＰＵデバイスプール２０６は、ＣＰＵデバイス２０６Ａ、２０６Ｂ、及び２０６ｎを含む。メモリデバイスプール２０８は、メモリデバイス２０８Ａ、２０８Ｂ、及び２０８ｎを含む。最後に、ネットワークデバイスプール２１０は、ネットワークデバイス２１０Ａ、２１０Ｂ、及び２１０ｎを含む。各々の上記ハードウェアリソースは、信号搬送媒体を介して、付加的な１つ又は複数の上記ハードウェアリソースと通信することができる。
【００３４】
物理的ハードウェアリソース２００内で、実線で表された各ハードウェアリソース（すなわち、ストレージデバイス２０２Ａ、ＧＰＵデバイス２０４Ａ、ＣＰＵデバイス２０６Ａ、メモリデバイス２０８Ａ、及びネットワークデバイス２１０Ａ）は、１つ又は複数のテナント（すなわち、テナント２１２Ａ、２１２Ｂ、２１２ｎ）に対して割り当てられたハードウェアリソースである。点線で示されたハードウェアリソース（すなわち、ストレージデバイス２０２Ｂ、２０２ｎ、ＧＰＵデバイス２０４Ｂ、２０４ｎ、ＣＰＵデバイス２０６Ｂ、２０６ｎ、メモリデバイス２０８Ｂ、２０８ｎ、及びネットワークデバイス２１０Ｂ、２１０ｎ）は、割り当てられていないハードウェアリソースであり、それぞれのテナント２１２Ａ−ｎのワークロードに対してオンデマンドで利用可能である。
【００３５】
各々それぞれのテナント２１２Ａ−ｎに、個々のそれぞれのハードウェアリソース２００を任意の量で割り当てることができる。１つの実施形態において、各々それぞれのテナント２１２Ａ−ｎに、総システム容量及び／又はそれぞれのハードウェアリソース２００の利用可能な量の限度内で、任意の量の個々のそれぞれのハードウェアリソース２００を割り当てることができる。例えば、メモリプールからそれぞれのテナント２１２Ａ−ｎに割り当てられるメモリデバイス２０８Ａ−ｎは、総システム容量及び／又はメモリデバイス２０８Ａ−ｎの利用可能量の上限まで、割当ての最小単位（例えば、バイト又はワード）で提供され得る。
【００３６】
別の実施形態において、各々それぞれのテナント２１２Ａ−ｎに、量子ステップサイジング制約（quantum step sizing restriction）内で、個々のそれぞれのハードウェアリソース２００を割り当てることができる。例えば、データの読み出し／書き込みのときにそれぞれのメモリデバイス２０８Ａ−ｎからプロセッサまでの全帯域幅を確実にするために、メモリデバイス２０８Ａ−ｎを、メモリＤｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ（ＤＩＭＭ）ユニットの全部又は半分の量子サイズ上に割り当てることが必要であり得る。これは特に非集約システムに当てはまり、なぜならメモリデバイス２０８Ａ−ｎは、プロセッサメモリユニット（読出し／書き込みメモリトランザクション用）に、あたかもプロセッサチップにローカルに接続しているかのように、ファイバ／光学スイッチを介して直接接続しているが、しかし少し離れた距離（例えば１メートル）の位置にあり得るからである。別の例において、非集約システムは、仮想コンポーネントではなく物理コンポーネント（すなわちコア又はＶＭではなく実際のチップ）に基づいているので、量子サイジング制約は、最小限１つの中央処理ユニット（ＣＰＵ）デバイス２０６Ａ−ｎがテナント２１２Ａ−ｎに割り当てられることを必要とし得、付加的なＣＰＵデバイス２０６Ａ−ｎは、２、４等の量でテナント２１２Ａ−ｎにプロビジョニングされる。
【００３７】
本明細書で説明される種々の実施形態において、本発明は、既存の予測技術を用いてワークロードの需要を推定し、利用可能な電力を割り当て、又はワークロードに割り当てられた解除しなければ無駄になる電力を（ワークロードの優先順位に基づいて）解除する。総利用可能電力は、監視され及び追跡される。電力は、データセンタ用の契約外部電力からの変動が可能な限り小さくなるように維持される。いくつかの実施形態において、利用可能な総電力は、全使用率をそのデータセンタ用に契約された電力の範囲内で保持しながら、ワークロードの優先順位に基づいて必要時にワークロードに割り当てられ、これらワークロードに付加的なスループット・ブーストを提供する。例えば、このような優先順位の高いワークロードを稼働させる処理コアの電圧を増大し、それによりクロック速度を高めることは、正当な理由（例えば、より優先順位の高いワークロードが電力を使わないときにいつでも行うことができる大量データ解析）のためであるとはいえ、付加的な電力を使用する。ワークロードが予測需要に基づいて付加的な電力を必要とする一方で、最大契約外部電力に適合するのに十分な総利用可能電力がデータセンタ内にない場合、システムは、推定余剰電力を解除し、及び／又は（優先順位がより低い）ワークロードのいくつかに割り当てられた電圧を低減し、それを優先順位がより高いワークロードに、その予測需要に基づいて割り当てる。
【００３８】
ワークロードの優先順位は、テナント２１２ａ−ｎに割り当てられているようなそのＳＬＡ又は他のビジネス規則に基づいて決定される。名目上割り当てられた電力からの変動内で、利用可能な余剰電力を割り当てること及び利用可能な総電力をゼロに向かって駆動することによって、システムは、データセンタにおいて消費される総電力を均衡させ、電力会社から実際に契約された電力の範囲とより効率的に適合する。
【００３９】
本発明は、従って、電力消費を減らすよりもむしろ電力会社から契約された電力の使用率を最大化しようとするものであり、ＳＬＡ又は他のビジネス論理要件を、割り当てられた電力の使用を最大化するときに考慮に入れる。これは、主として十分に利用されていないサーバを休止状態にして又はパワーダウンして電力消費を節約する先行技術との重要な違いである。別の先行技術において、電力は高／低使用量に基づいて調整されるが、これは、ＳＬＡを維持しながら、機会主義的（opportunistic）ＳＬＡを有するワークロードを活用して電力送達を調整することによって、電力会社から割り当てられた電力の使用を最大化することに焦点を合わせたものではない。さらに、そして同時に、開示された発明は、データセンタに配備されたハードウェア及びソフトウェアの使用率及びスループット容量も改善する。
【００４０】
前述のように、この機能は、ポリシーベースのパワーマネジメント・サービスを通じて達成され、これは、そのような電力の使用及びその使用率を最大化することによって所望のワークロード・スループットを達成する一方で、電力使用率変動を電力会社によって割り当てられた（契約された）範囲内に維持する技術を実装する。これは、非集約コンピューティング・システムにおいて独自に達成可能であり、なぜなら処理コンポーネントを１つのワークロードから別のワークロードに迅速に切り換えることができるからであり、大きい非集約システムは、多くの並行ワークロードを駆動する能力を有する。それゆえ、実行されるワークロード（アクティブ又は一時停止モードのいずれであれ）並びに再開される他のワークロードが常時存在し、それらのすべてがミリ秒の応答時間以内で迅速にトリガされ得る。
【００４１】
上記の例を用いると、電力会社が、電力使用の変動に対してペナルティを伴わない許容可能な±５％変動で１０メガワットの電力を割り当てた（契約した）場合、データセンタには９．５〜１０．５メガワットの電力範囲が割り当てられる。この範囲は許容可能であるとはいえ、高い設備投資を伴うデータセンタは、総電力使用率の上限にあること（すなわち過少利用よりも過剰利用）を好むはずであり、そのため許容された１０．５メガワットを実行するという目標を維持しながら、データセンタ内の付加的な利用可能電力の総計をゼロに向かって駆動する。
【００４２】
本発明の機能によって認識される１つの基本原理は、各プロセッサ／プロセッサコアによって使用されるエネルギー／電力（非集約コンピューティング・システムのみならず、一般的なコンピューティングにおいても）は、それぞれのワークロードを行う仕事及び使用率の、各々個々のプロセッサ／プロセッサコアが所与の期間に消費することができる電力又はエネルギーの最大量に対する尺度であるということである。この個々のプロセッサが消費することができる電力又はエネルギーの最大量は、個々のチップ自体の仕様（設計）、プロセッサがその冷却収支に基づいて放散することができる熱の量、及び利用可能な電力の量（例えば、電力会社から入手可能な電力の量、又は入力電力仕様）に依存する。例えば、超大規模集積（ＶＬＳＩ）チップ技術が進歩し、チップの所与の面積内により小さいトランジスタを製作することができるにようになるにつれて、より多くの機能が可能になるが、その一方でこれらのトランジスタは、以前の大型トランジスタよりも速くスイッチングすることができ、そしておそらくは低い電圧で動作することができるけれども、これらは、必ずしもすべてが動作しているわけではなく（チップ内のすべてのトランジスタがスイッチングするわけではない）及び／又は利用可能なエネルギー又は電力は、冷却限界、電力送達設計等に依存して一定のままのこともある。
【００４３】
別の言い方をすれば、当該技術の現状のように、プロセッサ使用率は、一般に、所与の期間にわたって稼働している、「アイドル」プロセスに対するプロセッサ／プロセッサコアが「稼働」させたすべてのプロセスの、そのオペレーティングシステム状態に基づいて算出される。しかしながら、プロセスが「稼働」状態にあるとき、それが行う仕事の量（すなわち消費する電力又はエネルギーの量）は、プロセッサよって実行されるコードに大いに依存する。例えば、あるコードは、浮動小数点で重く、その一方で他のコードは、（すべてのコアからメモリコントローラにマルチスレッディング／イシュー（issue）が送られるときでさえ）メモリが読み出されている間にキャッシュミスすると、メモリトランザクションを行い、（オペレーティングシステムが測定できないほど十分に短い時間にわたって）ストールする。そのため、入力／出力（Ｉ／Ｏ）動作は、より高い待ち時間を有することがあり、コア／プロセスがＩ／Ｏを待機している場合、そのプロセスは、通常、オペレーティングシステムによって「Ｉ／Ｏ待機」とマーク付される。これは、「仕事」の量又はそれ以外のプロセッサ／プロセッサコアの基本使用率についての正確な測定を提供しない。
【００４４】
本発明は、従って、各プロセッサ／プロセッサコア、又はそれどころか任意の機能的サブシステムコンポーネントの使用率を別々に算出する。本明細書で提供される機能は、多数の「エネルギーファクタ」の各々を実時間で算出し及び測定し、各処理コンポーネント（例えば、この例ではプロセッサ／プロセッサコア）の総使用率を、エネルギーファクタの各々の算出された総計の仕事を、それぞれのプロセッサ／プロセッサコアが所与の期間に消費することができる電力の最大量に対して比較することによって得ることができることを規定する。すなわち、各プロセッサ／プロセッサコアの使用率は、それがプロセスを「稼働」させているか又は「アイドル」であるかによって決定されるのではなく、そのプロセッサ／プロセッサコアが「何の」プロセスを実行しているかを考慮に入れる。算出されるエネルギーファクタは、プロセッサ／プロセッサコアの割り当てられた電圧及びクロック速度（又は割り当てられた電圧及びクロック速度に対する調整）、消費されている電力の量（実時間又は所定の時間枠のいずれか）、行われているプロセスのタイプ（例えば、コード、ＳＬＡ、又は他のファクタに依存する）、及び／又は実行されている特定のプロセッサ命令を含むことができる。もちろん、当業者には認識されるように、多数の他のファクタ又はファクタのサブセットを考慮することができる。
【００４５】
さらに、上記のファクタ（例えば、電力損失／パッケージの冷却設計、又はそのプロセッサチップに割り当てられた電力、等）に基づいて最大エネルギー（電力）損失に対して制限されているプロセッサチップ（これはプロセッサコアの集合を有する）において、コアの各々は、その特定のワークロード毎に異なる命令セットを実行することができ、及び／又は、マルチイシュー・メモリトランザクションをストールさせて（コア速度はメモリ読出し待ち時間よりかなり高いので）コアがメモリ読出しを待機することを要求する、異なるキャッシュメモリ・ヒット（完全（perfect）から悪い(bad)までの）挙動を有することができることを観測することを必要とする。そのため、各コアは、異なるエネルギーレベルを消費し得る。これは、全体としてのプロセッサチップ（これは各々が異なる速度及び電圧の複数のコアを有する）に提供される異なるエネルギー使用率に至り得る。このエネルギーをプロセッサチップに対して用いようと試みると、異なるコアは、エネルギー使用率を可能な限り１００％近くに保つように、より高い電圧及びより高いクロック速度（これがより高い電圧が必要とされる理由であり、より高いクロック速度で稼働するためである）で稼働する機会を有し得る。
【００４６】
所与のプロセッサチップ（ここで再び、この例ではプロセッサチップを用いるが、いかなる機能コンポーネントに言及してもよい）がどんな理由であれその割当てエネルギーを使用することができない場合、かつ、ここで提供されるすべてのプロセスがそのプロセッサチップに割り当てられていたエネルギーを可能な限り多量に使用することを試みた後、全使用率読取値（overall utilization reading）が負の比率を有すると判断された場合、このプロセッサは、十分に利用されていない（under-utilized ）と言われることになり得る。各コンポーネント又はサブシステム（例えばプロセッサ）についての全使用率読取値は、以下のように算出することができる：（チップ当たり実際使用エネルギー−チップ当たり最小エネルギー）／（チップ当たり最大エネルギー−チップ当たり最小エネルギー）。ここでチップ当たり最小エネルギーは、コアが何も処理していないときでもプロセッサチップが消費するエネルギーであり、チップ当たり最大エネルギーは、パッケージの冷却設計又はそのチップに許された割当てエネルギーの範囲内でチップが消費を許される最大総エネルギーであり、実際使用エネルギーは、使用されるチップ当たりの総エネルギーである。このすべては、時間窓Ｔにわたって測定され、これは短い持続時間（例えば数秒間又は１分間）とすることができる。
【００４７】
全使用率読取値の種々のパターンを用いて、所定の期間にわたる各コンポーネント又はサブシステムに対する全使用率読取値の計算に基づいてワークロードを分類することができる。すなわち、処理サブシステム、メモリサブシステム、アクセラレータサブシステム、及び／又はネットワーキングサブシステムに対する全使用率読取値を、所定の期間にわたる非集約システムのパワーマネジメントの一部として見ることができ、検出された同じクラスの類似の入りワークロード（incoming workload）を分類する。
【００４８】
例えば、分類は、ａ）キャッシュ・フレンドリーなワークロード、これはコアサブシステム及び／又はアクセラレータサブシステムがコンピューテーションを行うためにまだエネルギーを消費している間、メモリサブシステムから消費するエネルギーが比較的少なく、キャッシュメモリサブシステムからもっと多くのエネルギーを消費する；ｂ）キャッシュ・アンフレンドリーなワークロード、これはコアサブシステム又はアクセラレータサブシステムがコンピューテーションを行うためにまだエネルギーを消費している間、メモリサブシステムから比較的多くのエネルギーを消費し、そのキャッシュサブシステムによって消費されるエネルギーがもっと少ない；ｃ）コンピューテーション・バウンド・ワークロード、これはそのコア又はアクセラレータサブシステムから比較的多くのエネルギーを消費し、そのメモリ及び／又はそのネットワークサブシステムから消費するエネルギーが非常に少ない；ｄ）入力／出力（Ｉ／Ｏ）バウンド・ワークロード、これはそのネットワークサブシステムから比較的多くのエネルギーを消費し、そのコア及びアクセラレータサブシステムから消費するエネルギーが比較的少ない。
【００４９】
これらの分類を用いて、個々のコンポーネント又はサブシステムに電力を動的に割り当てることができ、及び／又は多数の個々のコンポーネント又はサブシステムを、類似の過去の全使用率読取値を有する検出された入りワークロードに動的に割り当てることができる。以前のワークロードｘの例を考えると、これは、非集約システム内のすべてのコンポーネント又はサブシステムの全使用率読取値を得ると、コンピューテーション・バウンド・ワークロードであることが見いだされている。このワークロードｘが戻ると（同一のワークロード又は類似のワークロードのいずれであれ）、非集約システムは、ワークロードｘを効率的に行うために、ワークロードｘが、より多くのプロセッサエネルギー、又はより多くのプロセッサが割り当てられることを必要とすると判断することができる。非集約システムはまた、ワークロードｘが、メモリ及びネットワーキングパワーをそれほど必要としないこと、又はより少ない数のメモリ及びネットワーキングコンポーネントが割り当てられることを判断することができる。このように、非集約システムは、実時間で、個々のワークロードに割り当てられるコンポーネントの数を過去の経験からのその全使用率読取値に基づいて調整することができ、及び／又はワークロードを行うために用いられる個々のコンポーネントに割り当てられる電力を調整することができる（スケールアップ又はスケールダウンのいずれであれ）。他の実施形態において、この全使用率読取値パターンを用いて、個々のユーザ、特定のアプリケーション、又はそれらの組合せに対して電力及び／又はコンポーネント及びサブシステムを動的に割り当てることができる。
【００５０】
このように、複数のエネルギーファクタを用いて総計の仕事を算出すること、及びプロセッサ／プロセッサコア（又は他のコンポーネント）の各々の総使用率を得ることを用いて、以下で説明するアルゴリズムを用いて、システム全体を通じてより少ないエネルギーを用いて同じスループットを得るように、電力を均衡させるためにプロセッサ／プロセッサコア又は他のサブシステム間で電力を再割当てすることができ、又はそれ以外にコンポーネント又はサブシステムの割当てを解除することができる。
【００５１】
図３は、非集約コンピューティング・システムにおけるパワーマネジメントのための方法３００を示す。方法３００は、種々の実施形態において、とりわけ図１及び図２に示された環境のいずれかにおいて、本発明によって行うことができる。もちろん、当業者にはこの説明を読めば理解されるように、図３に具体的に記載された動作より多くの動作又は少ない動作を方法３００に含めることができる。
【００５２】
方法３００のステップの各々は、オペレーティングシステムのいずれかの適切なコンポーネントによって行うことができる。例えば、種々の実施形態において、方法３００は、プロセッサ、又は１つ若しくは複数のプロセッサを有する他のいずれかのデバイスによって、部分的に又は全体的に行うことができる。プロセッサ、例えば、ハードウェア及び／又はソフトウェアに実装された、好ましくは少なくとも１つのハードウェアコンポーネントを有する、処理回路、チップ、及び／又はモジュールをいずれかのデバイスにおいて利用して、方法３００の１つ又は複数のステップを行うことができる。例示的なプロセッサは、限定されないが、中央処理ユニット（ＣＰＵ）、図形処理ユニット（ＧＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）等、それらの組合せ、又は当該分野で既知の他のいずれかの適切なコンピューティング・デバイスを含む。
【００５３】
方法３００は、予測される所望のワークロードに従って、非集約コンピューティング・システム内のプロセッサコアのセットに初期電力レベルのセットを割り当てることによって、開始し（ステップ３０２）、ここで初期電力レベルのセットを総計すると初期集合的契約電力レベルになる（３０４）。プロセッサコアのセット内のそれぞれのプロセッサコアに電力を動的に割り当てて、プロセッサコアのセットに対する電力を初期集合的契約電力レベルの閾値内でほぼ一定の電力レベルに維持しながら、集合的な被需要ワークロードを実行するための容量を生成する（ステップ３０６）。方法は、終了する（ステップ３０８）
【００５４】
いくつかの実施形態において、パワーマネジメント・モジュール２５０は、ワークロードを異なるカテゴリに優先順位付けすることができ、各カテゴリは、許容されるクロック速度及び電圧の範囲を含む（例えば、高（クロック速度範囲ａ−ｂ）；中（クロック速度範囲ｃ−ｄ）；低（クロック速度範囲ｅ−ｆ））。パワーマネジメント・モジュール２５０は、さらに、ワークロードの使用量パターンの分析及びクロック速度要件の予想（例えば、ワークロードによっては、リソース使用率の季節的又は周期的パターンを有するものがある）に基づいて、各カテゴリ（プロセッサ／プロセッサコアの電圧及びクロック速度）の範囲を動的に調整することができる。もちろん、当業者には認識されるように、実際の実装に応じて、「高、中、低」優先順位、カテゴリ、又は範囲以外の他の多くのカテゴリ及び優先順位を用いることができる。
【００５５】
さらなる動作は、ワークロードの再類別をその使用量要件及び予想に基づいて行うことができる。例えば、低優先順位ワークロードが常にそのクロック速度範囲上限レベルを要求する場合、これは中優先順位ワークロードとして再類別すべきである。逆に、高優先順位ワークロードが、一般に、そのクロック速度の許容範囲のより低いレベルを要求する場合、これは中優先順位ワークロードとして再類別することができ、以下同様である。付加的に、プロセッサ／プロセッサコアの性能（クロック速度）を増大させるために、他のより優先順位が低い又はより需要が低いワークロードの電力、従ってクロック速度を低下させることによって、需要に基づいて電力を特定のワークロードに割り当てることができる。さらに、パワーマネジメント・モジュール２５０の機構は、優先順位分布の予測／予想から次期の契約電力のより正確な量を決定することができる。
【００５６】
図４のブロック図に続けると、本発明の１つの実施形態の高レベル図４００が示されている。履歴使用量データ４１０をシステムによって解析して、高、中、低（又は所定の）カテゴリのクロック速度の下限／上限範囲を推定する（４１２）。システムは、履歴使用量データ４１０において観察される変化に基づいて高、中、低カテゴリに対する範囲を動的に再調整する。１つの例において、カテゴリの範囲は、統計的に定めることができるのに対し、他の例において、範囲は、履歴使用量パターン４１０及び需要の予想に基づいて自動的に推定することができる。
【００５７】
システムは、履歴使用量データ４１０を用いて、ワークロードを異なる優先順位のクロック速度及び電圧に類別する（４１４）。ワークロードグループ４２０のランク付けは、ＳＬＡ、優先順位、リソース依存性に基づいて行われ、リソース（電力）を再割当てする順番を決定する（４１６）。異なる因子を考慮に入れて、ワークロードをグループ分けするための基準を形成することができる。１つの有利な基準セットは、リソース移動が最小限の影響しか有さない相補的なリソース使用量パターンを有するワークロードに焦点を合わせたものであり得る。例えば、高ＳＬＡを有するワークロードＸは、高使用量パターンを有し得、高クロック速度範囲カテゴリに類別されるのに対して、別のワークロードＹは高ＳＬＡを有するが低使用量パターンを有し得、低クロック速度範囲カテゴリに類別される。電力を再割当てするのにこれらの相補的なリソース使用量パターンを有するワークロードを使うことは、電力使用率を最大化することを補助し、それゆえＳＬＡを満足させながら総利用可能電力を最小化する。別の基準セットは、ワークロードの所有者がワークロードのグループを指定し、そこにはグループ性能目標又はグループ電力節約目標が存在し、グループの目標が特定のワークロードの目標よりも重要であるような、基準とすることができる。システムは、次に、電力を動的に再割当てして、より高いクロック速度を１つのワークロードから他のワークロードに許して、クロック速度需要を満たす（４１８）。
【００５８】
さらに、各プロセッサ／プロセッサコアの割り当てられた又は再割当てされた電圧及びクロック速度に対する調整は、入力電源（例えば、外部電力）が低減したことを検出したときに行うことができる。例えば、外部電力網の「ブローニング（browning）」、無停電電源（ＵＰＳ）又は発電機の使用を必要とする全くの停電、又はデータセンタへの入力電力がフル容量ではない他の状況の間、行われているそれぞれのワークロードのＳＬＡ要件に応じて、より低い優先順位のワークロードを実行するプロセッサ（その中の電圧及びクロック速度を調整する）からより高い優先順位のワークロードに電力を再割当てすることができる。
【００５９】
外部電力がもはや供給されていないときがこのような場合に該当し、このときデータセンタは、データセンタにあるバックアップ発電機が始動して特定の量の電力をオンラインで持ってくることができるようになるまで（すなわち、発電機は、このような電力中断時に稼働するように契約されているワークロード及びＳＬＡをカバーするためだけに、正常動作で用いられる総外部電力の一部を発電することができる）、最初にしばらくの時間（例えば数秒間から1分間）バッテリ電力で稼働する（電力不足の間稼働し続けるオプションが与えられていないＳＬＡのワークロードの適正なシャットダウンを可能にするために）。
【００６０】
発電機は、パワーオンまでにいくらか時間がかかり、かつ、その出力電力を変更するのにいくらか時間がかかり、それは、車が、アクセルペダル（gas paddle)を完全に床まで踏み込んで加速されるときに、完全な加速が達成されるまでにある程度の遅延が見られるのと同じことである。従って、ＵＰＳは、しばしば、電力中断後、即時に用いられ、データセンタ全体が電力緊急モードに入ることを可能にし、電力不足に対して明示的な契約がなされていないサーバ及びサービスをシャットダウンする（例えば、メモリイメージのスナップショットを取得し、そのイメージをすばやくフラッシュメモリに記憶させて、後で再開するためのポイントをすばやく作成する）。数秒（例えば、一般に１０〜３０秒）後、発電機は、その発電を安定化して、電力不足／緊急の場合に稼動し続ける又はそれ以外に稼動が保証されている残りのサービス及びリソースプールにバックアップ電力を供給することが可能になる。バックアップ電力発電中、バックアップ発電機に動力供給するのに必要な燃料を可能な限り節約することを目指して、あるサービス又はリソースプールがバックアップ電力を使用しない又は必要としない場合には、これをシャットオフして、非集約アーキテクチャに基づいて、後でミリ秒以内で再始動されるようにする。バックアップ電力で稼動するように契約されたサービス／ワークロード／リソースプールの場合、サービスを実行する速度は、そのサービス及びその処理に必要な実時間のスループットを維持するのに最小限必要なものとなる。それゆえ、そのサービス／ワークロード／リソースプールのエネルギー消費を低下させるためにクロック速度及び電圧の不断の調整が必要とされ、これらを増大させるのは、検出されたスループットが契約された実時間処理の創出に必要とされるものよりも遅い場合のみである。
【００６１】
この処理がバックアップ電力の発電中で不規則なものであり得るという前提で、データセンタのバッテリ・ファーム（battery farm）を平滑化統計的手段として用いて、変動を、ローカル発電機電力出力を調整するための所要時間と、処理のための付加的なエネルギーニーズを有する実時間イベントに応答しなければならない所要時間との間で移動させる。使用の谷(times of valley use）において、電力発電機によって生成された余分な電力は、発電機がその電力出力が低くなる（及び燃料消費が少なくなる）ように調整するまで及びその逆の場合も同様にバッテリに貯蔵され、バッテリは、発電機がより多くの電力出力を生成することができるようになり、より多くの燃料を消費する前に、瞬間的に必要とされる余分な電力を供給する。
【００６２】
ある場合には、ＵＰＳ、発電機、又はそれらの組合せによる外部電力の低下及び／又は中断中に供給される電力の量に応じて、電力を、より低い優先順位（ＳＬＡによる）のワークロードを実行している１つ又は複数のプロセッサから、より高い優先順位のワークロードに再割当てすることができ、正常な外部電力が回復するまで、より低い優先順位のワークロードが停止され又は一時停止されるようになっている。
【００６３】
他の場合には、ある特定の個々のコンポーネント若しくはサブシステム（すなわちプロセッサコア、プロセッサ等）、サブシステムの領域（すなわち、プロセッサのプール、メモリコンポーネントのプール等）、又は構成された非集約システム全体に対するバックアップ電力は、それらのコンポーネント、領域、又は非集約システムが、中断中のバックアップ電力を含まないＳＬＡ要件を有するワークロードを実行している場合には供給されなくてもよい。例えば、外部電力中断中（又は所定の閾値を超えた外部電力低下の検出時）、データセンタ内のＵＰＳは、発電機が始動し、個々のコンポーネント又はシステムを含むデータセンタへの電力供給が開始されるまで、ある特定のコンポーネント又はシステムへの電力の供給を保つことができる。発電機の電力での所定時間の稼動後、システムは、個々のコンポーネント又はシステムの系統的なシャットダウン（従って、電力シャットダウン）を開始することができる。これは、非集約システムが、個々のプロセッサ又はプロセッサコア、サブシステムのプール（例えば、プロセッサ、メモリコンポーネント等のプール）のような粒子（granular）コンポーネントをシャットダウンすることを含むことができ、又は１つ若しくは複数の全体的に構成された非集約システムをシャットダウンすることを含むことができる。
【００６４】
別の例において、データセンタのる特定の「領域」を、多様な優先順位のＳＬＡを有するワークロードを稼動するために指定することができる。データセンタ（複数の非集約システムをその中に含む）の１つの領域を、高優先順位ＳＬＡワークロードを稼動するために指定することができ、１つの領域を、中優先順位ＳＬＡワークロードを稼動するために指定することができ、１つの領域を、低優先順位ＳＬＡワークロードを稼動するために指定することができる。外部電力の低下又は中断中、低優先順位ＳＬＡワークロードを稼動するデータセンタ（したがってその中の複数の非集約システム）の領域をシャットダウンし、所定時間が経過した後、発電機電力から解除することができる。この目的で、領域全体をシャットダウンして発電機電力から同時に解除してもよく、又は領域内の特定の非集約システムを最初にシャットダウンし、次いで他のシステム、さらに次のシステムを、実行されているワークロードのＳＬＡ階層に従って系統的プロセスでシャットダウンしてもよい。もちろん、本明細書で言及するように、「高優先順位」、「中優先順位」、及び「低優先順位」は、本発明を分かりやすく説明するためのいくつかの例の単なる表現に過ぎない。実際の実装において、多様な優先順位レベル、ＳＬＡ考慮事項、又は他の要因を、実装の特定のニーズに従って考慮することができる。
【００６５】
これらのワークロード／ＳＬＡは、多くの使用事例のものであり得る。例えば、データセンタは、災害復旧の場合の一次データセンタ用の代替サイトにワークロードを有することができ、これは通常は稼動せずに第１のデータセンタから更新された状態で維持されているが、災害が一次（第１の）データセンタの場所に影響を与えた場合に必要とされ得る。別の使用事例は、通常は高優先順位であるがこのような災害復旧又は停電状況では稼動しないという例外を有するＳＬＡのワークロードからなるものであり得る。
【００６６】
そのため、正常動作中のデータセンタの総電力消費が１０メガワット程度である場合、１メガワットの緊急電力発電を必要とするのみであり得、これは結局データセンタプロバイダ及びユーザの費用を節約する。本明細書で提供される電力均衡化アルゴリズム及び方法論を用いると、いくつかの高優先順位ＳＬＡは、必要なバックアップ電力を保存するために作業を少なくすることができ及び／又はより低いクロック速度及び電圧で稼動することができるので、実際には正常時に消費するすべての電力を消費しなくてもよい。
【００６７】
さらに、これらのモデル及び方法を用いると、次期にデータセンタのワークロード需要を満たすより正確な電力量を契約するために、使用量パターン及び予想に基づいて全電力消費を推定することができる（４２４）。
【００６８】
前に進むと、別の実施形態が図５を参照して開示される。図５は、本発明の１つの実施形態による、非集約コンピューティング・システムのパワーマネジメントのための方法５００を示す。方法５００は、種々の実施形態において、とりわけ図１及び図２に示された環境のいずれかにおいて、本発明によって行うことができる。もちろん、当業者にはこの説明を読めば理解されるように、図５に具体的に記載された動作より多くの動作又は少ない動作を方法５００に含めることができる。
【００６９】
方法５００のステップの各々は、オペレーティングシステムのいずれかの適切なコンポーネントによって行うことができる。例えば、種々の実施形態において、方法５００は、プロセッサ、又は１つ又は複数のプロセッサを有する他のなんらかのデバイスによって、部分的に又は全体的に行うことができる。プロセッサ、例えば、ハードウェア及び／又はソフトウェアに実装された、好ましくは少なくとも１つのハードウェアコンポーネントを有する、処理回路、チップ、及び／又はモジュールをいずれかのデバイスにおいて利用して、方法５００の１つ又は複数のステップを行うことができる。例示的なプロセッサは、限定されないが、中央処理ユニット（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）等、それらの組合せ、又は当該分野で既知の他のいずれかの適切なコンピューティング・デバイスを含む。
【００７０】
開始すると（ステップ５０２）、標準回帰モデル化技術のような周知の方法を用いて、ワークロード毎に使用量パターンがモデル化される（ステップ５０４）。論じたように、電力使用率の小さい変動は契約電力範囲内で維持されるので、目標は、Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅを０に近づけること（電力会社から提供される最大の電力が用いられるように）であるが、すべての状況下で、Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅは、Ｔｏｔａｌ＿Ｃｏｎｔｒａｃｔｅｄ掛けるＣｏｎｔｒａｃｔｅｄ＿Ｖａｒｉａｎｃｅより小さくなるはずである。しかしながら、伝統的なサーバ・バウンド環境においては、不規則なニーズが生じた場合高優先順位ＳＬＡに迅速に割り当てるために電力の予備を確保しておくことが望ましい場合があるが、非集約環境では、リソースの再割当てをミリ秒以内で迅速にトリガすることができる。
【００７１】
続けて、各Ｔｉｍｅ＿Ｗｉｎｄｏｗ  ｔ以内で（ステップ５０６）、パワーマネジメント・アルゴリズム５５０が以下のように計算される。
【００７２】
各ワークロードｉについて（ステップ５１０）、Ｗｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅｉを計算し、ワークロード統計データベース２５４に格納し（ステップ５１２）、これは以下のように表される。
Ｗｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅｉ＝Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ−Ｗｏｒｋｌｏａｄ＿Ｐｒｅｄｉｃｔｅｄ＿Ｄｅｍａｎｄｉ
【００７３】
Ｗｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅを、例えばＳＬＡ及び／又はインパクトポリシー、及び／又はビジネス論理に基づいて順序付ける（ステップ５１４）。ワークロードｉがＷｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅ＞０又はＷｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅ＜０のどちらを有するかについて判定を行う（ステップ５１６）。ワークロードｉがＷｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅ＞０を有する場合、正のＷｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅｉを有する、すなわち余剰のリソースを有するすべてのワークロードからリソースを解除し（ステップ５１８）、Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅが計算され（ステップ５２０）、これは以下のように表される。
各ワークロードｉについて、
Ｗｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅｉ＞  ０ならば、
Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ＝Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ−Ｒｅｓｏｕｒｃｅ＿Ｕｎｉｔ
Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＝  Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＋Ｒｅｓｏｕｒｃｅ＿Ｕｎｉｔ
【００７４】
ステップ５１６において、ワークロードｉがＷｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅ＜０を有する場合、負のＷｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅを有する、すなわちリソースに対してより大きい需要を有するワークロードにリソースを割り当て（ステップ５２２）、Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅを計算し（ステップ５２４）、これは以下のように表される。
各ワークロードｉについて、
Ｗｏｒｋｌｏａｄ＿Ｒｅｓｏｕｒｃｅ＿Ｏｖｅｒａｇｅｉ＜０ならば、
Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ＝Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ＋Ｒｅｓｏｕｒｃｅ＿Ｕｎｉｔ
Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＝  Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ−Ｒｅｓｏｕｒｃｅ＿Ｕｎｉｔ
【００７５】
続けて、Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＞０（又は＞＞０）又はＴｏｔａｌ＿Ａｖａｉｌａｂｌｅ＜０のいずれであるかについての判定が次に行われる（ステップ５２６）。ステップ５２６において、Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＞０（又は＞＞０）の場合、リソースは、既存の割当ての比率に基づいて、又は特定のポリシー及びＳＬＡに基づくようなワークロード拡張に関する手動入力に基づいて、既存のワークロード又は稼動できる付加的なワークロードに比例配分され（ステップ５２８）、これは以下のように表される。
各ワークロードｉについて、
Ｗｏｒｋｌｏａｄ＿Ａｌｌｏｃａｔｅｄ＿Ｐｒｏｐｏｒｔｉｏｎｉ＝Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ／Ｔｏｔａｌ＿Ｗｏｒｋｌｏａｄ＿Ａｌｌｏｃａｔｅｄ
Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ＋＝Ｗｏｒｋｌｏａｄ＿Ａｌｌｏｃａｔｅｄ＿Ｐｒｏｐｏｒｔｉｏｎｉ＊Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ
Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＝０
【００７６】
ステップ５２６において、Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅが０を下回る場合、リソースは、既存の割当ての比率に基づいて、又はＳＬＡにおけるワークロード拡張に関する手動入力に基づいて、Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉから比例的に解除され、又はワークロードを一時停止することができ（ステップ５３０）、これは以下のように表される。
各ワークロードｉについて、
Ｗｏｒｋｌｏａｄ＿Ａｌｌｏｃａｔｅｄ＿Ｐｒｏｐｏｒｔｉｏｎｉ＝Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ／Ｔｏｔａｌ＿Ｗｏｒｋｌｏａｄ＿Ａｌｌｏｃａｔｅｄ
Ｗｏｒｋｌｏａｄ＿Ｃｕｒｒｅｎｔ＿Ａｌｌｏｃａｔｅｄｉ−＝Ｗｏｒｋｌｏａｄ＿Ａｌｌｏｃａｔｅｄ＿Ｐｒｏｐｏｒｔｉｏｎｉ＊Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ
Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＝０
【００７７】
各ワークロードｉに対して、ステップ５０４で参照されるモデルは、パワーマネジメント・アルゴリズム５５０を用いて反復的に更新される。
【００７８】
いくつかの実施形態において、優先順位順序を用いて、Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅ＞０のとき、図６のチャート内に示すように、付加的な電力をワークロード間で割り当てることができる。表６００は、総利用可能電力がゼロを上回るときに付加的な電力をワークロード間で割り当てるために用いることができる優先順位の順序の一例を優先順位１から４までの順序で示す。表６００は、優先順位第１位は臨界的な予測可能なＳＬＡに基づき、優先順位第２位は不規則であるが臨界的なＳＬＡに基づき、優先順位第３位は機会主義的かつ予測可能なＳＬＡに基づき、優先順位第４位は不規則な機会主義的ＳＬＡワークロードに基づき得ることを示す。Ｔｏｔａｌ＿Ａｖａｉｌａｂｌｅが０を下回るとき、電力を解除する優先順位を決定するために同じ順序を逆に適用する（すなわち、ワークロード優先順位４から１まで）。もちろん、当業者には認識されるように、上記の電力割当の順序を同じ割合で修正する、説明した優先順位以外の付加的なＳＬＡ優先順位が存在してもよい。
【００７９】
他の実施形態において、本発明は、下はプロセッサコア（すなわちプロセッサの一部）のような粒子から、複数のプロセッサを含むラックまで、上は全データセンタ自体の中のすべてのコンポーネント（例えば、アクセラレータ、ネットワーキングコンポーネント、メモリ、キャッシュ等）を含む、処理コンポーネントから提供されるエネルギー測定値を総計することによって、全データセンタの総使用率を測定する、新規機構を提供する。この測定値をデータセンタ内の「パワールーム」から収集する代わりに、このエネルギー測定の方法論は、アクセス権を有さないか又はそれ以外のよりカジュアルなユーザ（高レベル管理者ではない）である個人に、データセンタ内のコンポーネントの実際の使用率に関するメトリクスをそのようなコンポーネントのより良い全体効率及びスループットを達成するために入手する独自の機会を提供し、それゆえ、異なるＳＬＡ優先順位内でリソースを過剰にプロビジョニングし、それでもなお種々のＳＬＡ条件を同じコスト・プラットフォーム上で生じる付加的な収益を伴って実行することができるデータセンタのオペレータに加えて、ユーザが、自分が借りているリソースのコレクションについて、及びそれらをどのように最適化するか考えることを可能にする。これらの機構は、先行技術において一般に適用されるようにリソース及び／又はデータセンタ使用率を決定するのに温度又は他の複雑かつ厄介な（intrusive）読取値を入手することとは対照的である。
【００８０】
例えば、データセンタの所有者ではないユーザが、データセンタの使用率が何であるか（プロセス使用率のオペレーティングシステムベースの状態ではなく、エネルギーベースの使用率によって上記で定められたような）を知る必要性を有するとき、複数の異なるサーバ上で処理コンポーネント又はその一部（プロセッサコア等）のエネルギーレジスタを読み取る、仮想プローブを実装することができる。このようなプローブは、クラウドサーバプロバイダにおいて定めることができる可能な限り最小の仮想マシン（ＶＭ）エンティティとして組み入れることができる。
【００８１】
このプローブの２つの態様がある。プローブは通常、特定の期間又は時間間隔（例えば１分間）において、プロセッサ／サーバのエネルギー消費レジスタ（これはそのサーバについてのすべてのコアのエネルギー使用を総計する）を読んでいる。これはまた、プロセッサパッケージエネルギー、コアエネルギー、メモリエネルギー、アクセラレータ（例えば、利用可能な場合ＧＰＵコア又はＦＰＧＡ）のエネルギー、及びネットワーキングコンポーネントのエネルギーの読取値も有し得る。
【００８２】
プローブモードにおいて、このような小さいＶＭは長期間（週、月など）にわたって稼動し、以下のデータ、すなわちプロセッサにおいて今まで観測された最大エネルギー、プロセッサにおいて今まで観測された最小エネルギー、及び経時的に観測されたエネルギーの平均を、プローブがプロセッサチップ／サーバについてこれを読み取るたびに読んだエネルギー読取値の差を計算することによって収集する。プローブがたまたま、常にビジーなサーバ内にあれば、そのプローブは常に最大エネルギーを読むことになる。同様に、プローブがたまたまアイドルなサーバ内にあれば、そのプローブは常に最小エネルギーを読むことになる。
【００８３】
次に、データセンタ内で稼動しているすべてのプローブにわたって、グローバル最小及びグローバル最大エネルギーを、同じタイプのサーバ内に配置されたプローブに関して計算する（ここでサーバのタイプとは、クラウドサービスオペレータによって提供されるサーバに対して可能であり得る異なる仕様を指し、例えば異なるタイプにおいて、サーバは、異なるプロセッサバージョンを有する場合もあり、又はプロセッサのより新しい世代に対して、より旧い世代を使用している場合もある、等）。同じタイプのサーバに割り当てられたすべてのプローブに対して、グローバル最大及び最小が所定の時間に計算され、同じタイプのサーバ内に組み込まれたすべてのプローブの中でデータセンタの全使用率を得る。
【００８４】
データセンタにおいて（後述のように）異なるサーバを各々監視する統計的に有意な数のプローブが存在すると仮定すると、そのデータセンタの全使用率は、エネルギー又は電力使用率として下記のように算出することができる。（すべてのプローブの平均（又は各々によって経時的に見られる平均エネルギー）−すべてのプローブされたサーバから算出されたグローバル最小電力）／（すべてのプローブされたサーバから算出されたグローバル最大電力−すべてのプローブされたサーバから算出されたグローバル最小電力）。
【００８５】
新たなプローブを既存のプローブのセットに追加するために、既存のプローブのセットの各々は、「パワーウイルス」（サーバ内に配置された小さいＶＭ当たり最大エネルギー消費を発生させるように特に設計された命令のセット）を稼動する。パワーウイルスの稼動／停止時間パターンは、割り当てられるＶＭの新たな候補監視プローブによって検出されるキーとなる。すべての既存のＶＭプローブ内のパワーウイルスをこのときこのように検出され得る回数（例えば、オフ１０秒、オン２０秒、オフ２０秒、オン５秒、さらにもっと）で稼動させ、エネルギーの検出可能な変化の山／谷の連鎖を新たな小さいＶＭ内の新たな候補プローブによって形成する。このパターン又はキーは、より長期間（例えば、数分から１時間ほど）にわたって反復し、新たな候補プローブによる正確な検出を可能にする。
【００８６】
新たな候補プローブは次いで、プロセッサチップ又はサーバが用いているエネルギーを、これが観測可能である通りに読み取る。他の（既存の）プローブが発生させるオン／オフ期間のパワーウイルスパターンとの何らかの相互関係がある場合、新たな候補プローブは解放され、新たなＶＭが割り当てられる前にランダムな待機時間を待機し、ここでプロセスが再び開始する。同様に、新たな候補プローブが、変化しない最大エネルギー出力を連続的に観測する場合、この新たな候補プローブは解放され、ランダムな待機時間後、新たなプローブが新たなＶＭ割当てと共にプロビジョニングされる。このように、新たなプローブを追加するためのプロセスは、プローブのすべてにエネルギー／電力消費をプローブさせる前に、異なるサーバ上で稼動する一意のプローブのみが割り当てられていることを保証する。
【００８７】
新たなプローブの割当ては、クラウドサービスが稼働しているデータセンタ・ロケーションの既知の又は推定されたサイズに基づいて統計的に有意な数のプローブが成功裏に割り当てられるまで続くことになり、数日間又はそれ以上にわたって生じることもある。この数は、統計の既知分野から誘導される。さらに、このようにしてデータセンタを監視する合計時間はまた、曜日に起因する変化の大部分を観察するのに、又は測定される平均使用率に影響を及ぼし得る他のイベント（例えば、祝日、夏季休暇、又は確立されたデータセンタに対して新たなデータセンタを始動すること）をマスクして除くのに十分なだけ長くするべきである。
【００８８】
他の実施形態において、ユーザ測定側において、非集約システム内のリソースの中から構成された（ここで「構成」は、システムが配線によって、この例ではファイバを接続する光学スイッチを伴って組み立てられて、サブシステム又はリソースプール間に終端間（end-to-end）接続を形成することを意味する）数百のサーバのインスタンスを稼動させている会社は、すべての割り当てられたサーバのエネルギー消費を読むための直接アクセス権を有することもでき、したがってワークロード性能及びその使用がどの程度効率的であるかを評価することもできる。これは、ユーザに、その割り当てられたリソースすべてにわたるエネルギー使用のパターン及び使用されるサブシステム／リソースタイプ及びいつ使用されるか等に応じて、ことによると費用を削減するという利点を少なくとも時折与えることができる。この機能は、非集約システムの使用に直接的に帰するものである。この非集約性は、クラウドコンピューティングが一般に提供するオンデマンドモデルとは別であることに再度留意されたい。オンデマンドモデルでは、ユーザは、最終的にユーザの多数のＶＭをホストする事前建造された物理的サーバボックスの限界まで、より多くのリソース（ＶＭ）を取得することができる。非集約設計では、リソースのプールは非常に大きく、そのためプロセッサ又は他のコンポーネントの追加（例えば、スケールアップ又は多重ソケットを有するＳＭＰ）は、リソースが同じサーバ「ボックス」内に物理的に存在するか否かの制限なく、必要時に形成することができるので、リソースは、必要時により弾力的なフォーマットでユーザ毎に配属される。
【００８９】
逆に、データセンタの所有者又はオペレータは、すべての構成されたサーバ、及び問題のリソース（例えば、プロセッサ、メモリ、アクセラレータ、ストレージ、通信ネットワーキング、プロセッサ内のキャッシュ、及び注目するいずれかの／すべての機能サブシステム）について、エネルギー消費を読む。すべてのサブシステムについてエネルギー消費を読むためのこのようなアクセスは、データセンタのオペレータがデータセンタの全管理の一部としてアクセス権を有するハイパーバイザ又は制御ネットワークを通じて促進することができる。
【００９０】
期間当たりのエネルギーの総計読取値は、データセンタにおいて稼動しているすべてのワークロードについての使用量及び動作のプロファイルの正確な状態をオペレータに与える。これは、エネルギーを利用しているプロセッサに関するものとすることができる。例えば、プロセッサが低い使用率パーセントで常に稼動している場合、オペレータは、割り当てられるワークロードを追加することもでき、又はデータセンタのために用いられるプロセッサプール内のプロセッサの数を減らすこともできる、等である。
【００９１】
この方法論は、考慮事項の階層としても適用される。例えば、データセンタ内の「領域」のあるものは、他のものより多く利用され得る。領域は、サーバの動的構成おいてリソースプールを共有することができるエリアである。他の領域の利用がより少ない場合があり、それゆえ領域間でエネルギーとワークロードとを均衡させることで、より良い使用率を提供することができ、経時的により良い効率をもたらすことができる。これはまた、キャッシュに対する又はアクセラレータ（ＧＰＵ、ＦＰＧＡ等）に対するメモリエネルギーの使用からも可視化することができ、これらはすべて、領域内のリソース及び／又は測定されるデータセンタのすべてのマッチングをより良く決定することを助ける。
【００９２】
これらの機構は、ユーザがデータセンタのオペレータのようにアクセス権を有することなく実施することができる（ここでユーザは、プローブ／パワーウイルスＶＭ等を介してエネルギー消費にアクセスする）論じた方法及びスキームに加えて、提供されることに留意することが重要である。それゆえ、データセンタのオペレータとしてプローブ又はパワーウイルスＶＭを使用する必要はなく、なぜならオペレータは、任意のロケーション及び任意のサブシステム／機能ユニットにおいて任意のエネルギー消費を直接読むことができ、そのようなオペレータは、非オペレータの場合のようにいずれかの統計的に有意なプローブを行うことなく明確にアドレス指定することができ、それによりすべての関連したリソースのロケーション及びＩＤを知ることができるからである。
【００９３】
本発明は、装置、システム、方法、及び／又はコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【００９４】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【００９５】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び／又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び／又はエッジ・サーバを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【００９６】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、又は、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネットサービスプロバイダを用いたインターネットを通じて）。いくつかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【００９７】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータプログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００９８】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、プログラム可能データ処理装置、及び／又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、内部に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作の態様を実装する命令を含む製品を含むようにすることもできる。
【００９９】
コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能装置、又は他のデバイス上で行わせてコンピュータ実装プロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するようにすることもできる。
【０１００】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。いくつかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【符号の説明】
【０１０１】
１００：クラウド環境
２００：物理的ハードウェアリソース
５５０：パワーマネジメント・アルゴリズム
【図１】
0006850344.tif 000002
【図２】
0006850344.tif 000003
【図３】
0006850344.tif 000004
【図４】
0006850344.tif 000005
【図５】
0006850344.tif 000006
【図６】
0006850344.tif 000007