(57)【特許請求の範囲】
【請求項１】
複数のクライアント・デバイスと、
前記複数のクライアント・デバイスに対してリソース・キャパシティを選択的に利用可能にする１つまたは複数のサービス・プロバイダ・コンピュータと、
前記１つまたは複数のサービス・プロバイダ・コンピュータから前記複数のクライアント・デバイスにリソース・キャパシティが提供される際に経由されるネットワークと、
全ての割振り可能なリソース・キャパシティ構成についてのリソース・テンプレートを生成し、生成されたリソース・テンプレートのサブセットを選択し、前記サブセットから選択されたいくつかのリソース・テンプレートを維持するリソース・プロビジョニング・ユニットであって、各テンプレートが、割振り可能なリソース・キャパシティ構成を指定し、各要求元クライアント・デバイスに、前記サブセットの前記リソース・テンプレートのうちの１つによって決定されるリソースが割り振られる、リソース・プロビジョニング・ユニットとを備える共有リソース・システム。
【請求項２】
前記リソース・プロビジョニング・ユニットが、
割振り可能なリソースのコストおよび関連する属性を記憶する構成ストアと、
前に受け取られた、キャパシティを求める要求を記憶するサーバ要求ストアと、
テンプレート・リスト・オプションを記憶する入力パラメータ・ストアと、
前記前に受け取られた要求を最適なコストで満たすためのリソース・テンプレートのリストを決定するテンプレート・ジェネレータであって、前記リストが、前記サブセットから選択された前記リソース・テンプレートをリストするものであるテンプレート・ジェネレータと、
生成されたテンプレート・リストを記憶するテンプレート・ストアとを備える、請求項１に記載の共有リソース・システム。
【請求項３】
前記テンプレート・ジェネレータが各サービス・プロバイダ・コンピュータに対してテンプレート・リストを生成し、前記生成された各テンプレート・リストが前記テンプレート・ストアに記憶される、請求項２に記載の共有リソース・システム。
【請求項４】
前記テンプレート・リスト・オプションが完全リスト・オプションおよび上位ｋリスト・オプションを含む、請求項２に記載の共有リソース・システム。
【請求項５】
前記上位ｋリスト・オプションがｋの複数の値を示し、前記テンプレート・ジェネレータが前記各サービス・プロバイダ・コンピュータに対してｋの全ての値についてテンプレート・リストを生成し、前記生成されたテンプレート・リストのうちの１つが前記各サービス・プロバイダ・コンピュータに対して選択されて前記テンプレート・ストアに記憶される、請求項４に記載の共有リソース・システム。
【請求項６】
選択された各テンプレート・リストが、前記各サービス・プロバイダ・コンピュータに対して生成された前記テンプレート・リストの最小コストを有する、請求項５に記載の共有リソース・システム。
【請求項７】
前記各テンプレートが、コアの数と、メモリ空間と、ディスク空間とを含む割振り可能な構成を指定する、請求項２に記載の共有リソース・システム。
【請求項８】
複数のコンピュータからの、リソース・キャパシティを求める要求の集まりを提供するステップと、
割振り可能なコンピュータ・リソースにコストを関連付けるステップと、
全ての割振り可能な構成についてのリソース・テンプレートを前記割振り可能なコンピュータ・リソースから生成するステップと、
各要求を１つまたは複数のテンプレートとマッチさせるステップと、
最小コストを有するテンプレートを各要求に対して選択するステップと、
マッチした要求の数に従って、選択された最小コスト・テンプレートをソートするステップと、および、
マッチした数の多い上位ｋ個のテンプレートについて、マッチする要求のコストを決定するステップであって、前記ｋ個の最も頻繁にマッチしたテンプレートが上位ｋリスト中でリストされる、前記決定するステップとを含む、リソースを割り振る方法。
【請求項９】
前記各要求をマッチさせるステップが、
リソース・テンプレート・マッチのリストを生成するステップであって、前記リストが、少なくとも１つの要求にマッチする各テンプレートをリストする、前記生成するステップこと、
前記リストされた各テンプレートにコストを関連付けるステップと、および、
コストが関連する全てのテンプレートから、最小コストを有するマッチするテンプレートを各要求に対して決定するステップとを含む、請求項８に記載のリソースを割り振る方法。
【請求項１０】
最小コストを有する前記マッチするテンプレートを前記各要求に対して選択するステップが、
各要求に対して最小リソース・マッチを有するテンプレートを見つけるステップであって、前記テンプレートが最小マッチ・テンプレートである、前記見つけるステップと、および、
前記最小マッチ・テンプレートのリソースのコストを決定するステップとを含む、請求項９に記載のリソースを割り振る方法。
【請求項１１】
上位ｋリストを決定するステップが、
各テンプレートにマッチする要求の数に従って、前記ソートされたマッチするテンプレートをリストするステップと、
各ｋ値についてコスト区分を決定するステップと、および、
前記コスト区分を上位ｋテンプレート・テーブル中でリストするステップとを含む、請求項１０に記載のリソースを割り振る方法。
【請求項１２】
前記コスト区分が、各上位ｋリストについて、最小コストで満たされる要求、最小コストより高いコストで満たされる要求、および満たされない要求の数を含む、請求項１１に記載のリソースを割り振る方法。
【請求項１３】
前記上位ｋリスト中の、最低コストが関連するテンプレートが、クラウド環境におけるリソースのプロビジョニングに使用される、請求項１２に記載のクラウド環境におけるリソースを割り振る方法。
【請求項１４】
クラウド環境リソースを割り振る方法であって、
全ての割振り可能な構成についてのリソース・テンプレートを、割振り可能なコンピュータ・リソースから生成するステップと、
サーバ要求データベースに含まれる各リソース・キャパシティ要求を、割振り可能なクラウド・リソースを指定する１つまたは複数のテンプレートとマッチさせるステップと、
少なくとも１つのマッチを有するマッチしたテンプレートを収集し、マッチを有さないテンプレートがあれば廃棄するステップと、
前記マッチしたテンプレートを、マッチした要求の数に従ってソートするステップと、および、
複数（ｋ個）のマッチしたテンプレートについて、上位ｋリストおよびソートされたテンプレートを使用して、各ｋについて満たされるマッチの要求の数を決定するステップとを含む方法。
【請求項１５】
前記各テンプレートが、コアの数と、メモリ空間と、ディスク空間とを含む割振り可能な構成を指定する、前記クラウド環境リソースを割り振る方法であって、前記各要求をマッチさせるステップが、
マッチする各要求とテンプレートとをリストするためのリソース・マッチ・テーブルを生成するステップと、
マッチした各テンプレートに関連するコストをリストするための最小コスト・リストを生成するステップと、
前記サーバ要求データベースから要求を選択するステップと、
前記選択された要求にマッチするテンプレートを識別するステップと、
前記マッチするテンプレートによって指定される割振り可能なリソースに関連するコストを決定するステップと、および、
前記マッチしたテンプレートおよび要求をリソース・マッチ・テーブルに追加し、前記関連するコストを前記最小コスト・リストに追加するステップと
を含む、請求項１４に記載のクラウド環境リソースを割り振る方法。
【請求項１６】
前記各要求をマッチさせるステップが、
マッチさせていない要求が前記サーバ要求データベース中に残っているかどうか決定するステップと、ならびに、未選択の要求がなくなるまで、
戻って次の要求を選択し、前記次の要求に対してマッチするテンプレートおよび関連するコストを決定するステップとを含む、請求項１５に記載のクラウド環境リソースを割り振る方法。
【請求項１７】
上位ｋリストを決定するステップが、
前記マッチするテンプレートの前記テーブルを、各テンプレートの割振り可能なリソースにマッチする要求の数でソートするステップと、
第１のｋ値を選択するステップと、
前記サーバ要求データベースから要求を選択するステップと、
前記ｋ値についてコスト区分を決定するステップと、
全ての要求が選択されるまで、戻って次の要求を選択するステップと、および、全ての要求が選択されたとき、
前記コスト区分を上位ｋテンプレート・テーブル中でリストするステップとを含む、請求項１６に記載のクラウド環境リソースを割り振る方法。
【請求項１８】
前記コスト区分が、各上位ｋリストについて、最小コストで満たされる要求、最小コストよりも高いコストで満たされる要求、および満たされない要求の数を含み、前記上位ｋリスト中の、最低コストが関連するテンプレートが、リソースのプロビジョニングに使用される、請求項１７に記載のクラウド環境リソースを割り振る方法。
【請求項１９】
コンピュータに、請求項８乃至１８のいずれか１項に記載の方法の各ステップを実行させるためのコンピュータ・プログラム。
【請求項２０】
請求項１９に記載のコンピュータ・プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有リソースを割り振ることに関し、より詳細には、最小限のオーバープロビジョニングおよびアンダープロビジョニングでリソース要求を満たすためにテンプレートの最適セットを選択することに関する。
【背景技術】
【０００２】
情報技術（ＩＴ）の獲得および管理は、現代のどんな組織にとっても、主要な予算上の懸念である。さらに、ローカルＩＴハードウェアが全キャパシティで使用されることはめったにない。したがって、ＩＴインフラストラクチャのコストおよび無駄を削減するために、組織は、物理的なハードウェアを取得する代わりに、より少ないサーバ上でホストされるバーチャル・マシン（ＶＭ）上に作業量をますます統合しつつある。リモート・サーバ・コンピュータが、仮想リソース（例えば処理力、メモリ、およびディスク空間）を、仮想サーバとしての各ＶＭに提供する。通常、各ＶＭ構成は、いくつかの仮想リソース・テンプレート（ＶＲＴまたはテンプレート）から選択される。各ＶＲＴは、ＶＭを定義するために割当て可能な、所定の仮想リソース能力を定義する。したがって、サーバ・コンピュータ（複数可）は、各ＶＭの意図される目的および予想されるニーズに最も近く構成されたＶＲＴ（ソフトウェア・スタックおよびライセンス）を割り当てることによって、ＶＭにキャパシティ（例えばディスク空間、処理リソース、およびメモリ）を割り振る。
【０００３】
これらのＶＭを管理する際、ＶＭの最適なキャパシティおよび最適な構成を決定すること、すなわち最適なＶＲＴを選択することは困難であった。通常、サービス・プロバイダが、プロバイダ・システム最適化と、作業量予測と、ＶＭリソース使用の継続的な監視から収集されたリソース使用履歴とに主に基づいて、各ＶＭに対して、ＶＲＴを選択し、対応する物理リソースを割り振る。しかし、予測結果が適切であっても、割振りが多すぎるかまたは少なすぎるせいでユーザ体験が損なわれる可能性がある。割振りが多すぎると、通常なら他のユーザに利用可能だったかまたは追加のＶＭをサポートするのに利用可能だったであろうエネルギーおよびリソース、キャパシティが無駄になる。割振りが少なすぎると、１つまたは複数のＶＭに割り振られるリソースが不十分になるので、これらのＶＭ上のサービス品質（ＱｏＳ）に影響を及ぼす（例えばビデオが停止したり音声が聞き取れなくなったりする）。
【０００４】
ユーザ要件は非常に変わりやすく、これによりプロバイダは、提供するテンプレートの定義および数を変動させることを余儀なくされる場合がある。リソース・プロバイダは、全ての要求を満たすように、提供するＶＲＴの数を増やすこともできるが、数を増やすと、リソース・オーバープロビジョニングおよびテンプレート・スプローリングを引き起こす可能性がある。リソース・オーバープロビジョニングは、割振り過多の場合と同様、提供されるキャパシティに必要であるよりも多くのリソースおよびエネルギーを消費する。この余分なリソースおよびエネルギーは、通常なら他のユーザにまたは追加のＶＭ用に利用可能にできたはずのものである。テンプレート・スプローリングは、イメージ・スプロールとも呼ばれ、これは、あるユーザのニーズに適合するあるテンプレートまたはイメージが別のユーザのニーズに適合するようにいじられたときに生じ、提供されるＶＲＴに別のテンプレートが追加される。最終的に、テンプレートの数は、管理不可能な数にまで拡大する。
【０００５】
利用可能なリソースにアプリケーション・サーバ要求をマッチさせる手法として、いくつかの手法が試みられてきた。典型的なクラウド・コンピューティング手法は、選択のコストを無視して、ターゲット・ユーザ・アプリケーションの要件に最も近くマッチするＶＭテンプレートを選択するものであった。他のいくつかの従来手法は、主にＶＭテンプレートおよびネットワーク・テンプレートを指定し記憶して、ＶＭ、関連するネットワーク、および必要とされるソフトウェアのインストールを加速させる。さらに他の手法は、実行されるＶＭのプロファイルを作成し、ターゲット・マイグレーション・サーバを選択するものであった。別法として、他の技法は、仮想リソース・テンプレートを選択することに焦点を合わせるのではなく、アプリケーションをテンプレートにスケーリングすること、すなわち、ＶＭをアプリケーションに適合させるのではなくアプリケーションをＶＭに適合させることに焦点を合わせる。最後に、最新の一手法は、ユーザによって提供されるオープン仮想化フォーマット（ＯＶＦ）インスタンスを、適切なクラウド提供品にマッチさせる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、リソースを無駄にすることなく最小限のコストで十分なＩＴリソースを割り振り、サーバＱｏＳも維持することが必要とされている。より詳細には、最小限のコストでユーザ要件の大部分を効率的に満たす、クラウド・インフラストラクチャ中でＶＭをプロビジョニングするためのＶＭテンプレートのセットを選択することが必要とされている。
【課題を解決するための手段】
【０００７】
本発明の一特徴は、クラウド・リソースのオーバープロビジョニングの最小化である。
【０００８】
本発明の別の特徴は、クラウド環境におけるテンプレート・スプローリング／イメージ・スプロールの低減である。
【０００９】
本発明のさらに別の特徴は、クライアントのニーズによりよく合致してそれによりクライアント・コストおよびリソースの無駄を削減するように、コストを意識したクラスタリングのために選択された、ＶＭテンプレート／イメージのプールである。
【００１０】
本発明は、コストを意識したクラスタリングにおけるテンプレートを編成するテンプレート・ジェネレータと、コストを意識したクラスタリングを使用してリソースを割り振る方法と、そのためのコンピュータ・プログラム製品とに関する。リソース・プロビジョニング・ユニットが、選択された数のリソース・テンプレートを生成し、選択し、維持する。各テンプレートは、割振り可能なリソース・キャパシティ構成を指定する。要求元の各クライアント・デバイスには、選択されたリソース・テンプレートのうちの１つによって決定されるリソースが割り振られる。リソース・プロビジョニング・ユニットは、割振り可能なリソースのコストおよび関連する属性を含む構成ストアと、前に受け取られた要求を含むサーバ要求ストアと、テンプレート・リスト・オプションを含む入力パラメータ・ストアとを備える。テンプレート・ジェネレータは、前に受け取られた要求を満たすための最適なテンプレート・リストを決定する。テンプレート・ストアは、生成されたテンプレート・リストを記憶する。結果として得られるテンプレート・リストは、非常に異なり変動するコスト（例えば、処理力、メモリ、およびディスク空間の間の、大きいコスト差）を個別に有する場合のある各リソースの、集合的なリソース・コストに基づく。
【００１１】
前述のおよび他の目的、態様、および利点は、図面を参照しながら本発明の好ましい実施形態に関する以下の詳細な記述を読めば、よりよく理解されるであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態によるクラウド・コンピューティング・ノードを示す図である。
【図２】本発明の一実施形態によるクラウド・コンピューティング環境を示す図である。
【図３】本発明の一実施形態による抽象化モデル・レイヤを示す図である。
【図４】本発明の好ましい一実施形態による、テンプレートをリソース要求にマッチさせるための、コストを意識したクラスタリングのためのリソース・プロビジョニング・ユニットの例を示す図である。
【図５】好ましいテンプレート・ジェネレータによる上位ｋ個のテンプレートの選択の例を示す図である。
【図６】最小コスト・マッチを見つける例を示す図である。
【図７】最小コスト・マッチをリストするために作成されるリソース・マッチ・テーブルの例を示す図である。
【図８】上位ｋリストを最小と最大で括ることによって最終的なテンプレート・リストを生成する例を示す図である。
【図９】７４７個のサーバ要求のセットに対して本発明を適用した例を示す図である。
【発明を実施するための形態】
【００１３】
本開示はクラウド・コンピューティングに関する詳細な記述を含むが、本明細書に示す教示の実施はクラウド・コンピューティング環境に限定されないことを、あらかじめ理解されたい。そうではなく、本発明の実施形態は、現在知られているかまたは後に開発される、かつ以下にさらに示すような、他の任意のタイプのコンピューティング環境と共に実施することができる。
【００１４】
クラウド・コンピューティングは、最小限の管理労力で、またはサービス・プロバイダとの最小限の対話で迅速にプロビジョニングでき解放できる構成可能なコンピューティング・リソース（例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、バーチャル・マシン、およびサービス）の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス送達モデルである。このクラウド・モデルは、少なくとも５つの特性、少なくとも３つのサービス・モデル、および少なくとも４つの展開モデルを有することができる。
【００１５】
特性は以下のとおりである。
オンデマンド・セルフサービス：クラウド消費者は、サービスのプロバイダとの人的な対話を要することなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を単方向にプロビジョニングすることができる。
【００１６】
ブロード・ネットワーク・アクセス：能力はネットワーク全体にわたって利用可能であり、能力はまた、異種シン・クライアントまたはシック・クライアント・プラットフォーム（例えば携帯電話機、ラップトップ、およびＰＤＡ）による使用を推進する標準的なメカニズムを介してアクセスされる。
【００１７】
リソース・プーリング：プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用する複数の消費者に役立つようにプールされ、種々の物理および仮想リソースが、需要に従って動的に割当ておよび再割当てされる。消費者は一般に、提供されるリソースの正確な場所に関する制御または知識を有さないが、より高レベルの抽象化（例えば国、州、またはデータセンタ）で場所を指定できる場合があるという点で、ある意味での場所独立性がある。
【００１８】
迅速な弾性：能力を迅速かつ弾力的に、場合によっては自動的にプロビジョニングして素早くスケールアウトし、迅速に解放して素早くスケール・インすることができる。消費者にとっては、プロビジョニングに利用可能な能力は、しばしば無限に見え、いつでもどんな量でも購入することができる。
【００１９】
測定されるサービス：クラウド・システムは、サービス・タイプ（例えばストレージ、処理、帯域幅、および有効なユーザ・アカウント）にとって適切な何らかの抽象化レベルで計測能力を利用することによって、リソース使用を自動的に制御および最適化する。リソース使用は、監視、制御、および報告することができ、利用されるサービスのプロバイダと消費者の両方に対するトランスペアレンシをもたらすことができる。さらに、本発明は、リアルタイムの最適化されたリソース割振りのために、かつ最小限に抑えられた動作コストおよびエネルギー使用で、個別のリソース割振りおよび構成を進行中に調整するためのクライアント自己監視を可能にする。
【００２０】
サービス・モデルは以下のとおりである。
ソフトウェア・アズ・ア・サービス（ＳａａＳ）：消費者に提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用する能力である。アプリケーションへのアクセスは、ウェブ・ブラウザなどのシン・クライアント・インタフェースを介して様々なクライアント・デバイスから可能である（例えばウェブベースの電子メール）。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション能力も含めた、基礎をなすクラウド・インフラストラクチャを管理することも制御することもしない（限られたユーザ特有アプリケーション構成設定については例外である可能性がある）。
【００２１】
プラットフォーム・アズ・ア・サービス（ＰａａＳ）：消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者によって作成または取得されたアプリケーションを、クラウド・インフラストラクチャ上に展開する能力である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含めた、基礎をなすクラウド・インフラストラクチャを管理することも制御することもしないが、展開されたアプリケーションに対する制御、およびおそらくはアプリケーション・ホスティング環境構成に対する制御を有する。
【００２２】
インフラストラクチャ・アズ・ア・サービス（ＩａａＳ）：消費者に提供される能力は、処理、ストレージ、ネットワーク、および他の根本的なコンピューティング・リソースをプロビジョニングする能力であり（ハイパーバイザと呼ばれることもある）、消費者は任意のソフトウェアを展開および実行することができ、このソフトウェアには、オペレーティング・システムおよびアプリケーションを含めることができる。消費者は、基礎をなすクラウド・インフラストラクチャを管理することも制御することもしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御を有し、おそらくは、精選されたネットワーキング・コンポーネント（例えばホスト・ファイアウォール）の限られた制御を有する。
【００２３】
展開モデルは以下のとおりである。
プライベート・クラウド：クラウド・インフラストラクチャは、組織に対してのみ運営される。このクラウド・インフラストラクチャは、この組織または第三者によって管理されてよく、敷地内または敷地外に存在してよい。
【００２４】
コミュニティ・クラウド：クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有の関心（例えば任務、セキュリティ要件、ポリシ、およびコンプライアンスに関する考慮事項）を有する特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、これらの組織または第三者によって管理されてよく、敷地内または敷地外に存在してよい。
【００２５】
パブリック・クラウド：クラウド・インフラストラクチャは、一般大衆または大規模な業界団体が利用できるようにされ、クラウド・サービスを販売する組織によって所有される。
【００２６】
ハイブリッド・クラウド：クラウド・インフラストラクチャは、２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の合成物である。これらのクラウドは、独自のエンティティのままだが、データおよびアプリケーションの可搬性を可能にする標準化された技術またはプロプラエタリ技術によって１つにまとめられる（例えば、クラウド間の負荷平衡のためのクラウド・バースティング）。
【００２７】
クラウド・コンピューティング環境はサービス指向であり、その焦点は、ステートレス性、低カップリング、モジュラー性、およびセマンティックな相互運用性に合わせられる。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを構成するインフラストラクチャがある。
【００２８】
次に図１を参照すると、クラウド・コンピューティング・ノードの例の概略図が示されている。クラウド・コンピューティング・ノード１０は、適切なクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に述べる本発明の実施形態の使用または機能の範囲に関してどんな限定を示唆するものともしない。ともかく、クラウド・コンピューティング・ノード１０は、前述の機能のいずれかとの関連で実現されること、または前述の機能のいずれかを実施すること、あるいはその両方が可能である。
【００２９】
クラウド・コンピューティング・ノード１０中には、コンピュータ・システム／サーバ１２があり、このコンピュータ・システム／サーバ１２は、他の多くの汎用または専用コンピューティング・システム環境または構成で動作する。コンピュータ・システム／サーバ１２と共に使用するのに適する可能性のある周知のコンピューティング・システム、環境、または構成、あるいはこれらの全ての例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能な消費者電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および、以上のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【００３０】
コンピュータ・システム／サーバ１２は、プログラム・モジュールなど、コンピュータ・システムによって実行されるコンピュータ・システム実行可能命令の一般的なコンテキストで記述することができる。一般に、プログラム・モジュールは、特定のタスクを実施するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含む場合がある。コンピュータ・システム／サーバ１２は、分散クラウド・コンピューティング環境で実践されてよく、その場合、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ・システム記憶媒体中に位置することができる。
【００３１】
図１に示すように、クラウド・コンピューティング・ノード１０中のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形で示されている。コンピュータ・システム／サーバ１２のコンポーネントは、１つまたは複数のプロセッサまたは処理ユニット１６と、システム・メモリ２８と、システム・メモリ２８を含めた様々なシステム・コンポーネントをプロセッサ１６に結合するバス１８とを含んでよいが、これらに限定されない。
【００３２】
バス１８は、様々なバス・アーキテクチャのいずれかを使用する、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサ・バスまたはローカル・バスを含めた、いくつかのタイプのバス構造のうちのいずれか１つまたは複数を表す。限定ではなく例として、このようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（MicroChannel Archtecture）バス、ＥＩＳＡ（EnhancedISA）バス、ｖｅｓａ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnects）バスを含む。
【００３３】
コンピュータ・システム／サーバ１２は通常、様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ１２からアクセス可能な任意の利用可能な媒体とすることができ、揮発性と不揮発性媒体、取外し可能と非取外し可能媒体の両方を含む。
【００３４】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含んでよい。コンピュータ・システム／サーバ１２はさらに、他の取外し可能／非取外し可能、揮発性／不揮発性コンピュータ・システム記憶媒体を備えてよい。例に過ぎないが、非取外し可能かつ不揮発性の磁気媒体（図示せず。通常は「ハード・ドライブ」と呼ばれる）に対して読取りおよび書込みするためのストレージ・システム３４が設けられてもよい。図示しないが、取外し可能かつ不揮発性の磁気ディスク（例えば「フロッピー（Ｒ）・ディスク」）に対して読取りおよび書込みするための磁気ディスク・ドライブ、および、取外し可能かつ不揮発性の光学ディスク（ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光学媒体など）に対して読取りまたは書込みするための光学ディスク・ドライブが設けられてもよい。このような場合、各ドライブは、１つまたは複数のデータ媒体インタフェースによってバス１８に接続されてよい。後でさらに図示および記述するように、メモリ２８は、本発明の実施形態の機能を実施するように構成された１組（例えば少なくとも１つ）のプログラム・モジュールを有する少なくとも１つのプログラム製品を含んでよい。
【００３５】
１組（少なくとも１つ）のプログラム・モジュール４２を有するプログラム／ユーティリティ４０が、限定ではなく例としてメモリ２８に記憶されてよく、また、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも記憶されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはこれらの何らかの組合せは、ネットワーキング環境の一実装形態を含んでよい。プログラム・モジュール４２は一般に、本明細書に述べる本発明の実施形態の機能または方法あるいはその両方を実施する。
【００３６】
コンピュータ・システム／サーバ１２はまた、１つまたは複数の外部デバイス１４と通信することができる。外部デバイス１４は、キーボード、ポインティング・デバイス、表示装置２４等；ユーザがコンピュータ・システム／サーバ１２と対話できるようにする１つもしくは複数のデバイス；または、コンピュータ・システム／サーバ１２が１つもしくは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えばネットワーク・カード、モデム等）；あるいはこれらの全てなどである。このような通信は、入出力（Ｉ／Ｏ）インタフェース２２を介して行うことができる。さらに、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ）、または公衆ネットワーク（例えばインターネット）、あるいはこれらの全てなど、１つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ２０が、バス１８を介して、コンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示していないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム／サーバ１２と共に使用してもよいことを理解されたい。例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００３７】
次に図２を参照すると、例示的なクラウド・コンピューティング環境５０が示されている。図示のように、クラウド・コンピューティング環境５０は、１つまたは複数のクラウド・コンピューティング・ノード１０を含み、クラウド消費者によって使用されるローカル・コンピューティング・デバイス（例えばパーソナル・ディジタル・アシスタント（ＰＤＡ）もしくはセルラー電話機５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはこれらの全て）が、このクラウド・コンピューティング・ノード１０と通信することができる。ノード１０は、相互と通信することができる。これらは、前述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはこれらの組合せなど、１つまたは複数のネットワーク中で、物理的または仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境５０は、クラウド消費者がローカル・コンピューティング・デバイス上にリソースを維持する必要のない、インフラストラクチャ、プラットフォーム、またはソフトウェア・アズ・サービス、あるいはこれらの全てを提供することができる。図２に示すコンピューティング・デバイス５４Ａ〜Ｎのタイプは例示に過ぎないものとし、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意のタイプのネットワークまたはネットワーク・アドレッサブル接続あるいはその両方を介して（例えばウェブ・ブラウザを使用して）、任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
【００３８】
次に図３を参照すると、クラウド・コンピューティング環境５０（図２）によって提供される１組の機能抽象化レイヤが示されている。図３に示すコンポーネント、レイヤ、および機能は例示に過ぎないものとし、本発明の実施形態はこれらに限定されないことを、あらかじめ理解されたい。図示のように、以下のレイヤおよび対応する機能が提供される。
【００３９】
ハードウェアおよびソフトウェア・レイヤ６０は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム（一例ではＩＢＭ（Ｒ）ｚＳｅｒｉｅｓ（Ｒ）システム）、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャに基づくサーバ（一例ではＩＢＭ  ｐＳｅｒｉｅｓ（Ｒ）システム）、ＩＢＭ  ｘＳｅｒｉｅｓ（Ｒ）システム、ＩＢＭ  ＢｌａｄｅＣｅｎｔｅｒ（Ｒ）システム、ストレージ・デバイス、ネットワーク、およびネットワーキング・コンポーネントが挙げられる。ソフトウェア・コンポーネントの例としては、ネットワーク・アプリケーション・サーバ・ソフトウェア（一例ではＩＢＭ  ＷｅｂＳｐｈｅｒｅ（Ｒ）アプリケーション・サーバ・ソフトウェア）、およびデータベース・ソフトウェア（一例ではＩＢＭ  ＤＢ２（Ｒ）データベース・ソフトウェア）が挙げられる。（ＩＢＭ  ｚＳｅｒｉｅｓ、ｐＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、およびＤＢ２は、世界中の多くの管轄で登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。）
【００４０】
仮想化レイヤ６２は、仮想エンティティの以下の例を提供できる抽象化レイヤを提供する。すなわち、仮想サーバ、仮想ストレージ、仮想ネットワーク（仮想プライベート・ネットワークを含む）、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントを提供することができる。
【００４１】
一例では、管理レイヤ６４は、以下に述べる機能を提供することができる。リソース・プロビジョニング７０は、クラウド・コンピューティング環境内でタスクを実施するのに利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計測および価格設定は、クラウド・コンピューティング環境内でリソースが利用されるのに伴うコスト追跡、およびこれらのリソースの消費に対する課金または送り状送付を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含む場合がある。セキュリティは、クラウド消費者およびタスクに関する識別検証、ならびに、データおよび他のリソースのための保護を提供する。ユーザ・ポータルは、クラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス・レベル管理は、必要とされるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割振りおよび管理を提供する。サービス・レベル・アグリーメント（ＳＬＡ）プランニングおよび履行は、ＳＬＡに従って、将来必要とされることが予期されるクラウド・コンピューティング・リソースの事前構成および調達を提供する。
【００４２】
ワークロード・レイヤ６６は、クラウド・コンピューティング環境を利用できる対象となる機能の例を提供する。このレイヤから提供できるワークロードおよび機能の例としては、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想教室教育の送達、データ分析処理、トランザクション処理、ならびにモバイル・デスクトップが挙げられる。
【００４３】
図４に、本発明の好ましい一実施形態による、テンプレートをリソース要求にマッチさせるための、コストを意識したクラスタリングのためのリソース・プロビジョニング・ユニット７０の例を示す。特に、コストを意識したこの好ましいクラスタリング技法は、非常に異なり変動するコスト（例えば、処理力、メモリ、およびディスク空間の間の、大きいコスト差）を個別に有する場合のあるリソースの、集合的なコストを考慮する。本質的には、各サーバ要求に対する最小コスト・マッチを決定した後、所与のテンプレートの満たされる要求の数に従って、テンプレートのリストを精緻化する。本発明は、クラウド・コンピューティングに適用され、ＶＭテンプレートの数と、満たされるサーバ要件のレベルと、要件を満たすための非常に異なる可能性のあるコストとの間のトレードオフをプロバイダが分析できるようにする。
【００４４】
好ましいリソース・プロビジョニング・ユニット７０は、構成ストレージ７２、サーバ要求ストレージ７４、入力パラメータ・ストレージ７６、テンプレート・ストレージ７８、およびテンプレート・ジェネレータ８０を備える。構成ストレージ７２、サーバ要求ストレージ７４、入力パラメータ・ストレージ７６、テンプレート・ストレージ７８は、個別のストレージ・ユニットであってもよく、または単一のストレージに、例えば図１のストレージ３４に記憶されてもよい。好ましいテンプレート・ジェネレータ８０は、サーバ要求のセットに対するコンピューティング要件を満たすのに必要なテンプレートの数を選択および決定する、コストを意識した好ましいクラスタリング技法を実施する。
【００４５】
構成ストレージ７２は、リソース・コストおよび関連する属性を含む。例えば、仮想２．１ＧＨｚ中央処理装置（ＣＰＵ）、１テラバイト（１ＴＢ）のディスク・ストレージ、および２ＧＢのＲＡＭを含むサーバ・テンプレートのエントリが、１時間当たり０．０８ドルのコストを指定する場合がある。好ましくは、サーバ要求ストレージ７４は、ＣＰＵ（またはＣＰＵ均等物、例えばデュアル・コア６４ビットｉ８６）、メモリ、およびディスク空間などのリソース・タイプによって定義される、前に受け取られたサーバ要求を含むサーバ要求データベースを含む。入力パラメータ・ストレージ７６は、テンプレート・ジェネレータ８０が全てのテンプレートをリストするように「最良テンプレート」オプションが選択されるかどうかの指示を記憶する。または、上位ｋテンプレート・オプションが選択されるときにのみ使用される、値ｋおよびテンプレート・パーセンテージを記憶する。好ましいテンプレート・ジェネレータ８０は、利用可能な組合せの数から、テンプレートの初期セットを生成する。次いで、テンプレート・ジェネレータ８０は、コストを意識した好ましいクラスタリング技法を実施して、最小コスト・マッチでサーバ要求要件を満たすのに必要なテンプレートの数を決定する。各サーバ要求に対して最小コスト・マッチを計算した後、テンプレート・ジェネレータ８０は、所与のテンプレートの満たされる要件の数に従ってテンプレートのリストを精緻化し、精緻化されたリストをテンプレート・ストレージ７８に記憶する。
【００４６】
好ましくは、サーバ要求は、サーバ要求ストレージ７４中の要求データベースに記憶され、各要求は、リソース・タイプ、例えばＣＰＵ、メモリ、およびディスクによって定義される。好ましいテンプレート・ジェネレータ８０は、例えば入力パラメータ・ストレージ７６中で定義される「最良テンプレート」オプションに基づいて、全てのサーバ要求需要を満たすためのテンプレートの完全なリストを生成する。別法として、好ましいテンプレート・ジェネレータ８０は、例えばやはり入力パラメータ・ストレージ７６中で定義される「上位ｋテンプレート」オプションを使用して、最も多いサーバ要求の要件を満たす上位ｋ個のテンプレートを生成する。
【００４７】
テンプレート・ジェネレータ８０は、全ての要求サーバ需要を満たすためのテンプレートの完全なリストから、各サーバ要件に対して最小コスト・マッチを計算する。これらの最小コスト・マッチから、テンプレート・ジェネレータ８０は、例えば満たされるパーセンテージまたは最低の全体コストによって、最も多いサーバ要求の要件を満たす上位ｋリストについてｋ（ｋ１，ｋ２，．．．，ｋｎ）を選択する。結果として得られる、最も頻繁に要求されるテンプレートのセットは、テンプレートのサブセットであり、総コストを示し、最終的なより小さいテンプレート・セットとして選択される。
【００４８】
図５に、好ましいテンプレート・ジェネレータ８０による上位ｋ個のテンプレートの選択の例８０Ａを示す。最初に、構成７２が、要求ストレージ７４中の各サーバ要件と比較されて、各要求に対する最小コスト・マッチ８６が決定される（８２）。次に、セット中の要件のうちの少なくとも１つについての最小限の要件を満たすことのできないテンプレートがあれば廃棄される（８８）。残りのテンプレートは、マッチする要求の数に従ってソートされ（９０）、ソートされたテンプレートは記憶される（９２）。上位ｋリスト９４およびソートされたテンプレート９２を使用して、各ｋについてマッチが決定される（９６）。各ｋについての満たされる要求の数、およびコストは、例えば表示に向けて、出力に渡される（９８）。
【００４９】
したがってまず、例えばＣＰＵ、メモリ、およびディスク要件７４を、対応するリストされたターゲット構成７２中の最も小さい値を有するテンプレートとマッチさせることによって、各要求に対する最小サーバ要件マッチが決定される（８２）。単純な例として、ＣＰＵキャパシティ・ターゲット・リストにより、１，２，４，８，１２，１６，．．．，ｍａｘＣＰＵ個のコアを選択することができ、ｍａｘＣＰＵは、利用可能な最大数である。同様に、選択可能なメモリとディスク空間は両方とも、それぞれ、１，２，４，８，１２，１６，３２，．．．，ｍａｘｍｅｍギガバイト（ＧＢ）、および１００，２００，３００，４００，５００，６００，．．．，ｍａｘｄｉｓｋＧＢとすることができる。この例ではＣＰＵ、メモリ、およびディスク・キャパシティが使用されているが、通常、好ましい一解決法では、追加のリソース、例えばネットワーク帯域幅などが考慮される。
【００５０】
各サーバ要件に対する最小コスト・マッチ８６は、リストされたリソース（例えばＣＰＵ、メモリ、およびディスク）に基づいて各サーバの要件を満たすためのコストの下限をもたらす。さらに、好ましいテンプレート・ジェネレータ８０は、最小コスト８６を使用して、全ての要求を最小コストで満たすことができるかどうか判定する。本明細書では、最小コスト・テンプレートとの各マッチを「最小コスト・マッチ」と呼ぶ。
【００５１】
本発明の好ましい一実施形態により、図６に、最小コスト・マッチを見つけること（８２）の例を示し、図７に、最小コスト・マッチをリストするために作成されるリソース・マッチ・テーブル８６の例を示す。最小コスト・マッチを見つけること（８２）は、最小構成コスト・リスト８２４およびリソース・マッチ・テーブル８６を作成することで開始する（８２２）。リソース・マッチ・テーブル８６は、この例では、コアの数８６０、要求されるメモリ８６２、および要求されるディスク空間８６４のフィールドを含む。要求７４が、全ての要求が選択される（８２８）まで、要求された順に選択される（８２６）。未選択の要求がある限り、現在選択されている要求がターゲット・リソース・リスト８３２と比較されて（８３０）、要求要件にマッチする最小リソースを含むテンプレートが見つけられる。リソース・マッチはリソース・マッチ・テーブル８６に入力され、リソース・コストのリスト８３４を使用してマッチのコストが決定される（８３６）。マッチするテンプレートのコストは最小構成コスト・リスト８２４に入力され、次の要求が選択される（８２６）。全ての要求が選択されると（８２８）、後続のフィルタリングおよび分析に向けて、マッチした要求８６および関連するコスト８２４が返される（８３８）。
【００５２】
各テンプレートは、ＣＰＵ、メモリ、およびディスク空間の、割振り可能な組合せを定義する。したがって、マッチした各要求（図５の８６）に対して関連するコスト（図６の８２４）が決定された後、使用されないテンプレート（例えば複製）が廃棄される（８８）。その結果、残りの一意のテンプレートのセットは、少なくとも１つの要求を満たし、さらに、あらゆる要求は、少なくとも１つのテンプレートによって満たされ得る。また、通常はいくつかの単一テンプレートを使用して複数の要求が満たされる場合があり、どんな要求も満たさない他のテンプレートは通常は使用されない場合がある。しかし、最小コスト・マッチ８６から選択された一意のテンプレートのセットは、全ての要求を満たすためのテンプレートを含む（８８）。
【００５３】
次に、選択されたテンプレート・セットは、選択された基準に従って、例えば、昇順のストレージ、昇順のメモリ、ＣＰＵコアによって、または、好ましくは、各テンプレートによって満たされる降順の要求数によって、ソートされる（９０）。したがって、少なくとも１つのマッチを有するテンプレートのリストを収集して（８８）リストをソートすると（９０）、好ましいテンプレート・ジェネレータ８０は、要求のリストをフィルタにかけて、様々な数の最も頻繁なまたは上位の要求を選択（９６）する際の助けとする。これにより、ｎ個のテンプレート・リスト、上位ｋ個のテンプレートのｎ個のリスト、または上位ｋリストがもたらされる。好ましいテンプレート・ジェネレータ８０は、上位ｋリストを使用して、各サーバに対する最小リソース・マッチを識別しリストする。
【００５４】
したがって、図８に示すように、好ましいテンプレート・ジェネレータ（図４の８０）は、上位ｋリストに対する要求を最小と最大で括ることによって、最終的なテンプレート・リスト７８を生成する（９６）。特に、好ましいテンプレート・ジェネレータ８０は、満たすことのできない要求、または、最小コストで、および最小コストよりも高いコストで満たすことのできる要求の数を、リストごとに決定する。
【００５５】
最初に、好ましいテンプレート・ジェネレータ８０は、上位テンプレートが満たす要求の数（例えば５、１０、１５、２０、２５）について、上位ｋ要求テーブル９８を作成する（９６０）。ｋの第１の値（例えば５、１０、１５、２０、２５）が、上位ｋリスト９４から選択される（９６２）。第１の要求が、要求ストレージ７４から取り出される（９６４）。次いで、選択された要求が、現在の上位ｋリスト中のテンプレートと比較されて（９６６）、最小（コスト）であろうとより大きい（より高い）（コスト）であろうとテンプレートのいずれかが要求を満たすかどうか、または上位ｋ個のテンプレートのうちのどれによっても要求を満たすことができないかどうかが判定される。これを繰り返し（９６８）、全ての要求が比較されるまで（９６８）次の要求を選択して（９６４）比較する（９６６）。次に、これらのテンプレートによって満たされる要求および満たされない要求の数を示す現在の値ｋについて、上位ｋ要求テーブル９８中にエントリが作成される（９７０）。リストされる上位ｋの値９４がまだある（９７２）場合は、９６２に戻り、次の値が選択され、上位ｋ個のテンプレートによって満たされる要求および満たされない要求の数が決定される（９６２〜９７０）。そうでない場合は、ｋの全ての値が選択されたとき（９７２）、上位ｋ要求テーブル９８が、最終的なテンプレート・リストとして返される（７８）。好ましいテンプレート・ジェネレータ８０は、最良の上位ｋリスト（例えば、最小ｋリスト・コストによって示される収穫逓減ポイント）を決定するためのトレードオフ分析において、この最終的なテンプレート・リスト７８を使用する。
【００５６】
図９に、ｋ＝５、１０、１５、２０、２５、および８９（すなわち全てのテンプレート）の場合に、７４７個のサーバ要求のセットに対して本発明を適用した例を示す。
この例は、上位ｋ個のテンプレートによって最小コストでマッチしたパーセンテージ（下）、最大コストでマッチしたパーセンテージ（真ん中）、および満たされないパーセンテージ（上）を含む。
【産業上の利用可能性】
【００５７】
したがって、本発明を適用することにより、高価なリソース・キャパシティ（例えば処理力、メモリ、およびディスク空間）のオーバープロビジョニングとアンダープロビジョニングの両方が低減される。さらに、割振り可能なリソースは、非常に異なり変動するコストを個別に有する場合があるので、コストを意識した好ましいクラスタリング技法は、各テンプレート中のリソースの集合的なコストに基づいてテンプレートを選択する。このように、集合的なコストに従ってテンプレートを生成および編成することにより、最適なコストでサーバ要件を満たす最低コストのテンプレートがいくつか選択される。さらに、生成されたテンプレート・リストは、維持されるテンプレートの数と、サーバごとに満たされる要求の数と、これらの要求を満たすコストとの間のトレードオフを分析するのを容易にする。
【００５８】
本発明を好ましい実施形態の点から述べたが、添付の請求項の主旨および範囲内で変更を加えて本発明を実践できることは、当業者なら認識するであろう。このような全ての変形および修正も、添付の特許請求の範囲内に含まれるものとする。したがって、例および図面は、限定ではなく例示と見なすべきである。
【図１】
0006025856.tif 000002
【図２】
0006025856.tif 000003
【図３】
0006025856.tif 000004
【図４】
0006025856.tif 000005
【図５】
0006025856.tif 000006
【図６】
0006025856.tif 000007
【図７】
0006025856.tif 000008
【図８】
0006025856.tif 000009
【図９】
0006025856.tif 000010