(57)【特許請求の範囲】
【請求項１】
アプリケーションについての改善されたハードウェアプロファイルを自動的に学習するコンピュータ実行方法であって、
前記方法は、
動作環境の１つまたは複数の処理デバイスのうちの第１の処理デバイスによって、複数のハードウェア構成で実行している前記アプリケーションのパフォーマンス統計を収集するステップと、
前記動作環境の前記１つまたは複数の処理デバイスのうちの前記第１の処理デバイスまたは第２の処理デバイスによって、前記アプリケーションに関する改善されたハードウェアプロファイルを導出するために、前記収集されたパフォーマンス統計に基づいて前記アプリケーションを自動的にプロファイリングするステップと、
前記動作環境の前記１つまたは複数の処理デバイスのうちの前記１の処理デバイス、前記第２の処理デバイスまたは第３の処理デバイスによって、複数の他の処理デバイスのうちの第１の他の処理デバイス上での仮想マシンの展開をスケジュールするステップであって、前記仮想マシンが前記導出された改善されたハードウェアプロファイルに一致する仮想ハードウェア構成を有する、ステップと、
前記第１の他の処理デバイス上で、前記アプリケーションを実行するための前記仮想マシンを展開するステップと、
前記動作環境の前記１つまたは複数の処理デバイスのうちの前記第１の処理デバイス、前記第２の処理デバイス、前記第３の処理デバイスまたは第４の処理デバイスによって、前記第１の他の処理デバイス上で実行している前記アプリケーションのパフォーマンス統計を監視するステップと、
前記動作環境の前記１つまたは複数の処理デバイスのうちの前記第１の処理デバイス、前記第２の処理デバイス、前記第３の処理デバイス、前記第４の処理デバイスまたは第５の処理デバイスによって、前記展開された仮想マシン上で実行している前記アプリケーションに関して、プロセッサ利用率と、割り当てられたメモリの量と、媒体に関する固定の時間単位当たりの入出力数と、前記媒体に関して使用されるまたは利用可能なストレージスペースと、ネットワーク利用率とを計算するステップと、
前記動作環境の前記１つまたは複数の処理デバイスのうちの前記第１の処理デバイス、前記第２の処理デバイス、前記第３の処理デバイス、前記第４の処理デバイス、前記第５の処理デバイスまたは第６の処理デバイスによって、前記監視するステップに基づいて、更新され改善されたハードウェアプロファイルを導出するステップであって、前記更新され改善されたハードウェアプロファイルを導出するステップは、前記プロセッサ利用率と、割り当てられたメモリの前記量と、媒体に関する固定の時間単位当たりの前記入出力数と、前記媒体に関して使用されるまたは利用可能な前記ストレージスペースと、ネットワーク利用率とに少なくとも部分的に基づく、ステップと
を備え、前記アプリケーションを自動的にプロファイリングするステップが、
前記収集されたパフォーマンス統計に基づいて前記アプリケーションに関連付けられたロールを導出するステップであって、前記ロールがフロントエンドプロセッサおよびＳＱＬプロトコルサーバのロールを含む、ステップと、
前記ロールを前記ハードウェアプロファイルに関連付けるステップと
をさらに備えることを特徴とする方法。
【請求項２】
前記１つまたは複数の処理デバイスのうちの任意の処理デバイスによって、前記仮想マシンの再展開のスケジューリングを行うステップであって、前記仮想マシンの仮想ハードウェア構成は、前記導出された更新され改善されたハードウェアプロファイルに一致する、ステップと、
前記複数の他の処理デバイスのうちの前記第１の他の処理デバイスまたは第２の他の処理デバイス上で前記仮想マシンを再展開するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記ロールを前記更新され改善されたハードウェアプロファイルに関連付けるステップをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記仮想マシンの展開をスケジュールするステップは、
前記改善されたハードウェアプロファイルを前記複数の他の処理デバイス上の利用可能な仮想マシンリソースと比較するステップと、
前記複数の他の処理デバイスのうちの１つを、前記改善されたハードウェアプロファイルに一致する少なくとも利用可能なマシンリソースを有すると判断するステップと、
前記複数の他の処理デバイスのうちの前記判断された１つの上での前記仮想マシンの展開をスケジュールするステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
１つまたは複数のロードバランサーによって、異なる仮想ハードウェア構成をもつ複数の仮想マシンで実行している前記アプリケーションの複数のコピーについての負荷を分散させるステップであって、前記負荷の分散は、前記アプリケーションの前記複数のコピーのそれぞれの応答時間に基づく、ステップをさらに備え、
前記パフォーマンス統計を収集するステップは、
前記１つまたは複数のロードバランサーによって報告されるアプリケーション応答時間データを収集するステップをさらに備える
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記アプリケーションを実行しており、複数のハードウェアプロファイルの各々に一致する仮想ハードウェア構成を有する複数の仮想マシンによって達成される効率に関して複数のハードウェアプロファイルを分析するステップをさらに備え、
前記導出された改善されたハードウェアプロファイルは、前記分析するステップの結果に少なくとも部分的に基づく
ことを特徴とする請求項１に記載の方法。
【請求項７】
前記アプリケーションが前記展開された仮想マシン上で実行している間、前記展開された仮想マシンに関して、パフォーマンス統計およびキャパシティ統計、関連付けられるハードウェアプロファイル情報およびアプリケーション応答時間情報を定期的に受信するステップと、
複数の閾値条件のうちの少なくとも１つのパフォーマンスの閾値条件が発生したかどうかを判定するために、前記定期的に受信されたパフォーマンス統計およびキャパシティ統計、前記関連付けられるハードウェアプロファイル情報およびアプリケーション応答時間情報を分析するステップと、
複数の閾値条件のうちの少なくとも１つのパフォーマンスの閾値条件が発生したと判定される場合に更新されたハードウェアプロファイルを導出するステップであって、前記複数の閾値条件は、少なくとも第１の所与の時間期間持続するプロセッサ利用率の第１の所定の変化と、少なくとも第２の所与の時間期間持続するメモリ割り当ての第２の所定の変化と、少なくとも第３の所与の時間期間持続する媒体に関する入出力アクティビティの量の第３の所定の変化と、少なくとも第４の所与の時間期間持続するネットワーク入出力の量の第４の所定の変化と、少なくとも第５の所与の時間期間持続するアプリケーション応答時間の第５の所定の変化を含む、ステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
アプリケーションを改善された効率で実行するために仮想マシンについてのハードウェアプロファイルを自動的に学習するためのシステムであって、
前記システムは、少なくとも１つの処理デバイスを備え、
前記少なくとも１つの処理デバイスのそれぞれは、
少なくとも１つのプロセッサと、
ネットワークを介して通信するための通信インターフェースと、
メモリであって、前記通信インターフェースと前記メモリは、前記少なくとも１つのプロセッサに結合される、メモリと
を備え、
前記少なくとも１つの処理デバイスの前記メモリは、コンピュータ実行可能命令を備え、前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記プロセッサに、
複数のハードウェア構成で実行しているアプリケーションに関するパフォーマンス統計およびキャパシティ統計を収集するステップと、
前記収集されたパフォーマンス統計およびキャパシティ統計にアクセスし、前記アプリケーションを自動的にプロファイリングし、ハードウェアプロファイルと前記アプリケーションのロールを導出するステップであって、前記アプリケーションの前記ロールは、前記ハードウェアプロファイルに関連付けられ、前記ロールがフロントエンドサーバおよびＳＱＬプロトコルサーバのロールを含み、前記導出されたハードウェアプロファイルに一致する仮想ハードウェア構成を有する仮想マシンは、改善された効率で前記アプリケーションを実行するための構成である、ステップと、
前記ハードウェアプロファイルを、前記導出されたハードウェアプロファイルに一致する前記仮想ハードウェア構成を有する前記仮想マシンのために少なくとも十分に利用可能なリソースを有する物理的処理デバイスと一致させるステップと、
前記物理的処理デバイス上で前記仮想マシンを展開するステップと、
前記展開された仮想マシン上で実行している前記アプリケーションのパフォーマンス統
計を監視するステップと、
前記展開された仮想マシン上で実行している前記アプリケーションに関して、プロセッサ利用率と、割り当てられたメモリの量と、媒体に関する固定の時間単位当たりの入出力数と、前記媒体に関して使用されるまたは利用可能なストレージスペースと、ネットワーク利用率とを計算するステップと、
前記監視するステップに基づいて、更新され改善されたハードウェアプロファイルを導
出するステップであって、前記更新され改善されたハードウェアプロファイルを導出するステップは、前記プロセッサ利用率と、割り当てられたメモリの前記量と、媒体に関する固定の時間単位当たりの前記入出力数と、前記媒体に関して使用されるまたは利用可能な前記ストレージスペースと、ネットワーク利用率とに少なくとも部分的に基づく、ステップと
を含む方法を実行させることを特徴とするシステム。
【請求項９】
複数の仮想ハードウェア構成をもつ複数の仮想マシンで実行している前記アプリケーションの複数のコピーについての負荷を分散させる少なくとも１つのロードバランサーであって、前記少なくとも１つのロードバランサーは、前記アプリケーションの実行しているコピーのアプリケーション応答時間に基づいて前記負荷を分散させる、少なくとも１つのロードバランサー
をさらに備えることを特徴とする請求項８に記載のシステム。
【請求項１０】
前記少なくとも１つのロードバランサーは、前記複数の仮想マシンで実行している前記アプリケーションの前記コピーのアプリケーション応答時間統計を維持し、
前記方法は、前記少なくとも１つのロードバランサーから前記アプリケーション応答時間統計を収集するステップをさらに備える
ことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記方法は、
前記監視するステップの結果として、前記実行しているアプリケーションに関して、閾値レベルを超えるパフォーマンス変化を検出するステップと、
更新されたハードウェアプロファイルを自動的に導出するステップと
をさらに備えることを特徴とする請求項８に記載のシステム。
【請求項１２】
前記ハードウェアプロファイルは、前記アプリケーションを実行しており、および複数のハードウェアプロファイルのそれぞれに一致する仮想ハードウェア構成を有するそれぞれの仮想マシンによって達成される効率に関して複数のハードウェアプロファイルを分析することに、少なくとも部分的に基づいて導出されることを特徴とする請求項８に記載のシステム。
【請求項１３】
前記方法は、
前記アプリケーションが前記展開された仮想マシン上で実行している間、前記展開された仮想マシンに関して、パフォーマンス統計およびキャパシティ統計、関連するハードウェアプロファイル情報およびアプリケーション応答時間情報を定期的に受信するステップと、
複数の閾値条件のうちの少なくとも１つのパフォーマンスの閾値条件が発生したかどうかを判定するために、前記定期的に受信されたパフォーマンス統計およびキャパシティ統計、前記関連するハードウェアプロファイル情報およびアプリケーション応答時間情報を分析するステップと、
複数の閾値条件のうちの少なくとも１つのパフォーマンスの閾値条件が発生したと判定される場合に更新されたハードウェアプロファイルを導出するステップであって、前記複数の閾値条件は、少なくとも第１の所与の時間期間持続するプロセッサ利用率の第１の所定の変化と、少なくとも第２の所与の時間期間持続するメモリ割り当ての第２の所定の変化と、少なくとも第３の所与の時間期間持続する媒体に関する入出力アクティビティの量の第３の所定の変化と、少なくとも第４の所与の時間期間持続するネットワーク入出力の量の第４の所定の変化と、少なくとも第５の所与の時間期間持続するアプリケーション応答時間の第５の所定の変化を含む、ステップと
をさらに備えることを特徴とする請求項８に記載のシステム。
【請求項１４】
処理デバイスであって、
少なくとも１つのプロセッサと、
ネットワークを介して通信するための通信インターフェースと、
メモリであって、前記通信インターフェース、前記少なくとも１つのプロセッサおよび前記メモリは相互に結合され、前記メモリはコンピュータ実行可能命令を備える、メモリと
を備え、
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記プロセッサに、
仮想マシン上で実行しているアプリケーションに関して収集されたパフォーマンスおよびキャパシティ統計並びに関連するハードウェアプロファイル情報にアクセスするステップと、
前記収集されたパフォーマンスおよびキャパシティ統計並びに前記関連するハードウェアプロファイル情報を分析し、改善された効率で前記アプリケーションを実行する仮想マシンについての仮想ハードウェア構成に対応するハードウェアプロファイルを導出するステップと、
前記導出されたハードウェアプロファイルに関する情報を、前記ハードウェアプロファイルに一致する仮想ハードウェア構成をもつ仮想マシンを展開するステップと、
前記アプリケーションが前記展開された仮想マシン上で実行している間、展開された仮想マシンに関して、パフォーマンスおよびキャパシティ統計、関連するハードウェアプロファイル情報およびアプリケーション応答時間情報を定期的に受信するステップと、
複数の閾値条件のうちの少なくとも１つのパフォーマンスの閾値条件が発生したかどうかを判定するために、前記定期的に受信されたパフォーマンスおよびキャパシティ統計、
前記関連するハードウェアプロファイル情報およびアプリケーション応答時間情報を分析するステップと、
複数の閾値条件のうちの少なくとも１つのパフォーマンスの閾値条件が発生したと判定される場合に更新されたハードウェアプロファイルを導出するステップであって、前記複数の閾値条件は、少なくとも第１の所与の時間期間持続するプロセッサ利用率の第１の所定の変化と、少なくとも第２の所与の時間期間持続するメモリ割り当ての第２の所定の変化と、少なくとも第３の所与の時間期間持続する媒体に関する入出力アクティビティの量の第３の所定の変化と、少なくとも第４の所与の時間期間持続するネットワーク入出力の量の第４の所定の変化と、少なくとも第５の所与の時間期間持続するアプリケーション応答時間の第５の所定の変化を含む、ステップと
を含む方法を実行させ、前記ハードウェアプロファイルを導出する前記ステップが、
前記収集されたパフォーマンス統計に基づいて前記アプリケーションに関連付けられたロールを導出するステップであって、前記ロールがフロントエンドプロセッサおよびＳＱＬプロトコルサーバのロールを含む、ステップと、
前記ロールを前記ハードウェアプロファイルに関連付けるステップと
をさらに備えることを特徴とする処理デバイス。
【請求項１５】
前記収集されたパフォーマンスおよびキャパシティ統計並びに前記関連するハードウェアプロファイル情報を分析し、改善された効率で前記アプリケーションを実行する仮想マシンについての仮想ハードウェア構成に対応するハードウェアプロファイルを導出するステップは、
前記アプリケーションを実行しており、複数のハードウェアプロファイルの各々に一致する仮想ハードウェア構成を有する複数の仮想マシンによって達成される効率に関して複数のハードウェアプロファイルを分析するステップをさらに備えることを特徴とする請求項１４に記載の処理デバイス。
【請求項１６】
前記仮想マシン上で実行しているアプリケーションに関して収集されたパフォーマンスおよびキャパシティ統計並びに関連するハードウェアプロファイル情報にアクセスするステップは、
前記仮想マシン上で実行しているアプリケーションに関するアプリケーション応答時間情報にアクセスするステップをさらに備え、
前記収集されたパフォーマンスおよびキャパシティ統計並びに前記関連するハードウェアプロファイル情報を分析し、改善された効率で前記アプリケーションを実行する仮想マシンについての仮想ハードウェア構成に対応するハードウェアプロファイルを導出するステップは、
前記仮想マシン上で実行しているアプリケーションに関するアプリケーション応答時間情報を分析するステップをさらに備える
ことを特徴とする請求項１４に記載の処理デバイス。
【請求項１７】
前記方法は、
データレポジトリからの、複数の仮想ハードウェア構成を有する複数の仮想マシン上で実行しているアプリケーションに関するパフォーマンスおよびキャパシティ統計並びに関連するハードウェアプロファイル情報にアクセスするステップをさらに備えることを特徴とする請求項１４に記載の処理デバイス。
【請求項１８】
前記方法は、
前記収集されたパフォーマンスおよびキャパシティ統計並びに前記関連するハードウェアプロファイル情報に基づいて、展開された仮想マシン上で実行しているアプリケーションに関して、プロセッサ利用率、メモリ割り当ての量、媒体に関する固定の時間単位当たりの入出力数と、前記媒体に関して使用されるまたは利用可能なストレージスペースと、ネットワーク利用率を計算するステップをさらに備えることを特徴とする請求項１４に記載の処理デバイス。
【請求項１９】
前記方法は、
前記プロセッサ利用率と、割り当てられたメモリの前記量と、媒体に関する固定の時間単位当たりの前記入出力数と、前記媒体に関して使用されるまたは利用可能な前記ストレージスペースと、ネットワーク利用率とに少なくとも部分的に基づいて、更新され改善されたハードウェアプロファイルを導出するステップをさらに備えることを特徴とする請求項１８に記載の処理デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション効率化に関する。
【背景技術】
【０００２】
多くの既存のデータセンターにおける処理デバイスおよびアプリケーションの利用率は最適とは言い難い。例えば、多くのデータセンターマネージャーは、データセンターにおける処理デバイスのリソースをオーバープロビジョニングし、その結果、データセンター中の一部の処理デバイスは１０％から３０％の負荷しか有せず、それによりリソースが十分に利用されないことになり得る。一部のデータセンターでは、処理デバイスは仮想マシン（ＶＭ）を実行する。異なるアプリケーションは異なるリソース要件を有するので、一般的なＶＭの標準的な仮定を行うと、データセンター処理デバイスにおけるアプリケーション効率が低下することになり得る。
【発明の概要】
【０００３】
この概要は、「発明を実施するための形態」において詳述する概念の選択を簡略化された形態で紹介するために与えられる。この概要は、請求する主題の主要な特徴または重要な特徴を特定するためのものでも、請求する主題の範囲を限定するために使用されるものでもない。
【０００４】
本開示の主題に一致する実施形態では、システムは、トレンディングエンジン（trending engine）、スケジューラ、モニター、およびプロファイラーを含み得る。オンボーディングプロセス中に、トレンディングエンジンは、アプリケーションを実行している仮想マシンのパフォーマンス統計とキャパシティ統計とを獲得し得る。システムは、プロファイラーを使用することによって改善されたハードウェアプロファイルを自動的に学習して、獲得されたパフォーマンス統計とキャパシティ統計とを分析する。分析の結果として、トレンディングエンジンは、アプリケーションを実行するための改善されたハードウェアプロファイルを導出し得る。スケジューラは、導出された改善されたハードウェアプロファイルに一致する仮想ハードウェア構成を有する１つまたは複数の仮想マシンをスケジュールし、展開し得る。展開後に、モニターは、展開された１つまたは複数の仮想マシンのパフォーマンス統計とキャパシティ統計とを定期的にサンプリングし得る。モニターが閾値条件の発生を検出すると、モニターは、トレンディングエンジンとプロファイラーとを呼び出し、更新され改善されたハードウェアプロファイルを自動的に導出し得る。次いで、スケジューラは、導出された更新され改善されたハードウェアプロファイル（derived updated improved hardware profile）に一致する仮想ハードウェア構成をもつ１つまたは複数の仮想マシンを再展開し得る。
【０００５】
いくつかの実施形態では、パフォーマンス統計とキャパシティ統計とは、収集され、データリポジトリに記憶され得る。プロファイラーは、データリポジトリに記憶されたパフォーマンス統計とキャパシティ統計とを分析し得る。パフォーマンス統計とキャパシティ統計とは、少なくとも１つのＶＭを実行している１つまたは複数の処理デバイスによって維持され、提供され得る。１つまたは複数のロードバランサーは、アプリケーション応答時間に基づいて、アプリケーションの負荷を１つまたは複数のＶＭの間で分散させ得る。
【図面の簡単な説明】
【０００６】
上記したおよび他の利点並びに特徴を得ることができる方法で説明するために、より具体的な説明を以下で述べ、添付図面に示されている特定の実施形態を参照して与える。これらの図面は典型的な実施形態のみを示し、したがって、その範囲を限定するものとして見なされるべきではないことを理解した上で、添付図面を使用して追加の特異性および詳細とともに実装形態を記述し、説明する。
【図１】本開示の主題に一致するシステムの一実施形態が実装され得る例示的な動作環境を示す図である。
【図２】複数のＶＭが実行され得る例示的な処理デバイスを示す図である。
【図３】実施形態の様々な態様を実装するために使用され得る例示的な処理デバイスを示す図である。
【図４】本開示の主題に一致する例示的なシステムの機能的構成要素を示す機能ブロック図である。
【図５】本開示の主題に一致する実施形態において実装され得る例示的なプロセスを示すフローチャートである。
【図６】アプリケーションを自動的にプロファイリングし、改善されたハードウェアプロファイルを導出するための例示的なプロセスを示すフローチャートである。
【図７】改善されたハードウェアプロファイルを導出するときに行われ得る分析を示すグラフである。
【図８】改善されたハードウェアプロファイルを導出するときに行われ得る分析を示すグラフである。
【図９】本開示の主題に一致する実施形態において行われ得る、導出された改善されたプロファイルに一致する仮想ハードウェア構成をもつ仮想マシンをスケジュールし、展開するための例示的なプロセスを説明するフローチャートである。
【発明を実施するための形態】
【０００７】
実施形態について以下で詳述する。特定の実装形態について説明するが、これは説明の目的で行われるにすぎないことを理解されたい。本開示の主題の趣旨および範囲から離れることなしに他の構成要素および構成が使用され得ることを、当業者は認識されよう。
【０００８】
概要
本開示の主題に一致する実施形態では、データセンターは、様々な仮想ハードウェア構成を有する複数のＶＭにアプリケーションをロードするためのアプリケーション効率エンジンを含み得る。１つまたは複数のロードバランサーが、ＶＭ中で実行しているアプリケーションのそれぞれの判断された応答時間に基づいて、複数のＶＭの間で負荷を分散させるように構成され得る。アプリケーションを実行しているＶＭに関するパフォーマンス統計とキャパシティ統計とが収集され、データリポジトリに記憶され得る。データリポジトリ中のパフォーマンス統計とキャパシティ統計とがアクセスされ、分析されて、アプリケーションを自動的にプロファイリングし、改善されたハードウェアプロファイルを導出し得る。スケジューラが、導出されたハードウェアプロファイルに一致する仮想ハードウェア構成を有するＶＭに利用可能なリソースを有する少なくとも１つの処理デバイスを判断し得る。スケジューラは、アプリケーションを実行するためのＶＭを展開し得る。
【０００９】
いくつかの実施形態では、アプリケーションを実行しているＶＭのパフォーマンス統計とキャパシティ統計とが、処理デバイスによって監視され得る。処理デバイスは、パフォーマンス統計およびキャパシティ統計、並びにアプリケーション応答時間統計を記憶し得るデータリポジトリにアクセスし得る。あるいは、処理デバイスは、例えば、ロードバランサー、サーバー、または他のデバイスなど、１つまたは複数の他のデバイスに問い合わせて、ＶＭ上で実行しているアプリケーションに関する（統計と総称する）パフォーマンス統計およびキャパシティ統計、並びにアプリケーション応答時間統計を取得し得る。処理デバイスは、統計を分析して、１つまたは複数のＶＭ上で実行しているアプリケーションに関して閾値条件が生じたかどうかを判断し得る。いくつかの条件のうちの１つが生じたときに、閾値条件が生じたと判断され得る。一実施形態では、条件は以下を含み得る。
１．少なくとも第１の所与の時間期間持続する、アプリケーションを実行している１つまたは複数のＶＭのプロセッサ利用率の第１の予め定義された変化、
２．少なくとも第２の所与の時間期間持続する、アプリケーションを実行している１つまたは複数のＶＭのメモリ割当ての第２の予め定義された変化、
３．アプリケーションを実行している１つまたは複数のＶＭによって使用され、少なくとも第３の所与の時間期間持続する、例えば、ハードディスクドライブまたは他の媒体など、媒体に関する入出力アクティビティの量の第３の予め定義された変化、
４．アプリケーションを実行している１つまたは複数のＶＭに関する、少なくとも第４の所与の時間期間持続するネットワーク入出力の量の第４の予め定義された変化、
５．少なくとも第５の所与の時間期間持続する、１つまたは複数のＶＭ上で実行しているアプリケーションのアプリケーション応答時間の第５の予め定義された変化。
【００１０】
上記で説明した閾値条件は例示的なものである。本開示の主題に一致する他の実施形態では、追加の、または異なる閾値条件が定義され得る。
【００１１】
閾値条件のうちの少なくとも１つが生じたと判断された場合、アプリケーション効率エンジンは、様々な仮想ハードウェア構成をもつ複数のＶＭにアプリケーションを再びロードし、統計がアクセスされ、分析されて、アプリケーションが自動的にプロファイリングされ、改善されたハードウェアプロファイルが導出され得、スケジューラは、導出された改善されたハードウェアプロファイルに一致する仮想ハードウェア構成を有するＶＭに利用可能なリソースを有する少なくとも１つの処理デバイスを再び判断し得る。次いで、スケジューラは、アプリケーションを実行するための、導出された改善されたハードウェア構成に一致する仮想ハードウェア構成をもつ１つまたは複数のＶＭを再展開し得る。
【００１２】
例示的な動作環境
図１に、本開示の主題に一致する実施形態のための例示的な動作環境１００を示す。動作環境１００は、ネットワーク１０２と、１つまたは複数のロードバランサー１０４と、第１の処理デバイス１０６と、第２の処理デバイス１０８とを含み得る。
【００１３】
ネットワーク１０２は、ローカルエリアネットワークでも、他のタイプのネットワークでもよい。ネットワーク１０２は、ワイヤードネットワークでもワイヤレスネットワークでもよく、例えば、インターネットなどの他のネットワークと接続され得る。
【００１４】
ロードバランサー１０４は、同一場所に配置された処理デバイス、またはリモート処理デバイスと、ネットワーク１０２を介して通信し得る。ロードバランサー１０４が、例えば、第１の処理デバイス１０６に常駐するいくつかのＶＭのうちの１つの上で実行しているアプリケーションについてのデータまたは他の情報などの負荷を受信すると、ロードバランサー１０４は、最も短いアプリケーション応答時間を有する第１の処理デバイス１０６のうちの１つの上でアプリケーションを実行しているＶＭのうちの１つに負荷を渡し得る。一部の動作環境では、ロードバランサー１０４は、いくつかのＶＭの中から最も短いアプリケーション応答時間を有するＶＭに負荷を渡す市販のロードバランサーであり得る。ロードバランサー１０４の様々な実施形態は、ハードウェアにおいて実装されても、ロードバランサー１０４中に含まれる処理デバイス上のソフトウェアにおいて実装されてもよい。一実施形態では、ロードバランサー１０４は、ワシントン州シアトルのＦ５から入手可能なロードバランサーを含み得る。
【００１５】
第１の処理デバイス１０６の各々は、その上で実行している１つまたは複数のＶＭを有し得る。いくつかの実施形態では、第１の処理デバイス１０６の各々はサーバーであり得る。ＶＭの各々は仮想ハードウェア構成を有し得、ＶＭの少なくともいくつかは、アプリケーションのコピーを実行し得る。仮想ハードウェア構成は、例えば、コアプロセッサなど、プロセッサの数、割り当てられたメモリの量、および、例えば、ディスクストレージスペース、または他のストレージスペースなど、割り当てられたストレージスペースの量を含み得る。いくつかの実施形態では、仮想ハードウェア構成は、追加の、または他の構成情報を含み得る。
【００１６】
第２の処理デバイス１０８は、１つまたは複数の処理デバイスを含み得る。第２の処理デバイス１０８は、いくつかの仮想ハードウェア構成を有するＶＭ中でアプリケーションを実行する際に使用するためのプロファイラーと、改善されたハードウェアプロファイルを導出するために様々な仮想ハードウェア構成をもつ１つまたは複数のＶＭ上で実行しているアプリケーションをプロファイリングするためのトレンディングエンジンと、導出された改善されたハードウェアプロファイルに一致する仮想ハードウェア構成をもつＶＭを実行するために利用可能なリソースを有する第１の処理デバイス１０６のうちの１つを判断し、第１の処理デバイスのうちの判断された１つの上でＶＭを展開するためのスケジューラと、アプリケーションを実行しているＶＭに関してパフォーマンス統計とキャパシティ統計とを監視し、少なくとも１つの閾値条件が生じたときに別の改善されたハードウェアプロファイルを導出するためにサイクルを繰り返させるためのモニターとを実行し得る。トレンディングエンジンと、プロファイラーと、スケジューラと、モニターとが、第２の処理デバイス１０８のうちの同じ処理デバイスにおいて実行されるか、もしくは第２の処理デバイス１０８のうちの別々の処理デバイスにおいて実行されるか、またはトレンディングエンジン、プロファイラー、スケジューラ、およびモニターのうちの少なくとも１つが、トレンディングエンジン、プロファイラー、スケジューラ、およびモニターのうちの少なくとも他の１つと同じ、第２の処理デバイス１０８のうちの処理デバイスにおいて実行され得るように、第２の処理デバイス１０８のうちの複数の処理デバイスにおいて実行され得る。いくつかの実施形態では、また、第１の処理デバイス１０６のうちの第１の処理デバイスとして、第２の処理デバイス１０８のうちの１つまたは複数が含まれ得る。他の実施形態では、処理デバイス１０８のいずれも第１の処理デバイス１０６の中に含まれ得ない。
【００１７】
図１に示す動作環境１００は、例示的であり、第１の処理デバイス１０６が３つの処理デバイスを含み、第２の処理デバイス１０８が３つの処理デバイスを含み、ロードバランサー１０４が３つのロードバランサーを含むことを示す。ただし、他の実施形態では、第１の処理デバイス１０６と、第２の処理デバイス１０８と、ロードバランサー１０４とは、それぞれ、より少ないまたは追加の第１の処理デバイス１０６と、第２の処理デバイス１０８と、ロードバランサー１０４とを含み得る。
【００１８】
図２に、第１の処理デバイス１０６の例示的な処理デバイス２００を示す。例示的な処理デバイス２００は複数のＶＭ２０２を含み得る。例えば、処理デバイス２００は４つのコアプロセッサを含み得、各コアプロセッサはそれぞれのＶＭとともに使用するために割り当てられ得る。あるいは、異なる数のＶＭが展開されて、処理デバイス２００上で実行され得る。例えば、いくつかのＶＭには、４つのコアプロセッサのうちの１つが割り当てられ得、他のＶＭには、４つのコアプロセッサのうちの２つ以上が割り当てられ得る。
【００１９】
処理デバイス２００は例示的な処理デバイスである。他の実施形態では、処理デバイス２００は、より多いまたはより少ないコアプロセッサを含み得、異なる数のＶＭがそのプロセッサ上で実行され得る。
【００２０】
例示的な処理デバイス
図３は、本開示の主題に一致する第１の処理デバイス１０６および／または第２の処理デバイス１０８の実施形態を実装するために使用され得る例示的な処理デバイス３００の機能ブロック図である。処理デバイス３００は、サーバーでも、他のタイプの処理デバイスでもよい。処理デバイス３００は、バス３１０と、プロセッサ３２０と、ランダムアクセスメモリ（ＲＡＭ）３３０と、読取り専用メモリ（ＲＯＭ）３４０と、入力デバイス３５０と、出力デバイス３６０と、ストレージデバイス３６５と、通信インターフェイス３７０とを含み得る。バス３１０は、処理デバイス３００の構成要素の間の通信を可能にし得る。
【００２１】
プロセッサ３２０は、命令を解釈し、実行する１つまたは複数の従来のプロセッサを含み得る。メモリは、ＲＡＭ３３０、ＲＯＭ３４０、または情報とプロセッサ３２０によって実行するための命令とを記憶する別のタイプの動的もしくは静的ストレージデバイスを含み得る。ＲＡＭ３３０、または別のタイプの動的ストレージデバイスは、命令並びにプロセッサ３２０による命令の実行中に使用される一時的な変数または他の中間の情報を記憶し得る。ＲＯＭ３４０、または別のタイプの静的ストレージデバイスは、プロセッサ３２０のための静的情報および命令を記憶し得る。
【００２２】
入力デバイス３５０は、キーボード、ポインティングデバイス、電子ペン、タッチスクリーン、または入力を行うための他のデバイスを含み得る。出力デバイス３６０は、ディスプレイ、プリンター、または情報を出力するための他のデバイスを含み得る。ストレージデバイス３６５は、ディスクおよびディスクドライブと、光学媒体、またはデータおよび／または命令を記憶するための他の媒体を含み得る。通信インターフェイス３７０は、ワイヤード接続またはワイヤレス接続によってデバイスにネットワークを介して通信するためのトランシーバーを含み得る。
【００２３】
処理デバイス３００は、例えば、ＲＡＭ３３０、ＲＯＭ３４０または他の媒体などの有形の機械可読媒体に含まれる命令のシーケンスを実行するプロセッサ３２０に応答して、機能を行い得る。そのような命令は、別の機械可読媒体または別個のデバイスから通信インターフェイス３７０を介してＲＡＭ３３０に読み取られ得る。
【００２４】
例示的なシステム
図４に、本開示の主題に一致するアプリケーション効率エンジンを実装する例示的なシステム４００の機能図を示す。システム４００は、プロファイラー４０２と、データリポジトリ４０４と、モニター４０６と、トレンディングエンジン４０８と、１つまたは複数のＶＭ４１０と、スケジューラ４１２と、１つまたは複数のロードバランサー１０４とを含み得る。
【００２５】
プロファイラー４０２は、様々な仮想ハードウェア構成を有し、同じアプリケーションを実行しているＶＭ４１０を実行している処理デバイス１０６からパフォーマンス統計とキャパシティ統計とを収集し得る。パフォーマンス統計とキャパシティ統計とは、プロセッサ利用率、割り当てられたメモリの量、ディスクまたは他の媒体などの媒体への固定の時間単位（例えば、秒または他の好適な固定の時間単位）当たりの入出力数、媒体上で利用可能なおよび／または使用されるストレージスペースの量、ネットワーク利用率、並びに他の統計値を含み得る。プロファイラー４０２はまた、アプリケーション応答時間統計を収集し得る。
【００２６】
いくつかの実施形態では、アプリケーション応答時間統計は、ロードバランサー１０４から収集され得る。他の実施形態では、アプリケーション応答時間統計は、他のデバイスから収集され得る。アプリケーション応答時間統計は、ＶＭ４１０のいずれかの上で実行しているアプリケーションによって１秒（または他の好適な固定の時間単位）当たりに処理されるトランザクション数を含み得る。他の実施形態では、追加の、または異なるパフォーマンス統計およびキャパシティ統計、並びに／またはアプリケーション応答時間統計が収集され得る。
【００２７】
いくつかの実施形態では、プロファイラー４０２は、パフォーマンス統計およびキャパシティ統計、並びにアプリケーション応答時間統計を、それぞれ、直接的に第１の処理デバイス１０６、並びにロードバランサー１０４から収集し得る。他の実施形態では、プロファイラー４０２はデータリポジトリ４０４にアクセスし、データリポジトリ４０４は、第１の処理デバイス１０６および第２の処理デバイス１０８のうちの少なくとも１つによってそれぞれのソースから収集されたパフォーマンス統計およびキャパシティ統計、並びにアプリケーション応答時間統計を記憶し得る。
【００２８】
モニター４０６は、第１の処理デバイス１０６および第２の処理デバイス１０８のうちの少なくとも１つの上で実行され得る。モニター４０６は、第１の処理デバイス１０６からパフォーマンス統計およびキャパシティ統計を取得し、ロードバランサー１０４または他のデバイスからアプリケーション応答時間統計を取得し得、パフォーマンス統計およびキャパシティ統計、並びにアプリケーション応答時間統計、並びに他の情報をデータリポジトリ４０４に記憶し得る。いくつかの実施形態では、他の情報は、時間指示（indication）、特定のＶＭの指示、統計を収集した第１の処理デバイス１０６のうちの特定の１つの指示、並びに他のデータを含み得る。他の実施形態では、他の情報は追加の、または異なるデータを含み得る。
【００２９】
トレンディングエンジン４０８は、第１の処理デバイス１０６および第２の処理デバイス１０８のうちの少なくとも１つの上で実行され得る。トレンディングエンジン４０８は、データリポジトリ４０４に記憶されるかまたはプロファイラー４０２によって提供され得る、収集されたパフォーマンス統計およびキャパシティ統計、並びにアプリケーション応答時間統計にアクセスし得る。トレンディングエンジン４０８は、当該統計を分析して、改善されたハードウェアプロファイルを導出し、次いで、トレンディングエンジン４０８は、その改善されたハードウェアプロファイルをスケジューラ４１２に与え得る。
【００３０】
スケジューラ４１２は、第１の処理デバイス１０６から、導出された改善されたハードウェアプロファイルをサポートするために利用可能なリソースを有する処理デバイスを判断し得る。次いで、スケジューラ４１２は、判断された処理デバイス上の、導出された改善されたハードウェアプロファイルに一致する仮想ハードウェア構成をもつＶＭ４１０をスケジュールし、展開し得る。
【００３１】
ある時点で、モニター４０６が、アプリケーションを実行しているＶＭ４１０に関して、閾値条件の発生を判断した場合、モニター４０６は、いくつかの仮想ハードウェア構成を有するＶＭ４１０をスケジュールし展開するようにスケジューラ４１２に通知し、モニター４０６は、更新され改善されたハードウェアプロファイルを導出するためにパフォーマンス統計およびキャパシティ統計、並びにアプリケーション応答時間統計を収集するようにプロファイラー４０２にさらに通知し得る。あるいは、モニター４０６が、アプリケーションを実行しているＶＭ４１０に関して、閾値条件の発生を判断した場合、モニター４０６はプロファイラー４０２に通知し、プロファイラー４０２は、いくつかの仮想ハードウェア構成を有するＶＭ４１０をスケジュールし展開するようにスケジューラ４１２に通知し得る。次いで、プロファイラー４０２は、更新され改善されたハードウェアプロファイルを導出するために、パフォーマンス統計およびキャパシティ統計、並びにアプリケーション応答時間統計を収集し得る。これについて、以下でより詳細に論じる。
【００３２】
例示的な処理
図５は、本開示の主題に一致する様々な実施形態において行われ得る例示的なプロセスのフローチャートである。プロセスは、スケジューラ４１２が、処理デバイス１０６上に、それぞれの仮想ハードウェア構成を有するいくつかのＶＭ４１０を展開して開始する（行為５０２）。プロファイラー４０２は、例えば、パフォーマンス統計とキャパシティ統計とを処理デバイス１０６から、およびアプリケーション応答時間統計をロードバランサー１０４、または他のデバイスからなど、統計をデバイスから直接収集する（行為５０４）。プロファイラー４０２は、収集された統計をデータリポジトリ４０４に記憶し（行為５０６）、アプリケーションをプロファイリングするようにトレンディングエンジン４０８を呼び出すかまたはトレンディングエンジン４０８に通知し得る。トレンディングエンジン４０８は、データリポジトリ４０４に記憶された収集された統計にアクセスして、アプリケーションを自動的にプロファイリングし、改善されたハードウェアプロファイルを導出する（行為５０８）。
【００３３】
図６は、本開示の主題に一致する一実施形態におけるトレンディングエンジン４０８に関する例示的な処理を示すフローチャートである。プロセスは、トレンディングエンジン４０８が、データリポジトリ４０４中の収集された統計にアクセスして、様々な仮想ハードウェア構成に関する改善されたアプリケーション効率を学習して開始する（行為６０２）。次に、トレンディングエンジン４０８は、改善されたアプリケーション効率を達成するためにハードウェアプロファイルの様々なアスペクト（aspect）を分析する（行為６０４）。
【００３４】
図７および図８に、ハードウェアプロファイルの様々なアスペクトの例示的な分析を示す。図７は、プロセッサの数が軸７０２に沿って表され、プロセッサ利用率の割合が軸７０４に沿って表されているグラフである。グラフを見るとわかるように、０．５個のプロセッサが割り当てられると、プロセッサ利用率は約３０％である。１つのプロセッサが割り当てられると、プロセッサ利用率は約４５％に上昇する。２つのプロセッサが割り当てられると、プロセッサ利用率は約８５％に増加する。さらなるプロセッサを割り当てると、プロセッサ利用率はごくわずかに上昇する。例えば、３つのプロセッサが割り当てられると、プロセッサ利用率は約８７．５％に増加し、４つのプロセッサが割り当てられると、プロセッサ利用率は約９０％に増加する。したがって、２つのプロセッサを割り当てた後に、それ以上のプロセッサを追加しても、プロセッサ利用率はそれほど増加しない。プロセッサの数に対するプロセッサ利用率を分析すると、プロファイラー４０８は、少なくとも軸７０２に沿った予め定義された長さについて、グラフの傾きが、例えば、０．２、または別の好適な値など、予め定義された値よりも小さくなる、プロセッサの数を選択し得る。この例では、プロファイラー４０８は、プロセッサの改善された数として２つのプロセッサを選択し得る。
【００３５】
同様に、図８は、ＲＡＭのギガバイト（ＧＢ）数が軸８０２に沿って表され、１秒当たりのトランザクション数が軸８０４に沿って表されているグラフである。分かるように、１ＧＢのメモリが割り当てられると、１秒当たり約１０００トランザクションが処理され得る。２ＧＢのメモリが割り当てられると、１秒当たり約１，８００トランザクションが処理され得る。４ＧＢのメモリが割り当てられると、１秒当たり約２，２５０トランザクションが処理され得る。８ＧＢのメモリが割り当てられると、１秒当たりの処理されるトランザクション数の著しい増加が観測され得る（この例では、１秒当たり約５，１００トランザクション）。１６ＧＢのメモリが割り当てられると、１秒当たりに処理されるトランザクション数の少しの増加が観測され得る（この例では、１秒当たり約６，１００トランザクション）。３２ＧＢのメモリが割り当てられると、１秒当たり約７，０００トランザクションが処理され得る。８ＧＢのメモリが割り当てられた後にさらなるメモリを追加しても、１秒当たりの処理されるトランザクション数はそれほど増加しないことを観測することができる。１秒当たりの処理されるトランザクション数に対して、割り当てるメモリの量を分析すると、プロファイラー４０８は、少なくとも軸８０２に沿った予め定義された長さについて、グラフの傾きが、例えば、０．２、または別の好適な値など、予め定義された値よりも小さくなる、メモリの量を選択し得る。この例では、プロファイラー４０８は、改善されたメモリの量として８ＧＢのメモリを選択し得る。
【００３６】
図６に戻ると、トレンディングエンジン４０８は、行為６０４中に行われた分析に基づいて改善されたハードウェアプロファイルを導出する（行為６０６）。次いで、トレンディングエンジン４０８は、収集された統計、または導出されたハードウェアプロファイルに基づいてロール（role）を導出する（行為６０８）。ロールは、フロントエンドプロセッサ、ＳＱＬプロトコルサーバー、並びに他のロールを含み得る。ロールの各々は、様々なハードウェアプロファイルとして定義され得る。プロファイラー４０８は、導出されたハードウェアプロファイルを、ロールに対応する様々なハードウェアプロファイルのうちの１つと一致させることに基づいて、ロールを導出し得る。次いで、トレンディングエンジン４０８は、導出されたロールを導出されたハードウェアプロファイルに関連付け、それにより、導出されたロールに一致するロールを有するＶＭ４１０は、導出されたハードウェアプロファイルに対応する仮想ハードウェア構成を有し得る。
【００３７】
図５に戻ると、スケジューラ４１２は、導出されたハードウェアプロファイルに一致する仮想ハードウェア構成をもつＶＭ４１０の展開をスケジュールする（行為５１０）。
【００３８】
図９は、スケジューラ４１２によって行われ得る例示的な処理を示すフローチャートである。第１に、スケジューラ４１２は、少なくとも、導出されたハードウェアプロファイルに一致する利用可能なリソースの量を有する、第１の処理デバイス１０６の中の１つの処理デバイスを判断する（行為９０２）。次いで、スケジューラ４１２は、導出されたハードウェアプロファイルに一致する仮想ハードウェア構成を有するＶＭ４１０の、判断された第１の処理デバイス１０６上での展開、または再展開をスケジュールする（行為９０４）。
【００３９】
図５に戻ると、モニター４０６は、アプリケーションを実行しているＶＭ４１０のパフォーマンス統計とキャパシティ統計とを監視する（行為５１２）。モニター４０６は、例えば、アプリケーションを実行しているＶＭ４１０を有する第１の処理デバイス１０６の各々、および処理デバイス１０６の各々に負荷を与えるロードバランサー１０４などのデバイスに問い合わせ得る。あるいは、統計は、第１の処理デバイス１０６および第２の処理デバイス１０８のうちの１つによって収集され、データリポジトリ４０４に記憶され得、モニター４０６は、データリポジトリ４０４に記憶された収集された統計にアクセスして、パフォーマンス統計とキャパシティ統計とを監視し得る。
【００４０】
次いで、モニター４０６は、アプリケーションを実行しているＶＭ４１０に関して、いくつかの閾値条件の中から１つの閾値条件が生じたかどうかを判断する（行為５１４）。一実施形態では、閾値条件は、少なくとも第１の所与の時間期間持続するプロセッサ利用率の第１の予め定義された変化、少なくとも第２の所与の時間期間持続するメモリ割当ての第２の予め定義された変化、少なくとも第３の所与の時間期間持続する媒体への入出力アクティビティの量の第３の予め定義された変化、第４の所与の時間期間にわたるネットワーク入出力の量の第４の予め定義された変化、および少なくとも第５の所与の時間期間持続するアプリケーション応答時間の第５の予め定義された変化を含み得る。
【００４１】
閾値条件が生じなかった場合、モニター４０６は、アプリケーションを実行しているＶＭ４１０を有する第１の処理デバイス１０６の各々の統計と第１の処理デバイス１０６の各々に負荷を与えるロードバランサー１０４の統計とを監視し続ける（行為５１２）。他の場合、モニター４０６は、ＶＭ４１０を展開し、いくつかの仮想ハードウェア構成をもつ第１の処理デバイス１０６にアプリケーションをロードする（行為５０２）ようにスケジューラ４１２に通知し得、モニター４０６は、統計を収集する（行為５０４）ようにトレンディングエンジン４０２に通知し得る。
【００４２】
結び
本主題について構造的特徴および／または方法論的行為に固有の言語で説明したが、添付の特許請求の範囲における主題は、上記で説明した特定の特徴または行為に必ずしも限定されないことを理解されたい。そうではなく、上記で説明した特定の特徴および行為は、特許請求の範囲を実施するための例示的な形態として開示されている。
【００４３】
説明した実施形態の他の構成は本開示の範囲の一部である。例えば、他の実施形態では、図５、図６および図９に示されるプロセスなど、プロセスによって行われる行為の順序が異なるか、および／または追加のもしくは他の行為を含むことがある。
【００４４】
したがって、添付の特許請求の範囲、および添付の特許請求の範囲の法的均等物は、与えられた特定の例ではなく、実施形態を定義する。
【図１】
0005608222.tif 000002
【図２】
0005608222.tif 000003
【図３】
0005608222.tif 000004
【図４】
0005608222.tif 000005
【図５】
0005608222.tif 000006
【図６】
0005608222.tif 000007
【図７】
0005608222.tif 000008
【図８】
0005608222.tif 000009
【図９】
0005608222.tif 000010