(57)【要約】コンポーネント・レベルの電力監視システムが、ワークロードの個々のコンポーネントによって消費されるエネルギーを決定することによってワークロードを分析する。様々なシステム構成を比較することによって、または、ソフトウェアの動作を修正することによって、最適なワークロードを消費電力ごとに実行する。幾つかの実施形態では、幾つかのシステム構成を試して、最適なシステム構成を決定する。他の実施形態では、監視システムが、スレッドの親和性を変更するかまたはある動作を特定のコンポーネントに割り当てることによって、アプリケーションを実行する方法を変更する。コンポーネント・レベルの監視を、オペレーティング・システム・レベルの関数呼出しとして実装してもよい。
2013500515.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング装置で実行するワークロードを特定するステップ（３０２）と、
第１のコンピューティング装置の第１のハードウェア構成を定義するステップ（３０４）と、
前記ワークロードを前記第１のハードウェア構成で実行するステップ（３１０）と、
前記実行中に少なくとも２つのハードウェア・コンポーネントの電力消費を監視するステップ（３１２）と、
前記第１のハードウェア構成に対する前記ワークロードの前記電力消費を記述する、前記少なくとも２つのハードウェア・コンポーネントへの参照を含む第１の式を生成するステップ（３１４）と、
を含むことを特徴とする方法。
【請求項２】
前記第１のコンピューティング装置の第２のシステム構成を定義するステップと、
前記ワークロードを前記第２のシステム構成で実行するステップと、
前記少なくとも２つのハードウェア・コンポーネントの電力消費を、前記第２のシステム構成での前記実行中に監視するステップと、
前記第２のシステム構成において前記ワークロードに対する前記電力消費を記述する第２の式を生成するステップと、
前記第１の式と前記第２の式を評価して効率的なシステム構成を決定し、前記ワークロードを前記効率的なシステム構成で実行するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のシステム構成と前記第２のシステム構成が両方とも、前記第１のコンピューティング装置の相違なる構成であることを特徴とする請求項２に記載の方法。
【請求項４】
前記第１のシステム構成が、第１のプロセッサで動作するように構成した第１のスレッドを備え、
前記第２のシステム構成が、第２のプロセッサで動作するように構成した前記第１のスレッドを備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記ワークロードが動作可能な間に、前記ワークロードを前記第１のシステム構成から前記第２のシステム構成に切り替えるステップと、
前記ワークロードが動作可能な間に、前記ワークロードを前記効率的なシステム構成に切り替えるステップと、
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記効率的なシステム構成が、前記第１のシステム構成の第１のハードウェア・コンポーネントの構成と、前記第２のシステム構成の第２のハードウェア・コンポーネントの構成とを備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記第２のシステム構成が第２のコンピューティング装置上にあることを特徴とする請求項２に記載の方法。
【請求項８】
ベースラインのワークロードを特定するステップと、
前記ベースラインのワークロードを、前記第１のコンピューティング装置において前記第１のシステム構成で実行するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記ワークロードを前記第１の式に基づいて動作させるコストを決定するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記ワークロードが使用するリソースを特定し、前記リソースの各々に基づいてコストを割り当てるステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
複数のハードウェア・コンポーネント上の電力利用機能を有する第１のコンピューティング装置上で動作可能な、監視アプリケーション（１４８）と、
前記第１のコンピューティング装置上で実施すべきワークロードを特定するステップと、
前記第１のコンピューティング装置の第１のハードウェア構成を定義するステップと、
前記ワークロードを前記第１のハードウェア構成で実行するステップと、
前記実行中に少なくとも２つのハードウェア・コンポーネントの電力消費を監視するステップと、
前記第１のハードウェア構成に対する前記ワークロードの前記電力利用量を記述する、前記少なくとも２つのハードウェア・コンポーネントへの参照を含む第１の式を生成するステップと、
を含む方法を実施するように構成したワークロード・マネージャ（１５０）と、
を備えることを特徴とするシステム。
【請求項１２】
前記ワークロード・マネージャが前記第１のコンピューティング装置で動作することを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記ワークロード・マネージャが第２のコンピューティング装置で動作することを特徴とする請求項１１に記載のシステム。
【請求項１４】
第３のコンピューティング装置の第２のハードウェア構成を定義するステップと、
前記ワークロードを前記第２のハードウェア構成で実行するステップと、
前記第２のハードウェア構成での前記実行中に、前記少なくとも２つのハードウェア・コンポーネントの電力消費を監視するステップと、
前記第２のハードウェア構成において前記ワークロードに対する前記電力消費を記述する第２の式を生成するステップと、
前記第１の式と前記第２の式を評価して効率的なハードウェア構成を決定し、前記ワークロードを前記効率的なハードウェア構成で実行するステップと、
を含む第２の方法を実施するように前記ワークロード・マネージャがさらに構成されたことを特徴とする請求項１２に記載のシステム。
【請求項１５】
前記ワークロードが仮想マシンであることを特徴とする請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンポーネントの電力監視およびワークロードの最適化に関する。
【背景技術】
【０００２】
コンピューティング装置の様々なコンポーネントが使用されると、コンピューティング装置は電力エネルギーを消費する。多くの場合、コンピューティング装置のワークロードが、どれだけ多くのエネルギーが消費されるかに影響を及ぼす。例えば、高負荷で利用されているプロセッサは、アイドル状態であるかまたは低負荷で利用されているプロセッサよりも非常に多くのエネルギーを消費する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
データセンタの環境では、多数のサーバ・コンピュータが様々なワークロードを実施することがある。多くの場合、データセンタが多種多様なハードウェアと様々なワークロードを有することがある。データセンタは、非常に大量のエネルギーを消費し、大量の熱を生成する。多くの場合、データセンタの管理者は仮想化技術を利用してワークロードを管理しているかもしれない。仮想化技術は、あるハードウェア装置から別のハードウェア装置に移すことで機能を併合または拡張できる、仮想アプリケーションまたは仮想マシンであることもある。
【課題を解決するための手段】
【０００４】
コンポーネント・レベルの電力監視システムが、ワークロードの個々のコンポーネントが消費するエネルギーを決定することによって、ワークロードを分析する。様々なシステム構成を比較することによって、または、ソフトウェアの動作を修正することによって、消費エネルギー毎に最適なワークロードを実行することができる。幾つかの実施形態では、数種のシステム構成について、最適なシステム構成の決定を試みる。他の実施形態では、監視システムが、スレッド親和性を変更することによって、または、ある動作を特定のコンポーネントに割り当てることによって、アプリケーションを実行する方法を変更する。コンポーネント・レベルの監視を、オペレーティング・システム・レベルの関数呼出しとして実装してもよい。
【０００５】
本要約は、選択した概念を簡潔な形で導入するために与えたものである。その概念は、後の発明を実施するための形態においてさらに説明する。本要約は、クレーム主題の主要な特徴または本質的な特徴を特定しようとするものではなく、クレーム主題の範囲を限定するために使用しようとするものでもない。
【図面の簡単な説明】
【０００６】
【図１】ワークロード・マネージャを有する装置を示す実施形態の図である。
【図２】ネットワーク環境におけるワークロード・マネージャを示す実施形態の図である。
【図３】ワークロードの構成を最適化するための方法を示す実施形態の流れ図である。
【図４】ワークロードの効率を監視するための方法を示す実施形態の流れ図である。
【図５】ワークロードを動作させるときの効率を利用するための方法を示す実施形態の流れ図である。
【発明を実施するための形態】
【０００７】
コンピュータのハードウェア・システムの様々なコンポーネントを監視し、行った仕事の量に基づいて効率の大きさを消費エネルギーの量から決定することによって、コンピュータのワークロードが分析される。所与のワークロードに対して、システム構成の比較ができるようにエネルギー消費が、関数、データ構造、または他の機構で定義される。当該比較により、ワークロードを高い効率で操作できる構成を特定することができる。
【０００８】
ハードウェア装置は、様々な電力感知コンポーネントを備える。幾つかの実施形態では、オペレーティング・システム・レベルの関数により、監視ソフトウェア・アプリケーションまたは最適化ソフトウェア・アプリケーションによって使用するエネルギー消費データを収集してもよい。搭載するコンポーネントには、プロセッサ、メモリ・コンポーネント、ブリッジ、ファン、電源、ならびに周辺装置、組込み型コントローラ、および他のコンポーネントを含めてもよい。
【０００９】
幾つかの実施形態では、最適化プロセスにおいて、ワークロードを複数の様々なシステム構成で評価し、次いでより効率的なシステム構成を選択してもよい。幾つかの実施形態では、単一のハードウェア・プラットフォームを様々な構成で構成してもよく、例えば、ワークロードを１つまたは複数の異なるプロセッサ上で、または、様々な周辺装置とともに動作させてもよい。他の実施形態では、様々なハードウェア・プラットフォームを様々な構成で評価してもよい。例えば、他の実施形態を、仮想マシンまたは他のワークロードをあるサーバ・コンピュータから別のサーバ・コンピュータへ移せるデータセンタ環境を管理する場合に実施してもよい。
【００１０】
本明細書全体にわたって、効率とは、単位エネルギーあたりに実施される単位仕事を指す概念である。単位仕事を、様々なワークロードに対して様々に定義してもよい。例えば、幾つかのワークロードがプロセッサ集約的で大量の計算を要するものであってもよい。かかるワークロードでは、実施した計算の数で単位仕事を測定してもよい。本例では、効率的なシステム構成により、大部分の計算を最小の消費エネルギーで行うことができる。最も効率的なシステム構成が最速のシステム構成ではないかもしれない。
【００１１】
別の例では、電子メール配信システムのように、ワークロードがメッセージを処理してもよい。かかる例では、ワークロードの単位仕事は処理したメッセージの数であってもよく、効率を、単位エネルギーあたりに処理したメッセージの数として表してもよい。
【００１２】
「電力」という用語は、エネルギーの消費率を指す。幾つかの実施形態では、電力を、所与の単位時間あたりのエネルギーで表してもよい。幾つかの実施形態では、瞬時測定値によって、または、ある期間に消費したエネルギーを計算しその値を当該期間で除すことによって、電力を決定してもよい。
【００１３】
別の実施形態ではエネルギーおよび電力を別の方法で計算してもよく、電力消費を測定する多数の装置がワット単位を使用してもよく、アンペアでの直流の瞬時電流測定値をボルトの電圧と乗ずることによってワット単位を使用してもよい。「エネルギー」という用語は、時間で積分した電力であってもよい。例えば、キロワットのエネルギーは、所定の期間に測定したワットの平均電力に、この場合は時間で測定した期間の長さを乗じたものである。他の実施形態では、エネルギー消費または電力消費を決めるための他の方法を使用してもよく、この実施形態には、とりわけ電力因子に関する式を使用する交流の実施形態が含まれる。
【００１４】
幾つかの実施形態では、電力を直接測定してもよく、エネルギーを複数の瞬時測定値から推定または計算してもよい。他の実施形態では、エネルギーを直接測定し電力を計算してもよい。幾つかの実施形態では、あるコンポーネントが電力を直接測定し、他のコンポーネントがエネルギーを直接測定してもよい。さらに他の実施形態では、エネルギーまたは電力を間接的に測定してもよい。例えば、温度または他のパラメータを測定し、そこからエネルギーまたは電力を計算してもよい。
【００１５】
装置が消費するエネルギー全体を、少なくとも部分的に、様々なコンポーネントの消費エネルギーを総和することによって決定してもよい。幾つかの実施形態では、個々のコンポーネントが消費したエネルギーを加算することによって、エネルギー全体を決定してもよい。他の実施形態では、関数または他の機構を使用してエネルギー全体を計算してもよく、かかる機構が、測定した個々のコンポーネントの消費エネルギーの各々からの入力を含んでもよい。
【００１６】
本明細書では、図の説明において同じ番号は同じ要素を示す。
【００１７】
要素が「接続」または「結合」されているというときは、各要素を直接互いに接続もしくは結合することができ、または、１つまたは複数の中間要素が存在してもよい。対照的に、要素が「直接に接続」または「直接に結合」されているというときは、中間要素は存在しない。
【００１８】
本発明を、装置、システム、方法、および／またはコンピュータ・プログラム製品として具体化してもよい。したがって、本発明の一部または全部を（ファームウェア、常駐ソフトウェア、マイクロコード、状態機械、ゲート・アレイ、等を含む）ハードウェアおよび／またはソフトウェアで具体化してもよい。さらに、本発明が、命令実行システムが使用するための媒体内で具体化した、または、命令実行システムと関連して使用するための媒体内で具体化した、コンピュータが利用可能なプログラム・コードまたはコンピュータが読取可能なプログラム・コードを有する、コンピュータが利用可能な記憶媒体またはコンピュータが読取可能な記憶媒体上のコンピュータ・プログラム製品の形であってもよい。本明細書の文脈においては、コンピュータが利用可能な媒体またはコンピュータが読取可能な媒体は、命令実行システム、機器、もしくは装置が使用するためのプログラム、または、命令実行システム、機器、もしくは装置と関連して使用するためのプログラムを包含、記憶、通信、伝播、または転送できる任意の媒体であってもよい。
【００１９】
コンピュータが利用可能な媒体またはコンピュータが読取可能な媒体は、例えば電気、磁気、光、電磁気、赤外線、または半導体のシステム、機器、装置、または伝播媒体であってもよいがこれらに限らない。限定ではなく例として、コンピュータ読取可能媒体がコンピュータ記憶媒体と通信媒体を備えてもよい。
【００２０】
コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラム・モジュールまたは他のデータのような情報を記憶するための任意の方法または技術で実装した揮発性および不揮発性の媒体、取外し可能および取外し不能な媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ：デジタル多用途ディスク）もしくは他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報の記憶に使用でき命令実行システムがアクセスできる他の任意の媒体が含まれるがこれらに限らない。コンピュータが利用可能な媒体またはコンピュータが読取可能な媒体は、プログラムが印刷された紙媒体または別の適切な媒体とすることができることに留意されたい。なぜならば、例えば紙または他の媒体を光学的にスキャンすることによりプログラムを電子的に取得して、次いで必要ならばコンパイルし、解釈し、または適切な方法で処理して、コンピュータ・メモリに記憶することができるからである。
【００２１】
通信媒体は一般に、コンピュータ読取可能命令、データ構造、プログラム・モジュール、または他のデータを、搬送波または他の伝送機構のような変調データ信号で具現化する。通信媒体には任意の情報伝達媒体も含まれる。「変調データ信号」という用語は、１つまたは複数のその特性集合を有するかまたはその信号内の情報をエンコードするように変化した信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続のような有線媒体、ならびに音響、ＲＦ、赤外線、および他の無線媒体のような無線媒体が含まれる。上記の任意の組合せもまた、コンピュータ読取可能媒体の範囲に含まれるべきである。
【００２２】
本発明をコンピュータ実行可能命令の一般的なコンテキストで具体化する場合、実施形態はプログラム・モジュール、１つまたは複数のシステム、コンピュータ、または他の装置により実行されるプログラム・モジュールを備えてもよい。一般に、プログラム・モジュールは、特定のタスクを実施するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。一般に、プログラム・モジュールの機能を、様々な実施形態において必要に応じて組み合わせるか、または、分散させてもよい。
【００２３】
図１は、ワークロード管理システムを有するシステムを示す実施形態１００の図である。実施形態１００は、電力に関してハードウェア・コンポーネントを監視しエネルギー消費を用いて最適なシステム構成を特定できるシステムの簡単な例である。
【００２４】
図１はシステムの機能コンポーネントを示す。幾つかの場合、コンポーネントはハードウェア・コンポーネント、ソフトウェア・コンポーネント、またはハードウェアとソフトウェアの組合せであってもよい。コンポーネントの一部がアプリケーション・レベルのソフトウェアであってもよく、他のコンポーネントがオペレーティング・システム・レベルのコンポーネントであってもよい。幾つかの場合では、あるコンポーネントの別のコンポーネントへの接続が近接接続（ｃｌｏｓｅ  ｃｏｎｎｅｃｔｉｏｎ）であってもよく、この場合、複数のコンポーネントが単一のハードウェア・プラットフォーム上で動作している。他の場合では、任意の長距離にわたるネットワーク接続を介して接続を作成してもよい。各実施形態において、様々なハードウェア、ソフトウェア、および相互接続アーキテクチャを使用して、説明した機能を実現してもよい。
【００２５】
実施形態１００は、様々なハードウェア・コンポーネントによりエネルギー消費を監視できる機能搭載装置（ｉｎｓｔｒｕｍｅｎｔｅｄ  ｄｅｖｉｃｅ）の例である。エネルギー消費をワークロードに関して評価してもよく、最適なシステム構成を当該ワークロードに対して決定してもよい。
【００２６】
コンポーネント・レベルで電力消費またはエネルギー消費を監視するための機構を用いて、例えば実施形態１００のように、単一の装置のワークロードの効率を最適化し、または、本明細書で後に提示する実施形態２００で示すように、ワークロードを実行する効率的な装置を選択してもよい。実施形態１００は、装置を様々な方法で構成してワークロードを動作させる場面で有用であるかもしれない。実施形態２００は、幾つかの異なるハードウェア・プラットフォームまたは装置がワークロードを実行できるデータセンタ又は他の環境において有用であるかもしれない。
【００２７】
ワークロードを複数の異なるシステム構成で実行し、各システム構成での実行中に測定したエネルギー消費に基づいて最適なシステム構成を決定することによって、最適なワークロードの効率を決定してもよい。
【００２８】
幾つかの場合では、幾つかのシステム構成で測定した効率を比較し、最大の効率を有するシステム構成を選択することによって、最適なワークロードの効率を選択してもよい。他の場合では、効率的なワークロードを生成する特定のハードウェア・コンポーネントを選択しまたは様々なシステム・コンポーネントを設定を選択することによって、最適なワークロードの効率を決定してもよい。かかる場合、選択したシステム構成が、以前にテストしなかったシステム構成であってもよい。
【００２９】
一般に、ワークロードの効率が、消費エネルギーによって行われた仕事の関数であってもよい。様々な実施形態が様々な機能を有してもよい。これらの機能を使用してワークロードの効率を記述してもよく、効率を記述し効率を比較するための様々なデータ構造、関数、パラメータ、または他の機構を使用してもよい。
【００３０】
本明細書および特許請求の範囲の上では、ワークロードは、ハードウェア・プラットフォームで実行できる任意のソフトウェア・コンポーネントまたはシステムであってもよい。幾つかの場合では、ワークロードは、特定の機能を実施する単一のスレッドまたはプロセスであってもよい。他の場合では、ワークロードはコンピュータ・アプリケーションとして動作する、マルチスレッドのプロセスの集合であってもよい。幾つかのワークロードが、仮想アプリケーションおよび仮想マシンのような、仮想化したコンポーネントであってもよい。幾つかの場合では、ワークロードが装置上で動作するソフトウェアの全てを包含してもよく、このソフトウェアにオペレーティング・システム、アプリケーション、および他の様々なコンポーネントを含めてもよい。
【００３１】
各ワークロードが、当該ワークロードが行った単位仕事を有してもよい。単位仕事を用いてワークロードの効率を決定することができる。幾つかの実施形態では、ワークロードが行った計算の数を監視することによって各ワークロードを総体的に測定してもよい。かかる実施形態では、計算の数が、行った仕事の量を表現または近似する一般的なパラメータであってもよい。かかるパラメータは任意のワークロードの効率を測定する際に有用であるかもしれない。効率の測定値は、単位エネルギー毎に実施した計算の数であってもよい。
【００３２】
他の実施形態では、ワークロードが仕事の他の測定単位に適用してもよい。例えば、光学的文字認識を行うワークロードが、評価した文字の数またはスキャンしたページの数として単位仕事を測定してもよい。かかる場合、スキャンしたページの数を消費エネルギーで除することによって、効率のメトリックを計算してもよい。
【００３３】
別の例では、一部のワークロードが要求に応答し、かかる場合に、要求が、実施した仕事を測定することであってもよい。その例として、クエリに応答するデータベース・アプリケーションまたはブラウザの要求に応答するウェブ・サーバが挙げられる。かかる場合、要求の数を消費エネルギーで除することによって、効率のメトリックを計算してもよい。
【００３４】
多くの場合、システムの効率が多くの異なる相互作用コンポーネントの関数であってもよい。例えば、高速だが多くの電力を消費するモードで動作するプロセッサは高速の記憶装置と接続されると効率が良くなるかもしれない。なぜならば、単位エネルギーあたり大量の仕事を実施できるからである。プロセッサを低電力モードで動作させるように同一のハードウェアを構成してもよいが、同一のハードウェアを高速の記憶装置に接続してもより効率的になるかもしれないし、ならないかもしれない。
【００３５】
幾つかの実施形態では、個々のコンポーネントの効率を計算してその効率を総和することによって効率の大きさを評価してもよい。多くのかかる実施形態では、効率全体を幾つかの別個のコンポーネントの効率の関数として表現してもよい。上の例では、システムの効率全体に、プロセッサに対する効率のメトリックと、記憶装置に対する別個の効率のメトリックを含めてもよい。
【００３６】
幾つかの実施形態では、最適化ルーチンにより、様々なシステム構成に対する効率の式を比較して、最適なシステム構成を生成してもよい。幾つかのかかる実施形態では、様々なコンポーネントの効率を比較して、最大のまたは最適な効率の最適システム構成を特定してもよい。幾つかの実施形態では、単純に、計算した最大効率のテストしたシステム構成を選択することによって最適なシステム構成を決定してもよい。他の実施形態では、コンポーネント・レベルの効率に基づいてコンポーネントまたはコンポーネント構成を選択することによって、最適システム構成を決定してもよい。かかる実施形態では、最適なシステム構成は、以前にテストしなかったシステム構成でもよい。
【００３７】
本明細書および特許請求の範囲の上では、システム構成とは、実行されているワークロード以外の、変更可能な任意のものの配置構成である。ワークロードを様々なシステム構成で実行する場合、当該ワークロードが、様々なシステム構成の間で不変な実行可能命令を含んでもよい。
【００３８】
システム構成は、ワークロードが実行される環境であってもよい。当該環境には、ハードウェア、ソフトウェア、ファームウェア、またシステム間の他の差異を含めてもよい。幾つかの場合では、様々なシステム構成が、様々な物理ハードウェア・コンポーネント、例えば様々なプロセッサまたはデータ記憶装置を有してもよい。幾つかの場合、様々なシステム構成が、同一の物理コンポーネントの様々な設定または構成、例えば、装置に、特定の方法で動作させ、特定の機能を有効または無効にさせ、低電力モードで動作させるソフトウェア設定またはファームウェア設定であってもよく、または、他の構成設定であってもよい。かかる構成設定が、ソフトウェア、ファームウェア、ＢＩＯＳ、レジストリ・エントリ、データ・レジスタ、または他の構成に対する変更であってもよい。
【００３９】
幾つかの実施形態では、システム構成が、ワークロードに加えてシステム上で動作するソフトウェアに対する構成変更を含んでもよい。例えば、ワークロードを、オペレーティング・システム環境内、例えばアプリケーション内部で実行してもよい。別の例としては、仮想マシンのホスト環境内で実行される仮想マシンのワークロードがあるかもしれない。仮想マシンのホストまたは仮想マシン上の設定を変更して、ワークロードを様々な効率で実行させてもよい。
【００４０】
実施形態１００は、様々なコンポーネントの電力消費またはエネルギー消費を監視できる機能を搭載する装置１０２を示す。コンポーネントに対する当該機能をコンポーネント内に埋め込むかまたはコンポーネント外に配置してもよく、電力消費またはエネルギー消費を監視するために利用してもよい。
【００４１】
装置１０２のハードウェア・コンポーネント１０４はプロセッサ１０６を備えてもよい。プロセッサ１０６は様々な機能を実施するための命令を実行することができる。装置１０２で示すように、幾つかの実施形態が複数のプロセッサを有してもよく、各プロセッサが複数のプロセッサ・コアを有してもよい。幾つかの実施形態、例えばサーバ・コンピュータが複数のプロセッサを有してもよく、それぞれのプロセッサが複数のプロセッサ・コアを有してもよい。
【００４２】
示したように、プロセッサ１０６が、デュアル・コア１１０および１１２を有するプロセッサであってもよい。マルチコア・プロセッサ１０６の幾つかの実施形態が、プロセッサ１０６全体の電力消費またはエネルギー消費を追跡できるモニタ１０８を有してもよい。幾つかのかかる実施形態では、個々のコア１１０または１１２の消費エネルギーまたは消費電力を追跡しなくともよい。他の実施形態では、モニタ１０８が各コア１１０および１１２によって別々に電力を追跡可能であってもよい。幾つかの実施形態では、各プロセッサ・コア１１０および１１２が別々のモニタ１１４および１１６を有してもよい。
【００４３】
幾つかの実施形態が、同一でなく異種とみなする複数のプロセッサまたはコアを有してもよい。例えば、プロセッサが、一方が高速で他方が低速である２つのコアを含んでもよい。別の例が、ある機能と性能特性を有するプロセッサと、別の機能と性能特性を有する第２のプロセッサとを有する装置であってもよい。かかる例では、ワークロードを各プロセッサまたはコアで実行し、電力消費またはエネルギー消費を監視してもよい。最適なシステム構成が、消費電力が最小であるワークロードを実行するプロセッサを備えてもよい。幾つかの場合では、プロセッサが低速であるほどワークロードをより効率的に実行でき、他の場合では、プロセッサが高速であるほどワークロードをより効率的に実行できる。
【００４４】
幾つかの実施形態では、プロセッサおよび他のコンポーネントが様々な方法で動作するように構成可能であってもよい。例えば、一部のプロセッサを、様々なプロセッサ周波数で動作するように構成してもよい。高周波数で動作する場合は、プロセッサがより多くのエネルギーを消費するがより多くの計算を実施することができる。同様に、プロセッサが低周波数で動作してもよく、この場合はより少ないエネルギーを消費するがより少ない計算しか実施することができない。
【００４５】
幾つかのかかる実施形態では、システム構成によって特定のプロセスまたはソフトウェア・スレッドを特定のプロセッサに割り当ててもよい。例えば、計算量が多いソフトウェア・スレッドを、高周波数で動作するプロセッサ集合上で動作するように構成してもよく、別のソフトウェア・スレッドを、低周波数で動作するように設定した別のプロセッサ上で動作するように構成してもよい。ソフトウェア・スレッドは、グループとして実行される１組の逐次的なタスクまたは実行可能命令であってもよい。多くの場合、単一のアプリケーションまたはプロセスが幾つかのスレッドを有してもよく、その各々を、様々なプロセッサを用いて並列に実行してもよく、または、複数のスレッドが同一のプロセッサ上で実行されるときは時分割多重で実行してもよい。
【００４６】
ハードウェア・コンポーネント１０４はメモリ１１８を備えてもよく、メモリ１１８は、プロセッサ１０６が用いるランダム・アクセス・メモリであってもよい。ランダム・アクセス・メモリは、プロセッサ１０６が生成したまたは使用する実行可能コマンドおよびデータを記憶するために用いる高速なメモリであってもよい。幾つかの実施形態では、メモリ１１８は揮発性のメモリであってもよい。メモリ１１８が幾つかのサブコンポーネントから構成されていてもよい。例えば、パーソナル・コンピュータおよびサーバ・コンピュータのシステムはしばしば、２個、４個、８個、または任意数のメモリ・コンポーネントで構成される。かかるメモリ・コンポーネントの一例としてＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）が挙げられるかもしれない。
【００４７】
メモリ１１８が、個々の装置による電力消費またはエネルギー消費を監視しレポートできる内部モニタ１２０を有してもよい。かかる場合、別個または外部のモニタ１２２が、サブコンポーネント全体として、または、個々のサブコンポーネントとして、メモリ１１８の電力消費またはエネルギー消費を監視してもよい。
【００４８】
幾つかの実施形態では、あるメモリのサブコンポーネントが様々な性能特性を有してもよい。例えば、以前に空いていたメモリ・スロットを埋めることによって、ユーザが装置１０２上のメモリ１１８をアップグレードしてもよい。新たに追加したメモリが新たなバージョンのメモリ１１８であってもよく、異なる性能特性や異なる電力消費またはエネルギー消費を有してもよい。
【００４９】
記憶装置１２４は、アプリケーションやデータを記憶するために用いられる装置であってもよく、不揮発性のメモリであってもよい。実行可能ソフトウェアをロードし、実行中にデータを格納するために、プロセッサ１０６が記憶装置１２４にアクセスしてもよい。一般に、記憶装置１２４の性能がメモリ１１８よりもかなり低くてもよい。記憶装置１２４の例として、ハードディスク・ドライブ、固体メモリ装置、テープ記憶システム、および他の記憶装置が挙げられるかもしれない。
【００５０】
メモリ１１８と同様に、記憶装置１２４が、個々のサブコンポーネントに対する個々のモニタ１２６または別個のモニタ１２８を有してもよい。別個のモニタ１２８は、記憶装置１２４のコンポーネントの電力利用量またはエネルギー利用量をグループとして測定してもよく、または、個々の記憶装置１２４のコンポーネントの電力利用量またはエネルギー利用量を測定可能であってもよい。
【００５１】
コンピューティング装置は多種多様なアーキテクチャを有してもよい。拡張性を有するように設計され、または、様々なオプションで製造されるように設計された幾つかの装置では、アーキテクチャが、様々な周辺装置１３０をそれを介して取り付けできるバス１３４を備えてもよい。幾つかの場合、周辺装置１３０がプリント基板、または、バス１３４に対する他の接続を有してもよい。
【００５２】
幾つかの実施形態では、バス１３４は、ＰＣＩ、ＰＣＩ−Ｘ、ＩＳＡ，ＥＩＳＡ、またはコンピューティング・マザーボードに対する他の多種の標準プリント基板インタフェースのように、コンピューティング装置に対して内部にあってもよい。
【００５３】
幾つかの実施形態では、バス１３４がコンピューティング装置の外部にあってもよい。かかる構成では、周辺装置１３０を、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＰＣＭＣＩＡ、または他の接続のようなバスを用いて接続してもよい。
【００５４】
周辺装置１３０は、コンピュータ装置に追加できる任意の種類のコンポーネントであってもよい。幾つかの場合、ブート可能記憶装置１２４を備えうる周辺装置１３０のように、周辺装置１３０が一体型で装置１０２を動作可能としてもよい。周辺装置１３０は、カメラ、ビデオ・ディスプレイ、キーボード、ポインティング・デバイス、音声入出力装置、プリンタ、スキャナ、または他の装置のような入出力装置であってもよい。幾つかの場合、周辺装置１３０は他のコンピュータ装置への接続を備えてもよく、ネットワーク接続１３８を備えてもよい。
【００５５】
幾つかの実施形態では、個々の周辺装置１３０がモニタ１３２を有してもよい。モニタ１３２は、周辺装置１３０自体から電力消費データまたはエネルギー消費データを収集してもよい。幾つかの実施形態では、バス１３４がモニタ１３６を有してもよい。モニタ１３６が、全体としてバス１３４の電力消費もしくはエネルギー消費、または、バス１３４に取り付けた個々の周辺装置１３０の電力消費もしくはエネルギー消費を決定可能であってもよい。
【００５６】
様々なネットワーク接続１３８がハードウェア・コンポーネント１０４の一部であってもよい。ネットワーク接続１３８により、装置１０２が他の装置と直接にまたはネットワークを介して接続することができる。ネットワーク接続１３８の例としては、様々なシリアル・ポートまたはパラレル・ポート、イーサネット・ポート、ＩＥＥＥ  ８０２．１１（ＷｉＦｉ）、ＩＥＥＥ  ８０２．１６（ＷｉＭａｘ）のような無線接続、ＣＤＭＡ、ＴＤＭＡ、ＧＳＭ（登録商標）のような携帯電話接続、および他の無線接続が挙げられるかもしれない。
【００５７】
幾つかの場合、個々のネットワーク接続１３８が、電力を測定可能なモニタ１４０を有してもよい。かかるモニタ１４０は、例えば、ネットワーク接続を行うチップセットまたは装置と一体的であってもよい。幾つかの実施形態が、別個のモニタ１４２を有してもよい。モニタ１４２は、ネットワーク接続１３８の全てを監視して、ネットワーク接続１３８ごとに個々の電力消費情報またはエネルギー消費情報を別々に提供することができ、または、ネットワーク接続１３８の全部またはグループの電力消費またはエネルギー消費を監視することができる。
【００５８】
図示したハードウェア・コンポーネント１０４は、機能搭載型のハードウェア・プラットフォームの一実施形態の例である。幾つかの実施形態では、図示したコンポーネントのサブセットに実際に機能を搭載してもよい。当該機能には、ハードウェア、ファームウェア、または装置が消費する電力またはエネルギーを監視するソフトウェア・コンポーネントを含めてもよい。幾つかの例では、当該機能には、電流を直接測定し、または、他の物理測定を行うハードウェア・センサを含めてもよい。他の例では、当該機能が、様々な測定可能な基準、例えば、温度または他の入力に基づいて、電力消費またはエネルギー消費を推定してもよい。かかる例では、ファームウェアまたはソフトウェアのコンポーネントが装置の電力消費またはエネルギー消費を推定してもよい。
【００５９】
様々なモニタを様々なソフトウェア・コンポーネント１０７によって使用して、様々なワークロードのエネルギー消費を決定し、効率を計算してもよい。当該効率が単位エネルギーあたりの単位仕事を反映してもよい。多くの場合、ハードウェア・コンポーネント１０４を構成してワークロードを様々な方法で実行してもよい。幾つかの異なるシステム構成の効率を調べることによって、エネルギー消費を最小化しつつ効率的な構成でワークロードを実行してもよい。
【００６０】
ソフトウェア・コンポーネント１０７がオペレーティング・システム１４４を備えてもよく、オペレーティング・システム１４４が監視ＡＰＩ１４６を備えてもよい。監視ＡＰＩ１４６（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）は、監視アプリケーション１４８が１つまたは複数のモニタの電力消費情報またはエネルギー消費情報を要求できるようにする、１組のオペレーティング・システム・レベルの呼出しであってもよい。
【００６１】
監視ＡＰＩ１４６は、様々なモニタと低レベルの通信を行って、電力消費情報またはエネルギー消費情報を収集してもよい。監視ＡＰＩ１４６をオペレーティング・システム１４４内部に含めることによって、様々なモニタからのデータ収集を、監視アプリケーション１４８を介してかかる呼出しを行った場合よりも高速かつ高信頼に実施することができる。オペレーティング・システム・レベルの監視ＡＰＩ１４６が、モニタに対するリアルタイムの呼出しをサポートしてもよく、モニタに対する呼出しを特定のワークロードまたはワークロードの一部の実行と調整できるようにしてもよい。かかる実施形態では、オペレーティング・システム１４４がワークロードの特定と、監視ＡＰＩ１４６を用いたモニタに対する呼出しの調整の両方を行うことができる。
【００６２】
監視アプリケーション１４８は、監視ＡＰＩ１４６に対する呼出しを実施し、特定のワークロードの電力消費データまたはエネルギー消費データを収集してもよい。幾つかの実施形態では、監視アプリケーション１４８が、データ収集を行うプロセスであってもよく、収集データを、静的変数、関数、または監視したワークロードの効率の他の高レベルな記述に集約してもよい。
【００６３】
ワークロード・マネージャ１５０が、効率に基づいてワークロードを管理し、システム構成の評価を調整して効率を求めてもよい。１つのルールでは、ワークロード・マネージャ１５０が評価すべき幾つかの異なるシステム構成を特定し、次いでシステム構成の各々についてワークロードの評価を行ってもよい。評価を行った後、結果を性能データベース１５１に格納してもよい。評価を行った後、最適化器１５２が、ワークロードに対する最適なシステム構成を決定してもよい。その最適なシステム構成を性能データベース１５１に格納してもよい。
【００６４】
幾つかの場合では、ワークロード・マネージャ１５０が、ワークロードの動作中にワークロードの実行のシステム構成を切り替えることができる。例えば、ワークロード・マネージャが、スレッドの実行中にプロセス・スレッドの親和性をあるプロセッサ・コアから別のプロセッサ・コアに変更してもよい。かかる変更を行う際、様々なプロセッサの電力消費またはエネルギー消費を評価して、電力消費またはエネルギー消費における任意の変更を決定してもよい。かかる動作の例を、本明細書において後に提示する実施形態３００によって説明することができる。
【００６５】
ワークロードの管理において、ワークロード・マネージャ１５０が性能データベース１５１を問い合わせて、特定のワークロードに対する最適なシステム構成を決定し、次いで、最適なシステム構成を用いて当該ワークロードを起動してもよい。かかる動作において、ワークロード・マネージャ１５０がワークロードを管理して、当該ワークロードを、以前に収集したかもしれないデータに基づいて最も効率的な構成で実施するようにしてもよい。かかる動作の例を、本明細書で後に提示する実施形態５００によって説明することができる。
【００６６】
ワークロード・マネージャ１５０は、アプリケーション１５４、仮想アプリケーション１５６、および仮想マシン１５８を含めて、多種多様なワークロードを管理することができる。幾つかの場合では、ワークロードを別個に管理するか、または、単一の監視されたワークロードとして一緒に集約してもよい。幾つかの場合では、オペレーティング・システムをワークロードの一部とみなしてもよい。
【００６７】
図２は、ワークロード管理システムを有する第２のシステムを示す実施形態２００の図である。実施形態２００はシステムの簡単な例であり、当該システムは、電力消費またはエネルギー消費についてハードウェア・コンポーネントを監視し、電力消費またはエネルギー消費を用いて最適なシステム構成を特定し、データセンタ環境で動作することができる。
【００６８】
図２は、システムの機能的なコンポーネントを示す。幾つかの場合では、コンポーネントはハードウェア・コンポーネント、ソフトウェア・コンポーネント、またはハードウェアとソフトウェアの組合せであってもよい。コンポーネントの幾つかはアプリケーション・レベルのソフトウェアであってもよく、一方で、他のコンポーネントがオペレーティング・システム・レベルのコンポーネントであってもよい。幾つかの場合では、あるコンポーネントの別のコンポーネントへの接続が、複数のコンポーネントが単一のハードウェア・プラットフォーム上で動作している近接接続であってもよい。他の場合では、任意の長距離にわたるネットワーク接続を介して接続を作成してもよい。各実施形態において、様々なハードウェア、ソフトウェア、および相互接続アーキテクチャを使用して、説明した機能を実現してもよい。
【００６９】
実施形態２００はデータセンタにおいて展開できるシステムの一例であり、最適化サーバ２０２が多種多様な装置にわたるワークロードを管理することができる。多数の近代的なデータセンタでは、ワークロードは仮想化され、あるハードウェア・プラットフォームから別のハードウェア・プラットフォームに移してもよい。仮想化技術の１つの利用方法は、需要が減少したときにワークロードを少数のサーバ・コンピュータに集約し、需要が増加したときに一部のワークロードを十分に活用されていないサーバ・コンピュータに移すことによって負荷分散することであるかもしれない。
【００７０】
実施形態２００では、最適化サーバ２０２は、様々なワークロード２２２を多種多様な装置にわたって管理するシステムであってもよい。実施形態２００の例では、ワークロードを装置２１０、２１２、および２１４上で管理してもよい。多くのデータセンタでは、何百何千もの装置を管理することができる。
【００７１】
最適化サーバ２０２は、ワークロード・マネージャ２０４、監視アプリケーション２０６、および最適化器２０８を備えてもよい。
【００７２】
一般に、ワークロード・マネージャ２０４は、実施形態１００のワークロード・マネージャ１５０と同様な機能を実施することができる。ワークロード・マネージャ２０４は、電力効率を利用して、特定のワークロードに対する最適なシステム構成を特定することができる。
【００７３】
幾つかの実施形態では、ワークロード・マネージャ２０４が単一の装置の様々な構成を評価してもよい。例えば、装置２１０を構成して、ワークロードを特定のプロセッサ・コア上で、または、あるメモリ装置で実行してもよい。装置２１０の別の構成では、２つのコアと異なるメモリ装置を利用してもよい。消費電力単位に行われた仕事を比較することによって、効率の大きさを構成ごとに決定することができる。
【００７４】
ワークロード・マネージャ２０４は、装置を特定の方法で構成可能であってもよい。例えば、ワークロード・マネージャ２０４が、それぞれ装置２１０、２１２、および２１４に示した構成サービス２１１、２１３、および２１５のような、装置２１０を構成するために装置２１０上で動作するアプリケーションまたはサービスと関連して動作してもよい。かかる利用方法では、ワークロード・マネージャ２０４が、様々な設定を含む構成を決定し、当該構成を装置２１０上で動作する構成サービス２１１に送信してもよい。構成サービス２１１が、当該構成を受け取り、特定のワークロードを実行するときに当該構成を適用してもよい。
【００７５】
構成サービス２１１が、装置２１０上の様々な設定を変更可能であってもよい。幾つかの場合では、構成サービス２１１が、ワークロードの動作を装置２１０上のコンポーネントの特定のサブセットに制限できてもよく、他のコンポーネントをオフにするかまたは未使用のコンポーネントを低電力モードで動作させることが可能であってもよい。構成サービス２１１が、ワークロードのスレッドの親和性を特定のプロセッサまたはプロセッサ・コアに設定すること、ワークロードに関するメモリまたは記憶域を特定のメモリまたは記憶装置とすること、または様々な周辺装置をワークロードによって使用させるかもしくは使用させないこと、が可能であってもよい。
【００７６】
構成サービス２１１が、ハードウェアまたは低レベルのソフトウェア、例えばオペレーティング・システム・レベルのソフトウェアと対話することによって、あるコンポーネントおよびサブコンポーネントをワークロードに利用可能とするように動作してもよい。かかる場合では、ワークロードが変更されないように装置２１０を構成してもよい。かかる実施形態では、構成情報をワークロードとは別個に装置２１０に送信し、当該構成情報を使用して、ワークロードの実行前に装置２１０を構成してもよい。例えば、構成設定に、ワークロードを何ら変更する必要なくワークロードを様々な効率で実行させることができるオペレーティング・システムの設定を含めてもよい。
【００７７】
別の実装形態では、ワークロード・マネージャ２０４が、特定の構成情報をワークロードに追加することによって動作してもよい。この場合、ワークロードは、ワークロードをどのように実行できるかを記述する情報を含んでもよい。ワークロードを実行すると、当該ワークロードは特定のプロセッサ、メモリ装置、周辺装置、または他の構成パラメータを要求してもよい。かかる場合、装置２１０は構成サービス２１１を用いずにワークロードを実行することができる。
【００７８】
１つのかかる実施形態では、ワークロードが仮想マシンであってもよい。多くの仮想マシン・システムは、ホスト装置によって実行される構成可能な仮想マシンを有する。メモリ、プロセッサ、記憶域、周辺装置、およびネットワーク接続を仮想マシンに割り当てることによって、仮想マシンを構成することができる。仮想マシンによって実行されるソフトウェアを仮想ハード・ドライブに格納してもよい。
【００７９】
ワークロード・マネージャ２０４は、メモリ、プロセッサ、記憶域、周辺装置、およびネットワーク接続を変更することによって、仮想マシンのワークロードを構成することができる。仮想マシンを装置２１０に転送する場合、例えば、ワークロード・マネージャ２０４によって定義した構成を用いて仮想マシンを実行してもよい。
【００８０】
装置２１０、２１２、および２１４を実行している間、モニタ２１６、２１８、および２２０はそれぞれ、様々なコンポーネントおよびサブコンポーネントの電力消費またはエネルギー消費を監視することができる。監視アプリケーション２０６はモニタ２１６、２１８、および２２０と通信して、モニタを構成し、電力消費情報またはエネルギー消費情報を受け取ることができる。
【００８１】
監視アプリケーション２０６は、どの情報が収集可能で当該情報をいつ収集すべきかを定義するようにモニタ２１６、２１８、および２２０を構成することができる。例えば、利用可能なコンポーネントのサブセットの電力消費情報またはエネルギー消費情報を収集するようにモニタを構成することができる。特定の期間にわたって、または、例えば特定のワークロードが特定の機能を実施したときに、電力消費情報またはエネルギー消費情報を収集するようにモニタを構成してもよい。
【００８２】
監視アプリケーション２０６はデータをモニタ２１６、２１８、および２２０から様々な方法で受け取ることができる。幾つかの場合では、特定のワークロードに対してデータを収集し、ワークロードが完了したときにデータを監視アプリケーション２０６に送信するようにモニタを構成してもよい。他の場合では、データを収集し、所定の頻度でまたは特定のイベントの発生後にデータを監視アプリケーション２０６に送信するようにモニタを構成してもよい。例えば、収集データを５分ごとに送信するようにモニタを構成するか、または、ワークロードの特定部分が完了した後もしくは電力消費もしくはエネルギー消費もしくはアクティビティが閾値を超えたときに、収集データを送信するようにモニタを構成してもよい。
【００８３】
幾つかの実施形態では、データを監視アプリケーション２０６に送信するようにモニタ２１６、２１８、および２２０を構成してもよい。かかる実施形態では、モニタがデータ送信を開始してもよい。他の実施形態では、監視アプリケーション２０６が要求をモニタに送信し、モニタがデータを送信することによって当該要求に応答する。かかる実施形態では、要求を個々のモニタまたはモニタのグループに送信してもよい。
【００８４】
監視アプリケーション２０６は、ワークロードのエネルギー効率をその構成で記述する履歴データで性能データベース２２４を更新してもよい。幾つかの実施形態では、性能データベース２２４をサマリ静的変数（ｓｕｍｍａｒｙ  ｓｔａｔｉｃ）で更新してもよい。当該サマリ静的変数は、特定のシステム構成におけるワークロードの全体エネルギー効率であってもよい。他の実施形態では、幾つかの監視コンポーネントの電力消費またはエネルギー消費、ならびに特定のシステム構成を含めてもよい。
【００８５】
最適化サーバ２０２は、性能データベース２２４からの履歴データに基づいて最適な構成を決定できる最適化器２０８を備えてもよい。最適な構成を性能データベース２２４に格納し、ワークロード・マネージャ２０４によって使用して装置を構成するか、または、ワークロードを実行するための装置を選択することができる。
【００８６】
ワークロード２２２は、装置上で実行できる任意のソフトウェア・ワークロードであってもよい。ワークロードの例としては、実施形態１００で論じたアプリケーション１５４、仮想アプリケーション１５６、および仮想マシン１５８が挙げられる。
【００８７】
幾つかの実施形態では、課金システム２２６がワークロードの実行に対する金銭的コストを決定してもよい。金銭的コストを、ワークロードのエネルギー消費によって全体としてまたは部分的に決定してもよい。かかる実施形態では、ほとんどエネルギーを消費しないワークロードに対して、大量のエネルギーを消費するワークロードよりも少なく課金してもよい。各コンポーネントとサブコンポーネントのエネルギー消費に異なる率で課金してもよく、各コンポーネントとサブコンポーネントのエネルギー消費を総和することによって、総コストを決定してもよい。
【００８８】
課金システム２２６が、どのコンポーネントを使用してワークロードを実施するかを特定してもよい。かかる場合、コンポーネントごとのコストを当該コンポーネントの効率に基づいて決定する式を適用し、様々なコンポーネントのコストを総和することによって、ワークロードを実施するためのコスト全体を決定することができる。幾つかの実施形態では、コンポーネントのコストは、ワークロードに対するコンポーネントの効率と反比例してもよい。例えば、所与のワークロードに対して効率が貧弱なコンポーネントを、当該ワークロードに対して高い効率で動作するコンポーネントよりも高い率で課金してもよい。かかる例により、効率を最大化し全体のエネルギー消費を削減するワークロードの開発と展開を促進することができる。
【００８９】
図３は、ワークロードの構成を最適化する方法を示す実施形態３００の流れ図である。実施形態３００は、実施形態１００のワークロード・マネージャ１５０または実施形態２００の最適化サーバ２０２のような、ワークロード・マネージャによって実施できるプロセスの一例である。
【００９０】
他の実施形態では、優先順位が異なってもよく、ステップを追加してもよく、または、より少ないステップを使用してもよい。また、同様な機能を実現する様々な体系または用語を用いてもよい。幾つかの実施形態では、様々な動作または１組の動作を他の動作と並列に、同期または非同期に実施してもよい。ここで選択したステップは、幾つかの動作原理を簡単な形で説明するために選択したものである。
【００９１】
実施形態３００は、ワークロードを実行できるハードウェアのコンポーネントおよびサブコンポーネントの電力消費またはエネルギー消費の点で様々なシステム構成を評価できる方法を示す。一般的なプロセスでは、テストすべき幾つかの構成を定義し、次いで当該構成を用いてワークロードを実行するステップを含めてもよい。各構成の実行中にデータを収集した後、最適なシステム構成を決定することができる。
【００９２】
実施形態３００は、各システム構成の電力消費またはエネルギー消費を測定し、当該エネルギー消費から効率を決定する方法を示す。幾つかの実施形態では、ワークロードなしでベースラインのエネルギー消費を決定し、様々なコンポーネントが測定した電力消費またはエネルギー消費の任意の増分を用いて、ベースラインの電力消費またはエネルギー消費にワークロードに起因した電力消費またはエネルギー消費を加えたものを含む式を生成することができる。
【００９３】
ベースラインの電力消費またはエネルギー消費を様々なシナリオで使用することができる。幾つかの実施形態では、既存のワークロードをシステム上で動作させてもよい。既存のワークロードは、単純にオペレーティング・システムであるか、または、他の管理ソフトウェアであってもよい。幾つかの場合、既存のワークロードは１組のアプリケーション、仮想マシン、または、監視されるワークロードと同時に実行されているかもしれない他のワークロードであってもよい。かかる場合、監視によって、監視されるワークロードの追加に起因した、電力消費またはエネルギー消費の差分または変化を測定してもよい。
【００９４】
別のシナリオでは、ベースラインの電力消費またはエネルギー消費は、ワークロードが存在しない場合に装置が消費または保持できる、アイドル状態または定常状態の電力消費またはエネルギー消費であってもよい。
【００９５】
ブロック３０２で、ワークロードを特定することができる。ワークロードは、プロセッサおよび他のハードウェアが実行できる任意のグループのソフトウェア・コンポーネントであってもよい。一般には、ワークロードはアプリケーション、仮想アプリケーション、仮想マシン、または他のソフトウェア・コンポーネントもしくはソフトウェア・コンポーネントのグループであってもよい。かかる場合、ワークロードにはオペレーティング・システムならびに幾つかのアプリケーションを含めてもよい。
【００９６】
ブロック３０４で、様々なシステム構成を定義することができる。様々なシステム構成の範囲が限られている場合には、ブロック３０４におけるシステム構成が、様々な構成からなる包括的なリストであってもよい。例えば、単一のハードウェア・プラットフォームが、有限個のプロセッサおよびメモリの組合せを有してもよい。システム構成の最適化において、プロセッサおよびメモリの組合せにおける各組合せをテストしてもよい。
【００９７】
幾つかの場合では、システム構成の範囲が非常に広いことがある。例えば、データセンタが何百または何千ものシステム構成を有することがあり、何百もの様々なハードウェア構成を保持し、その各々が様々な利用可能な構成を有することがある。かかる例では、ブロック３０４におけるシステム構成を、以前にテストした最適なシステム構成上の幾つかの典型的なシステム構成またはその変形に限定してもよい。
【００９８】
ブロック３０６で初期システム構成を選択し、ブロック３０８でハードウェアを構成することができる。ハードウェアを多種多様に構成することができる。幾つかの場合、オペレーティング・システムまたは低レベルの構成設定を用いてハードウェアを構成して、ワークロードが実行されたとき、構成されたようにワークロードがハードウェア上で動作するようにしてもよい。かかる構成を、ワークロードの実行前に設定してもよい。
【００９９】
幾つかの場合、ハードウェアを所定の方法で使用するようにワークロードを構成してもよい。かかる場合、ワークロードが、システム構成ファイルを含むか、または、ワークロードがハードウェア上でどのように機能するかを定義する他の設定を含んでもよい。上述の例では、どのようにプロセッサ、メモリ、および他の構成を実行前に設定することによって仮想マシンを特定の方法で動作するように構成できるかを説明した。
【０１００】
ワークロードの実行中に、ブロック３１２で、電力消費またはエネルギー消費を監視することができる。ハードウェアの個々のコンポーネントおよびサブコンポーネントに対して監視を行ってもよく、計算を行ってワークロードの効率を単位エネルギーあたりの仕事の関数として決定してもよい。ワークロードの効率を監視するための方法の例を、本明細書で後に実施形態４００で提示する。
【０１０１】
幾つかの実施形態では、ブロック３１２の周囲のループバック矢印で示すように、電力消費またはエネルギー消費を反復または継続して監視してもよい。幾つかのかかる実施形態では、消費電力または消費エネルギーを定期的な間隔で測定してもよい。他の実施形態では、消費電力または消費エネルギーを一度測定して、プロセスがブロック３１４に進んでもよい。
【０１０２】
ブロック３１４で、効率情報を性能データベースに格納することができる。ブロック３１６で新たな構成を評価する場合、ブロック３１８で新たなシステム構成を評価してもよい。ブロック３１６で他の構成が利用可能でない場合は、プロセスはブロック３２０でブロック３１２に戻り、実行を続けることができる。
【０１０３】
ブロック３２０で最適化を行う場合、ブロック３２２で最適なシステム構成を決定することができる。ブロック３２４で最適なシステム構成を選択することができ、プロセスはブロック３０８に戻ってワークロードを実行することができる。かかる場合、ワークロードを最適なシステム構成で継続的に動作させることができる。
【０１０４】
幾つかの実施形態では、ワークロードの実行中に実施形態３００のプロセスを実施してもよい。実行中に、例えば特定のプロセッサに対するプロセッサ・スレッドの親和性を設定することによって、または、実行中になされうる他の変更によって、システム構成を変更してもよい。幾つかの場合、システム構成が変更されている間にワークロードを少しの間だけ一時停止し、次いで再開してもよい。かかる実施形態が、仮想マシンの実施形態を含んでもよく、この場合、仮想マシンを１つのハードウェア・プラットフォーム上で停止または一時停止し、次いで別のハードウェア・プラットフォームに転送して実行を再開してもよい。
【０１０５】
ブロック３２２の最適化は、任意の形態の最適化であってもよい。幾つかの実施形態では、最適化は、単に、構成の効率に基づいて１組の以前に評価したシステム構成からシステム構成を選択することであってもよい。
【０１０６】
システム構成の効率を、単位エネルギーあたりの単位仕事により定義してもよい。幾つかの場合、最適化は、全ての測定したコンポーネントおよびサブコンポーネントが消費した、集約した電力またはエネルギーにわたって最適化することであってもよい。他の場合では、最適化によって、それぞれの測定したコンポーネントを評価して、できるだけ多くのコンポーネントをできるだけ最適に使用するシステム構成を見つけることを試みてもよい。
【０１０７】
幾つかの実施形態では、ブロック３２２の最適化によって、まだ評価またはテストしていないシステム構成を特定してもよい。かかる実施形態の例では、ブロック３２２の最適化によって、幾つかの以前にテストしたシステム構成を評価し、グループとしてではなく別個に各ハードウェア・コンポーネントを評価することによってハードウェア・コンポーネントの最適な組合せを見つけてもよい。
【０１０８】
図４は、ワークロードの効率を監視するための方法を示す実施形態４００の流れ図である。実施形態４００は、実施形態３００のブロック３１２により実施できるプロセスの一例である。
【０１０９】
他の実施形態では、優先順位が異なってもよく、ステップを追加してもよく、または、より少ないステップを使用してもよい。また、同様な機能を実現する様々な体系または用語を用いてもよい。幾つかの実施形態では、様々な動作または１組の動作を他の動作と並列に、同期または非同期に実施してもよい。ここで選択したステップは、幾つかの動作原理を簡単な形で説明するために選択したものである。
【０１１０】
実施形態４００は、ハードウェア・コンポーネントをスキャンできハードウェア・コンポーネントの効率の式を更新できるプロセスの一例である。実施形態４００では、ワークロードを実行している間に継続的にハードウェア・コンポーネントをスキャンしてもよい。他の実施形態では、電力消費データを収集し効率の式を生成するための他の方法またはシーケンスを使用してもよい。
【０１１１】
効率の式により、単位消費エネルギーごとに行った仕事の観点からワークロードの効率を定義してもよい。多くの実施形態では、効率の式は様々なコンポーネントに対しては別個の効率の形であってもよく、この場合、全体の効率は各コンポーネントの幾つかの効率を総和したものであってもよい。幾つかの実施形態では、効率の式が、全体の効率を表す単一の数字であってもよい。
【０１１２】
ブロック４０２でワークロードを開始することができ、ブロック４０４でワークロードを実行している間に、コンポーネントがスキャンして電力消費またはエネルギー消費を行うことができる。
【０１１３】
ブロック４０６においてハードウェア・コンポーネントごとに、ブロック４０８でコンポーネントの電力監視に対してオペレーティング・システムの呼出しを行うことができる。ブロック４０８での呼出しの結果を用いて、ブロック４１０でコンポーネントの効率を更新することができる。
【０１１４】
プロセスがハードウェア・コンポーネントの全部をスキャンし、ブロック４１２でワークロードが停止するまで当該プロセスを反復することができる。
【０１１５】
幾つかの実施形態では、ハードウェア・コンポーネントの効率を、単位消費エネルギーあたりの単位仕事として表してもよい。効率の式が、ある期間にわたる平均的な効率を反映してもよい。効率の平均を測定する１つの方法は、延長期間にわたって電力エネルギーを監視して、完了した仕事の量を当該期間に消費されたエネルギーで除することである。
【０１１６】
幾つかの実施形態では、ピークの効率を監視してもよい。１つのかかる実施形態では、ブロック４０６から４１０のループを所定の間隔、例えば、毎秒、５秒毎、毎時間、または他の何らかの間隔で実施してもよい。最大または最小の効率が特定されると、その最大値または最小値を、直前の最大値または最小値を上回る最大値または最小値が別の間隔で現れるまで、ブロック４１０で格納してもよい。
【０１１７】
幾つかの実施形態では、ブロック４０６から４１０までのプロセスを使用して、コンポーネントごとに行った仕事および消費したエネルギーのタイムラインを生成していてもよい。かかる実施形態を、当該タイムラインを検討して最大値、最小値、および効率の平均値を計算することによって、分析してもよい。
【０１１８】
効率の式を、様々な方法で計算し様々な方法で記憶してもよい。一例では、効率の公式または式に、測定されるコンポーネントごとの式を含めてもよい。別の例では、効率に対する単一のサマリ静的変数を使用して、総消費エネルギーで行った仕事を表現していてもよい。ここで、総消費エネルギーとは、コンポーネントごとに消費したエネルギーの総和である。
【０１１９】
図５は、ワークロードの実行効率を利用するための方法を示す実施形態５００の流れ図である。実施形態５００は、実施形態１００のワークロード・マネージャ１５０または実施形態２００のワークロード・マネージャ２０４によって実施するプロセスの一例である。
【０１２０】
他の実施形態では、優先順位が異なってもよく、ステップを追加してもよく、または、より少ないステップを使用してもよい。また、同様な機能を実現する様々な体系または用語を用いてもよい。幾つかの実施形態では、様々な動作または１組の動作を他の動作と並列に、同期または非同期に実施してもよい。ここで選択したステップは、幾つかの動作原理を簡単な形で説明するために選択したものである。
【０１２１】
実施形態５００は、実施形態３００で決定した最適なシステム構成をワークロードの動作中にどのように使用できるかの一例である。
【０１２２】
ブロック５０２で、ワークロードを特定することができる。ブロック５０４で、性能データベースを検索して、ワークロードの効率情報を見つける。ブロック５０６で、最適なシステム構成を特定することができる。ブロック５０８でハードウェアを構成し、ブロック５１０で当該ハードウェアを実行することができる。
【０１２３】
幾つかの場合では、性能データベースが、ワークロードの実行中に行われる仕事の消費電力または消費エネルギーに関する生の履歴情報を含んでもよい。ブロック５０６で決定した最適なシステム構成を、履歴情報を分析し最適なシステム構成を決定することによって決定してもよい。
【０１２４】
本発明に関する以上の説明は、例示および説明のために提示したものであり、包括的なものでも、本発明を開示した形態に厳密に限定しようとするものでもなく、以上の教示事項に照らして他の修正および変形が可能である。実施形態は本発明の原理とその実用的な応用を最良に説明するために選択され説明されたものであり、したがって、当業者は考えられる特定の利用形態に適するように様々な実施形態および様々な修正で本発明を最良に利用することができる。特許請求の範囲が、先行技術によって限定される範囲を除いては、他の代替的な実施形態を包含すると解釈されることを意図している。
【図１】
2013500515.tif 000003
【図２】
2013500515.tif 000004
【図３】
2013500515.tif 000005
【図４】
2013500515.tif 000006
【図５】
2013500515.tif 000007
【国際調査報告】
2013500515.tif 000008
2013500515.tif 000009