(57)【特許請求の範囲】
【請求項１】
データセンターにおいて省電力を実現する方法であって、
該データセンター内の複数の仮想マシンからユーザ提供ハードウェア非依存省電力コードを識別することと、
該ユーザ提供ハードウェア非依存省電力コードの少なくとも一部を、該データセンター内のコンピューティングシステムに固有のデバイス電力管理メッセージに変換することであって、前記変換は、前記コンピューティングシステムに関連する前記ユーザ提供ハードウェア非依存省電力コードの一部を識別することと、前記ユーザ提供ハードウェア非依存省電力コードの一部を前記データセンター内の前記コンピューティングシステムに固有の前記デバイス電力管理メッセージに変換することを含むことと、該デバイス電力管理メッセージを該コンピューティングシステムに提供することと、
を含み、
該コンピューティングシステムは、該デバイス電力管理メッセージに従って該コンピューティングシステム内の１つまたは複数のデバイスを有効または無効にするように動作する方法。
【請求項２】
前記省電力コードの前記少なくとも一部以外の第２の部分を前記データセンター内の第２のコンピューティングシステムに固有の第２のデバイス電力管理メッセージに変換することと、
該第２のデバイス電力管理メッセージを該第２のコンピューティングシステムに提供することと、をさらに含み、該第２のコンピューティングシステムは、該第２のデバイス電力管理メッセージに従って該第２のコンピューティングシステム内の１つまたは複数のデバイスを有効または無効にするように動作する請求項１に記載の方法。
【請求項３】
前記ユーザ提供ハードウェア非依存省電力コードを識別することは、
プログラマが前記ユーザ提供ハードウェア非依存省電力コードを定義することができるように構成されたアプリケーションプログラミングインターフェースを提供することと、
定義された前記ユーザ提供ハードウェア非依存省電力コードを該アプリケーションプログラミングインターフェースを介してアプリケーションコードに挿入することと
を含む請求項１に記載の方法。
【請求項４】
前記アプリケーションコードを実行するときに、定義された前記ユーザ提供ハードウェア非依存省電力コードが前記コンピューティングシステムによって実装される場合の前記コンピューティングシステムの電力使用量を、前記プログラマが推定することができるようにするように動作する電力シミュレータを提供することをさらに含む請求項３に記載の方法。
【請求項５】
前記ユーザ提供ハードウェア非依存省電力コードの前記少なくとも一部を前記データセンター内の前記コンピューティングシステムに固有の前記デバイス電力管理メッセージに変換することは、
前記コンピューティングシステムが前記ユーザ提供ハードウェア非依存省電力コードのうちの関連のある前記一部を実装するように動作し、前記ユーザ提供ハードウェア非依存省電力コードの関連のない他の部分を実装するようには動作されず、前記ユーザ提供ハードウェア非依存省電力コードのうちの前記コンピューティングシステムに関連のある前記一部を識別することと、
前記ユーザ提供ハードウェア非依存省電力コードの前記コンピューティングシステムに関連する前記一部を識別すると、前記ユーザ提供ハードウェア非依存省電力コードの前記少なくとも一部を前記データセンター内の前記コンピューティングシステムに固有の前記デバイス電力管理メッセージに変換することを含む請求項１に記載の方法。
【請求項６】
前記コンピューティングシステムは第１の仮想マシンと第２の仮想マシンとを含み、前記方法は、
前記第１の仮想マシンによる実行対象の第１のプログラムコードから第１の複数のユーザ提供ハードウェア非依存省電力コードを識別することと、
前記第２の仮想マシンによる実行対象の第２のプログラムコードから第２の複数のユーザ提供ハードウェア非依存省電力コードを識別することと、
前記第１の複数のユーザ提供ハードウェア非依存省電力コードを前記データセンター内の前記コンピューティングシステムに固有の第１のデバイス電力管理メッセージに変換することと、
前記第２の複数のユーザ提供ハードウェア非依存省電力コードを前記データセンター内の前記コンピューティングシステムに固有の第２のデバイス電力管理メッセージに変換することと、
前記第１のデバイス電力管理メッセージと前記第２のデバイス電力管理メッセージとを結合することによって結合デバイス電力管理メッセージを生成することと、
該結合デバイス電力管理メッセージを前記コンピューティングシステムに提供することとをさらに含み、前記コンピューティングシステムは該結合デバイス電力管理メッセージに従って前記コンピューティングシステム内の１つまたは複数のデバイスを有効または無効にするように動作される請求項１に記載の方法。
【請求項７】
少なくとも一つの前記ユーザ提供ハードウェア非依存省電力コードは、無効にされたデバイスが指定された時間後に必要になることを示すように構成されたハードウェア非依存省電力コードを含む請求項１に記載の方法。
【請求項８】
前記デバイス電力管理メッセージを前記コンピューティングシステムに提供することは、
前記コンピューティングシステムが、前記デバイス電力管理メッセージに従って前記デバイスが前記指定時間までに利用可能になるように前記デバイスを前記指定された時間より前にウォームアップするように動作する、前記デバイス電力管理メッセージを前記コンピューティングシステムに提供することを含む請求項７に記載の方法。
【請求項９】
前記デバイス電力管理メッセージを前記コンピューティングシステムに提供すると、前記ユーザ提供ハードウェア非依存省電力コードを実装している前記コンピューティングシステムの現在の電力使用量を記録することと、
前記現在の電力使用量に基づいて省電力量を判断することと、
前記省電力量に応じて前記ユーザに金銭的利益を提供することと、をさらに含む
請求項１に記載の方法。
【請求項１０】
前記デバイス電力管理メッセージは記号の配列を含み、前記記号のそれぞれが前記デバイスのうちの１つに対応する請求項１に記載の方法。
【請求項１１】
前記データセンター内の前記複数の仮想マシンから前記ユーザ提供ハードウェア非依存省電力コードを識別することは、ウェブサービスを介して前記ユーザ提供ハードウェア非依存省電力コードを識別することを含む請求項１に記載の方法。
【請求項１２】
前記変換することは、前記コンピューティングシステムに関連する前記ユーザ提供ハードウェア非依存省電力コードの一部を識別することと、前記ユーザ提供ハードウェア非依存省電力コードの一部を前記データセンター内の前記コンピューティングシステムに固有の前記デバイス電力管理メッセージに変換することを含む、請求項１記載の方法。
【請求項１３】
コンピュータ実行可能命令が記憶されたコンピュータ可読記憶媒体であって、該コンピュータ実行可能命令は、コンピュータによって実行されると該コンピュータに、
データセンターにおけるコンピューティングシステム内の複数の仮想マシンによって実行されるアプリケーションコードに含まれるユーザ提供ハードウェア非依存省電力コードを識別させ、
前記ユーザ提供ハードウェア非依存省電力コードの少なくとも一部を前記コンピューティングシステムに固有のデバイス電力管理メッセージに変換させ、
前記デバイス電力管理メッセージを前記コンピューティングシステムに提供させ、前記コンピューティングシステムは、前記コンピューティングシステムが前記アプリケーションコードを実行すると、前記デバイス電力管理メッセージに従って前記コンピューティングシステム内の１つまたは複数のデバイスを有効または無効にするように動作する、コンピュータ可読記憶媒体。
【請求項１４】
前記ユーザ提供ハードウェア非依存省電力コードを識別するために、前記コンピュータ実行可能命令は、前記コンピュータによって実行されると前記コンピュータにさらに、
プログラマが前記ユーザ提供ハードウェア非依存省電力コードを定義することができるように構成されたアプリケーションプログラミングインターフェースを提供させ、
定義された前記ユーザ提供ハードウェア非依存省電力コードを、該アプリケーションプログラミングインターフェースを介してアプリケーションコードに挿入させる請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記コンピュータによって実行されると前記コンピュータに電力シミュレータを提供させるコンピュータ実行可能命令がさらに記憶され、該電力シミュレータは、前記コンピューティングシステム上の前記アプリケーションコードの実行に従って、定義された前記ユーザ提供ハードウェア非依存省電力コードが前記コンピューティングシステムによって実装された場合の前記コンピューティングシステムの電力使用量を、前記プログラマが推定できるように構成された請求項１４に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記ユーザ提供ハードウェア非依存省電力コードの前記少なくとも一部を前記コンピューティングシステムに固有の前記デバイス電力管理メッセージに変換するために、前記コンピュータ実行可能命令は、前記コンピュータによって実行されると前記コンピュータにさらに、
前記コンピューティングシステムが前記ユーザ提供ハードウェア非依存省電力コードのうちの関連のある前記一部を実装するように動作され、前記ユーザ提供ハードウェア非依存省電力コードの関連のない他の部分を実装するようには動作されず、前記ユーザ提供ハードウェア非依存省電力コードのうちの前記コンピューティングシステムに関連のある前記一部を識別させ、
前記ユーザ提供ハードウェア非依存省電力コードの前記コンピューティングシステムに関連する前記一部が識別されると、前記ユーザ提供ハードウェア非依存省電力コードの前記少なくとも一部を前記データセンター内の前記コンピューティングシステムに固有の前記デバイス電力管理メッセージに変換させる請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記コンピューティングシステムは第１の仮想マシンと第２の仮想マシンとを含み、前記コンピュータ実行可能命令は、前記コンピュータによって実行されると前記コンピュータにさらに、
前記第１の仮想マシンによる実行対象の第１のプログラムコードから第１の複数のユーザ提供ハードウェア非依存省電力コードを識別させ、
前記第２の仮想マシンによる実行対象の第２のプログラムコードから第２の複数のユーザ提供ハードウェア非依存省電力コードを識別させ、
前記第１の複数のユーザ提供ハードウェア非依存省電力コードを前記データセンター内の前記コンピューティングシステムに固有の第１のデバイス電力管理メッセージに変換させ、
前記第２の複数のユーザ提供ハードウェア非依存省電力コードを前記データセンター内の前記コンピューティングシステムに固有の第２のデバイス電力管理メッセージに変換させ、
前記第１のデバイス電力管理メッセージと前記第２のデバイス電力管理メッセージとを結合することによって結合デバイス電力管理メッセージを生成させ、
該結合デバイス電力管理メッセージを前記コンピューティングシステムに提供させ、前記コンピューティングシステムは前記結合デバイス電力管理メッセージに従って前記コンピューティングシステム内の１つまたは複数のデバイスを有効または無効にするように動作する請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１８】
少なくとも一つの前記ユーザ提供ハードウェア非依存省電力コードは、無効にされたデバイスが指定された時間後に必要になることを示すように構成されたハードウェア非依存省電力コードを含む請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記デバイス電力管理メッセージを前記コンピューティングシステムに提供するために、前記コンピュータ実行可能命令は、前記コンピュータによって実行されると前記コンピュータにさらに、
前記デバイス電力管理メッセージを前記コンピューティングシステムに提供させ、前記コンピューティングシステムは、前記デバイス電力管理メッセージに従って前記デバイスが前記指定時間までに利用可能になるように前記デバイスを前記指定された時間より前にウォームアップするように動作する請求項１８に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記コンピュータによって実行されると前記コンピュータに、
前記デバイス電力管理メッセージが前記コンピューティングシステムに提供されると、前記ユーザ提供ハードウェア非依存省電力コードが実装されたときの前記コンピューティングシステムの現在の電力使用量を記録させ、
前記現在の電力使用量に基づいて省電力量を判断させ、
前記省電力量に応じて前記ユーザに金銭的利益を提供させるコンピュータ実行可能命令がさらに記憶された請求項１９に記載のコンピュータ可読記憶媒体。
【請求項２１】
前記デバイス電力管理メッセージは記号の配列を含み、前記記号のそれぞれが前記デバイスのうちの１つに対応する請求項１３に記載のコンピュータ可読記憶媒体。
【請求項２２】
前記変換することは、前記コンピューティングシステムに関連する前記ユーザ提供ハードウェア非依存省電力コードの一部を識別することと、前記ユーザ提供ハードウェア非依存省電力コードの一部を前記データセンター内の前記コンピューティングシステムに固有の前記デバイス電力管理メッセージに変換することを含む、請求項１３記載のコンピュータ可読記憶媒体。
【請求項２３】
第１のデバイスと該第１のデバイスに結合された第１の管理ユニットとを含む第１のプロセッサベースのハードウェア構成を有する第１のコンピューティングシステムと、
第２のデバイスと該第２のデバイスに結合された第２の管理ユニットとを含む第２のプロセッサベースのハードウェア構成を有する第２のコンピューティングシステムと、
該第１のコンピューティングシステムによって実行される第１のドライバであって、該第１のコンピューティングシステム内の複数の第１の仮想マシン上で実行されるアプリケーションコードからユーザ提供ハードウェア非依存省電力コードの第１の部分を識別し、該ユーザ提供ハードウェア非依存省電力コードの該第１の部分をデータセンター内の該第１のコンピューティングシステムに固有の第１のデバイス電力管理メッセージに変換し、該デバイス電力管理メッセージを該第１の管理ユニットに提供するように動作し、該第１の管理ユニットは該第１のデバイス電力管理メッセージに従って該第１のデバイスを有効および無効にするように動作する、第１のドライバと、
該第２のコンピューティングシステムによって実行される第２のドライバであって、該第２のコンピューティングシステム内の複数の第２の仮想マシン上で実行される該アプリケーションコードから該ユーザ提供ハードウェア非依存省電力コードの第２の部分を識別し、該ユーザ提供ハードウェア非依存省電力コードの該第２の部分を該データセンター内の該第２のコンピューティングシステムに固有の第２のデバイス電力管理メッセージに変換し、該第２のデバイス電力管理メッセージを該第２の管理ユニットに提供するように動作し、該第２の管理ユニットは該第２のデバイス電力管理メッセージに従って該第２のデバイスを有効および無効にするように動作する、第２のドライバと、
を含むデータセンター。
【請求項２４】
前記第１のドライバと前記第２のドライバが準仮想化ドライバを含む請求項２３に記載のデータセンター。
【請求項２５】
第１のコンピュータ可読記憶媒体と、第１のデバイスと該第１のデバイスに結合された第１の管理ユニットとを含む第１のプロセッサベースのハードウェア構成と、を有する第１のコンピューティングシステムと、
第２のコンピュータ可読記憶媒体と、第２のデバイスと該第２のデバイスに結合された第２の管理ユニットとを含む第２のプロセッサベースのハードウェア構成を有する第２のコンピューティングシステムと、
を備えるデータセンターであって、
前記第１のコンピューティングシステムは、前記第１のコンピュータ可読記憶媒体に保存された第１の準仮想化ドライバを実行するように動作し、当該第１の準仮想化ドライバは、前記第１のコンピューティングシステム内の複数の第１の仮想マシン上で実行されるアプリケーションコードからユーザ提供ハードウェア非依存省電力コードの第１の部分を識別し、該ユーザ提供ハードウェア非依存省電力コードの該第１の部分を該データセンター内の該第１のコンピューティングシステムに固有の第１のデバイス電力管理メッセージに変換し、該デバイス電力管理メッセージを該第１の管理ユニットに提供するように動作し、該第１の管理ユニットは該第１のデバイス電力管理メッセージに従って該第１のデバイスを有効および無効にするように動作し、
前記第２のコンピューティングシステムは、前記第２のコンピュータ可読記憶媒体に保存された第２の準仮想化ドライバを実行するように動作し、当該第２の準仮想化ドライバは、前記該第２のコンピューティングシステム内の複数の第２の仮想マシン上で実行される該アプリケーションコードから該ユーザ提供ハードウェア非依存省電力コードの第２の部分を識別し、該ユーザ提供ハードウェア非依存省電力コードの該第２の部分をデータセンター内の該第２のコンピューティングシステムに固有の第２のデバイス電力管理メッセージに変換し、該第２のデバイス電力管理メッセージを該第２の管理ユニットに提供するように動作し、該第２の管理ユニットは該第２のデバイス電力管理メッセージに従って該第２のデバイスを有効および無効にするように動作するデータセンター。
【請求項２６】
前記第１のコンピューティングシステムと前記第２のコンピューティングシステムとに結合され、前記ユーザ提供ハードウェア非依存省電力コードが実装されたときに前記第１のコンピューティングシステムおよび前記第２のコンピューティングシステムの現在の電力使用量を記録し、該現在の電力使用量に基づき省電力量を判断し、該省電力量に応じて前記ユーザに金銭的利益を与えるように動作する省電力ログユニットをさらに含む請求項２３乃至２５の何れか１項に記載のデータセンター。
【請求項２７】
コンピュータに、
データセンターにおけるコンピューティングシステム内の複数の仮想マシンによって実行されるアプリケーションコードに含まれるユーザ提供ハードウェア非依存省電力コードを識別させ、
前記ユーザ提供ハードウェア非依存省電力コードの少なくとも一部を前記コンピューティングシステムに固有のデバイス電力管理メッセージに変換させ、
前記デバイス電力管理メッセージを前記コンピューティングシステムに提供させ、前記コンピューティングシステムは、前記コンピューティングシステムが前記アプリケーションコードを実行すると、前記デバイス電力管理メッセージに従って前記コンピューティングシステム内の１つまたは複数のデバイスを有効または無効にするように動作する、
ことを実現させるためのプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
本開示において別段に記載のない限り、本項に記載の内容は、本願特許請求の範囲に対する先行技術ではなく、本項に含めることによって先行技術であることを自認するものではない。
【０００２】
従来、データセンターの電力最適化が基本的なハードウェアレベルの最適化によってハードウェアレベルで行われる場合がある。例えば、データセンターは、データセンター内の１つまたは複数のプロセッサコアのコアごとの電力ゲーティングを行うことができる。データセンターは、ラック内のすべてのプロセッサコアが一度にピーク状態になった場合にプロセッサコアが使用するはずの電力量よりも少ない電力量をラックに供給することもある。この手法は、ラック内のプロセッサコアが一度にピークに達するような動作をすることはまれであるという知見を活かしたものである。すべてのプロセッサコアがピークに達するまれな状況では、データセンターは、ハードウェアコード化された周波数スロットリングを実行することができる。
【０００３】
上述の電力最適化技術は、一般にはデータセンターが、データセンターのユーザからの入力なしに始動し、実行する。一般に、データセンターのユーザが電力最適化に関する入力をデータセンターに与えないのには様々な理由がある。第一に、データセンターは、ユーザが電力最適化に関する情報を提示するために使用できる機構を備えていない。第二に、データセンターはデータセンターのハードウェア仕様や構成に関してオープンではない場合がある。そのようなハードウェア仕様または構成がなければ、ユーザはハードウェアレベルの最適化に関する適切な情報をデータセンターに渡すことは難しい。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示は、データセンターにおいて省電力を実現するための技術について一般的に述べる。例示の方法は、データセンター内の複数の仮想マシンから、ユーザ提供ハードウェア非依存省電力コードを識別することができる。例示の方法は、ユーザ提供ハードウェア非依存省電力コードの少なくとも一部を、データセンター内のコンピューティングシステムに固有のデバイス電力管理メッセージに変換することができる。例示の方法は、デバイス電力管理メッセージをコンピューティングシステムに提供することができる。コンピューティングシステムは、デバイス電力管理メッセージに従って、コンピューティングシステム内の１つまたは複数のデバイスを有効または無効にするように構成することができる。
【０００５】
本開示は、さらに、データセンターにおいて省電力を実現するように構成されたコンピュータ可読記憶媒体について一般的に記載する。コンピュータ可読媒体には、コンピュータによって実行されるとコンピュータに１つまたは複数の操作を行わせることができるコンピュータ実行可能命令を記憶することができる。例示のコンピュータ実行可能命令は、コンピュータに、データセンターのコンピューティングシステム内の複数の仮想マシンによって実行されるアプリケーションコードに含まれるいくつかのユーザ提供ハードウェア非依存省電力コードを識別させることができる。例示のコンピュータ実行可能命令は、コンピュータに、ユーザ提供ハードウェア非依存省電力コードの少なくとも一部を、コンピューティングシステムに固有のデバイス電力管理メッセージに変換させることができる。例示のコンピュータ実行可能命令は、コンピュータに、デバイス電力管理メッセージをコンピューティングシステムに提供させることができる。コンピューティングシステムは、コンピューティングシステムがアプリケーションコードを実行すると、デバイス電力管理メッセージに従ってコンピューティングシステム内の１つまたは複数のデバイスを有効または無効にするように構成することができる。
【０００６】
また本開示は、省電力を実現するように構成されたいくつかのデータセンターについて一般的に記載する。例示のデータセンターは、第１のデバイスと、第１のデバイスに結合された第１の管理ユニットとを含む第１のプロセッサベースのハードウェア構成を有する第１のコンピューティングシステムを含むことができる。例示のデータセンターは、第２のデバイスと第２のデバイスに結合された第２の管理ユニットとを含む第２のプロセッサベースのハードウェア構成を有する第２のコンピューティングシステムを含むことができる。例示のデータセンターは、第１のコンピューティングシステムによって実行される第１のドライバを含むことができる。第１のドライバは、第１のコンピューティングシステム内の複数の第１の仮想マシン上で実行されるアプリケーションコードから、いくつかのユーザ提供ハードウェア非依存省電力コードの第１の部分を識別し、ユーザ提供ハードウェア非依存省電力コードの第１の部分を、データセンター内の第１のコンピューティングシステムに固有のデバイス電力管理メッセージに変換し、デバイス電力管理メッセージを第１の管理ユニットに提供するように構成される。第１の管理ユニットは、第１のデバイス電力管理メッセージに従って第１のデバイスを有効または無効にするように構成することができる。例示のデータセンターは、第２のコンピューティングシステムによって実行される第２のドライバを含むことができる。第２のドライバは、第２のコンピューティングシステム内の複数の第２の仮想マシン上で実行されるアプリケーションコードからユーザ提供ハードウェア非依存省電力コードの第２の部分を識別し、ユーザ提供ハードウェア非依存省電力コードの第２の部分をデータセンターの第２のコンピューティングシステムに固有の第２のデバイス電力管理メッセージに変換し、第２のデバイス電力管理メッセージを第２の管理ユニットに提供するように構成することができる。第２の管理ユニットは、第２のデバイス電力管理メッセージに従って第２のデバイスを有効または無効にするように構成することができる。
【０００７】
上記の概要は、例示的なものにすぎず、決して限定的であることを意図したものではない。図面および以下の詳細な説明を参照することにより、上述の例示的な態様、実施形態および特徴に加えて、他の態様、実施形態および特徴も明らかになるであろう。
【０００８】
本開示の上記およびその他の特徴は、以下の詳細な説明、添付の特許請求の範囲および添付図面を参照すれば十分に明らかになるであろう。図面は本開示によるいくつかの実施形態のみを示すものであり、したがって本開示の範囲を限定するものとみなすべきではないことを了解した上で、添付図面により本開示についてさらに具体的かつ詳細に説明する。
【図面の簡単な説明】
【０００９】
【図１】本開示に記載の少なくとも一部の実施形態により構成された、データセンターにおいて省電力を実現するように構成されたネットワークアーキテクチャの一例を示す機能ブロック図である。
【図２】本開示に記載の少なくとも一部の実施形態により構成された、ハードウェア非依存省電力コードを複数のコンピューティングデバイスに分配する一例を示す図である。
【図３】本開示に記載の少なくとも一部の実施形態により構成され、複数の仮想マシンを含むコンピューティングシステムの実装の一例を示す機能ブロック図である。
【図４】本開示に記載の少なくとも一部の実施形態により構成された、データセンターにおいて省電力を実現するように構成された処理の一例を示す流れ図である。
【図５】本開示に記載の少なくとも一部の実施形態により構成された、例示のコンピューティングシステムのためのコンピュータハードウェアアーキテクチャを示すブロック図である。
【図６】本開示に記載の少なくとも一部の実施形態により構成された、コンピューティングデバイス上でコンピュータ処理を実行するためのコンピュータプログラムを含むコンピュータプログラム製品を示す概略図である。
【発明を実施するための形態】
【００１０】
以下の詳細な説明では、本開示の一部をなす添付図面を参照する。図面では、文脈により別様に解すべき場合を除き、同様の符号は典型的には同様のコンポーネントを示す。詳細な説明および図面に記載の例示の実施形態は、限定的であることを意図するものではない。本開示で示す主題の趣旨および範囲から逸脱することなく、他の実施形態も採用可能であり、他の変更も可能である。本開示において一般的に述べ、図面に図示する本開示の態様は、様々な構成で構成、代替、組み合わせ、分離、および設計可能であり、それらはすべて本開示で明示的に企図されていることが容易にわかるであろう。
【００１１】
本開示は、特に、データセンターのユーザ始動電源管理を行うように構成された技術を概略的に示す。データセンターは、ユーザ（例えば顧客、プログラマなど）に複数のハードウェア非依存省電力コードを提供する。例えば、データセンターは、ユーザが１つまたは複数のハードウェア非依存省電力コードを定義するために有効なアプリケーションプログラミングインターフェース（「ＡＰＩ」）をユーザに提供してもよい。ユーザは、ＡＰＩを使用して、ユーザのアプリケーションのアプリケーションコードに定義されたハードウェア非依存省電力コードを挿入することができる。
【００１２】
ユーザは、アプリケーションコードを実行のためにデータセンターに提供することができる。データセンター内の１つまたは複数のコンピューティングシステムを、そのアプリケーションコードを実行するために割り当てることができる。コンピューティングシステムは、ハードウェア非依存省電力コードを、そのコンピュータシステムに固有のデバイス電力管理メッセージに変換するように構成された準仮想化ドライバを含むことができる。具体的には、デバイス電力管理メッセージは、コンピューティングシステムのハードウェア関連仕様または構成に固有とすることができる。コンピューティングシステムがこのアプリケーションコードを実行すると、コンピューティングシステムは電力使用量を管理するためにデバイス電力管理メッセージを使用するように構成することができる。例えば、デバイス電力管理メッセージは、コンピューティングシステム内の１つまたは複数のハードウェアデバイスを有効／無効またはオン／オフするようにオペレーティングシステムまたはその他のハードウェアマネージャに指示することができる。
【００１３】
データセンターは、コンピューティングシステムのうちの１つまたは複数が複数の仮想マシンを含む、複数のコンピューティングシステムを含むことができる。すなわち、同じハードウェア上で複数の仮想マシンが動作することができる。一部の実装では、例えばハイパーバイザを、同じハードウェア内の複数の仮想マシンからのハードウェア非依存省電力コード（または対応するデバイス電力管理メッセージ）を統合するように構成することができる。他の実装では、ウェブサービスが、別個のコンピューティングシステム上でハードウェア非依存省電力コード（または対応するデバイス電力管理メッセージ）を統合し、その統合されたデバイス電力管理メッセージをハイパーバイザに提供してもよい。ハイパーバイザは、統合されたハードウェア非依存省電力コードまたは統合されたデバイス電力管理メッセージを実装するように構成することができる。
【００１４】
上述の技術によって、ユーザはデータセンターにおいてハードウェアレベルの最適化を始動することができる。ハードウェア非依存省電力コードおよび準仮想化ドライバの使用によって、ユーザはデータセンターのハードウェア関連仕様または構成の具体的な知識がなくても、ハードウェアレベルの最適化を始動することができる。また、ＡＰＩの使用によって、電力管理技術について広範な知識のないプログラマでも、より広範なハードウェア非依存省電力コードを定義することによってハードウェアレベルの最適化を始動することができる。場合によっては、データセンターはユーザのハードウェア非依存省電力コードによって生じた省電力量を記録し、対応する利益をユーザに与えることによって、ユーザがハードウェアレベルの最適化を始動するように動機付けをしてもよい。
【００１５】
図１は、本開示に示す少なくとも一部の実施形態により構成され、データセンター１０２において省電力を実現するように構成された例示のネットワークアーキテクチャ１００を示す機能ブロック図である。ネットワークアーキテクチャ１００は、ネットワーク１０６を介して通信可能に結合されたデータセンター１０２と顧客コンピュータ１０４とを含むことができる。データセンター１０２は、第１のコンピューティングシステム１０８Ａ、第２のコンピューティングシステム１０８Ｂ、および第３のコンピューティングシステム１０８Ｃを含み得る。コンピューティングシステム１０８Ａ〜１０８Ｃを、コンピューティングシステム１０８と総称することがある。実施形態によっては、データセンター１０２は、さらに、コンピューティングシステム１０８に結合されたロギングシステム１１０を含むことができる。図を簡単にするために、図１のデータセンター１０２には３つのコンピューティングシステム１０８が図示されているが、データセンター１０２の他の実装では任意の数のコンピューティングシステムを含むことができることが当業者にはわかるであろう。
【００１６】
第１のコンピューティングシステム１０８Ａは、第１の準仮想化ドライバ１１２Ａを含み得る。第２のコンピューティングシステム１０８Ｂは、第２の準仮想化ドライバ１１２Ｂを含み得る。第３のコンピューティングシステム１０８Ｃは、第３の準仮想化ドライバ１１２Ｃを含み得る。準仮想化ドライバ１１２Ａ〜１１２Ｃを、準仮想化ドライバ１１２と総称することがある。顧客コンピュータ１０４は、顧客コンパイラ１１４、顧客アプリケーションのアプリケーションコード１１６、および電力シミュレータ１１８を含むことができる。
【００１７】
ネットワークアーキテクチャ１００の例示の実装では、データセンター１０２の顧客は、顧客コンパイラ１１４を介して、アプリケーションコード１１６に関連付けられた顧客アプリケーションなどの顧客アプリケーションを作成するために、顧客コンピュータ１０４を使用することができる。顧客は、顧客アプリケーションにおいてユーザ始動電力管理を実装してもよい。そのために、顧客はデータセンターＡＰＩ１２０に関する情報を持っていてもよい。例えば、顧客は、リモートデータストア（図示せず）からデータセンターＡＰＩ用のサンプルコードをダウンロードしてもよい。一部の実施形態では、電力シミュレータ１１８は、ダウンロードコード内に含めてもよく、またはリモートデータストアから別個に取り出してもよい。
【００１８】
データセンターＡＰＩ１２０は、プログラマがアプリケーションコード１１６にハードウェア非依存省電力コード１２２を挿入するために使用可能な１組の高水準ルーチン、オブジェクト構造、またはデータ構造を提供することができる。ハードウェア非依存省電力コード１２２はそれぞれ、ハードウェアデバイスまたはハードウェアデバイスの何らかのグループに関連付けることができる。例えば、特定のハードウェア非依存省電力コードをディスクアクセスに関連付けてもよい。ディスクアクセスは、コンピューティングシステムの一部の実装においてはハードドライブのアクセスを指す場合があるが、コンピューティングシステムの他の実装では、ディスクアクセスはネットワーク接続ストレージのアクセスを指す場合もある。ハードウェア非依存省電力コードによって、プログラマは、データセンター１０２内のコンピューティングシステム１０８の特定のハードウェア仕様または構成を気にしなくても済むようになる。他の例では、付加的なハードウェア非依存省電力コードをそれぞれ、プロセッサ、レジスタ、キャッシュメモリ、メインメモリ、二次ストレージ、コントローラ、アダプタ、マネージャまたはその他のハードウェアデバイスの様々な組み合わせに関連付けることができる。
【００１９】
データセンターＡＰＩ１２０は、プログラマがアプリケーションコード１１６に挿入されたハードウェア非依存省電力コード１２２を定義するために使用可能な様々な手法を提供することができる。一例では、プログラマは、ハードウェアデバイスまたはハードウェアデバイスのグループを無効またはオフにする（または無効状態またはオフ状態に維持する）ハードウェア非依存省電力コード１２２を定義することができる。他の例では、プログラマは、ハードウェアデバイスまたはハードウェアデバイスのグループを有効またはオンにする（または有効状態またはオン状態に維持する）ようにハードウェア非依存省電力コード１２２を定義することができる。さらに他の例では、プログラマは、将来のある時点でハードウェアデバイスまたはハードウェアデバイスのグループが必要になる（例えば１０ミリ秒後にディスクアクセスが必要になる）ことを示すためにハードウェア非依存省電力コード１２２を定義することができる。この最後の例によって、プログラマは、ハードウェアデバイスが必要になる時点より前にハードウェアデバイスを「ウォームアップ」して、ハードウェアデバイスを有効またはオンにしてからハードウェアデバイスが実際に使用可能になるまでのレイテンシが最小限になるか、またはなくなるようにすることができる。上述の例のほか、ハードウェア非依存省電力コード１２２のより詳細な定義も当業者にはわかるであろう。
【００２０】
場合によっては、プログラマは、省電力が最大になるようなハードウェア非依存省電力コード１２２の最適定義を作成する経験がほとんどあるいはまったくないことがある。そのような場合、プログラマは、電力シミュレータ１１８を使用することができる。電力シミュレータ１１８は、ハードウェア非依存省電力コード１２２を有するアプリケーションコード１１６の実行を分析し、特定のコンピューティングシステム上での省電力の推定値を出すことができる。プログラマは、ハードウェア非依存省電力コード１２２の様々な定義または構成を試すため、および、定義または構成のそれぞれの効果を推定するために電力シミュレータ１１８を使用することができる。電力シミュレータ１１８は、例えば非アクティブ化されたコンポーネントを呼び出すときの遅延をシミュレートすることによって、省電力コード１２２がパフォーマンスに与える影響を把握できるようにすることもできる。
【００２１】
プログラマが、アプリケーションコード１１６にハードウェア非依存省電力コード１２２を挿入した後、プログラマはアプリケーションコード１１６をデータセンター１０２に提供することができる。データセンター１０２は、コンピューティングシステム１０８のうちの１つまたは複数のコンピューティングシステム１０８を選択して、アプリケーションコード１１６を実行することができる。一例では、コンピューティングシステム１０８をすべて選択してアプリケーションコード１１６を実行することができる。コンピューティングシステム１０８がアプリケーションコード１１６を実行するとき、コンピューティングシステム１０８はハードウェア非依存省電力コード１２２を読み取ることができる。
【００２２】
コンピューティングシステム１０８の１つがハードウェア非依存省電力コード１２２を読み取ると、準仮想化ドライバ１１２のうちの対応する１つの準仮想化ドライバ１１２が、ハードウェア非依存省電力コード１２２のうち、コンピューティングシステムに適用可能なサブセットを少なくとも識別することができる。準仮想化ドライバ１１２はそれぞれ、特定のハードウェア非依存省電力コードを、対応するコンピューティングシステムにおける特定のハードウェアデバイスに関連するものであると認識するように構成することができる。例えば、ディスクアクセスに関連付けられたハードウェア非依存省電力コードは、外部記憶装置を使用せずにランダムアクセスメモリを介してすべてのメモリアクセスを処理するコンピューティングシステムには適用できないことがある。
【００２３】
準仮想化ドライバ１１２が、対応するコンピューティングシステムに適用可能なハードウェア非依存省電力コード１２２の対応するサブセットを識別すると、準仮想化ドライバ１１２は、そのハードウェア非依存省電力コード１２２のサブセットを対応するデバイス電力管理メッセージに変換することができる。具体的には、第１の準仮想化ドライバ１１２Ａは、ハードウェア非依存省電力コード１２２の適用可能なサブセットを第１のデバイス電力管理メッセージ１２４Ａに変換することができる。紙面が限られているため、図１ではデバイス電力管理をＤＰＭと記載している。第２の準仮想化ドライバ１１２Ｂは、ハードウェア非依存省電力コード１２２の適用可能なサブセットを第２のデバイス電力管理メッセージ１２４Ｂに変換することができる。第３の準仮想化ドライバ１１２Ｃは、ハードウェア非依存省電力コード１２２の適用可能なサブセットを第３のデバイス電力管理メッセージ１２４Ｃに変換することができる。デバイス電力管理メッセージ１２４Ａ〜１２４Ｃをデバイス電力管理メッセージ１２４と総称することがある。ハードウェア非依存省電力コード１２２の適用可能なサブセットは、コンピュータシステム１０８間で重複していてもいなくてもよい。ハードウェア非依存省電力コード１２２のうちのコンピューティングシステム１０８に関連付けられた様々なサブセットに関する詳細について、図２を参照しながら以下に述べる。
【００２４】
例示の実装では、デバイス電力管理メッセージは、複数の記号からなる配列とすることができる。この配列は、コンピューティングシステム１０８の１つに対応し得る。各記号は、コンピューティングシステム１０８のうちの対応する１つのコンピューティングシステム１０８内のハードウェアデバイスに対応し得る。各記号に対応する値は、コンピューティングシステム１０８のうちの対応する１つによって実行される動作を示すことができる。例えば、一部の実施形態によると、各記号はビット値で表してもよい。この場合、「ゼロ」ビット値を使用して、コンピューティングシステムに特定のハードウェアデバイスを無効またはオフにする（または無効状態またはオフ状態に維持する）ように指示することができ、「１」ビット値を使用して、コンピューティングシステムに特定のハードウェアデバイスを有効またはオンにする（または有効状態またはオン状態に維持する）ように指示することができる。他の実施形態では、追加の動作を表すため、またはより詳細な動作を表すために、各記号を表すためにとり得る値の数は２個よりも多くてもよい。
【００２５】
コンピューティングシステム１０８は、準仮想化ドライバ１１２によって生成された対応するデバイス電力管理メッセージ１２４を実装することができる。具体的には、各コンピューティングシステム１０８内のオペレーティングシステム、ハイパーバイザ、またはその他のハードウェアマネージャは、デバイス電力管理メッセージ１２４のうちの対応する１つに含まれるかまたは対応する１つによって指定される動作を実行することができる。デバイス電力管理メッセージ１２４は、プログラマによる指定または指示に従って様々な時点で対応するコンピューティングシステム１０８内の特定のハードウェアデバイスを実質的に有効化／無効化またはオン／オフすることができる。ハードウェアデバイスが無効またはオフにされると、それらのハードウェアデバイスに電力が流れないかまたは減少するため、コンピューティングシステム１０８が使用する電力が減少する。無効またはオフ状態になっているハードウェアデバイスが必要なときは、デバイス電力管理メッセージ１２４によってそれらのハードウェアデバイスを有効化またはオンにすることができる。場合によっては、ハードウェアデバイスを「ウォームアップ」するために、使用前にオンにすることもできる。これにより、ハードウェアデバイスが有効化またはオンにされてからそのハードウェアデバイスが実際に使用可能な状態になるまでのレイテンシを最小限にするか、またはなくすことができる。
【００２６】
コンピューティングシステム１０８がアプリケーションコード１１６を実行しているとき、コンピューティングシステム１０８は現在の電力使用量データ１２６をロギングシステム１１０に提供することもできる。現在の電力使用量データ１２６は、前述のようなユーザ始動電力管理が実装されたときにコンピューティングシステム１０８によって使用された電力量を示すことができる。ロギングシステム１１０は、元の電力使用量データ１２８も含むことができる。元の電力使用量データ１２８は、ユーザ始動電力管理が実装されなかった場合にコンピューティングシステム１０８によって使用される電力量を示すことができる。
【００２７】
ロギングシステム１１０は、ユーザ始動電力管理の結果として生じた省電力量を確認するために、現在の電力使用量データ１２６を元の電力使用量データ１２８と比較することができる。ロギングシステム１１０は、確認された省電力量の記録を省電力ログ１３０で維持することができる。省電力量は、例えば顧客が管理してもよい。省電力ログ１３０に記録された顧客による省電力量を、金銭的利益など何らかの利益の形で顧客に還元してもよい。例えば、データセンター１０２の管理者は、その顧客の課金をいくらか低減してもよい。このようにして、データセンター１０２の管理者は利益を、ユーザ始動電力管理の利用を促す刺激材料として使用してもよい。
【００２８】
データセンターＡＰＩ１２０を作成する際、データセンター１０２の管理者は、コンピューティングシステム１０８によって生成される可能性があるデバイス電力管理メッセージを識別することができる。これらのデバイス電力管理メッセージは、各コンピューティングシステム１０８のハードウェア仕様または構成に固有のものとすることができる。例えば、コンピューティングシステム１０８は、プロセッサ、レジスタ、キャッシュメモリ、メインメモリ、二次ストレージ、コントローラ、アダプタ、マネージャ、またはその他のハードウェアデバイスが異なる場合がある。コンピューティングシステム１０８は、ハードウェアデバイスの種類だけでなく、特定のハードウェアデバイスの数または存在も異なる場合がある。一例では、第１のコンピューティングシステム１０８Ａは、ハードドライブを含み得る。第２のコンピューティングシステム１０８Ｂは、ハードドライブまたはその他の外部ストレージを含まず、ランダムアクセスメモリを介してメモリ要求に対応することができる。第３のコンピューティングシステム１０８Ｃは，ハードドライブを含まず、ネットワーク接続ストレージを介してメモリ要求に対応することができる。
【００２９】
データセンター１０２の管理者は、コンピューティングシステム１０８から集められるデバイス電力管理メッセージを収集し、集めたデバイス電力管理メッセージ１２４を複数のクラスにまとめる。このようなクラスは、様々なデバイス電力管理メッセージ１２４間で共通する同じハードウェアデバイスまたは関連のあるハードウェアデバイスのグループが各クラスに含まれるように作ることができる。例えば、ディスクアクセスに関連するクラスはハードドライブ、ネットワーク接続ストレージ、およびその他の外部記憶装置を含むことができる。管理者は、各クラスを対応するハードウェア非依存省電力コードに関連付けることができる。管理者は、顧客が様々なハードウェア非依存省電力コードを顧客のアプリケーションに挿入することができるようにデータセンターＡＰＩ１２０を構成してもよい。
【００３０】
データセンターＡＰＩ１２０を生成する上述の処理は、データセンター１０２のコンピューティングシステム１０８を使用することができる。したがって、データセンターＡＰＩ１２０はその特定のデータセンター１０２には適しているが、データセンターＡＰＩ１２０は、異なるハードウェア仕様または構成を有する他のデータセンターにとっては最適とは言えない。他の実施形態では、データセンターＡＰＩ１２０は、複数のデータセンターに適した汎用データセンターＡＰＩとすることができる。汎用データセンターＡＰＩの一部の実装は、コンピューティングシステム内のより多くのハードウェアデバイスに対応するために、ハードウェア非依存省電力コード１２２よりもより多様な省電力コードを使用することができる。汎用データセンターＡＰＩの他の実装は、ハードウェア非依存省電力コード１２２よりも高い汎用度で構成された省電力コードを使用してもよい。例えば、汎用データセンターＡＰＩは、データセンター電力管理のための業界標準の一部であってもよい。
【００３１】
前述のように、一部の実施形態によると、データセンターＡＰＩ１２０によって、プログラマはハードウェア非依存省電力コード１２２を挿入することができる。他の実施形態では、データセンターＡＰＩ１２０は、さらに、プログラマが各コンピューティングシステムのハイパーバイザ（図１には図示せず）が使用するフラグを設定することができるようにしてもよい。各フラグは、ハイパーバイザの設定可能な特性を表すことができる。例えば、特定のフラグは、特定の処理をアプリケーションのパフォーマンスに影響を与えずに一定時間長まで遅らせることができることをハイパーバイザに知らせるフラグであってもよい。このような遅延によって、ハイパーバイザは電力ピークを事前に管理することができる。
【００３２】
前述のように、各準仮想化ドライバ１１２は、コンピューティングシステム１０８のうちの１つで動作することができ、ハードウェア非依存省電力コード１２２を対応するコンピューティングシステムのための適切なデバイス電力管理メッセージに変換するように構成することができる。一部の実施形態では、所与のコンピューティングシステムは、それぞれが別個のアプリケーションを実行することができる複数の仮想マシンを動作させることがある。そのような場合、各仮想マシンは、対応するアプリケーションの中のその仮想マシンのハードウェア非依存省電力コードのセットに関連付けることができる。コンピューティングシステム上で動作するハイパーバイザは、複数の仮想マシン中のハードウェア非依存省電力コード（および対応するデバイス電力管理メッセージ）を統合することができる。他の実装では、データセンターＡＰＩ１２０は、顧客アプリケーションからＰＯＳＴまたはＧＥＴハイパーテキスト転送プロトコル（「ＨＴＴＰ」）メッセージの形で省電力コードを受け取るデータセンターサービスの形態をとることができる。そのようなＡＰＩは、特定のコンピューティングシステム１０８上でアプリケーションが出した省電力コードを収集し、それらのコードを例えばそのマシン上のハイパーバイザにデータセンターインフラストラクチャ管理（「ＤＣＩＭ」）メッセージングを介して配信することができる。配信されるコードは元のコード、または図２および図３に示すように、関連する命令のみと組み合わせたコードとすることができる。
【００３３】
複数の電力管理メッセージは、同じハードウェアデバイスに関連するいくつかの重複命令を有していてもいなくてもよい。重複の可能性に対処するため、コンピューティングシステムに対応するハイパーバイザを、複数のデバイス電力管理メッセージを結合して単一の電力管理メッセージにするように構成することができる。このようにして、コンピューティングシステムは、複数の仮想マシンが存在する場合でも単一の電力管理メッセージを実装することができる。複数の電力管理メッセージの結合に関する詳細を図３を参照しながら以下に示す。
【００３４】
前述のように、一部の実施形態によると、顧客はデータセンターＡＰＩ１２０を使用してハードウェア非依存省電力コード１２２を定義することができる。他の実施形態では、ハードウェア非依存省電力コード１２２を定義する操作は、その一部または全部を顧客から顧客コンパイラ１１４に移してもよい。そのような場合、顧客コンパイラ１１４は、アプリケーションコード１１６の分析に基づいてハードウェア非依存省電力コード１２２を定義するように構成された、高性能顧客コンパイラとすることができる。具体的には、顧客は、高性能コンパイラに対してハードウェア非依存省電力コード１２２の最適な定義を決定し、そのハードウェア非依存省電力コード１２２をアプリケーションコード１１６に挿入するように指示することができる。高性能顧客コンパイラは、ユーザが決定したハードウェア非依存省電力コードをコンピュータが決定したハードウェア非依存省電力コードで上書きまたは修正するように構成してもよい。
【００３５】
図２は、本開示に示す少なくとも一部の実施形態により構成された、ハードウェア非依存省電力コード１２２を複数のコンピューティングシステム１０８に分配する例を示す図である。省電力コード１２２は、省電力コードＡ〜Ｆを含むことができる。一例によると、省電力コード１２２の第１のサブセットは、省電力コードＡおよびＣを含み得る。矢印線２０２Ａ、２０２Ｃで示すように、省電力コードＡおよびＣは第１のコンピューティングシステム１０８Ａに関連付けることができる。省電力コード１２２の第２のサブセットは、省電力コードＢおよびＥを含み得る。矢印線２０２Ｂ、２０２Ｅで示すように、省電力コードＢおよびＥは第２のコンピューティングシステム１０８Ｂに関連付けることができる。省電力コード１２２の第３のサブセットは、省電力コードＤおよびＦを含み得る。矢印線２０２Ｄ、２０２Ｆで示すように、省電力コードＤおよびＦは第３のコンピューティングシステム１０８Ｃに関連付けることができる。矢印線２０２Ｄ、２０２Ｅの交差点２０４は、省電力コードＤが第２のコンピューティングシステム１０８Ｂにも関連付けられ、省電力コードＥが第３のコンピューティングシステム１０８Ｃにも関連付けられていることを示すことができる。他の様々な実施形態では、ハードウェア非依存省電力コード１２２のうちの１つまたは複数を、複数のコンピューティングシステム１０８に関連付けてもよい。
【００３６】
図３は、本開示に記載の少なくとも一部の実施形態により構成された、複数の仮想マシンを含むコンピューティングシステム３００の例示の実装を示す機能ブロック図である。コンピューティングシステム３００は、コンピューティングシステム１０８のうちの１つの他の例とすることができる。コンピューティングシステム３００は、ハイパーバイザ３０２、第１の仮想マシン３０４Ａ、および第２の仮想マシン３０４Ｂを含み得る。仮想マシン３０４Ａ〜３０４Ｂを仮想マシン３０４と総称することもある。図を簡単にするため、図３のコンピューティングシステム３００には２つの仮想マシンが図示されているが、コンピューティングシステム３００の他の実装は任意の数の仮想マシンを含み得ることが、当業者にはわかるであろう。
【００３７】
第１の仮想マシン３０４Ａは、準仮想化ドライバ３０６Ａの第１のインスタンスに関連付けることができる。第２の仮想マシン３０４Ｂは、準仮想化ドライバ３０６Ｂの第２のインスタンスに関連付けることができる。一例では、第１の仮想マシン３０４Ａは、第１のアプリケーションコードを有する第１のアプリケーションを実行するように割り当てることができ、第２の仮想マシン３０４Ｂは第２のアプリケーションコードを有する第２のアプリケーションを実行するように割り当てることができる。準仮想化ドライバ３０６Ａの第１のインスタンスは、第１のアプリケーションコードから取り出した関連するハードウェア非依存省電力コードを第１のデバイス電力管理メッセージに変換することができる。準仮想化ドライバ３０６Ｂの第２のインスタンスは、第２のアプリケーションコードから取り出した関連するハードウェア非依存省電力コードを第２のデバイス電力管理メッセージに変換することができる。
【００３８】
準仮想化とは、コンピューティングシステム３００の下層ハードウェアに類似した仮想マシン３０４に対するソフトウェアインターフェースを提供する技術を一般的に指す。例えば、ハイパーバイザ３０２は、仮想マシン３０４への準仮想化ネットワークアクセスを提供することができる。仮想マシン３０４が準仮想化ネットワークアクセスを介してデータを送信するとき、そのデータはコンピューティングシステム３００内のネットワークアクセスハードウェアに直接には提供されず、ハイパーバイザ３０２によって管理されるバッファに入れることができる。ハイパーバイザ３０２は、バッファ内のデータについて、ネットワークアクセスハードウェアと比較してより高水準の管理を行うように構成可能である。
【００３９】
図３に示す例では、ハイパーバイザ３０２は複数の仮想マシンに関連付けられた複数のデバイス電力管理メッセージの高水準管理を行うように構成することができる。ここで、第１のデバイス電力管理メッセージは、値「００１０１」を有するビット配列でもよく、第２のデバイス電力管理メッセージは値「０１１００」を有するビット配列でもよい。この例では、ビット配列内の各ビットは特定のハードウェアデバイスに対応し得る。
【００４０】
ここで、「１」ビット値によって、オペレーティングシステムまたはその他のハードウェアマネージャに対して、対応するハードウェアデバイスを有効またはオンにする（または有効状態またはオン状態に維持する）ように指示することができる。「ゼロ」値によって、オペレーティングシステムまたはその他のハードウェアマネージャに対して、対応するハードウェアデバイスを無効またはオフにする（または無効状態またはオフ状態に維持する）ように指示することができる。したがって、第１のデバイス電力管理メッセージには、第３および第５のハードウェアデバイスを有効またはオンにする（または有効状態またはオン状態に維持する）命令、第１、第２および第４のハードウェアデバイスを無効またはオフにする（または無効状態またはオフ状態に維持する）命令を含み得る。第２のデバイス電力管理メッセージは、第２および第３のハードウェアデバイスを有効またはオンにする（または有効状態またはオン状態に維持する）命令と、第１、第４および第５のハードウェアデバイスを無効またはオフにする（または無効状態またはオフ状態に維持する）命令を含み得る。
【００４１】
ハイパーバイザ３０２は、２つのビット配列に対して論理和演算を行うように構成することができる。この例では、ハイパーバイザ３０２は、ビット配列「００１０１」とビット配列「０１１００」に対して論理和演算を行った場合の結果「０１１０１」を計算することができる。結果のビット配列「０１１０１」によって、オペレーティングシステムまたはその他のハードウェアマネージャに対し、第２、第３および第５のハードウェアデバイスを有効またはオンにする（または有効状態またはオン状態に維持する）ように指示し、第１および第４のハードウェアデバイスを無効またはオフにする（または無効状態またはオフ状態に維持する）ように指示することができる。
【００４２】
図４は、本開示に記載の少なくとも一部の実施形態により構成され、データセンター１０２において省電力を実現するように構成された例示の処理４００を示す流れ図である。１つまたは複数のブロック４０２〜４０６に示すように、この処理４００は様々な操作、機能または動作を含むことができる。
【００４３】
処理４００は、ブロック４０２（ハードウェア非依存省電力コードを識別する）から開始し、準仮想化ドライバ１１２のうちの１つなどのドライバを、データセンター内のコンピューティングシステムによって実行されるアプリケーションコード内のハードウェア非依存省電力コード１２２の少なくともサブセットを識別するように構成することができる。ハードウェア非依存省電力コード１２２のサブセットは、コンピューティングシステムに適用可能とすることができる。一部の実装では、ハードウェア非依存省電力コード１２２のサブセットは、コンピューティングシステム上で稼働している複数の仮想マシンから識別することができる。コンピューティングシステムは、１つまたは複数のハードウェアデバイスを含むことができる。ブロック４０２は、既存のデータセンターＡＰＩメッセージ技術を使用してアプリケーションから送られたメッセージ内のハードウェア非依存省電力コードを識別するデータセンターサービスとして実現することも可能である。ブロック４０２に続いてブロック４０４に進む。
【００４４】
ブロック４０４（ハードウェア非依存省電力コードをデバイス電力管理メッセージに変換する）で、ドライバを、識別されたハードウェア非依存省電力コードのサブセットをコンピューティングシステムのハードウェア仕様または構成に固有のデバイス電力管理メッセージに変換するようにドライバを構成することができる。一部の実施形態では、デバイス電力管理メッセージを、各記号がコンピューティングシステム内のハードウェアデバイスの１つを表す記号の配列として実装することができる。各記号によって表される値を使用して、対応するハードウェアデバイス上で実行される動作を示すことができる。例えば、動作は、対応するハードウェアデバイスを有効／無効またはオン／オフとするものであってもよい。ブロック４０４に続いてブロック４０６に進む。
【００４５】
ブロック４０６（デバイス電力管理メッセージをデータセンターのコンピューティングシステムに供給する）で、デバイス電力管理メッセージをコンピューティングシステムに供給するようにドライバを構成することができる。コンピューティングシステムは、デバイス電力管理メッセージを実装するように構成することができる。具体的には、コンピューティングシステム内のオペレーティングシステムまたはその他のハードウェアマネージャが、デバイス電力管理メッセージに従って適切なハードウェアデバイスを有効／無効またはオン／オフにすることができる。このようにして、データセンターにおいて省電力を実現することができる。ブロック４０６の後、（例えば周期的、連続的、または要求に応じて随時）処理４００が繰り返されるか、または終了する。
【００４６】
図５は、本開示に記載の少なくとも一部の実施形態により構成された、例示のコンピューティングシステムのコンピュータハードウェアアーキテクチャを示すブロック図である。図５には、プロセッサ５１０、メモリ５２０および１つまたは複数のドライブ５３０を含むコンピュータ５００が示されている。コンピュータ５００は、従来のコンピュータシステム、内蔵制御コンピュータ、ノートブックまたはサーバコンピュータ、携帯装置、セットトップボックス、キオスク端末、車両情報システム、携帯電話、カスタマイズマシンまたはその他のハードウェアプラットフォームとして実装可能である。プロセッサ５１０は、ドライバ１１２のうちの少なくとも１つを含む図１に記載の論理回路を実装するように構成することができる。あるいは、プロセッサ５１０は、顧客コンパイラ１１４または電力シミュレータ１１８を含む図１に記載の論理回路を実装するように構成することも可能である。
【００４７】
ドライブ５３０およびそれに付随するコンピュータ記憶媒体は、コンピュータ５００のためのコンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータの記憶を行う。ドライブ５３０は、オペレーティングシステム５４０、アプリケーションプログラム５５０、プログラムモジュール５６０およびデータベース５８０を含むことができる。コンピュータ５００は、さらに、ユーザがコマンドおよびデータを入力することができるユーザ入力装置５９０を含む。入力装置は、電子デジタイザ、マイクロフォン、キーボードおよび、一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスを含む。その他の入力装置として、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。
【００４８】
上記およびその他の入力装置は、システムバスに結合されたユーザ入力インターフェースを介してプロセッサ５１０に結合可能であるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（「ＵＳＢ」）など、他のインターフェースおよびバス構造によって結合することも可能である。コンピュータ５００などのコンピュータは、出力周辺インターフェース５９４などを介して結合可能な、スピーカなどのその他の周辺出力装置も含むことができる。
【００４９】
コンピュータ５００は、ネットワークインターフェース５９６に結合された遠隔コンピュータなど、１つまたは複数のコンピュータへの論理接続を使用してネットワーク環境で動作することができる。遠隔コンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたはその他の共通ネットワークノードでもよく、コンピュータ５００に関連して上述した要素の多くまたはすべてを含むことができる。ネットワーキング環境は、オフィス、企業ワイドエリアネットワーク（「ＷＡＮ」）、ローカルエリアネットワーク（「ＬＡＮ」）、イントラネットおよびインターネットにおいて一般的である。
【００５０】
ＬＡＮまたはＷＡＮネットワーキング環境で使用する場合、コンピュータ５００はネットワークインターフェース５９６またはアダプタを介してＬＡＮに結合することができる。ＷＡＮネットワーキング環境で使用する場合、コンピュータ５００は一般には、モデムまたは、インターネットまたはネットワーク１０６などＷＡＮで通信を確立するその他の手段を含む。ＷＡＮは、インターネット、図示のネットワーク１０６、その他の様々なネットワーク、またはこれらの組み合わせを含み得る。コンピュータ間で通信リンク、リング、メッシュ、バス、クラウドまたはネットワークを確立するその他の機構も使用可能であることはわかるであろう。
【００５１】
一部の実施形態によると、コンピュータ５００をネットワーク環境に結合することができる。コンピュータ５００は、ドライブ５３０またはその他の記憶装置に付随する物理コンピュータ可読記憶媒体の１つまたは複数のインスタンスを含み得る。システムバスは、プロセッサ５１０がコンピュータ可読記憶媒体上のコードおよび／またはデータを読み書きすること可能にすることができる。媒体は、半導体、磁性体、光媒体、電気ストレージ、電気化学ストレージ、またはその他の同様のストレージ技術を含むがこれらには限定されない任意の適合する技術を使用して実装される記憶素子の形態の装置である。この媒体は、ＲＡＭ、ＲＯＭ、フラッシュまたはその他の種類の揮発性または不揮発性メモリ技術のいずれとして特徴付けられるかを問わず、メモリ５２０に関連付けられたコンポーネントである。この媒体は、記憶装置またはその他の方法のいずれで実装されるかを問わず、二次ストレージにも相当する。ハードドライブの実装は、半導体として特徴付けられるものであってもよく、または、磁気的に符号化された情報を記憶する回転媒体を含むことができる。
【００５２】
記憶媒体は、１つまたは複数のプログラムモジュール５６０を含み得る。プログラムモジュール５６０は、プロセッサ５１０にロードされて実行されると汎用コンピューティングシステムを専用コンピューティングシステムに変換するソフトウェア命令を含むことができる。本説明で詳述するように、プログラムモジュール５６０は、コンピュータ５００が本開示に記載のコンポーネント、論理フロー、および／またはデータ構造を使用してシステムまたは動作環境全体に加わるために使用することができる様々な手段および技法を提供することができる。
【００５３】
プロセッサ５１０は、個別または集合的に任意の数の状態をとり得る任意の数のトランジスタまたはその他の回路要素で構成することができる。より具体的には、プロセッサ５１０は、状態マシンまたは有限状態マシンとして動作可能である。そのようなマシンは、プログラムモジュール５６０に含まれる実行可能命令をロードすることによって第２のマシン、すなわち特定のマシンに変換可能である。このようなコンピュータ実行可能命令は、プロセッサ５１０がどのように状態遷移するかを指定し、それによってプロセッサ５１０を構成するトランジスタまたはその他の回路素子を第１のマシンから第２のマシンに変換することにより、プロセッサ５１０を変換することができる。いずれのマシンの状態も、１つまたは複数のユーザ入力装置５９０、ネットワークインターフェース５９６、その他の周辺機器、その他のインターフェース、または１人または複数のユーザまたはその他の動作主から入力を受け取ることによっても変換することができる。いずれのマシンも、プリンタ、スピーカ、映像表示装置など様々な出力装置の状態または様々な物理特性も変換することができる。
【００５４】
プログラムモジュール５６０を符号化することによっても、記憶媒体の物理構造を変換することができる。物理構造の具体的な変換は、本説明の様々な実装における様々な要因に依存することがある。そのような要因の例としては、一次ストレージと二次ストレージのいずれとして特徴付けられるかを問わず、記憶媒体を実装するために使用される技術などが含まれるがこれには限定されない。例えば、記憶媒体が半導体ベースのメモリとして実装される場合、プログラムモジュール５６０は、半導体メモリ５２０でソフトウェアが符号化されると、半導体メモリ５２０の物理状態を変換することができる。例えば、ソフトウェアは、半導体メモリ５２０を構成するトランジスタ、キャパシタまたはその他の個別回路素子の状態を変換することができる。
【００５５】
他の例として、記憶媒体はドライブ５３０などの磁気または光学技術を使用して実装することができる。そのような実装では、プログラムモジュール５６０は、ソフトウェアが磁気または光学媒体内で符号化されると、磁気または光学媒体の物理状態を変換することができる。このような変換は、所与の磁気媒体内の特定の場所の磁気特性を変更することを含み得る。また、このような変換は、所与の光学媒体内の特定の場所の物理的特徴または特性を変更して、それらの場所の光学特性を変化させることも含み得る。なお、本説明の範囲および趣旨から逸脱することなく物理媒体のその他の様々な変換も可能であることがわかるであろう。
【００５６】
図６は、本開示に記載の少なくとも一部の実施形態により構成された、コンピューティングデバイス上でコンピュータ処理を実行するためのコンピュータプログラムを含むコンピュータプログラム製品６００を示す概略図である。例示のコンピュータプログラム製品の例示の実施形態は、信号担持媒体６０２を使用して提供され、複数のユーザ提供ハードウェア非依存省電力コードを識別する１つまたは複数の命令と、複数のユーザ提供ハードウェア非依存省電力コードの少なくとも一部を、データセンターにおけるコンピューティングシステムに固有のデバイス電力管理メッセージに変換する１つまたは複数の命令と、デバイス電力管理メッセージをコンピューティングシステムに供給する１つまたは複数の命令とのうちの少なくとも１つの命令６０４を含むことができる。一部の実施形態では、１つまたは複数のコンピュータプログラム製品６００の信号担持媒体６０２は、コンピュータ可読媒体６０６、記録可能媒体６０８、および／または通信媒体６１０を含む。
【００５７】
本開示に記載の主題は、コンピューティングシステム上でのオペレーティングシステムおよびアプリケーションプログラムの実行とともに実行されるプログラムモジュールという一般的な文脈で示したが、他の種類のプログラムモジュールと組み合わせて他の実装を行うことも可能であることが当業者にはわかるであろう。一般に、プログラムモジュールは、特定のタスクを行うかまたは特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造およびその他の種類の構造を含む。さらに、本開示に記載の主題は、携帯装置、マルチコアプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家電製品または、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成でも実施可能である。
【００５８】
本開示は、本出願に記載の特定の実施形態にのみ限定されるものではない。これらの実施形態は様々な態様を例示することを意図したものである。当業者には明らかなように、本開示の趣旨および範囲から逸脱することなく、多くの変更および様々な変形態様が可能である。上記の説明から、本開示に列挙されているものに加えて、本発明の範囲における機能的に同等の方法および装置が当業者には明らかであろう。そのような変更および変形態様は、添付の特許請求の範囲に含まれるものと意図されている。本開示は、添付の特許請求の範囲の記載と、そのような特許請求の範囲が権利を与えられる等価物の全範囲によってのみ限定されるべきである。本開示は、特定の方法、試薬、化合物組成または生体系に限定されず、これらは当然ながら異なり得ることを理解すべきである。本開示で使用する用語は、特定の実施形態について説明するためだけのものにすぎず、限定的であることを意図したものではないことも理解すべきである。
【００５９】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。様々な単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００６０】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（例えば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。例えば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（例えば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、���れに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。例えば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００６１】
さらに、本開示の特徴または態様がマーカッシュ群により記載される場合、それによって本開示がマーカッシュ群の任意の個々の要素または要素のサブセットについても説明されることが当業者にはわかるであろう。
【００６２】
当業者ならわかるように、例えば書面による説明を提供するなどのあらゆる目的において、本開示で開示されているすべての範囲は、考えられるあらゆる部分範囲およびその部分範囲の組み合わせも含む。記載の範囲はすべて、少なくとも２等分、３等分、４等分、５等分、１０等分などに分割された同じ範囲を十分に説明し、可能にするものであることを容易に認識することができる。非限定的な例として、本開示に記載の各範囲は、下３分の１、中間３分の１、上３分の１などに容易に分割可能である。また、当業者ならわかるように、「〜まで」、「少なくとも」、「〜を超える」、「〜未満」などすべての言語は、記載されている数を含み、前述のような部分範囲に分割可能な範囲を指す。最後に、当業者ならわかるように、範囲は、個々の要素のそれぞれを含む。したがって、例えば１〜３個のセルを有する群とは、１、２または３個のセルを有する群を指す。同様に、１〜５個のセルを有する群は、１、２、３、４または５個のセルを有する群を指す、という具合である。
【００６３】
本開示では様々な態様および実施形態について説明したが、当業者には他の態様および実施形態も明らかであろう。本開示で開示する様々な態様および実施形態は、例示のためのものであり、限定することを意図したものではなく、真の範囲および趣旨は以下の特許請求の範囲によって示される。
【図１】
0006042454.tif 000002
【図２】
0006042454.tif 000003
【図３】
0006042454.tif 000004
【図４】
0006042454.tif 000005
【図５】
0006042454.tif 000006
【図６】
0006042454.tif 000007