(58)【調査した分野】(Int.Cl.,DB名)
前記1つ以上の特徴のうちの少なくとも1つが、メモリ容量、中央処理装置(CPU)容量、ネットワーク帯域幅、ネットワークレイテンシ、ネットワークトポロジー内の位置、命令セット、または、性能メトリクスの分散を含む、
請求項1に記載のシステム。
前記既定の運用プロファイルが、運用階層内のレベルに関連付けられ、前記第1の既定の運用プロファイルが、前記ソフトウェア作業負荷に対して、前記運用階層のより上位のレベルに関連付けられる、
請求項11に記載のコンピュータによって実装される方法。
【発明を実施するための形態】
【0006】
一般的に記述すると、本開示は、コンピューティングリソースの利用に関する。具体的には、本開示は、現実のリソース使用測定値および他の運用メトリクスの解析に基づいて、コンピューティングリソースの消費者のためにリソース使用および運用メトリクスのプロファイルを自動的に判定することに関する。いくつかの実施形態において、顧客仕様に従ってインスタンス化された仮想マシンインスタンス(例えば、顧客仕様に従ってオペレーティングシステムおよびアプリケーションソフトウェアを備えて構成された仮想マシンからインスタンス化された仮想マシンインスタンス)等のコンピューティングリソースの消費者は、ホストの物理的コンピューティングデバイス上にインスタンス化されてもよい。仮想マシンインスタンスは、仮想マシンインスタンスによる1つ以上のコンピュータソフトウェアプログラムの実行または他の作業負荷に基づいて、多様なコンピューティングリソースを消費することができる。仮想マシンインスタンスは次いで、実行を中止することができる、またはその他異なる目的のために構成することができる。
【0007】
1つの顧客または1組の顧客等、特異的なエンティティに対して、仮想マシンインスタンスをインスタンス化するプロセスが繰り返されてもよい。仮想マシンインスタンスのライフサイクルを処理する一環として、仮想マシンインスタンスを提供することと関連付けられるサービスプロバイダは、リソースの消費を観察し、記録することができる。サービスプロバイダは次いで、処理リソース消費測定値および他の運用メトリクス情報に基づいて、仮想マシンインスタンスのリソース使用および運用メトリクスのプロファイルを判定することができる。
【0008】
本開示の追加の態様は、概して運用プロファイルと言及される、リソース使用および運用メトリクスのプロファイルを一般化することに関する。例えば、何千もの仮想マシンインスタンスがインスタンス化される場合があり、データセンター等、単一のネットワークコンピューティング環境でリソースを利用する場合がある。各仮想マシンインスタンスのために個別のカスタマイズされた運用プロファイルを判定し、保守するのではなく、仮想マシンインスタンスは、一般化されたまたはデフォルトの運用プロファイルに割り当てられてもよい。したがって、仮想マシンインスタンス群が、多様な組織条件に従って分類され、同じ運用プロファイルに割り当てられてもよい。いくつかの場合、運用プロファイルは、特定の仮想マシンインスタンスの構成が特定の運用プロファイルと、それ自体が複数の仮想マシンインスタンス構成と関連付けられるより一般的な運用プロファイルとも関連付けられるように、階層的であってもよい。階層には複数のレベルが存在してもよく、可能性として、何千もの仮想マシンインスタンス構成が、単一の一般的な運用プロファイルまたは少数の最上位の運用プロファイル、および階層内の各レベルにあるより多数のより特異的な運用プロファイルと関連付けられる。階層の最下位レベルには、特定の顧客によって使用される単一の仮想マシンインスタンス構成と関連付けられる、特定の運用プロファイルが存在してもよい。
【0009】
本開示の更なる態様は、自動的に判定された運用プロファイルに基づいて、仮想マシンインスタンスに対するコンピューティングリソースを提供するためにターゲットのホストコンピューティングデバイスを識別することに関する。いくつかの実施形態において、特定の物理的ホストコンピューティングデバイスは、同時に複数の仮想マシンインスタンスにターゲットのコンピューティングリソースを提供するように構成されてもよい。単一の仮想マシンインスタンスによって使用されるために、コンピューティングリソースの既定量が予約されてもよい。仮想マシンインスタンスの運用プロファイルが、その仮想マシンインスタンスがそのインスタンスのために予約されていたコンピューティングデバイスリソースを消費する可能性が低いことを示すと、ホストコンピューティングデバイスは、追加の仮想マシンインスタンスをインスタンス化してもよい。追加の仮想マシンインスタンスは、以前にインスタンス化された仮想マシンインスタンスと同時にホストコンピューティングリソースと関連付けられても、またはホストコンピューティングリソースへのアクセスを有してもよい。加えて、仮想マシンインスタンスのうちのいずれかが、消費が仮想マシンインスタンスの運用プロファイルに指定された1つ以上の閾値に到達または超過するようにリソースを消費する、そうでなければリソースへのアクセスを制限する場合、仮想マシンインスタンスのうちの1つ以上が、別のホストコンピューティングデバイスへ転送されてもよい。例えば、閾値を超える消費と関連付けられる仮想マシンインスタンスが転送されてもよく、または他の仮想マシンインスタンスが転送されてもよい。
【0010】
いくつかのコンピューティングリソースは必ずしも、ホストコンピューティングデバイスによって提供されず、そうではなく、ホスト以外のリソースによって提供される。例えば、ネットワークトポロジーは、1つ以上のリンク(例えば、スイッチと他のネットワーク構成要素との間のネットワーク接続)を横断するために、あるホストコンピューティングデバイスから、第2のホストコンピューティングデバイスへの通信を必要とする場合がある。いくつかのリンクは、第3のホストコンピューティングデバイスへの通信のために異なっていてもよい。リンクトラフィックに関するデータおよび通信がホスト間を横断するリンクの数は、リソース消費測定値または運用メトリクスとして記録されてもよい。このデータは、別のホストコンピューティングデバイスと通信する可能性がある仮想マシンインスタンスをインスタンス化するのがどのホストコンピューティングデバイスであるかを判定するために、将来使用されてもよい。加えて、いくつかのコンピューティングリソースの消費は、一般的に他の仮想マシンインスタンスまたは消費者のために利用可能であるリソースの量を必ずしも削減しない。例えば、特定の命令セットのようにホストコンピューティングデバイスによって提供される特徴は、概して、コンピューティングリソースとして言及されてもよい。しかしながら、命令セットの使用は、別の仮想マシンインスタンス、アプリケーション、または他の消費者に対する命令セットの可用性を必ずしも削減しない。
【0011】
本開示に記載される実施形態の態様は、例示の目的のため、管理構成要素と、サーバーコンピューティングデバイスと、顧客の代わりにサーバーコンピューティングデバイス上でインスタンス化された仮想マシンとの間の関係および相互作用を中心とするが、当業者は、本明細書に開示される技法は、任意の数のハードウェアあるいはソフトウェアプロセスまたはアプリケーションに適用されてもよいことを理解するであろう。例えば、仮想マシンインスタンスは概して、例示的なコンピューティングリソース消費者として使用される一方、他のプログラムまたは作業負荷は、アプリケーションソフトウェア、オペレーティングシステム、ストレージエリアネットワーク(SAN)ノード等と置換されてもよい。加えて、メモリ、CPU容量、およびネットワーク帯域幅等のコンピューティングリソースは、例示的なコンピューティングリソースとして使用されるが、ネットワークリンクトラフィック、レイテンシ、プロセッサ命令セット等の他のコンピューティングリソースが置換されてもよい。さらに、本開示の多様な態様は、図示例および実施形態を参照して説明されるが、当業者は、開示される実施形態および例は限定として解釈されてはならないことを理解するであろう。本開示の多様な態様は所定の例および実施形態に関して説明されるが、これらは例示を目的とし、本開示を制限するものではない。
【0012】
図1は、それらのプロファイルに基づくリソースの使用およびリソースの割り当ての自動プロファイル化が実装されてもよい、例示的なネットワークコンピューティング環境100を図示する。運用プロファイルおよびリソースの割り当ては、実際のリソース使用の事前の測定値および他の運用メトリクス、ならびにリソースの予想される将来の使用に基づくことができる。ネットワークコンピューティング環境100は、管理構成要素102と、ネットワーク110を介して通信状態にある任意の数の物理的ホストコンピューティングデバイス104a〜104nとを含むことができる。1つ以上の顧客122が、ネットワーク120を介して、ネットワークコンピューティング環境100の構成要素と通信してもよい。
【0013】
図1に図示されるようなネットワークコンピューティング環境100は、複数のホストコンピューティングデバイス104a〜104nがコンピューティングサービスおよびリソースを内部または外部の顧客122に提供する、データセンターおよび他の環境に実装されてもよい。以下に詳細を説明するように、各顧客122は、コンピューティング処理を開始するために、ネットワークコンピューティング環境100内部の管理構成要素102または何らかの他の構成要素に接続してもよい。コンピューティング処理の開始は、ホストコンピューティングデバイス104上での仮想マシンインスタンスのインスタンス化、または動作環境および1つ以上のソフトウェアアプリケーションの構成を含んでもよい。仮想マシンインスタンスは、ユーザーの代わりに、ホストコンピューティングデバイス104、ネットワーク110等のコンピューティングリソースを消費することを実行してもよい。本開示は、例示のみを目的として、仮想マシンの使用を通じて外部または内部の顧客122にコンピューティングサービスを提供するネットワークコンピューティング環境100の運用を中心とするが、本明細書に記載されるシステムおよび処理は、別の顧客122エンティティを全く含まないまたは仮想マシン使用を全く含まないものも含めて、ネットワークコンピューティング環境100の任意の実装に適用されてもよい。
【0014】
各ホストコンピューティングデバイス104は、ブレードサーバーのようなサーバーコンピュータであってもよい。任意選択的に、ホストコンピューティングデバイス104は、複数の仮想マシンインスタンスのような複数の消費者にコンピューティングサービスおよびリソースを同時に提供するように構成されるミッドレンジコンピューティングデバイス、メインフレームコンピュータ、または任意の他のコンピューティングデバイスであってもよい。典型的な実装において、ホストコンピューティングデバイス104は、ネットワーク110を介して、ネットワークコンピューティング環境100の他のホストコンピューティングデバイス104、管理構成要素102、または何らかの他の構成要素と通信するように構成することができる。
【0015】
ネットワーク110は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、何らかの他のネットワーク、またはこれらの組み合わせであってもよい。加えて、ネットワークコンピューティング環境100は、企業または大学のネットワークのような別のネットワーク120、またはインターネットのような独立したエンティティによって運用されるネットワークの集合に接続してもよい。ネットワークコンピューティング環境100の顧客122は、ネットワーク120、110の組み合わせ上から、ホストコンピューティングデバイス104と通信してもよい。いくつかの実施形態において、顧客122は、コンピューティングデバイス102に仮想マシンインスタンスを起動させて、顧客122のためにまたは代わりに多様なコンピューティング演算を実行させてもよい。所与の時点で、単一のホストコンピューティングデバイス104上で任意の数の仮想マシンインスタンスが実行していてもよい。加えて、ホストコンピューティングデバイス104上で実行している多様な仮想マシンインスタンスは、単一の顧客122と、またはいくつかの異なる顧客122と関連付けられてもよい。
【0016】
管理構成要素102は、ハードウェアとして、またはハードウェアおよびソフトウェアの組み合わせとして実装されてもよい。例えば、管理構成要素102は、本明細書に記載される機能を実施するために、1つ以上のソフトウェアプログラムを実行するように構成された1つ以上のコンピューティングデバイスのコンピューティングシステムであってもよい。いくつかの実施形態において、管理構成要素は、ホストコンピューティングデバイス104a〜104nのうちの1つ以上を含んでもよい。
【0017】
図2は、サンプルの管理構成要素102を詳細に図示する。管理構成要素102は、プロファイル判定モジュール202と、配置モジュール204と、移行モジュール206と、運用メトリクスデータストア208と、プロファイルデータストア210とを含むことができる。いくつかの実施形態において、管理構成要素102は、
図2に図示されるよりも多いまたはより少ないモジュールおよびデータストアを含んでもよい。例えば、移行機能が実装されない場合、または配置モジュール204によって実装される場合、別の移行モジュール206が存在しない場合がある。別の例示的実施形態において、一般化された顧客プロファイルのために追加のデータストアが存在してもよい。
【0018】
運用中、プロファイル判定モジュール202は、特定の顧客122と関連付けられる全ての仮想マシンインスタンスのうち、特定の時点での特定の仮想マシンインスタンス構成のインスタンス等によって、運用メトリクスおよびリソース使用に関する運用データを取得することができる。プロファイル判定モジュール202は、運用データを解析し、プロファイルされている仮想マシンインスタンスまたは仮想マシンインスタンス群によって利用されるコンピューティングリソースの運用プロファイルを開発することができる。例えば、運用データは、利用されたメモリ
量、中央処理装置(CPU)利用、送信または受信されたネットワークトラフィック量、利用されたハードディスク容量、ディスク操作の数、利用された電気の量(例えば、仮想マシンインスタンスに貢献することができるホストコンピューティングデバイス104によって利用された量)、開始されたネットワークリンクトラフィックの量等
に関する履歴測定値を含んでもよい。プロファイル判定モジュール202は次いで、特定の仮想マシンインスタンス構成または仮想マシンインスタンス構成群のインスタンスと関連付けられる測定値のそれぞれの平均を判定し、平均を運用プロファイルに記憶することができる。運用プロファイルは、平均測定値に制限される必要はない。例えば、運用プロファイルは、中間値、標準偏差、使用ヒストグラム、あるいは任意の他の適切または有用なデータ等、他の統計解析を含むことができる。いくつかの実施形態において、運用プロファイルは更に、時刻、日等のような、使用の時間的な特徴に従って特徴付けられてもよい。
【0019】
運用プロファイルはまた、予想測定値および予想運用メトリクスに従って特徴付けられてもよい。例えば、一般にジッターと呼ばれる、予想性能メトリクスからの分散が観察され、運用プロファイルに含まれる場合がある。このようなデータは、設計の目標、サービスレベル合意および顧客に対する他の約束または義務が満たされているかを判定するために、またはどの程度の頻度で満たされないかを判定するために使用されてもよい。配置モジュール204は、将来の配置の判定を行う際にジッターを考慮することができ、同じ運用メトリクスが予想範囲外にならないことを保証するように務める、そうでなければ消費者義務が満足されることを保証する。いくつかの実施形態において、運用プロファイルは、レイテンシの優先または要件、命令セットの優先または要件等、他のデータを含んでもよい。このようなデータは、消費者によって提供されてもよく、またはプロファイル判定モジュール202によって仮想マシンインスタンス運用の解析を通じて判定されてもよい。
【0020】
図示されるように、サービスプロバイダは、小型、中型、および大型の3つのクラスの仮想マシンを提供してもよい。各クラスは、仮想マシンのインスタンスによって使用するために予約される、各コンピューティングリソースの既定量と関連付けられてもよい(例えば、小型のVMは2GBのRAMを有してもよく、中型のVMは8GBのRAMを有してもよく、大型のVMは32GBのRAMを有してもよい)。顧客は、ウェブサーバーソフトウェアで構成された大型の仮想マシンのように、オペレーティングシステムおよびアプリケーションソフトウェアで構成された仮想マシンのインスタンスをインスタンス化してもよい。ウェブサーバーソフトウェアで構成された大型の仮想マシンのインスタンスによって、コンピューティングリソースの使用に関する測定値が記録されてもよい。プロファイル判定モジュール202は次いで、例えば、ウェブサーバーとして使用される場合、仮想マシンインスタンス構成の将来のインスタンスに対する予想リソース使用量を計算することができる。予想リソース使用量は、プロファイル判定モジュール202によって判定された運用プロファイルの根拠を形成してもよい。プロファイル判定モジュール202は次いで、実際のリソース使用の測定値を含むデータセットが経時的に構築されるにつれて、運用プロファイルを変更してもよい。
【0021】
プロファイル判定モジュール202によって使用されるプロファイルデータは、多様なソースから取得されてもよい。上記のように、データは、仮想マシンと関連付けられるエンティティから取得されてもよい。データはまた、仮想マシンインスタンスが稼動しているホストコンピューティングデバイス104の作業負荷解析構成要素から直接取得されてもよい。いくつかの実施形態において、データは、運用メトリクスデータストア208から取得することができる。運用メトリクスデータストア208は、
図2に図示されるように、管理構成要素102と統合されてもよく、または専用のリレーショナルデータベース管理システム(RDBMS)サーバーのような別のコンピューティングデバイス上に物理的に位置してもよい。プロファイル判定モジュール202によって判定される運用プロファイルは、プロファイルデータストア210に記憶されてもよい。運用メトリクスデータストア208に類似して、プロファイルデータストア210は、管理構成要素102と統合されてもよく、または専用RDBMSサーバーのように別のコンピューティングデバイス上に位置してもよい。
【0022】
いくつかのネットワークコンピューティング環境100において、プロファイルする何千以上もの仮想マシンインスタンスが存在する場合があり、それぞれの運用プロファイルは、例えば、特定の仮想マシンインスタンス構成または特定の顧客の使用に対して固有な使用データの解析に基づく場合がある。ホストコンピューティングデバイス104a〜104n上の仮想マシンインスタンスのインスタンス化に関する配置判定を行うために運用プロファイルを効率的に利用するために、運用プロファイルは一般化されてもよい。したがって、いくつかの異なる仮想マシンインスタンス構成は、各仮想マシンインスタンス構成と関連付けられる実際のリソース使用において分散が存在する場合であっても、同じ、または実質的に類似の運用プロファイルと関連付けられてもよい。例えば、プロファイル判定モジュール202は、各仮想マシンインスタンス構成に対してカスタマイズされた運用プロファイルを記憶するのではなく、仮想マシンインスタンス構成を既定の予想使用量と関連付けてもよい。既定の運用プロファイルは、測定されるそれぞれのコンピューティングリソースに対する利用範囲を含んでもよい。加えて、運用プロファイルは、特定の仮想マシンインスタンス構成が特定の運用プロファイルと、複数の仮想マシンインスタンス構成とそれ自体が関連付けられるより一般的な運用プロファイルとも関連付けられるように階層的であってもよい。
【0023】
いくつかの実施形態において、運用プロファイルは、カテゴリに更に一般化されてもよい。例えば、それぞれが異なるネットワーク使用量と関連付けられる、いくつかの仮想マシンインスタンス構成は、使用測定値が何らかの閾値を上回るか、または下回るかに応じて、「軽量ネットワークアプリケーション」または「重量ネットワークアプリケーション」として分類されてもよい。このような分類スキームにおいて、インスタンス化されると、主にローカルのコンピューティング演算を実施し、ネットワーク接続をまれに利用する仮想マシンインスタンス構成は、ネットワーク接続をしばしば利用するが、仮想マシンインスタンスが稼動するホストコンピューティングデバイス104a〜104nに利用可能であるネットワーク帯域幅の量と比較するとわずかな場合がある非常に少ない伝送のためだけである、仮想マシンインスタンス構成と同じ「軽量ネットワークアプリケーション」カテゴリに分類されてもよい。このような一般化された運用プロファイルもまた、「軽量ネットワークアプリケーション/重量CPUアプリケーション」および「軽量ネットワークアプリケーション/軽量CPUアプリケーション」等、2つ以上のカテゴリの複合に基づいてもよい。前例に戻ると、2つの仮想マシンインスタンス構成は、異なるカテゴリと関連付けられてもよい。インスタンス化されると、主にローカルのコンピューティング演算を実施し、ネットワーク接続をまれに利用する仮想マシンインスタンス構成は、「軽量ネットワークアプリケーション/重量CPUアプリケーション」と分類されてもよく、一方、インスタンス化されると、少量のネットワーク伝送をしばしば開始する仮想マシンインスタンス構成は、仮想マシンインスタンスのCPU利用が閾値を下回る場合、「軽量ネットワークアプリケーション/軽量CPUアプリケーション」と分類されてもよい。
【0024】
上記のように、運用プロファイルは、1つの仮想マシンインスタンス構成に特異的またはいくつかの仮想マシンインスタンス構成に一般化されているかどうかに関わらず、仮想マシンインスタンスを配置するホストコンピューティングデバイス104a〜104nを識別するために使用されてもよい。配置モジュール204は、顧客122がコンピューティングセッションを開始するとき、または仮想マシンがその他インスタンス化されるときに起動されてもよい。配置モジュール204は、現時点でどの運用プロファイルが仮想マシンインスタンスと関連付けられるかを判定してもよい。例えば、運用プロファイルは、現在の月間の現在の時刻の仮想マシンインスタンスと関連付けられる実際のリソース使用の測定値等を含む、カスタマイズされたプロファイルであってもよい。いくつかの場合において、測定値は、特定の顧客に特異的であってもよく、特定の顧客の運用プロファイルが作成され、アクセスされてもよい。顧客特異的な運用プロファイルは、特異的な仮想マシンインスタンス構成に適用することができるか、または複数の個別の仮想マシンインスタンス構成に一般的に適用してもよい。任意選択的に、運用プロファイルは、仮想マシンインスタンスと関連付けられるリソース使用の全体的な特徴に基づいて一般化されたプロファイルであってもよく、現在の時刻等にも基づいてもよい。仮想マシン配置モジュール204は次いで、ホストコンピューティングデバイス104a〜104nのリソース可用性、および運用プロファイルから判定された仮想マシンインスタンスの予想されるリソース使用に基づいて仮想マシンインスタンスを起動するホストコンピューティングデバイス104を選択することができる。
【0025】
リソース利用は、特異的な仮想マシンインスタンス構成の単一のインスタンスの寿命にわたって、および特異的な仮想マシンインスタンス構成の複数のインスタンスにわたって動的であってもよい。管理構成要素102の移行モジュール206は、各稼動中の仮想マシンインスタンスおよび仮想マシンインスタンスが稼動しているホストコンピューティングデバイス104のリソース利用を監視してもよい。リソース利用が変化すると、移行モジュール206は、上記の仮想マシン配置モジュール204に類似して、仮想マシンインスタンスを配置する適切なホストコンピューティングデバイス104を選択してもよい。仮想マシンの新しいインスタンスが選択されたホストコンピューティングデバイス104上で起動されてもよく、仮想マシンインスタンスの稼動状態(メモリ、入力等)が新しい仮想マシンインスタンスにコピーされてもよい。新しい仮想マシンインスタンスが稼動を開始する準備が整うと、前の仮想マシンインスタンスは、データの損失なく、かつ性能の実質的な低下なく、終了されてもよい。新しい仮想マシンインスタンスは、利用可能なリソースのために、より効率的に稼動することができる。
【0026】
いくつかの実施形態において、異なるホストコンピューティングデバイス上で仮想マシンの新しいインスタンスをインスタンス化し、前のインスタンスを終了するのではなく、リソースが再割り当てされてもよい。リソース利用または性能メトリクスが変化すると、追加のリソース(例えば、メモリ)が特定の仮想マシンに割り当てられてもよい。例えば、リソースは、そのリソースを完全に利用することが予想されない他の仮想マシンから再割り当てされてもよい。
【0027】
ここで
図3を参照して、仮想マシンインスタンス構成のために運用プロファイルを判定するための例示的プロセス300を説明する。プロセス300は、管理構成要素102によって実行されてもよい。管理構成要素102は、顧客122からリクエストを受信してもよく、そうでなければ仮想マシンをインスタンス化するように通知されてもよい。仮想マシンインスタンスをインスタンス化した後、インスタンス化された仮想マシンインスタンスを特定した後、または仮想マシンをインスタンス化させた後、管理構成要素102は、仮想マシンインスタンスと関連付けられるコンピューティングリソース利用に関する運用データを監視してもよく、そうでなければ受信してもよい。リソース使用および運用メトリクスデータに基づいて、管理構成要素102は、仮想マシンインスタンス構成の運用プロファイルを判定または更新、あるいは既存の運用プロファイルを更新することができる。有利に、運用プロファイルが他の運用プロファイルと比較され、一般化されてもよく、仮想マシンインスタンス構成がリソース使用のカテゴリと関連付けられてもよい。
【0028】
プロセス300は、ブロック302で開始する。プロセス300は、仮想マシンをインスタンス化するリクエストの受信に応答する等、自動的に開始してもよい。例えば、プロセス300は、1組の実行可能プログラム命令において具現化され、管理構成要素102が関連付けられるコンピューティングシステムのコンピュータ可読媒体ドライブ上に記憶されてもよい。プロセス300が開始すると、実行可能プログラム命令は、RAM等のメモリにロードされ、コンピューティングシステムの1つ以上のプロセッサによって実行され得る。いくつかの実施形態において、コンピューティングシステムは、サーバーのようなコンピューティングデバイスを複数含んでもよく、プロセス300は、複数のサーバーによって、逐次または同時に実行されてもよい。
【0029】
ブロック304で、管理構成要素102または何らかの他の構成要素が、仮想マシンインスタンスを起動する。
図5を参照して以下に詳細を説明するように、管理構成要素は、仮想マシンインスタンスによって消費されることが予想されるリソース、およびホストコンピューティングデバイス104a〜104nが現在利用可能にしているリソースに基づいて、仮想マシンインスタンスを起動するホストコンピューティングデバイス104を選択してもよい。仮想マシンインスタンスによって消費されることが予想される、または仮想マシンインスタンスに利用可能になるリソースは、予め存在する運用プロファイルから、顧客122または仮想マシンインスタンスを起動することをリクエストする他のエンティティから受信された情報等から、判定されてもよい。
【0030】
プロセス300は、ブロック306に進むことができ、新しく起動された仮想マシンインスタンスについて、運用メトリクスを取得し、運用プロファイルを作成または変更する。プロセス300が進む間、本来存在したのと同じ運用プロファイル、または以前に起動された仮想マシンインスタンスのためにプロセス300の実行中に変更された運用プロファイルに基づいて、ブロック304で、任意の数の追加の仮想マシンインスタンスが起動および/または配置されてもよい。このように、プロセス300は、一般に、特定の時点で実行されている可能性がある運用プロファイル(またはプロファイルの階層において、その階層のより上位のレベルからのプロファイル)と関連付けられる仮想マシンインスタンスの数に対応する、任意の数の同時インスタンスにおいて実行されてもよい。
【0031】
ブロック306で、仮想マシンインスタンスによって利用されるリソースが監視されてもよく、リソース使用測定値および他の運用メトリクスが取得されてもよい。ブロック308で、運用メトリクスが記録されてもよい。監視は、管理構成要素102によって、または仮想マシンインスタンスが稼動しているホストコンピューティングデバイス104の作業負荷解析構成要素421等、何らかの他の構成要素によって実行されてもよい。運用メトリクスは、運用メトリクスデータストア208に記憶されてもよい。作業負荷解析構成要素421を使用する実施形態において、作業負荷解析構成要素421は、運用メトリクスを一時的または長期的に記憶してもよい。作業負荷解析構成要素は、実質的に実時間に、予定された間隔で、仮想マシンの終了時に、何らかの他の時点で記憶するために運用メトリクスに関するデータを管理構成要素102へ伝送してもよく、または全く伝送しなくてもよい。
【0032】
図4は、ホストコンピューティングデバイス104によって複数の仮想マシンインスタンスに提供されるいくつかのリソースの利用の測定値を図示する。
図4に図示されるように、ホストコンピューティングデバイス104は、メモリ402、CPU404、およびネットワーク帯域幅406等のコンピューティングリソースを提供することができる。いくつかの実施形態において、追加の、またはこれより少ないコンピューティングリソースが仮想マシンインスタンスに提供されてもよい。例えば、仮想マシンインスタンスは、他のデバイスと通信することが許可されない場合があり、従って、ネットワークインターフェース406の利用を測定する必要がない。別の例において、ホストコンピューティングデバイス104は、ハードディスクの空き容量、ハードディスクの運用、電力等の利用を提供し、追跡する。
【0033】
いくつかの実施形態において、ネットワークコンピューティング環境100の運用者等、コンピューティングリソースのプロバイダは、仮想マシンインスタンスを実行する一定量のコンピューティングリソースを顧客に提供する。例えば、顧客122は、その仮想マシンインスタンス構成のうちの1つのために、ランダムアクセスメモリ(RAM)等のメモリの既定量、CPUコア等のコンピューティング能力の既定量、およびネットワークインターフェースによって提供されるネットワーク帯域幅の既定量を予約する場合がある。ホストコンピューティングデバイス104のメモリ402は、単一の仮想マシンインスタンスのために(例えば、部分412、414)、またはホストコンピューティングデバイス104の運用および他の内部手順のために(例えば、部分410)に予約される部分410、412、414に隔離されてもよい。ホストコンピューティングデバイス104の運用のために予約される部分は、仮想マシンインスタンス、オペレーティングシステム、ドライバ等の起動、実行、および終了を支援するためのハイパーバイザを含むことができる。加えて、ホストコンピューティングデバイス104は、リソース利用および任意選択的に管理構成要素102との通信を監視する作業負荷解析構成要素421を含むことができる。作業負荷解析構成要素421もまたメモリ空間410に所在してもよく、ハイパーバイザ420に統合されてもよく、メモリ空間410を共有する独立構成要素であってもよい。いくつかの実施形態において、作業負荷解析構成要素421は、顧客の仮想マシンインスタンスに予約されたメモリ空間412、414に所在してもよい。このような場合、作業負荷解析構成要素421は、仮想マシンインスタンス構成に統合されても、またはインスタンス化時に仮想マシンインスタンスに含まれてもよい。更なる実施形態において、作業負荷解析構成要素421は、そのために予約された別のメモリ空間に所在してもよく、ホストコンピューティングデバイス104のメモリ402を共有しない、独立したハードウェアデバイスのような構成要素として実装されてもよい。
【0034】
多くの場合、仮想マシンインスタンスは、そのために予約されたリソースの全体部分を利用しない可能性がある。例えば、
図4に図示されるVM1 422は、顧客122の仮想マシンインスタンスであってもよく、その全体がVM1 422による使用のために予約されたメモリ空間412に起動されてもよい。運用中、VM1 422は、メモリ空間412全体を利用しない可能性があり、いくつかの場合、予約されたメモリ空間412のほんの一部を利用する可能性がある。しかしながら、時には、メモリ空間412の利用が変化する可能性があり、VM1 422は、メモリ空間412の実質的に全てを利用する可能性がある。作業負荷解析構成要素421は、これらの変化を監視し、測定値および時刻、特異的な仮想マシンインスタンス構成、または存在する場合、ホストコンピューティングデバイス104上で稼動している他の仮想マシンインスタンス等の他のデータを記録することができる。作業負荷解析構成要素421は、データを管理構成要素102またはデータストアへ伝送することができる。いくつかの実施形態において、作業負荷解析構成要素421は、データを一時的に記憶し、その後、スケジュールに従って、またはVM1 422の終了等のトリガーイベントに応答して等、それを管理構成要素102へ転送することができる。メモリ402の利用に関するデータの測定および記録に類似して、作業負荷解析構成要素421または何らかの他の構成要素は、CPU404、ネットワークインターフェース406、またはVM1 422によって利用される任意の他のコンピューティングリソースの使用を監視することができる。
【0035】
予想または好ましい運用メトリクスからの任意の分散に関するデータが取得され、記録されてもよい。例えば、予想または好ましいメトリクスからの分散が存在するかどうかを判定するために、リソース使用測定値および他の運用メトリクスが記録され、運用プロファイルと比較されてもよい。いくつかの場合、運用メトリクスは顧客別に記録されてもよい。将来の配置または移行の判定を分散に基づいて行うことができるように、分散に関するデータが記録されてもよい。加えて、レイテンシ、リンクトラフィック等のホスト以外のリソースに関するデータが記録されてもよい。作業負荷解析構成要素421がこのようなデータを記録してもよく、またはホストの外部の何らかの構成要素(例えば、管理構成要素102またはスイッチ)が運用メトリクスを観察してもよい。いくつかの実施形態において、リソースの可用性を必ずしも削減しないリソース使用が判定されてもよい。例えば、その上で稼動している仮想マシンインスタンスまたはアプリケーションソフトウェアが、所定の暗号演算を実行する場合、あるいは所定の暗号機能または命令を呼び出していることが観察される場合、そのようなデータが記録されてもよい。配置モジュール204または移行モジュール206は、仮想マシンのインスタンスを起動または移行する際にこのようなデータを考慮することができる。Intel(登録商標)Advanced Encryption Standard (AES) New Instructions(AES−NI)をサポートするデバイスまたは類似のデバイス等、より効率的またはより強力な暗号命令を提供するホストコンピューティングデバイスが選択されてもよい。
【0036】
ブロック310で、プロファイル判定モジュール202または管理構成要素102の何らかの他のモジュールは、仮想マシンインスタンスと関連付けられる運用プロファイルを変更するか、または新しい運用プロファイルを作成することができる。前述のように、運用プロファイルは、典型的または予想されるリソース使用、予想または所望される運用メトリクスからの分散等の情報を含むことができる。例えば、運用プロファイルは、単一の仮想マシンインスタンス構成のいくつかの異なるインスタンスのそれぞれの平均測定値からなる場合がある。各リソースは、特定の顧客、時刻、日、または他の環境因子に基づいて運用することに対応する複数の測定値と関連付けられてもよい。
【0037】
いくつかの実施形態において、運用プロファイルの各リソースは、1つの統計測定値ではなく、利用のスコアまたは何らかの他の指標と関連付けられてもよい。例えば、各リソースには1〜10のスコアが割り当てられる場合があり、より大きい数字は、リソースの最重量および/または最も頻繁なユーザーと関連付けられる。いくつかの実施形態において、運用プロファイルは、更に一般化されてもよい。既定の1組の一般化された運用プロファイルは、各リソースの測定値またはスコアの範囲を網羅してもよい。例えば、VM1 422がインスタンス化された仮想マシンインスタンス構成は、夜間、VM1 422がそのメモリ空間412の25%以下を利用するが、そのCPU可用性のほぼ100%を利用する場合、1つの一般化された運用プロファイルに割り当てられる場合がある。一般化された運用プロファイルは、時刻または他の因子に応じて、各リソースの測定値の複数の範囲を含むことができる。前の例に戻ると、VM1 422がインスタンス化された仮想マシンインスタンス構成は、仮想マシンインスタンスが、夜間は前述の様式でリソースを典型的に利用するが、日中はそのメモリセグメント412およびCPU可用性の50%を利用する場合は、代わりに異なる既定の運用プロファイルに割り当てられてもよい。複数の一般化された運用プロファイルは、特定の顧客による使用に基づいて、特定の仮想マシンインスタンス構成に割り当てられてもよい。例えば、仮想マシンインスタンス構成を使用する各顧客は、異なる運用プロファイルと関連付けられてもよい。
【0038】
いくつかの実施形態において、各顧客122は、いくつかの異なる仮想マシンインスタンス構成を有する場合であっても、各仮想マシンインスタンス構成がリソースを異なって利用する可能性がある場合であっても、1つの一般化された運用プロファイルと関連付けられてもよい。顧客122は、
図4のVM1 422がインスタンス化される構成等、1つの仮想マシンインスタンス構成を有してもよく、軽量CPUアプリケーションとして独立的にプロファイルされてもよく、一方、VM2 424がインスタンス化される構成等、別の仮想マシンインスタンス構成は、重量CPUアプリケーションとして独立的にプロファイルされてもよい。顧客122は、その平均CPU使用が中程度であるため、中程度のCPUユーザーとしてプロファイルされてもよい。任意選択的に、顧客122は、重量CPUアプリケーションである少なくとも1つの仮想マシンインスタンス構成を有するため、重量CPUユーザーとしてプロファイルされてもよい。他の実施形態において、顧客は、各仮想マシンイメージ構成のためのいくつかの関連運用プロファイルを有することができる。VM1 422等、実質的に同じ仮想マシンイメージの異なる顧客またはユーザーは、仮想マシンイメージが共通の構成であっても、異なる量のリソースを使用する可能性がある。特定のVMを起動する所与の顧客は、以前に記録されたのと同じ方式でそのVMを使用する可能性がより高くなり、ほぼ同じリソースを消費する可能性がある。
【0039】
各仮想マシンインスタンス構成の運用プロファイルは、プロファイルデータストア210に記憶されてもよい。各プロファイルの実際の測定値が運用プロファイルに記憶されてもよく、あるいは、仮想マシンインスタンス構成が関連付けられるカテゴリまたは一般化された運用プロファイルのIDまたは指標が記憶されてもよい。仮想マシンプロファイルの代わりに、またはそれに加えて顧客プロファイルを判定かつ利用する実施形態において、顧客プロファイルデータは、同じデータストア210または異なるデータストアに記憶されてもよい。
【0040】
ブロック312で、関係する運用プロファイルまたは一般化された運用プロファイルを作成または変更することができる。例えば、階層プロファイルが使用される場合、より上位のレベルのプロファイルを作成または変更してもよい。履歴運用メトリクスは、いくつかの場合、仮想マシンインスタンス構成がどの下位レベルのプロファイルに関連付けられるかに関わらず、より上位レベルの運用プロファイルと関連付けられる各仮想マシンインスタンス構成の運用メトリクスデータストア208からアクセスされてもよい。統計解析が実行されてもよく、前述のように運用メトリクス分散が判定されてもよい。有利に、変更された上位レベルの運用プロファイルまたは一般化された運用プロファイルは、プロセス300の現在の実行と関連付けられる仮想マシンインスタンスとは異なる仮想マシンインスタンスをインスタンス化または移行するとき、配置モジュール204または移行モジュール206によってアクセスされ、使用されてもよい。したがって、1つの仮想マシンインスタンスと関連付けられる記録された運用メトリクスは、同じ仮想マシンインスタンス構成からインスタンス化されていない場合であっても、他の仮想マシンインスタンスの配置および実行を微調整するために使用されてもよい。
【0041】
ここで
図5を参照して、運用プロファイルに基づいて仮想マシンインスタンスの配置を判定するための例示的プロセス500を説明する。プロセス500は、管理構成要素102によって実行されてもよい。管理構成要素102は、顧客122からリクエストを受信してもよく、そうでなければ特定の仮想マシンインスタンス構成またはイメージから、仮想マシンのインスタンスを起動するように通知されてもよい。管理構成要素102は、仮想マシンインスタンスをホストし、利用可能なコンピューティングリソースに関して、ホストコンピューティングデバイス104a〜104nの現在のステータスを判定することが可能である、ホストコンピューティングデバイス104a〜104nを識別することができる。有利に、管理構成要素102はまた、インスタンス化される仮想マシンインスタンス構成の運用プロファイルを取得し、利用可能なリソースの観点から、利用可能なホストコンピューティングデバイス104a〜104nのうちどれが最も効果的に仮想マシンをホストすることができるかを判定することができる。既に仮想マシンを実行していて、かつ既に実行している仮想マシンをホストするために、そのリソースのほとんどまたは全てをコミットしている、ホストコンピューティングデバイス104が選択されてもよい。現在実行している仮想マシンインスタンスおよび起動される仮想マシンインスタンスの運用プロファイルに基づいて、管理構成要素102は、ホストコンピューティングデバイス104が、仮想マシンインスタンスが消費する可能性が高いコンピューティングリソースを提供することができると管理構成要素102が判定した場合、ホストコンピューティングデバイス104上で仮想マシンインスタンスを起動してもよい。いくつかの場合、これは、リソースをオーバーサブスクリプションすることを含む(例えば、同じリソースを複数の仮想マシンインスタンスに割り当てる)。その上、管理構成要素102は、ホストコンピューティングデバイス104上の仮想マシンインスタンスの実行を監視し、各仮想マシンインスタンスを満足させる十分なコンピューティングリソースが存在しない場合、1つ以上の仮想マシンインスタンスの実行を別のホストコンピューティングデバイス104へ転送することができる。
【0042】
プロセス500は、ブロック502で開始する。プロセス500は、仮想マシンインスタンスを起動するリクエストの受信に応答する等、自動的に開始してもよい。例えば、プロセス500は、1組の実行可能プログラム命令において具現化され、管理構成要素102が関連付けられるコンピューティングシステムの非一時的コンピュータ可読媒体ドライブ上に記憶されてもよい。プロセス500が開始すると、実行可能プログラム命令は、RAM等のメモリにロードされ、コンピューティングシステムの1つ以上のプロセッサによって実行され得る。いくつかの実施形態において、コンピューティングシステムは、サーバーのようなコンピューティングデバイスを複数含んでもよく、プロセス500は、複数のサーバーによって、逐次または同時に実行されてもよい。
【0043】
ブロック504で、管理構成要素102は、仮想マシンインスタンスを初期化するためのリクエスト、そうでなければ何らかの他の通知を受信することができる。通知は、顧客122、ホストコンピューティングデバイス104、あるいは何らかの他の構成要素またはエンティティから受信されてもよい。いくつかの実施形態において、仮想マシンインスタンスは、別の仮想マシンインスタンス、同じ仮想マシンインスタンス構成またはイメージの別のインスタンス等の初期化をリクエストしてもよい。
【0044】
ブロック506で、管理構成要素102のVM配置モジュール204または何らかの他のモジュールは、起動される仮想マシンインスタンスの運用プロファイルを取得することができる。運用プロファイルは、プロファイルデータストア210からロード、または何らかの他の情報源から取得されてもよい。VM配置モジュール204は、仮想マシンインスタンスが利用する可能性が高いリソース、およびその数量を判定するために、運用プロファイルを確認することができる。前述のように、仮想マシンインスタンス構成の運用プロファイルは、時刻等の環境因子に応じて異なっていてもよい。このような場合、管理構成要素102のVM配置モジュール204は、運用プロファイルを確認する際にこのような環境因子を考慮することができる。
【0045】
ブロック508で、管理構成要素102のVM配置モジュール204または何らかの他のモジュールは、利用可能なリソースおよび運用プロファイルに基づいて、仮想マシンインスタンスを起動するホストコンピューティングデバイス104を選択することができる。例えば、ネットワークコンピューティング環境100は、いくつかのホストコンピューティングデバイス104a〜104nを含む場合がある。ホストコンピューティングデバイス104a〜104nは同一である必要はなく、いくつかは他よりも多いまたは少ないRAM、より性能が高いまたは低いプロセッサ、あるいは異なる数のプロセッサ等を有することができる。VM配置モジュール204は、運用プロファイルおよび各コンピューティングデバイスで利用可能になるリソースによって識別される予想リソース利用に基づいて、仮想マシンインスタンスを起動するホストコンピューティングデバイス104を選択することができる。
【0046】
いくつかの実施形態において、ホストコンピューティングデバイス104は、特定の仮想マシン、または特定のクラスの仮想マシンの一定数のインスタンスをホストするように構成されてもよい。
図4に示されるように、ホストコンピューティングデバイス104はある量のメモリ402を有することができるので、ハイパーバイザ420のために既定のメモリ空間410、および仮想マシンのために規定サイズの2つの追加のメモリ空間412、414を予約することができる。2つの仮想マシンインスタンス422、424は、ホストコンピューティングデバイス104上で起動されてもよく、それぞれの仮想マシンインスタンス422、424が別のメモリ空間412、414に割り当てられる。顧客122は、構成する特定のクラスの仮想マシン(例えば、前述のように小型、中型、または大型)を選択することによって等、その仮想マシンインスタンス422、424に利用可能になる特定量のリソースを予約することができる。メモリ空間412、414は、顧客122によって予約されるように、仮想マシンインスタンス422、424に利用可能である最大許容量のリソースに対応してもよい。しかしながら、実際には、仮想マシンインスタンス422、424は、それらのために予約されるコンピューティングリソースの全体量を利用しない場合がある。例えば、
図4に見られるように、仮想マシンインスタンス422、424は、それらのために予約されたメモリ空間412、414の一部しか利用していない。現在実行している仮想マシンインスタンス全てをサービスするため、または運用しているホストコンピューティングデバイス104a〜104nのリソースをより効率的に利用するために必要なホストコンピューティングデバイス104a〜104nの数を削減するために、このような過剰のメモリ空間および他の過剰なコンピューティングリソースを利用することは利点であり得る。
【0047】
図6は、オーバーサブスクリプションされたコンピューティングリソースを含むホストコンピューティングデバイス104を図示する。第3の仮想マシンインスタンス426は、ホストコンピューティングデバイス104が仮想マシンインスタンスのために利用可能な2つのメモリ空間412、414しか含まないにもかかわらず、ホストコンピューティングデバイス104上で起動されている。仮想マシンインスタンス422、424、426のそれぞれと関連付けられる運用プロファイルに基づいて、VM配置モジュール204は、VM2 422が利用可能なメモリ空間414の一部しか利用せず、VM3 426もまた、起動されるときにその利用可能なメモリ空間の一部しか使用しないことを判定することができる。したがって、VM配置モジュール204は、VM2 424と同じコンピューティングデバイス上でVM3 426を起動し、それらを同じメモリ空間414に割り当てることができる。
【0048】
図6に見られるように、VM1 422は、そのメモリ空間412の実質的に全てを利用し、したがって、VM配置モジュール204は、VM1 422の運用プロファイルのために、同じメモリ空間412に別の仮想マシンインスタンスを割り当てない場合がある。しかしながら、VM1 422は、少量のCPU容量442しか利用せず、したがって、VM1 422が稼動しているホストコンピューティングデバイス104は、仮想マシンインスタンスの運用プロファイルが補完的である場合、オーバーサブスクリプションの候補であり得る。
図6に図示される例において、VM2 424は、大量のCPU容量444を利用する。しかしながら、VM3 426の運用プロファイルが、それがCPU容量の軽量ユーザーであることを示す場合、3つの仮想マシンインスタンスVM1 422、VM2 424、およびVM3 426は、インスタンス化されている仮想マシンインスタンス構成のオーバーラップではなく、補完的運用プロファイルであるためにオーバーサブスクリプションの候補であり得る。ホストコンピューティングデバイス104上で稼動している各仮想マシンインスタンスが、典型的に要求する各コンピューティングリソース量に容易に利用可能になっていることを確実にするために、追加のリソースがオーバーサブスクリプションの判定に考慮されてもよい。例えば、ネットワーク帯域幅利用406もまた、
図6に図示されるように、VM3 426の運用プロファイルが、それが重量のネットワーク帯域幅アプリケーションであることを示す場合であっても、VM1 422およびVM2 424が少量のネットワーク帯域幅しか利用しないために、前述のオーバーサブスクリプションの判定例をサポートする。
【0049】
ブロック510で、管理構成要素102のVM配置モジュール204または何らかの他のモジュールは、ブロック508で識別されるホストコンピューティングデバイス104上に仮想マシンインスタンスを配置することができる。前述のように、仮想マシンインスタンスは、ホストコンピューティングデバイス104によって提供される量を合計または超過するコンピューティングリソースの予約量を有する他の仮想マシンインスタンスと共にホストコンピューティングデバイス104上に配置される場合がある。いくつかの事例において、オーバーサブスクリプションは相当量の場合がある。
【0050】
図7は、相当にオーバーサブスクリプションされたホストコンピューティングデバイス104を図示する。前述のように、顧客122は、顧客の仮想マシンインスタンスによって使用するために、指定量のコンピューティングリソースを予約することができる。しかしながら、いくつかの事例において、顧客122は、その仮想マシンインスタンスが実際に使用する可能性があるコンピューティングリソースの量をかなり過大に見積もった可能性がある。極端な事例では、顧客122は、大量のコンピューティングリソースを予約し、これらのリソースと関連付けられる仮想マシンインスタンスを起動してから、次いで、仮想マシンインスタンスを待機状態のままにするか、そうでなければ予約したリソースを実質的に十分に活用していない。時間の経過とともに、予約されたリソースが実質的に十分に活用されていないことを反映する運用プロファイルが、仮想マシンインスタンスのために、または顧客122のために開発される場合がある。管理構成要素102は次いで、単一のホストコンピューティングデバイス104上でこのような利用が低い仮想マシンインスタンスを大量に起動する可能性がある。
図7のホストコンピューティングデバイス104は、
図4および6を参照して上述したように、典型的に2つの仮想マシンインスタンスのためだけに予約される場合があるコンピューティングリソースを共有する7つの異なる仮想マシンインスタンス422、424、426、722、724、726、728を含む。しかしながら、3つのコンピューティングリソース402、404、406のそれぞれの過剰な容量がまだ存在する。いくつかの事例において、ホストコンピューティングデバイス104が大量の利用可能なコンピューティングリソースを有し、仮想マシンインスタンスが実質的に待機状態である等、何百以上もの仮想マシンインスタンスがホストコンピューティングデバイス104上に配置される場合がある。
【0051】
ブロック512で、各仮想マシンインスタンスのリソース利用が監視されてもよい。特異的な仮想マシンインスタンスの寿命の間、作業負荷解析構成要素421は、運用を監視し、仮想マシンインスタンスのうちの1つが、オーバーサブスクリプションされたホストコンピューティングデバイス104によってサービス可能ではないレベルでリソースを利用し始めた場合、またはリソース使用または運用メトリクスが何らかの理由で予想量または所望量と異なる場合、管理構成要素102に通知する。いくつかの実施形態において、管理構成要素102が監視を実行してもよい。
【0052】
ブロック514で、管理構成要素102は、リソース使用または運用メトリクスが予想量または所望量と異なるかどうかを判定することができる。例えば、管理構成要素は、リソース使用の変化が閾値を超えるか、またはその他所望されない性能低下を発生させる可能性があるかを判定することができる。仮想マシンインスタンスは、予想よりも多くのコンピューティングリソースを利用し始め、その運用プロファイルおよび管理構成要素102によって判定された配置に基づいて、より少ない範囲までオーバーサブスクリプションされているホストコンピューティングデバイス104、または全くオーバーサブスクリプションされていないホストコンピューティングデバイス104へ転送される場合がある。このような場合、プロセス500の実行はブロック508に戻ることができ、VM移行モジュール206または何らかの他の管理構成要素102が、仮想マシン842をどのコンピューティングデバイスへ転送するかを判定する。
【0053】
図8は、CPU容量404aをオーバーサブスクリプションしたホストコンピューティングデバイス104aを図示する。仮想マシンインスタンスVM4 842は、その運用プロファイルに反して、大量の利用可能なCPU容量404aの消費を開始してもよい。しかしながら、仮想マシンインスタンスVM4 842と関連付けられる顧客122は、VM4 842がインスタンス化されている仮想マシンインスタンス構成のために大量のCPU容量を予約していた可能性があり、したがって、オーバーサブスクリプションされたホストコンピューティングデバイス104aが提供できるよりも多くのCPU容量を仮想マシンインスタンスVM4 842に提供することが望ましい場合がある。
図8に示されるように、ホストコンピューティングデバイス104bは、このような転送の候補であってもよい。仮想マシンインスタンスVM8 844は現在、ホストコンピューティングデバイス104b上で利用可能なCPU容量404bのほんの一部しか消費しておらず、管理構成要素102は、VM8 844と関連付けられる運用プロファイルが、これ以上消費する可能性が低いことを示すと判定する場合がある。VM移行モジュール206は、ホストコンピューティングデバイス104aからホストコンピューティングデバイス104bへのVM4 842の転送を開始することができる。
【0054】
仮想マシンインスタンスの転送は、まず、ソースホストコンピューティングデバイス104a上の仮想マシンインスタンスが継続して実行している間に、同じ仮想マシンインスタンス構成またはイメージのインスタンスをターゲットホストコンピューティングデバイス104b上で起動することを含んでもよい。ソースホストコンピューティングデバイス104b上の仮想マシンインスタンスの実行状態は、仮想マシンインスタンスと関連付けられるメモリ空間またはハードディスク内のデータを含めて、仮想マシンインスタンスによって確立されたネットワーク接続等を次いで、ターゲットホストコンピューティングデバイス104bで複製することができる。ソースホストコンピューティングデバイス104a上の仮想マシンインスタンスは終了することができ、ターゲットホストコンピューティングデバイス104b上の仮想マシンインスタンスはその時点から実行を継続することができる。
【0055】
いくつかの実施形態において、ソフトウェア作業負荷(例えば、アプリケーションまたは記憶ノード)の初期配置または転送は、ソフトウェア作業負荷が必ずしもそれ自体仮想マシンインスタンスでなくても、ソフトウェア作業負荷の仮想マシンインスタンス使用または相互作用と関連付けられてもよい。例えば、ソフトウェア作業負荷は、データを使用する場合がある仮想マシンインスタンスの予測に応じて、データ記憶エージェントとして実装される記憶ノードからなる場合がある。このような場合、作業負荷(この場合、記憶ノード)の初期配置または転送は、その近辺に配置すること、仮想マシンインスタンスまたはそれを使用する予定のインスタンスによってよりアクセスしやすくすることに基づいてもよい。
【0056】
本開示の多様な実施形態は、以下の付記の観点で記載することができる。
付記1.コンピューティングリソース使用をプロファイルするためのシステムであって、
1つ以上のプロセッサと、
コンピュータ可読メモリと、
コンピュータ可読メモリに記憶される実行可能命令を含む管理モジュールであって、1つ以上のプロセッサによって実行されるとき、
第1のコンピューティングリソースの予想リソース使用量であって、1つ以上の類似の仮想マシンインスタンス構成のインスタンスによる、第1のコンピューティングリソースの使用量と関連付けられる複数の事前測定値に少なくとも部分的に基づく、予想使用量と関連する仮想マシンインスタンス構成の新しいインスタンスの初期化のためのリクエストを受信し、かつ
リクエストに応答して、
コンピューティングデバイス上の第1のコンピューティングリソースの利用可能量が予想量よりも大きいかどうかに少なくとも基づいて、複数のコンピューティングデバイスのうちのコンピューティングデバイスを識別し、かつ
少なくとも部分的に、新しいインスタンスをコンピューティングデバイス上で初期化させるように構成される、管理モジュールと、を備える、システム。
付記2. 第1のコンピューティングリソースの使用は、中央処理装置(CPU)利用、メモリ利用、ネットワーク利用、ハードディスク利用、または電力利用のうちの1つを含む、付記1に記載のシステム。
付記3. 管理モジュールが、実行されるとき、
第1のコンピューティングリソースの使用に関する複数の事前測定値を取得し、
複数の事前測定値に少なくとも部分的に基づいて、仮想マシンインスタンス構成の運用プロファイルであって、予想リソース使用量を含む運用プロファイルを判定するように更に構成される、付記1に記載のシステム。
付記4. 運用プロファイルが、コンピューティングデバイスの所望される運用特徴を更に含む、付記3に記載のシステム。
付記5. 所望される運用特徴が、メモリ容量、中央処理装置(CPU)容量、ネットワーク帯域幅、ネットワークレイテンシ、ネットワークトポロジー内の位置、命令セット、または性能メトリクスの分散に関する、付記4に記載のシステム。
付記6. コンピューティングデバイスを識別することが、コンピューティングデバイスと関連付けられる特徴が所望される特徴に対応することを判定することを含む、付記4に記載のシステム。
付記7. コンピューティングリソース使用をプロファイルするためのシステムであって、
1つ以上のプロセッサと、
コンピュータ可読メモリであって、1つ以上のプロセッサによって実行されるとき、
類似の仮想マシンの少なくとも1つのインスタンスを稼動することから判定される運用メトリクスに少なくとも部分的に基づいて、仮想マシンのインスタンスに対する運用制約を判定し、
仮想マシンをインスタンス化するためのリクエストを受信し、かつ
リクエストに応答して、
複数のホストコンピューティングデバイスのうち、仮想マシンインスタンスの運用に関係する1つ以上の運用特徴と関連付けられる1つのホストコンピューティングデバイスを、1つ以上の特徴が運用制約を満たすかどうかに部分的に基づいて、識別し、かつ
少なくとも部分的に、仮想マシンの新しいインスタンスを、ホストコンピューティングデバイス上にインスタンス化させるように、システムを構成する実行可能命令を含むコンピュータ可読メモリと、を備える、システム。
付記8. 運用メトリクスのうちの少なくとも1つが、中央処理装置(CPU)利用、メモリ利用、ネットワーク利用、ハードディスク利用、または電力利用に関係する、付記7に記載のシステム。
付記9. 1つ以上の特徴のうちの少なくとも1つが、メモリ容量、中央処理装置(CPU)容量、ネットワーク帯域幅、ネットワークレイテンシ、ネットワークトポロジー内の位置、命令セット、または性能メトリクスの分散を含む、付記7に記載のシステム。
付記10. 運用制約が、ホストコンピューティングデバイスによって提供されるコンピューティングリソースの予想使用量に関係する、付記7に記載のシステム。
付記11. 予想使用量が、仮想マシンと関連付けられる顧客から受信されるデータに少なくとも部分的に更に基づく、付記10に記載のシステム。
付記12. モジュールが、実行されるとき、
ホストコンピューティングデバイス上の新しいインスタンスの運用に関する追加の運用メトリクスであって、1つ以上の運用特徴に関係する、追加の運用メトリクスを受信し、かつ
追加の運用メトリクスに基づいて、1つ以上の運用特徴がもはや運用制約を満たさないという判定に応答して、新しいインスタンスを、運用制約を満たす1つ以上の追加の運用特徴と関連付けられる第2のコンピューティングデバイスへ転送するように、更に構成される、付記7に記載のシステム。
付記13. コンピューティングリソースの使用をプロファイルするためのコンピュータによって実装される方法であって、
1つ以上のコンピューティングデバイスを備えるデータセンター管理構成要素によって、運用プロファイルであって、ソフトウェア作業負荷と関連付けられる複数の履歴運用メトリクスに少なくとも部分的に基づく、運用プロファイルと関連付けられるソフトウェア作業負荷の初期化に対するリクエストを受信することと、
リクエストに応答して、
複数のコンピューティングデバイスのうちの1つのコンピューティングデバイスを、運用プロファイルおよびコンピューティングデバイスと関連付けられる1つ以上の運用特徴に少なくとも部分的に基づいて識別することと、
ソフトウェア作業負荷をコンピューティングデバイス上で初期化させることと、を含む、コンピュータによって実装される方法。
付記14. ソフトウェア作業負荷が、仮想マシンインスタンス、オペレーティングシステム、ストレージエリアネットワーク(SAN)ノード、またはアプリケーションを含む、付記13に記載のコンピュータによって実装される方法。
付記15. 複数の履歴運用メトリクスのうちの少なくとも1つが、中央処理装置(CPU)利用、メモリ利用、ネットワーク利用、ハードディスク利用、または電力利用に関係する、付記13に記載のコンピュータによって実装される方法。
付記16. 1つ以上の運用特徴のうちの少なくとも1つが、メモリ容量、中央処理装置(CPU)容量、ネットワーク帯域幅、ネットワークレイテンシ、ネットワークトポロジー内の位置、命令セット、または性能メトリクスの分散を含む、付記13に記載のコンピュータによって実装される方法。
付記17. 運用プロファイルが、第1のコンピューティングリソースと関連付けられる第1の予想リソース使用量を含み、第1の予想リソース使用量が、第1のリソースの使用に関する複数の履歴運用メトリクスに少なくとも部分的に基づき、1つ以上の特徴のうちの1つの特徴が、第1のコンピューティングリソースの可用性を含む、付記13に記載のコンピュータによって実装される方法。
付記18. 第1のリソースの使用に関する複数の履歴運用メトリクスの各々が、使用測定値が記録された時刻に関連付けられ、運用プロファイルが、複数の履歴運用メトリクスの各々が記録された時刻に少なくとも部分的に更に基づく、付記17に記載のコンピュータによって実装される方法。
付記19. ソフトウェア作業負荷、またはソフトウェア作業負荷を実行している複数のコンピューティングデバイスのうちの1つのコンピューティングデバイスのいずれかと関連付けられる運用解析構成要素からの複数の履歴運用メトリクスの少なくとも一部を取得することを更に含む、付記13に記載のコンピュータによって実装される方法。
付記20. 複数の履歴運用メトリクスに少なくとも部分的に基づいて、運用プロファイルを判定することを更に含む、付記13に記載のコンピュータによって実装される方法。
付記21. ソフトウェア作業負荷と関連付けられる顧客とのサービスレベル合意に少なくとも部分的に基づいて、運用プロファイルを判定することを更に含む、付記13に記載のコンピュータによって実装される方法。
付記22. 運用プロファイルが、コンピューティングデバイスの所望される運用特徴を含む、付記13に記載のコンピュータによって実装される方法。
付記23. コンピューティングデバイスを識別することは更に、コンピューティングデバイスと関連付けられる1つ以上の運用特徴のうちの1つの運用特徴が、所望される運用特徴に対応することを判定することに少なくとも部分的に基づく、付記22に記載のコンピュータによって実装される方法。
付記24. コンピューティングデバイス上のソフトウェア作業負荷に関する実質的に最新の運用メトリクスであって、1つ以上の運用特徴に関係する、実質的に最新の運用メトリクスを受信することと、
実質的に最新の運用メトリクスに基づいて、コンピューティングデバイスと関連付けられる1つ以上の運用特徴のうちのどれもが所望される運用特徴に対応しないと判定することに応答して、ソフトウェア作業負荷を、所望される運用特徴に対応する運用特徴と関連付けられる第2のコンピューティングデバイスへ転送することと、を更に含む、
付記22に記載のコンピュータによって実装される方法。
付記25. 運用プロファイルが、複数の既定の運用プロファイルのうちの第1の既定の運用プロファイルを含む、付記13に記載のコンピュータによって実装される方法。
付記26. 既定の運用プロファイルが、運用階層内のレベルと関連付けられ、第1の既定の運用プロファイルが、ソフトウェア作業負荷に対して、運用階層のより上位のレベルと関連付けられる、付記25に記載のコンピュータによって実装される方法。
付記27. 運用プロファイルが、顧客に特異的な運用プロファイルを含み、複数の履歴運用メトリクスが、顧客によるソフトウェア作業負荷の初期化または使用と関連付けられる、付記13に記載のコンピュータによって実装される方法。
付記28. 運用プロファイルが、履歴運用メトリクスの中間値、標準偏差、または使用ヒストグラムを含む、付記13に記載のコンピュータによって実装される方法。
付記29. 運用プロファイルが、特定期間の履歴運用メトリクスに少なくとも部分的に基づく、付記13に記載のコンピュータによって実装される方法。
付記30. 共有コンピューティングリソースを管理するためのシステムであって、
1つ以上のプロセッサと、
コンピュータ可読メモリであって、1つ以上のプロセッサによって実行されるとき、
第1のコンピューティングリソースの第1の予想使用量であって、類似の仮想マシンの少なくとも1つのインスタンスを以前に実行させたことから判定された運用メトリクスに少なくとも部分的に基づく、第1の予想使用量と関連付けられる第1の仮想マシンの第1のインスタンスを初期化するためのリクエストを受信し、
第1のコンピューティングリソースを提供するように構成された複数のコンピューティングデバイスのうちの1つのコンピューティングデバイスであって、第2の仮想マシンの第2のインスタンスがそのコンピューティングデバイス上で稼動し、第1のコンピューティングリソースの既定量が第2のインスタンスによって使用されるために予約され、そのコンピューティングリソースが、第1のコンピューティングリソースの、第2のインスタンスと関連付けられる、第1の予想使用量および第2の予想使用量の和よりも大きい既定量に少なくとも部分的に基づいて選択される、コンピューティングリソースを選択し、
少なくとも部分的に、第1のインスタンスをそのコンピューティングデバイス上で初期化させ、第1のインスタンスおよび第2のインスタンスが、第1のコンピューティングリソースの既定量を共有するように、システムを構成する実行可能命令を記憶する、コンピュータ可読メモリと、を備える、システム。
付記31. 第1のコンピューティングリソースが、中央処理装置(CPU)の容量、メモリ空間、ネットワーク帯域幅、ハードディスクの空き容量、または電力利用のうちの1つを含む、付記30に記載のシステム。
付記32. 第1のインスタンスおよび第2のインスタンスが異なる顧客と関連付けられる、付記30に記載のシステム。
付記33. 実行可能命令が、
少なくとも部分的に、第3の仮想マシンの第3のインスタンスをコンピューティングデバイス上で初期化させるようにシステムを更に構成し、
第3のインスタンスが、第1のコンピューティングリソースの第3の予想使用量と関連付けられ、
既定量が、第1の予想使用量、第2の予想使用量、および第3の予想使用量よりも更に大きく、
第1のインスタンス、第2のインスタンス、および第3のインスタンスが、第1のコンピューティングリソースの既定量を共有する、付記30に記載のシステム。
付記34. 実行可能命令が、
第1のインスタンスによる第1のコンピューティングリソースの使用の第1の測定値、および第2のインスタンスによる第1のコンピューティングリソースの使用の第2の測定値を取得し、
第1の測定値または第2の測定値が閾値を超過すると判定することに応答して、第1のインスタンスまたは第2のインスタンスを第2のコンピューティングデバイスへ転送するようにシステムを更に構成する、付記30に記載のシステム。
付記35. 共有コンピューティングリソースを管理するためのコンピュータによって実装される方法であって、
1つ以上のコンピューティングデバイスを備えるデータセンター管理システムによって、ホストコンピューティングデバイス上の第1のソフトウェア作業負荷の運用に関する第1の複数の履歴運用メトリクスに少なくとも部分的に基づく第1の運用制約と関連付けられる第1のソフトウェア作業負荷を初期化するためのリクエストを受信することと、
リクエストに応答して、第1の運用制約および第1のホストコンピューティングデバイスと関連付けられる1つ以上の運用特徴に少なくとも基づいて、複数のホストコンピューティングデバイスのうちの第1のホストコンピューティングデバイスを識別することと、を含み、
第1のホストコンピューティングデバイスが、第2の運用制約と関連付けられる第2のソフトウェア作業負荷を備え、
識別することが、第1のホストコンピューティングデバイスの1つ以上の運用特徴が、第1の運用制約および第2の運用制約の両方を満足させる可能性が高いかどうかを判定することと、
少なくとも部分的に、第1のソフトウェア作業負荷を第1のホストコンピューティングデバイス上に配置させることと、を含む、コンピュータによって実装される方法。
付記36. 第1のソフトウェア作業負荷または第2のソフトウェア作業負荷が、仮想マシンインスタンス、アプリケーションインスタンス、またはオペレーティングシステムを含む、付記35に記載のコンピュータによって実装される方法。
付記37. 第1のソフトウェア作業負荷が、ストレージノードを含み、識別することが、第1のホストコンピューティングデバイス上にストレージノードを配置することが、ストレージノードを使用する仮想マシンと関連付けられる運用制約を満足させるかどうかを判定することを更に含む、付記35に記載のコンピュータによって実装される方法。
付記38. 1つ以上の運用特徴のうちの少なくとも1つは、メモリ容量、中央処理装置(CPU)容量、ネットワーク帯域幅、ネットワークレイテンシ、ネットワークトポロジー内の位置、命令セット、性能メトリクスの分散、または電力容量を含む、付記35に記載のコンピュータによって実装される方法。
付記39. 第1の運用制約または第2の運用制約が、メモリ利用、中央処理装置(CPU)利用、ネットワーク帯域幅利用、ネットワークレイテンシ、ネットワークトポロジー内の位置、命令セット可用性、性能メトリクスの分散、または電力利用に関係する、付記35に記載のコンピュータによって実装される方法。
付記40. 第1の運用制約が、第1のコンピューティングリソースの第1の予想使用量に関係し、第2の運用制約が、第1のコンピューティングリソースの第2の予想使用量に関係し、第1のコンピュータ実行可能プログラムおよび第2のコンピュータ実行可能プログラムが、第1のコンピューティングリソースの第1の予想使用量および第2の予想使用量をそれぞれ同時に消費することが可能である、付記35に記載のコンピュータによって実装される方法。
付記41. 1つ以上の運用特徴のうちの1つの運用特徴が、第1のコンピューティングリソースの利用可能量を含み、
少なくとも部分的に、第1のコンピュータ実行可能プログラムおよび第2のコンピュータ実行可能プログラムが合計で、第1のコンピューティングリソースの利用可能量を超えて消費することを防止することを更に含む、付記40に記載のコンピュータによって実装される方法。
付記42. 少なくとも部分的に、第3のコンピュータ実行可能プログラムを第1のホストコンピューティングデバイス上で初期化させることを更に含み、
第3のコンピュータ実行可能プログラムが第3の運用制約と関連付けられ、
第1のホストコンピューティングデバイスの1つ以上の運用特徴が、第1の運用制約、第2の運用制約、および第3の運用制約のそれぞれを満足させる可能性が高い、付記35に記載のコンピュータによって実装される方法。
付記43.第1のホストコンピューティングデバイス上の第1のコンピュータ実行可能プログラムの運用に関する1つ以上の運用メトリクスを取得することと、
少なくとも部分的に1つ以上の運用メトリクスに基づいて、第1の制約が満足させられる可能性がもはや低いと判定することに応答して、第1のコンピュータ実行可能プログラムまたは第2のコンピュータ実行可能プログラムを第2のホストコンピューティングデバイスへ転送することと、を更に含む、付記35に記載のコンピュータによって実装される方法。
付記44. 第1のホストコンピューティングデバイス上の第2のコンピュータ実行可能プログラムの運用に関する1つ以上の運用メトリクスを取得することと、
少なくとも部分的に1つ以上の運用メトリクスに基づいて、第2の制約が満足させられる可能性がもはや低いと判定することに応答して、第1のコンピュータ実行可能プログラムまたは第2のコンピュータ実行可能プログラムを第2のホストコンピューティングデバイスへ転送することと、を更に含む、付記35に記載のコンピュータによって実装される方法。
付記45. 第1のホストコンピューティングデバイスの1つ以上の運用特徴に関する1つ以上の運用メトリクスを取得することと、
少なくとも部分的に1つ以上の運用メトリクスに基づいて、第1の制約または第2の制約が満足させられる可能性がもはや低いと判定することに応答して、第1のコンピュータ実行可能プログラムまたは第2のコンピュータ実行可能プログラムを第2のホストコンピューティングデバイスへ転送することと、を更に含む、付記35に記載のコンピュータによって実装される方法。
付記46. 共有コンピューティングリソースを管理するためのシステムであって、
1つ以上のプロセッサと、
コンピュータ可読メモリであって、1つ以上のプロセッサによって実行されるとき、
ホストコンピューティングデバイス上の第1のコンピュータ実行可能プログラムの運用に関する第1の複数の履歴運用メトリクスに少なくとも部分的に基づく第1の運用制約と関連付けられる第1のコンピュータ実行可能プログラムを初期化するためのリクエストを受信し、
複数のホストコンピューティングデバイスのうちの第1のホストコンピューティングデバイスであって、1つ以上の運用特徴と関連付けられる第1のホストコンピューティングデバイスを識別するように、システムを構成する実行可能命令を記憶する、コンピュータ可読メモリと、を備え、
第1のホストコンピューティングデバイスが、第2の運用制約と関連付けられる第2のコンピュータ実行可能プログラムを備え、
第1のホストコンピューティングデバイスが、第1の運用制約および第2の運用制約の両方を満足させる1つ以上の運用特徴に少なくとも部分的に基づいて識別される、システム。
付記47. 実行可能命令が、少なくとも部分的に、第1のホストコンピューティングデバイス上で第1のコンピュータ実行可能プログラムを実行させるようにシステムを更に構成する、付記46に記載のシステム。
付記48. 第1のコンピュータ実行可能プログラムまたは第2のコンピュータ実行可能プログラムが、仮想マシンインスタンス、アプリケーションインスタンス、またはオペレーティングシステムのうちの1つを含む、付記46に記載のシステム。
付記49. 1つ以上の運用特徴のうちの少なくとも1つが、メモリ容量、中央処理装置(CPU)容量、ネットワーク帯域幅、ネットワークレイテンシ、ネットワークトポロジー内の位置、命令セット、性能メトリクスの分散、または電力容量を含む、付記46に記載のシステム。
付記50. 第1の運用制約または第2の運用制約が、メモリ利用、中央処理装置(CPU)利用、ネットワーク帯域幅利用、ネットワークレイテンシ、ネットワークトポロジー内の位置、命令セット可用性、性能メトリクスの分散、または電力利用に関係する、付記46に記載のシステム。
付記51. 第1の運用制約が、第1のコンピューティングリソースの第1の予想使用量に関係し、第2の運用制約が、第1のコンピューティングリソースの第2の予想使用量に関係し、第1のコンピュータ実行可能プログラムおよび第2のコンピュータ実行可能プログラムが、第1のコンピューティングリソースの第1の予想使用量および第2の予想使用量をそれぞれ同時に消費することが可能である、付記46に記載のシステム。
付記52. 実行可能命令が、第1のコンピュータ実行可能プログラムおよび第2のコンピュータ実行可能プログラムが合計で、第1のコンピューティングリソースの利用可能量を超えて消費することを少なくとも部分的に防止するようにシステムを更に構成する、付記51に記載のシステム。
付記53. 実行可能命令が、
第1のホストコンピューティングデバイスの1つ以上の運用特徴が、第1の運用制約、第2の運用制約、および第3のコンピュータ実行可能プログラムと関連付けられる第3の運用制約のそれぞれを満足させる可能性が高いかどうかを判定し、
少なくとも部分的に、第3のコンピュータ実行可能プログラムを第1のホストコンピューティングデバイス上で初期化させるようにシステムを更に構成する、付記46に記載のシステム。
付記54. 実行可能命令が、
第1のホストコンピューティングデバイス上の第1のコンピュータ実行可能プログラムの運用に関する1つ以上の運用メトリクスを取得し、
少なくとも部分的に1つ以上の運用メトリクスに基づいて、第1の制約が満足させられる可能性がもはや低いと判定することに応答して、第1のコンピュータ実行可能プログラム、または第2のコンピュータ実行可能プログラムを第2のホストコンピューティングデバイスへ転送するようにシステムを更に構成する、付記46に記載のシステム。
付記55. 実行可能命令が、
第1のホストコンピューティングデバイス上の第2のコンピュータ実行可能プログラムの運用に関する1つ以上の運用メトリクスを取得し、
少なくとも部分的に1つ以上の運用メトリクスに基づいて、第2の制約が満足させられる可能性がもはや低いと判定することに応答して、第1のコンピュータ実行可能プログラムまたは第2のコンピュータ実行可能プログラムを第2のホストコンピューティングデバイスへ転送するようにシステムを更に構成する、付記46に記載のシステム。
付記56. 実行可能命令が、
第1のホストコンピューティングデバイスの1つ以上の運用特徴に関する1つ以上の運用メトリクスを取得し、
少なくとも部分的に1つ以上の運用メトリクスに基づいて、第1の制約または第2の制約が満足させられる可能性がもはや低いと判定することに応答して、第1のコンピュータ実行可能プログラムまたは第2のコンピュータ実行可能プログラムを第2のホストコンピューティングデバイスへ転送するようにシステムを更に構成する、付記46に記載のシステム。
【0057】
実施形態に依存して、本明細書に記載されるプロセスまたはアルゴリズムのうちのいずれかの所定の動作、イベント、または機能は異なる順序で実施することができ、追加、統合、またはまとめて省略することができる(例えば、記載の演算またはイベントすべてがアルゴリズムの実践に必要ではない)。その上、所定の実施形態において、演算またはイベントは、例えば、マルチスレッド処理、中断処理、あるいはマルチプロセッサまたはプロセッサコアあるいは順次にではなく他の並列アーキテクチャを通じて同時に実施することができる。
【0058】
本明細書に開示される実施形態に関して記載される多様な例示の論理ブロック、モジュール、ルーチン、アルゴリズムのステップは、電子ハードウェア、コンピュータソフトウェア、またはこれらの組み合わせとして実装することができる。ハードウェアとソフトウェアの相互互換性を明確に示すため、多様な例示的構成要素、ブロック、モジュール、およびステップは、上記において一般にそれらの機能性の観点から説明される。このような機能性がハードウェアまたはソフトウェアとして実装されるかどうかは、システム全体に課される特定の用途および設計制約に依存する。記載の機能性は、それぞれ特定の用途のために可変方式で実装できるが、このような実装判断は、本開示の範囲からの逸脱を生じさせると解釈されてはならない。
【0059】
本明細書に開示される実施形態に関連して説明される方法、プロセス、ルーチン、またはアルゴリズムのステップは、ハードウェア内、プロセッサによって実行されるソフトウェアモジュール内、またはこれらの2つの組み合わせにおいて直接具現化することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、着脱式ディスク、CD−ROM、または任意の他の形式の非一時的コンピュータ可読記憶媒体に所在することができる。例示的記憶媒体は、プロセッサが記憶媒体から情報を読み出し、記憶媒体へ情報を書き込むことができるように、プロセッサに結合することができる。代替として、記憶媒体は、プロセッサに一体化することができる。プロセッサおよび記憶媒体は、ASIC内に所在することができる。ASICは、ユーザー端末に所在することができる。代替として、プロセッサおよび記憶媒体は、ユーザー端末の個別構成要素に所在することができる。
【0060】
特に「〜することができる」、「〜することが可能である」、「〜するかもしれない」、「〜してもよい」、「例えば」等のように本明細書に使用される条件付き語は、その他特に記載のない限り、またはその他使用される文脈で理解されない限り、所定の実施形態が、他の実施形態は含まないが、所定の特性、要素、および/またはステップを含むことを伝達することを一般に意図する。このため、このような条件付き語は、特性、要素、および/またはステップが1つ以上の実施形態に何としても必要であること、または1つ以上の実施形態が必ず、これらの特性、要素および/またはステップが任意の特定の実施形態に含まれる、または実施されるかを、作成者の入力または問い合わせを用いてまたは用いずに、判定するためのロジックを含むということを暗示することを一般に意図しない。「備える」、「含む」、「有する」等の用語は、同義語であり、制約がない様式において包括的に使用され、追加の要素、特性、動作、操作等を排除しない。さらに、「または」という用語は、その包括的意味において(その排除的意味ではなく)使用されるので、例えば、要素のリストを接続するために使用され、「または」という用語は、リストの中の要素のうちの1つ、いくつか、または全てを意味する。
【0061】
語句「X、Y、およびZのうちの少なくとも1つ」のような接続語は、その他特に記載のない限り、項目、条件等がX、Y、またはZ、あるいはこれらの組み合わせのいずれかであってもよいことを伝達するために一般に使用される文脈で理解されるものとする。このため、このような接続語は、所定の実施形態が、Xのうちの少なくとも1つ、Yのうちの少なくとも1つ、およびZのうちの少なくとも1つがそれぞれ存在することを要求することを暗示することを概して意図しない。
【0062】
上記の詳細説明で、多様な実施形態に適用される革新的特性を示し、記載し、指摘したが、図示されたデバイスまたはアルゴリズムの形式および詳細における多様な省略、置換、および変更は本開示の精神を逸脱することなく行うことができることを理解することができる。理解できるように、本明細書に記載される本発明の所定の実施形態は、いくつかの特性は他から分離して使用または実践できるため、本明細書に記載の特性および利点の全てを提供しない形式内で具現化できる。本明細書に開示される所定の発明の範囲は、前述の説明ではなく、添付の請求項によって示される。請求項の均等の意義および範囲内に入る全ての変更はそれらの範囲内に抱合される。