同様の番号は同様の要素を表す図面を参照して、例示的実施形態の態様が説明される。
図1は、本発明の例示的実施形態に従って、分散されたコンピューティングリソースを割り振り及び管理するシステム100を描いたブロック図である。システム100は、図2〜図9及び図11に示された方法を参照してより詳細に論議される。
図2は、本発明の例示的実施形態に従って、分散されたコンピューティングリソースを割り振り及び管理する方法200を描いたフローチャートである。方法200は、図1及び図2を参照して説明される。
1つの例示的実施形態によれば、分散されたコンピューティングリソースは、企業組織のリソースであり得る。この場合、リソースのユーザは組織の構成員である。あるいは、分散されたコンピューティングリソースは、そのリソースを割り振る中央システムに結合された多数の組織のリソースであり得る。
図2のステップ205で示されるように、リソース仲介者102は、1つ又は複数のアプリケーションプログラムを作動させるために利用可能なリソース能力を識別するため、コンピューティングサービスを提供する分散されたコンピューティングリソースを監視する。例示的実施形態において、分散されたコンピューティングリソースは、物理コンピューティングリソース103、例えば、計算構造104、ネットワーク構造106、及び記憶構造108を備え得る。計算構造104、ネットワーク構造106、及び記憶構造108の各々は、サービスを提供するように構成された1つ又は複数の仮想リソース109を備え得る。例えば、図1に示されるように、計算構造104は仮想計算構造C1及びC2を備え、ネットワーク構造106は仮想ネットワーク構造N1及びN2を備え、記憶構造108は仮想記憶構造S1及びS2を備える。
例示的実施形態において、リソース仲介者102は、分散されたコンピューティング環境で作動して仮想リソース109と取引市場112との間のインタフェースとして機能するソフトウェアモジュールを備え得る。
ステップ210において、リソース仲介者102は、各リソースについて性能単位当たりの指定価格で利用可能仮想リソース109を提供するオファーを創出する。そのようなオファーは、本明細書では「リソースオファー110」110と呼ばれる。構造104、106、108の各々について、1つ又は複数のリソースオファー110が創出され得る。例えば、図1に示されるように、リソースオファー110は、計算構造C1の3つのオファー、計算構造C2の2つのオファー、ネットワーク構造N1の3つのオファー、ネットワーク構造N2の2つのオファー、記憶構造S1の3つのオファー、及び記憶構造S2の2つのオファーを備える。ステップ210は、この後で図3を参照して更に詳細に説明される。
次いで、ステップ215において、リソース仲介者102は、リソースオファー110を取引市場112へ通信する。例示的実施形態において、取引市場112は、分散されたコンピューティング環境で作動してリソース仲介者102と要件仲介者114との間のインタフェースとして機能するソフトウェアモジュールを備え得る。
ステップ220において、要件仲介者114はアプリケーションプログラムの作動に要求されるサービスレベルリソース要件を識別する。例示的実施形態において、要求されたリソースは、コンピューティング、ネットワーク、及び記憶リソース、例えば、図1に示される1つ又は複数の計算構造104、ネットワーク構造106、及び記憶構造108を備え得る。アプリケーションプログラムは、良好に確立されたアーキテクチャ、例えば、正統的アプリケーションアーキテクチャ116に適合し得る。図1に示される例示的な正統的アプリケーションアーキテクチャは、正統的アーキテクチャAとして示されるメッセージハブ、正統的アプリケーションアーキテクチャBとして示されるn階層アプリケーション、及び正統的アプリケーションアーキテクチャCとして示される計算施設を備える。他のアプリケーションアーキテクチャは本発明の範囲の中に含まれる。ステップ220は、この後で図4を参照して更に詳細に説明される。
例示的実施形態において、要件仲介者114は、分散されたコンピューティング環境で作動してアプリケーションプログラムと取引市場112との間のインタフェースとして機能するソフトウェアモジュールを備え得る。
ステップ225において、アプリケーションプログラムのサービスレベル要件を満たすために要求されるリソースの単位を購入するビッドが創出される。そのようなビッドは、本明細書では「要件ビッド118」と呼ばれる。1つ又は複数の要件ビッド118が各アプリケーションプログラムについて創出され得る。例えば、図1に示されるように、要件ビッド118は各正統的アーキテクチャA、B、Cについて計算構造へのビッド、ネットワーク構造へのビッド、及び記憶構造へのビッドを備える。ステップ225は、この後で図5を参照して更に詳細に説明される。
ステップ230において、要件仲介者114は要件ビッド118を取引市場112へ通信する。次いで、ステップ235において、取引市場112は、各アプリケーションプログラムへのリソースの経済的及び効率的割り振りを決定するため、リソースオファー110を要件ビッド118へマッチさせる。ステップ235は、この後で図6を参照して更に詳細に説明される。
ステップ240において、取引市場112は、マッチするオファー及びビッドに基づきアプリケーションプログラムに要求されるリソースを割り振る取引を完了する。ステップ240は、この後で図7を参照して更に詳細に説明される。
ステップ245において、アプリケーションプログラムの作動は、割り振られたリソースへ移行される。ステップ245は、この後で図8を参照して更に詳細に説明される。
ステップ250において、要件仲介者114は、割り振られたリソースの性能が、各アプリケーションプログラムのサービスレベル要件を満たすことを保証するため、割り振られたリソースの性能及び各アプリケーションプログラムのサービスレベル要件を監視する。ステップ250は、この後で図10を参照して更に詳細に説明される。
ステップ255において、ステップ250で完了された性能監視に基づき、要件仲介者114は、割り振られたリソースが、特定のアプリケーションプログラムのサービスレベル要件に関して十分に利用されていないか又は十分に性能を発揮していないかを決定する。もしイエスであれば、方法200は、アプリケーションプログラムのサービスレベル要件を満たす新しいリソースを取得するため、ステップ225へ戻る。もし要件仲介者114が、ステップ255において、割り振られたリソースがアプリケーションプログラムのサービスレベル要件を満たしていると決定するならば、方法はステップ260へ分岐する。
ステップ260において、方法200は、アプリケーションプログラムの作動が完了しているかどうかを決定する。もし完了していなければ、方法200は、割り振られたリソースの性能及びアプリケーションプログラムのサービスレベル要件の監視を継続するため、ステップ250へ戻る。もし方法200が、ステップ260において、アプリケーションプログラムの作動が完了していると決定するならば、方法200は、割り振られたリソースからアプリケーションプログラムの作動が除去されるステップ265へ分岐する。
方法200は、図1のステップ270で示されるように、所定の期間にわたるリソース割り振りに基づいてリソースの維持、獲得、及び売却を管理することを更に含む。ステップ270は、この後で図11を参照して更に詳細に説明される。
図3は、図2のステップ210において参照されたように、本発明の例示的実施形態に従って、各仮想リソース109について性能単位当たりの指定価格で利用可能仮想リソース109を提供するオファーを創出する方法210を描いたフローチャートである。方法210は、図1及び図3を参照して説明される。
ステップ305において、リソース仲介者102は、アプリケーションプログラムによる使用に利用可能な物理的リソース103を選択する。例えば、リソース仲介者102は計算、ネットワーク、又は記憶リソース、例えば、計算構造104、ネットワーク構造106、及び記憶構造108を選択し得る。例示的実施形態において、リソース仲介者102は、利用されていない各リソースの過剰能力を識別するため、各リソースの使用を監視し得る。そのような過剰能力は、アプリケーションプログラムによる使用に利用可能なリソースとして識別され得る。
次いで、ステップ310において、リソース仲介者102は、アプリケーションプログラムによる使用に利用可能な、選択された物理的リソース103の量を識別する。例示的実施形態において、各リソースの量は、特定の製造者及び/又はコンポーネントを含めてハードウェアタイプ及び/又は構成、並びに各リソースの現在利用可能な過剰能力を備え得る。この点に関して、利用可能な物理的リソース103は、仮想リソース109、例えば、仮想計算構造C1及びC2、仮想ネットワーク構造N1及びN2、及び仮想記憶構造S1及びS2を創出するため、組み合わせられ得る。例えば、分散された場所で利用可能なコンピュータプロセッサは、アプリケーションプログラムによる使用に利用可能な仮想コンピューティングリソースを創出するため、統合され得る。代表的リソース能力は、コンピューティングリソースについてCPUサイクル、ネットワークリソースについて帯域幅、及び記憶リソースについてディスクスペース及び/又はメモリを備え得る。
利用可能なリソースの量は、各仮想リソース109に関連づけられた性能及び信頼度特性を更に備え得る。例えば、そのような特性は、実行時間、応答時間、結果の正確度(例えば、故障率)、利用可能性、信頼度、セキュリティ、又は仮想リソース109の性能を示す他の適切な特性を備え得る。
ステップ315において、リソース仲介者102は、アプリケーションプログラムによって使用される仮想リソース109を提供するため、オファーの中に含めるべき仮想リソース109の単位量を識別する。この点に関して、リソース仲介者102は、利用可能な仮想リソース109の最大量に達するまで、識別された単位の増分での割り振りに利用可能な、仮想リソース109の部分を識別し得る。もしリソース仲介者102が、ステップ310において、多数の仮想リソース109、例えば、仮想計算構造C1及びC2を識別したのであれば、リソース仲介者102は各仮想リソース109について単位量を識別し得る。
ステップ320において、アプリケーションプログラムによって使用される仮想リソース109を提供するため、オファーの中に含められる仮想リソース109の各単位について、価格が設定される。例示的実施形態において、リソース仲介者102は、リソースの精緻性、コストデータ、供給、需要、又はユーザによってリソース仲介者102へと入力されるか、完了されたリソース割り振り取引の履歴データに基づいてリソース仲介者102によって取得された他の経済データ入力に基づいて、仮想リソース109の単位当たりの価格を計算し得る。例えば、より精緻なリソースは、より精緻でないリソースよりも高価であり、高需要のリソースは低需要のリソースよりも高価であり得る。価格は、リソースがアプリケーションプログラムによって使用されるために販売される貨幣量を備え得る。あるいは、値は、実際の貨幣価値に基づかないリソースの認識価値を表し得る。例えば、認識価値は、ビジネス企業の内部で設定されたビジネス要件及び優先順位に基づき得る。
ステップ325において、リソース仲介者102は、アプリケーションプログラムによって使用される利用可能仮想リソース109を提供するため、1つ又は複数のリソースオファー110を生成する。リソースオファー110は、ステップ310〜320で取得された情報に基づいて、仮想リソース109、利用可能な仮想リソース109の量(能力及び性能を含む)、及び仮想リソース109の単位価格を指定し得る。
ステップ330において、リソース仲介者102は、他の仮想リソース109についてリソースオファー110を生成するかどうかを決定する。例えば、もしリソース仲介者102が、利用可能な計算構造104についてのみリソースオファー110を生成したのであれば、リソース仲介者102は、利用可能なネットワーク及び記憶構造106及び108についてリソースオファー110を生成すると決定し得る。この場合、方法210は、他のリソースについてリソースオファー110を生成するため、ステップ305へ戻る。もし方法210が、ステップ330において、他の仮想リソース109についてリソースオファー110を生成しないと決定するならば、方法210はステップ215(図2)へ分岐する。
図4は、図2のステップ220において参照されたように、本発明の例示的実施形態に従って、アプリケーションプログラムの作動に要求されるサービスレベル要件を識別する方法220を描いたフローチャートである。方法220は、図1及び図4を参照して説明される。
ステップ405では、アプリケーションプログラムが選択される。次いで、選択されたアプリケーションプログラムに対する特定のサービスレベル要件が、ステップ410〜435において識別される。
ステップ410では、アプリケーションプログラムを作動させるために利用可能な予算が識別される。例示的実施形態において、予算は、アプリケーションプログラムのユーザによって入力され、ユーザの予算制約を満たすように設計され得る。例えば、ユーザは、特定のプログラムに対する公知の財源に基づいて、アプリケーションプログラムの作動に利用可能な予算を入力し得る。他の例示的実施形態において、予算情報はアプリケーションプログラムの作動に関連づけられた値を備え得る。値は、アプリケーションプログラムの作動に必要なリソースを取得するため、ユーザが支払う意思のある貨幣量を備え得る。あるいは、値は、実際の貨幣価値に基づかないアプリケーションプログラムの認識価値を表し得る。例えば、認識価値は、分散されたコンピューティング環境の中で追加のアプリケーションプログラムを作動しているユーザ及び/又は他のユーザに対するアプリケーションプログラムの作動の優先順位に基づき得る。予算制約は、幾つかの代替形式、例えば、コストに関わらず利用可能な最良リソースを取得する命令、最小費用のリソースを取得する命令、指定総価格又はリソースの単位価格でリソースを取得する命令、又は他の適切な予算形式を介してリソースを取得する命令の形式で提供され得る。
ステップ415では、アプリケーションプログラムが作動しなければならない期間が識別される。例示的実施形態において、作動期間は、アプリケーションプログラムのユーザによって入力され、ユーザの予算及び顧客サービス制約を満たすように設計され得る。例えば、ユーザは、アプリケーションプログラムが作動しなければならない期間、例えば、24/7(一日当たり24時間、一週間に7日)、24/5(一日当たり24時間、一週間に5日)、月曜から金曜までの午前8:00〜午後5:00、又はアプリケーションプログラムが作動しなければならない他のいかなる適切な期間を入力し得る。ユーザは、予算制約に基づいて、指定された作動期間を更に調節し得る。例えば、ユーザは、アプリケーションプログラムの作動コストを低減するため、オフピーク期間でのアプリケーションプログラムの作動を指定し得る。
ステップ420〜435においては、コンピューティングリソース、ネットワークリソース、記憶リソース、及びアプリケーションプログラムを作動させるために要求される他のリソースが、それぞれ決定される。例示的実施形態によれば、ステップ420〜435は、特定の製造者及び/又はコンポーネントを含めてハードウェアタイプ及び/又は構成、並びに各リソースに要求される能力を識別することを備え得る。要求される代表的リソース能力は、コンピューティングリソースについてCPUサイクル、ネットワークリソースについて帯域幅、及び記憶リソースについてディスクスペース及び/又はメモリを備え得る。ステップ420〜435は、特定のパラメータ内でアプリケーションプログラムを作動させるため、各々の要求されるリソースについて性能特性を識別することを更に備え得る。例えば、そのような特性は、実行時間、応答時間、結果の正確度(例えば、故障率)、利用可能性、信頼度、セキュリティ、又はリソースの性能を示す他の適切な特性を備え得る。
例示的実施形態において、要件仲介者114は、所望されるようにアプリケーションプログラムを作動させるために必要な最小又は最適リソース要件に基づいて、要求されるリソースを決定し得る。この場合、要件仲介者114は、この情報をアプリケーションプログラムの仕様から直接取得し得る。あるいは、アプリケーションプログラムのユーザは、1つ又は複数のリソースの量を指定するため、所望の構成可能なセッティングを入力し得る。この点に関して、ユーザは所望のレベルのサービスを提供する特性を入力し、それを要件仲介者114はステップ420〜435において読み取り得る。
例示的実施形態によれば、サービスレベル要件は閾値又は範囲で表現され得る。例えば、要求される応答時間は1秒より少ない時間に設定され得るが、これはリソースの性能がサービスレベル要件の閾値を満たすかどうかの将来の決定を可能にする。代替の例としては、要求される応答時間が、範囲、例えば、0.5秒から1.5秒で設定され得ることである。この場合、リソースの応答時間が指定範囲内に入れば、リソースはそのサービスレベル要件を満たす。性能の閾値及び範囲は、各サービスレベル要件について指定され得る。
ステップ440において、方法220は、他のアプリケーションプログラムについてサービスレベル要件を識別すべきかどうかを決定する。もしイエスであれば、方法220は、サービスレベル要件を識別する他のアプリケーションプログラムを選択するため、ステップ405へ戻る。この点に関して、方法220は、多数のアプリケーションプログラムについてサービスレベル要件を識別し得る。例えば、図1に示される正統的アーキテクチャA、B、Cの1つを利用しているアプリケーションについて、サービスレベル要件が識別され得る。もし方法220が、ステップ440において、他のアプリケーションプログラムについてサービスレベル要件を識別しないと決定するならば、方法220はステップ225(図2)へ分岐する。
ステップ410〜435を参照して説明された特定のサービスレベル要件は、特定のアプリケーションプログラムの特定の要件及びアプリケーションプログラムのユーザ又は分散されたコンピューティングリソースの所有者の特定の要件に依存し得る。従って、サービスレベル要件は、ステップ410〜435において説明された品目の全部または部分集合を備えてもよく、追加のサービスレベル要件は本発明の範囲の中に含まれる。
図5は、図2のステップ225において参照されたように、本発明の例示的実施形態に従って、アプリケーションプログラムのサービスレベル要件を満たすために要求されるリソースの単位を取得するビッドを創出する方法225を描いたフローチャートである。方法225は、図1及び図5を参照して説明される。
ステップ505において、要件仲介者114は、1つ又は複数の要件ビッド118を創出する最初のアプリケーションプログラムを選択する。そして、ステップ510において、要件仲介者114は、選択されたアプリケーションプログラムの作動に要求される最初のリソースを選択する。例えば、要件仲介者114は、アプリケーションプログラムの作動に要求される計算、ネットワーク、又は記憶リソースの1つを選択し得る。
ステップ515において、要件仲介者114は、図4のステップ415〜435において決定されたサービスレベル要件に基づいて、選択されたリソースについてサービスレベル要件を読み取る。追加的に、ステップ520において、要件仲介者114は、図4のステップ410において決定された予算に基づいて、アプリケーションプログラムを作動させるための予算制約を示す予算情報を読み取る。
次いで、ステップ525において、要件仲介者114は、サービスレベル要件及び利用可能な予算に基づいて、アプリケーションプログラムの作動について、選択されたリソースを取得するために支払う、選択されたリソースの単位当たりの価格を設定する。例示的実施形態において、要件仲介者114は、ユーザによって要件仲介者114へと入力されるか、完了されたリソース割り振り取引の履歴データに基づいて要件仲介者114によって取得されたコストデータ、供給、需要、又は他の経済データに基づいて、リソースの単位当たり価格を計算し得る。要件仲介者114は、コストに関わらず利用可能な最良リソースを取得する命令、最小費用リソースを取得する命令、指定総価格又はリソースの単位当たり価格でリソースを取得する命令、又は予算情報及びアプリケーションプログラムの優先順位に依存して、他の適切な予算形式を介してリソースを取得する命令に基づいて、単位当たり価格を更に設定し得る。
ステップ530において、要件仲介者114は、選択されたアプリケーションプログラムによって使用される選択されたリソースを取得するため、1つ又は複数の要件ビッド118を生成する。要件ビッド118は、ステップ515〜525で取得された情報に基づいて、リソース、リソースが満たさなければならないサービスレベル要件、及びユーザがリソースを取得するために支払う単位価格を指定し得る。前に論議されたように、単位価格は実際の貨幣価値又は認識価値を備え得る。
ステップ535において、要件仲介者114は、アプリケーションプログラムを作動するために必要な他のリソースについて要件ビッド118を生成すべきかどうかを決定する。例えば、もし要件仲介者114が計算リソースについてのみ要件ビッド118を生成したのであれば、要件仲介者114は、ネットワーク又は記憶リソースについて要件ビッド118を生成すると決定し得る。この場合、方法225は、他のリソースについて要件ビッド118を生成するため、ステップ510へ戻る。もし方法225が、ステップ535において、他のリソースについて要件ビッド118を生成しないと決定するならば、方法225はステップ540へ分岐する。
次いで、ステップ540において、要件仲介者114は、他のアプリケーションプログラムについて要件ビッド118を生成すべきかどうかを決定する。もしイエスであれば、方法225は、他のアプリケーションプログラムについて要件ビッド118を生成するため、ステップ505へ戻る。もし方法225が、ステップ540において、他のアプリケーションプログラムについて要件ビッド118を生成しないと決定するならば、方法225はステップ230(図2)へ分岐する。
図6は、図2のステップ235において参照されたように、本発明の例示的実施形態に従って、アプリケーションプログラムによって使用される仮想リソース109を取得するため、リソースオファー110を要件ビッド118へマッチさせる方法235を描いたフローチャートである。方法235は、図1及び図6を参照して説明される。
ステップ602において、取引市場112は、選択されたアプリケーションプログラムを作動させるために利用可能なリソースを識別するアプリケーションプログラムを選択する。そして、ステップ605において、取引市場112は、選択されたアプリケーションプログラムを作動させるために要求されるリソースを選択する。更に具体的には、もし選択されたアプリケーションプログラムの作動に多数のリソースが要求されるならば、方法235は、ステップ605において、それらのリソースの1つを選択し、これによって、方法235が、選択されたリソースについてリソースオファー110を要件ビッド118へマッチさせることが可能になる。次いで、この後で説明されるように、マッチングステップは、アプリケーションプログラムの作動に必要な他のリソースについて反復され得る。
ステップ610において、取引市場112は、選択されたアプリケーションプログラムについて、選択されたリソースの単位を購入するための要件ビッドを選択する。次いで、ステップ615において、取引市場112は、選択された要件ビッドの中で指定されたサービスレベル要件及び価格パラメータで仮想リソース109を提供するリソースオファーが存在するかどうかを決定する。従って、ステップ620において、取引市場112は、そのようなマッチするオファーが存在するかどうかを決定する。もしイエスであれば、方法235はステップ630へ分岐する。もしそうでなければ、方法235はステップ625へ分岐する。このステップ625において、取引市場112は、マッチするオファーが識別されるまで、リソース及び要件仲介者102及び114がリソースオファー110及び/又は選択された要件ビッドを改訂することを許可する。方法235は、次いでステップ630へ進む。
選択された要件ビッドとマッチするリソースオファー110を識別するため取引市場112によって採用される方法は、経済市場で商品を割り振る任意の適切な形式を備え得る。例えば、取引市場112は、商品市場モデル、公示価格モデル、入札/契約ネットモデル、オークションモデル(逆競りモデルを含む)、独占/寡占モデル、及び/又はビッド基礎比例リソース共有モデルのような方法を利用し得る。これらの例示的実施形態において、取引市場112は、市場清算価格で及び選択された要件ビッドの中で指定された予算パラメータ内でリソースを効率的に割り振るため、経済市場を作動させる。
選択された要件ビッドの中で指定された予算パラメータを考慮するとき、取引市場112は、要件ビッドを満たす最良のリソースオファーを識別するため、リソースオファーを比較し得る。例えば、もし多数のリソースオファーが適当なタイプのリソースをオファーするならば、取引市場112は、予算制約、例えば、コストに関わらず利用可能な最良リソースを取得する要件ビッドの命令、最小費用リソースを取得する要件ビッドの命令、指定総価格又はリソースの単位当たり価格でリソースを取得する要件ビッドの命令、又は他の適切な予算形式を介してリソースを取得する要件ビッドの命令のもとで、最良のリソースオファーを識別し得る。
ステップ630において、取引市場112は、マッチするリソースオファーを、選択された要件ビッドへリンクする。次いで、ステップ635において、取引市場112は、選択されたリソースの追加の単位が、選択されたアプリケーションプログラムを作動するために要求されるかどうかを決定する。例えば、もしマッチするリソースオファーがサービスレベル要件を満たすことを要求されるリソースの一部分のみを提供するならば、取引市場112は、選択されたリソースの追加の単位が要求されると決定し得る。もしイエスであれば、方法235は、選択されたリソースの単位を指定価格で購入する他の要件ビッドを選択するため、ステップ610へ戻る。新しく選択された要件ビッドは、前に選択された要件ビッドの改訂版であり得るが、選択されるリソースの量は、マッチするリソースオファーによって提供されたリソースの量に等しい量だけ低減される。
ステップ635に戻って、もし選択されたリソースの追加の単位が要求されなければ、方法235はステップ640へ分岐する。ステップ640において、取引市場112は、選択されたアプリケーションプログラムを作動させるために他のリソースが要求されるかどうかを決定する。例えば、もし取引市場112が、計算リソースについてのみ、マッチするリソースオファー110を識別したならば、取引市場112は、アプリケーションプログラムを作動させるために必要なネットワーク又は記憶リソースについて、マッチするリソースオファー110を識別すると決定し得る。この場合、方法235は、他のリソースについてマッチするリソースオファー110を識別するため、ステップ605へ戻る。もし取引市場112が、ステップ640において、他のリソースについてマッチするリソースオファー110を識別しないと決定するならば、方法235はステップ645へ分岐する。
次いで、ステップ645において、取引市場112は、他のアプリケーションプログラムについて要件ビッド118及びリソースオファー110をマッチさせるべきかどうかを決定する。もしイエスであれば、方法235はステップ602へ戻る。もしそうでなければ、方法235はステップ240(図2)へ分岐する。
図7は、図2のステップ240において参照されたように、本発明の例示的実施形態に従って、マッチするリソースオファー110及び要件ビッド118に基づきアプリケーションプログラムの作動に要求されるリソースを購入する取引を完了する方法240を描いたフローチャートである。方法240は、図1及び図7を参照して説明される。
ステップ702において、取引市場112はアプリケーションプログラムを選択する。そして、ステップ705において、取引市場112は、アプリケーションプログラムについて要件ビッド及びそのマッチするリソースオファーを選択する。ステップ710において、要件仲介者114は、リソースオファーの中で指定された仮想リソース109を利用するため、リソース仲介者102に支払うことを約定する。ステップ715において、取引市場112は、要件仲介者114のアカウントを借方に記入し、リソース仲介者102のアカウントを貸方に記入することによって、仮想リソース109の使用に対する支払い約定を計上する。次いで、ステップ720において、取引市場112は要件仲介者114とリソース仲介者102との間のサービスレベル契約を発行する。このサービスレベル契約において、リソース仲介者102は、もしあれば、リソースオファーの中で指定されたコストの支払いとの交換で、リソースオファー(マッチする要件ビッドの中で指定されたサービスレベル要件を満たす約定を含む)の中で指定された仮想リソース109を提供することに合意する。
ステップ725において、取引市場112は、アプリケーションプログラムについて追加のマッチする要件ビッド118及びリソースオファー110が存在するかどうかを決定する。もしイエスであれば、方法240は、アプリケーションプログラムの作動に要求される他のリソースについて取引を完了するため、ステップ705へ戻る。もしそうでなければ、方法240はステップ730へ分岐する。
ステップ730において、取引市場112は、他のアプリケーションプログラムについてリソースを取得するため、取引を完了するかどうかを決定する。もしイエスであれば、方法240は、他のアプリケーションプログラムを選択するため、ステップ702へ戻る。もしそうでなければ、方法240はステップ245(図2)へ分岐する。
図8は、図2のステップ245において参照されたように、本発明の例示的実施形態に従って、アプリケーションプログラムの作動を、購入されたリソースへ移行する方法245を描いたフローチャートである。方法245は、図1及び図8を参照して説明される。
ステップ802では、アプリケーションプログラムが選択される。ステップ805において、リソース仲介者102は、選択されたアプリケーションプログラムについて購入された仮想リソース109を選択する。次いで、ステップ810において、リソース仲介者102は、購入された仮想リソース109をアプリケーションプログラムへ割り振り、ステップ815において、要件仲介者114は、割り振られた仮想リソース109をアプリケーションプログラムの作動に利用するようアプリケーションプログラムに指令する。
ステップ820において、方法245は、アプリケーションプログラムについて他のリソースが購入されたかどうかを決定する。もしイエスであれば、方法245は、他の仮想リソース109をアプリケーションプログラムへ割り振るため、ステップ805へ戻る。もしそうでなければ、方法245はステップ825へ分岐する。
ステップ825において、方法245は、他のアプリケーションプログラムの作動を、購入されたリソースへ移行すべきかどうかを決定する。もしイエスであれば、方法245は、他のアプリケーションプログラムを選択するため、ステップ802へ戻る。もしそうでなければ、方法245はステップ250(図2)へ分岐する。
図9は、図2のステップ250において参照されたように、本発明の例示的実施形態に従って、割り振られたリソースの性能及びアプリケーションプログラムのサービスレベル要件を監視する方法250を描いたフローチャートである。方法250は、図1及び図9を参照して説明される。
ステップ905において、要件仲介者114は、アプリケーションプログラムによって利用されているリソースを選択する。例えば、要件仲介者114は、アプリケーションプログラムによって利用されている計算、ネットワーク、又は記憶リソースの1つを選択し得る。
ステップ910において、要件仲介者114は、選択されたリソースについて要件ビッドの中で指定されたアプリケーションプログラムのサービスレベル要件を決定する。例示的実施形態において、要件仲介者114は、サービスレベル契約の中に列挙されたサービスレベル要件に基づいて、この決定を行い得る。次いで、ステップ915において、要件仲介者114は、(選択されたリソースについて要件ビッドの中で指定されたサービスレベル要件以外の)新しいサービスレベル要件が、このリソースについて設定されているかどうかを決定する。もしイエスであれば、方法250は、例えば、アプリケーションプログラムのユーザによって入力された新しい要件を読み取ることによって、アプリケーションプログラムの新しいサービスレベル要件を決定するため、ステップ920へ分岐する。方法250は、次いでステップ925へ進む。ステップ915へ戻って、もし要件仲介者114が、アプリケーションプログラムについて新しいサービスレベル要件が設定されていないと決定するならば、方法250はステップ925へ直接分岐し得る。
ステップ925において、要件仲介者114は、アプリケーションプログラムによって利用されるときの選択されたリソースの性能を監視する。ステップ930において、要件仲介者114は、選択されたリソースの性能を、アプリケーションプログラムのサービスレベル要件と比較する。次いで、ステップ935において、要件仲介者114は、リソースの性能がアプリケーションプログラムのサービスレベル要件を超過するかどうかを決定する。もしイエスであれば、方法はステップ940へ分岐する。
ステップ940において、要件仲介者114は、リソースの過剰について支払っているかどうかを決定する。例えば、要件仲介者114は、もしアプリケーションプログラムがリソースの最大利用か最大利用の近くで作動しており、リソースが過剰能力を有するならば、要件仲介者114がリソースの過剰について支払っていると決定し得る。あるいは、もしリソースが過剰能力を有しても、アプリケーションプログラムは現在リソースの最大利用を下回って作動しているならば、要件仲介者114は、リソースの過剰について支払っていないと決定し得る。もし要件仲介者114が、リソースの過剰について支払っていると決定するならば、方法250はステップ255(図2)へ分岐する。このステップ255において、要件仲介者114は、十分に利用されていないリソースについて支払っていると決定する。
ステップ940へ戻って、もし要件仲介者114が、リソースの過剰について支払っていないと決定するならば、方法250は、選択されたリソースの監視を継続するため、ステップ955へ分岐する。
ステップ935へ戻って、もし要件仲介者114が、リソースの性能がアプリケーションプログラムのサービスレベル要件を超過していないと決定するならば、方法250はステップ945へ分岐する。ステップ945において、要件仲介者114は、選択されたリソースの性能が、アプリケーションプログラムのサービスレベル要件を満たしていないかどうかを決定する。もしイエスであれば、方法はステップ950へ分岐する。このステップ950において、要件仲介者114は、リソースがサービスレベル要件を満たすことができないかどうかを決定する。例えば、もしアプリケーションプログラムがリソースの最大利用か最大利用を下回って作動しており、リソースがサービスレベル要件を満たす十分な性能を提供していないならば、要件仲介者114は、選択されたリソースがサービスレベル要件を満たすことができないと決定し得る。あるいは、もしアプリケーションプログラムがサービスレベル要件で指定された利用を超えて一時的に作動しているならば、要件仲介者114は、リソースがサービスレベル要件を満たすことができると決定し得る。もし要件仲介者114が、リソースがサービスレベル要件を満たすことができないと決定するならば、方法250はステップ255(図2)へ分岐する。このステップ255において、要件仲介者114は、十分な性能を発揮していないリソースについて支払っていると決定する。
ステップ950へ戻って、もし要件仲介者114が、リソースの過剰について支払っていないと決定するならば、方法250は、選択されたリソースの監視を継続するため、ステップ955へ分岐する。
ステップ945へ戻って、もし要件仲介者114が、リソースの性能がサービスレベル要件よりも劣ると決定するならば、方法250は、選択されたリソースの監視を継続するため、ステップ955へ分岐する。
ステップ955から、方法250はステップ960へ進む。このステップ960において、要件仲介者114は、アプリケーションプログラムによって利用されている他のリソースの性能を監視すべきかどうかを決定する。もしイエスであれば、方法250は、監視する他のリソースを選択するため、ステップ905へ戻る。もしそうでなければ、方法はステップ255(図2)へ分岐する。このステップ255において、要件仲介者114は、アプリケーションプログラムによって利用されたリソースが十分に利用されていること又は十分に性能を発揮していると決定し得る。
方法250は、分散されたコンピューティング環境でサービスレベル契約を介してリソースを割り振られた各アプリケーションプログラムについて実行され得る。このようにして、割り振られたリソースの性能は、リソースがサービスレベル要件を満たすことを保証するため、連続的又は定期的に監視される。もしリソースが、要求されたサービスレベルを提供していないならば、要件仲介者114は、サービスレベル要件を満たすリソースを取得するため、新しい要件ビッド118を生成して取引市場112へそれらのビッドを提出する。追加的に、このようにして、リソースの性能が、要件仲介者114が未使用リソース(言い換えれば、リソースの過剰能力)について支払っていることを示す量だけサービスレベル要件を超過することがないことを保証するため、割り振られたリソースの性能は連続的又は定期的に監視される。もしリソースがアプリケーションプログラムによって十分に利用されていなければ、要件仲介者114は、サービスレベル要件に関して一層適切及び/又は経済的なリソースを取得するため、新しい要件ビッド118を生成して取引市場112へそれらのビッドを提出する。
図9に示される方法250は、割り振られたリソースが十分に利用されていないか又は十分に性能を発揮していないかどうかを決定するため、それらのリソースの性能を監視する。もしそうであれば、方法250は、ステップ225〜245を実行するため、図2に示された方法200へ戻る。方法200のステップ225〜245において、新しいリソースが識別されてアプリケーションプログラムへ割り振られ、アプリケーションプログラムの作動は新しいリソースへ移行される。
図10は、本発明の例示的実施形態に従って、システム100におけるアプリケーションプログラムについての、分散されたコンピューティングリソースの再割り振りを描いたブロック図である。図10に示されるように、要件仲介者114は、現在割り振られたネットワーク及び記憶仮想リソース109についてサービスレベル契約の違反を識別した。言い換えれば、現在割り振られているネットワーク及び記憶仮想リソース109の性能は、それらの仮想リソース109に関連したサービスレベル契約で指定されたサービスレベル要件を満たしていない。更に具体的には、仮想ネットワーク構造N2は、割り振られたリソース間の必要な通信レートを提供するのに十分ではなく、要件仲介者114は、より速いネットワークリソースを取得する必要がある。追加的に、仮想記憶構造S2は必要な記憶及び検索レートを提供するのに十分ではなく、要件仲介者114は、より弾性的な記憶リソースを取得する必要がある。
従って、要件仲介者114は、指定されたサービスレベル要件を満たすことのできる新しいネットワーク及び記憶リソースを取得するために新しい要件ビッド118を生成し、取引市場112へそれらのビッドを提出する。取引市場112は、マッチするリソースオファー110を識別し、新しいネットワーク及び記憶仮想リソース109をアプリケーションプログラムへ割り振るため、サービスレベル契約を完了する。次いで、アプリケーションプログラムの作動は、新しいネットワーク及び記憶仮想リソース109へ移行される。図10に示されるように、アプリケーションプログラムの作動は、仮想ネットワーク構造N2から仮想ネットワーク構造N1へ移行され、仮想記憶構造S2から仮想記憶構造S1へ移行される。
図10に更に示されるように、要件仲介者114は、現在割り振られている計算仮想リソース109について予算の違反を識別した。言い換えれば、現在割り振られた仮想計算構造C1の性能は、それらのリソースに関連したサービスレベル契約で指定されたサービスレベル要件を超過している。更に具体的には、要件仲介者114は、未使用計算リソースについて過大に支払っており、サービスレベル要件内で実行する新しいリソースを取得する必要がある。これは、アプリケーションプログラムを作動するコストを低減する可能性がある。
従って、要件仲介者114は、指定されたサービスレベル要件内で実行する新しい計算リソースを取得するため、1つ又は複数の新しい要件ビッド118を生成して、取引市場112へそれらのビッドを提出する。取引市場112は、マッチするリソースオファー110を識別し、新しい計算仮想リソース109をアプリケーションプログラムへ割り振るため、サービスレベル契約を完了する。次いで、アプリケーションプログラムの作動は、新しい計算仮想リソース109へ移行される。図10に示されるように、アプリケーションプログラムの作動は、仮想計算構造C1から仮想計算構造C2へ移行される。
図11は、図2のステップ270において参照されたように、本発明の例示的実施形態に従って、或る期間にわたるリソース割り振りに基づいてリソースの維持、獲得、及び/又は売却を管理する方法270を描いたフローチャートである。方法270は、図1及び図11を参照して説明される。
ステップ1105において、リソースマネージャ、例えば、リソース仲介者102は、各物理的リソース103によって生成された収入を監視する。例示的実施形態において、リソースマネージャは、各々の特定の物理的リソース103に対応するサービスレベル契約について支払いを合計することによって、そのような生成された収入を監視し得る。各々の支払いは、サービスレベル契約に含まれる特定の物理的リソース103の利用について、要件仲介者114からリソース仲介者102へ支払われる金額を表す。この点に関して、リソースマネージャは、期間中に各物理的リソース103によって生成された収入の現在高を維持し得る。
次いで、ステップ1110において、方法は、期間が経過したかどうかを決定する。例示的実施形態において、期間は、四半期、半年、一年、又は物理的リソース103によって生成された収入を監視するのに適した任意の他の期間であり得る。他の例示的実施形態において、方法270は、リソース仲介者102によって監視される所定の期間に基づいて、期間が経過したかどうかを決定し得る。所定の期間の満了は期間が経過したことの警告をトリガし得る。あるいは、方法270は、ユーザがステップ1105から生成された収入情報に手動でアクセスすることに基づいて、期間が経過したかどうかを決定し得る。いずれにせよ、もし期間が経過していなければ、方法270は、各々の物理的リソース103によって生成された収入の監視を継続するため、ステップ1105へ戻る。もし期間が経過したのであれば、方法270はステップ1115へ分岐する。
ステップ1115において、方法は、特に、各物理的リソースの購買及び維持に関連づけられたコスト及び費用を識別する。例示的実施形態において、ユーザは、実際及び/又は計画された購買及び維持コストに基づいて、その情報を入力し得る。次いで、ステップ1120において、各物理的リソース103の利益及び損失は、物理的リソース103に関連づけられたコスト及び費用を、物理的リソース103によって生成された収入から減じることによって決定される。
ステップ1125において、特定の物理的リソース103が選択され、ステップ1130においては、選択されたリソースが期間中に利益又は損失を生じたかどうかが決定される。もし物理的リソースの収入が、そのコスト及び費用よりも大きければ、物理的リソースは期間中に利益を生じている。あるいは、もし物理的リソースの収入が、そのコスト及び費用よりも小さいならば、物理的リソースは期間中に損失を生じている。
もし選択された物理的リソースが利益を生じたのであれば、方法270はステップ1135へ分岐する。ステップ1135において、選択された物理的リソースの利益は、他の類似リソースの利益と比較される。次いで、ステップ1140において、選択された物理的リソースの現在のポジションを維持すべきかどうか、又は選択された物理的リソースに投資すべきかどうかの決定が行われる。例えば、もしリソースが他のリソースと比較して小さい利益しか生じていないならば、ユーザはリソースにおける現在のポジションを維持すると決定してもよい。言い換えれば、ユーザはより多くのリソースを購入することはしない。あるいは、もしリソースが他のリソースと比較して大きな利益を生じたか、もしリソースの需要の増加が推定されるのであれば、ユーザはより多くのリソースを購入することによって、又は既存のリソースをアップグレードすることによって、リソースへの投資を決定してもよい。選択された物理的リソースのポジションを維持すべきか又は投資すべきかを決定した後、方法270はステップ1150へ進む。
ステップ1130へ戻って、もし選択された物理的リソースが、期間中に損失を生じたのであれば、方法270はステップ1145へ分岐する。ステップ1145において、選択された物理的リソースの現在のポジションを維持すべきか又は選択された物理的リソースを売却すべきかの決定が行われる。例えば、もしリソースが小さい損失のみを経験したか、リソースがコストを正当化する高優先順位の必要性を満たすならば、ユーザはリソースにおける現在のポジションを維持すると決定してもよい。言い換えれば、ユーザはリソースを売却しない。あるいは、もしリソースが大きな又は望ましくない損失を経験したのであれば、ユーザは、リソースを販売することによって又はリソースのサポート又は維持を打ち切ることによって、リソースの売却を決定してもよい。他の実施形態において、ユーザは、リソースに関連づけられた損失を低減するため、リソースの使用を低減すると決定するか、又はユーザは、他のリソースによって生成された利益を使用してリソースの継続使用を助成すると決定してもよい。選択された物理的リソースのポジションを維持すべきか売却すべきかを決定した後、方法270はステップ1150へ進む。
ステップ1150において、他のリソースのポジションを評価すべきかどうかが決定される。もしイエスであれば、方法270は、他のリソースを選択するため、ステップ1125へ戻る。もしそうでなければ、方法270及び方法200(図2)は終了する。
従って、方法270によって、ユーザが価格及び性能を含めてどのリソースが最も経済的であるかを決定するため物理的リソースを評価することが可能になる。例えば、計算リソースは様々なプラットフォームを備えることができ、各プラットフォームは異なる価格及び性能特性を有する。各リソースの利益及び損失計算書の比較は、どのプラットフォームがアプリケーションプログラムによって最も多く使用され、それによってより多くの収入を生じているかを示す。その情報に基づいて、ユーザは、どのプラットフォームを維持すべきか、又はどのプラットフォームで会社のポジションを増加すべきか、及びどのプラットフォームを売却すべきかを決定し得る。リソースは、方法200(図2)を参照して説明されたようにして割り振られたので、方法270は、価格及び性能特性に基づいて、アプリケーションプログラムによって使用されるためにはどのリソースが一層望ましいかを示す。
本発明は、分散されたコンピュータリソースの割り振り及び管理を参照して詳細に説明されたが、本発明は他の分散されたリソースの割り振り及び管理へも適用される。例えば、本発明は分散された労働力へも適用され得る。この場合、リソースオファー110は、労働力の利用可能な個人又はグループ構成員に関連づけられた特性及び価格を識別するために生成され、それらのオファーは取引市場112へ提出される。要件ビッド118は、特定の労働プロジェクトについて労働力からサービスを取得するために生成され、それらのビッドは取引市場112へ提出される。次いで、取引市場112は、マッチするビッド及びオファーを識別し、労働力リソースをプロジェクトへ割り振る。割り振られたリソースの性能が監視され得る。また、十分に利用されていないか十分に性能を発揮していない労働力構成員を是正するために必要に応じてリソースが再割り振りされ得る。時間の経過と共に、労働力の個人又はグループ構成員の利益及び損失が決定され得る。また、労働力の特定の態様に関して投資又は売却を決定するために利益及び損失情報が使用され得る。
図12は、本発明の例示的実施形態に従って、アプリケーションプログラムのサービスレベル契約に基づきリソース要求を管理する方法1200を描いたフローチャートである。方法1200は図12及び図15を参照して説明される。ここで、図15は、本発明の例示的実施形態に従って、アプリケーションプログラムのサービスレベル契約に基づきリソース要求を管理するシステム1500を描いたブロック図である。
ステップ1205において、アプリケーションプログラムによって使用されるべき各リソースについてサービスレベル要件を規定するため、サービスレベル契約が創出される。例示的実施形態において、要求されるリソースは、コンピューティング、ネットワーク、及び記憶リソース、例えば、図15に示される1つ又は複数の計算構造104、ネットワーク構造106、及び記憶構造108を備え得る。サービスレベル契約は、アプリケーションプログラムのユーザに適したやり方でアプリケーションプログラムを作動させるために要求される各リソースの単位量を規定する。規定された単位量は、各リソースの対応するサービスレベル要件である。サービスレベル要件は、各リソースの最小許容量、各リソースの最大量、及び/又は各リソースの許容量の範囲を含むことができる。
ステップ1210において、各リソースの各サービスレベル要件について閾値が構成され、この閾値を超えると、アプリケーションプログラムへのリソースの割り振られる量を増加するアクションが開始される。具体的には、各リソースについて、各リソースのサービスレベル要件を下回る閾値が設定される。もし適当であるか所望されるならば、リソースのタイプ及びリソースの利用が測定される方法に依存して、閾値はサービスレベル要件を上回って設定され得る。閾値がサービスレベル要件を上回るか下回るかに関わらず、閾値は、リソースの利用がサービスレベル要件に近づいた時を識別するベンチマークを提供する。閾値は、リソースの追加の量又はリソースの代替源が割り振られ、これによりサービスレベル契約の違反前にリソースの十分な量を割り振るアクションを取るリソース利用を表す。例えば、サービスレベル契約は、ネットワークリソースについて90から100メガビット/秒(「Mbits/s」)のデータ転送速度を要求するかも知れない。利用可能なネットワークリソースは、1000Mbits/sの利用可能能力を有するかも知れず、ネットワークリソースの90Mbits/sがアプリケーションプログラムへ割り振られてもよい。ネットワークリソースについて設定された閾値は、90Mbits/sを下回る量であり得る。例えば、閾値は、85Mbits/s、80Mbits/s、又はアプリケーションプログラムへ割り振られるネットワークリソースの量よりも小さい他の適切な値であり得る。例示的実施形態において、閾値は、ネットワークリソースの割り振られた量のパーセンテージ、例えば、95%、90%、85%、80%、又は他の適切なパーセンテージとして設定され得る。閾値が85Mbits/sに設定される上記の例において、85Mbits/sはアプリケーションプログラムによるネットワークリソースの利用を表し、この値を超えると、100Mbits/sのサービスレベル要件に達するまで、ネットワークリソースの追加量をアプリケーションプログラムへ割り振るアクションが取られる。例えば、前に割り振られた90Mbits/sを超過するネットワークリソースの利用に先立って、ネットワークリソースの100Mbits/sがアプリケーションプログラムへ割り振られ得る。この実施形態において、閾値は、割り振られた量がリソースのサービスレベル要件よりも小さい、リソースの割り振られた量に基づく。あるいは、リソースの割り振られた量は、リソースのサービスレベル要件と等しくてもよく、閾値は、サービスレベル要件が増加され、リソースの割り振りが新しいサービスレベル要件へ増加される点を表し得る。例えば、サービスレベル要件は、利用の急上昇に順応するため一時的に増加されてもよい。追加的に、サービスレベル要件及びリソースの割り振られた量は、利用の急上昇が止まった後に減少され得る。
各リソースの閾値は、システム1500の中のサービス品質「QOS」マネージャ1504内に記憶される。例示的実施形態において、閾値はQOSマネージャ1504の中に事前に構成され得る。あるいは、ユーザは、入力デバイス(図示せず)を介して所望の閾値をQOSマネージャ1504内に入力することによって、閾値を構成し得る。
例示的実施形態において、QOSマネージャ1504は、分散されたコンピューティング環境で作動して本明細書で説明されるように機能するソフトウェアモジュールを備え得る。
ステップ1215において、リソース割り振りマネージャ1506は、アプリケーションプログラムへのリソースの初期割り振りを行う。例示的実施形態において、リソース割り振りマネージャ1506は、本明細書で前に説明された取引市場112を備えることができ、図1〜図11を参照して前に説明されたように、要件仲介者114及びリソース仲介者102と関連してリソースを割り振ることができる。あるいは、リソース割り振りマネージャ1506は、取引市場112を参照して説明された市場経済プロセスを使用することなく、他のやり方でリソースを割り振ることができる。例えば、ユーザは、リソース割り振りマネージャ1506を介してアプリケーションプログラムへのリソースの初期割り振りを規定することができ、又はリソース割り振りマネージャ1506は、アプリケーションプログラムの規定された優先順位又は割り振られたリソースの規定された開始スケジュール(「先着順」モデル)に基づいて、利用可能なリソースを割り振ることができる。リソース割り振りマネージャ1506は、アプリケーションプログラムのサービスレベル契約で規定されたサービスレベル要件を満たすのに十分な適切な任意の量において、アプリケーションプログラムによって利用される各リソースの量を割り振ることができる。
例えば、リソース割り振りマネージャ1506は、計算、ネットワーク、又は記憶リソース、例えば、計算構造104、ネットワーク構造106、及び記憶構造108を選択し得る。例示的実施形態において、この後で更に詳細に説明される監視モジュール1502からの入力に基づいて、リソース割り振りマネージャ1506は、利用されていない各リソースの過剰能力を識別し得る。そのような過剰能力は、アプリケーションプログラムによる使用に利用可能なリソースとして識別され得る。
リソース割り振りマネージャ1506は、アプリケーションプログラムによる使用に利用可能な各物理的リソース103の量を識別する。例示的実施形態において、各リソースの量は、特定の製造者及び/又はコンポーネントを含めてハードウェアタイプ及び/又は構成、並びに各リソースについて現在利用可能な過剰能力を備え得る。この点に関して、利用可能な物理的リソース103は、仮想リソース109、例えば、仮想計算構造C1及びC2、仮想ネットワーク構造N1及びN2、及び仮想記憶構造S1及びS2を創出するため組み合わせられ得る。例えば、分散された場所で利用可能なコンピュータプロセッサは、アプリケーションプログラムによる使用に利用可能な仮想コンピューティングリソースを創出するため、統合され得る。代表的リソース能力は、コンピューティングリソースについてCPUサイクル、ネットワークリソースについて帯域幅、及び記憶リソースについてディスクスペース及び/又はメモリを備え得る。
利用可能なリソースの量は、各仮想リソース109に関連づけられた性能及び信頼度特性を更に備え得る。例えば、そのような特性は、実行時間、応答時間、結果の正確度(例えば、故障率)、利用可能性、信頼度、セキュリティ、又は仮想リソース109の性能を示す他の適切な特性を備え得る。
リソース割り振りマネージャ1506は、アプリケーションプログラムによる使用に割り振るため、各仮想リソース109の単位量を識別する。この点に関して、リソース割り振りマネージャ1506は、利用可能な仮想リソース109の最大量に達するまで、識別された単位の増分で割り振りに利用可能な仮想リソース109の部分を識別し得る。もしリソース割り振りマネージャ1506が、多数の仮想リソース109、例えば、仮想計算構造C1及びC2を識別したのであれば、リソース割り振りマネージャ1506は各仮想リソース109について単位量を識別し得る。
例示的実施形態において、リソース割り振りマネージャ1506は、分散されたコンピューティング環境で作動して本明細書で説明されるように機能するソフトウェアモジュールを備え得る。
アプリケーションプログラムへのリソースの初期割り振りの後、割り振られたリソースは、割り振られたリソースがアプリケーションプログラムのサービスレベル契約の要件を満たすことを保証するために監視される。従って、ステップ1220において、アプリケーションプログラムによって利用されているリソースが選択される。ステップ1225において、アプリケーションプログラムの選択されたリソースに関連づけられた閾値が、ステップ1210において設定された閾値から識別される。そして、ステップ1230において、監視モジュール1502は、アプリケーションプログラムによって利用されるときの選択されたリソースの性能を監視する。監視モジュール1502は、選択されたリソースの性能をQOSマネージャ1504へ通信する。
例示的実施形態において、監視モジュール1502は、分散されたコンピューティング環境で作動して本明細書で説明されるように機能するソフトウェアモジュールを備え得る。或る一定の例示的実施形態において、監視モジュール1502は、リソース利用を監視するように設計された既製のソフトウェアを備え得る。
ステップ1235において、QOSマネージャ1504は、アプリケーションプログラムによる選択されたリソースの利用が、閾値を超過するか、又は閾値を満たすか又は超過するか(双方の場合は、本明細書では閾値の超過と呼ばれる)をステップ1240において決定するため、選択されたリソースの利用を、選択されたリソースの閾値と比較する。もしイエスであれば、方法1200は、アプリケーションプログラムに関連づけられたサービスレベル契約の違反に先立ってアプリケーションプログラムの選択されたリソースの割り振りを修正するため、ステップ1245へ分岐する。ステップ1245は、この後で図13を参照して更に詳細に説明される。方法1200は、次いでステップ1250へ進む。
ステップ1240へ戻って、もしQOSマネージャ1504が、アプリケーションプログラムによる選択されたリソースの利用が閾値を超過しないと決定するならば、方法1200はステップ1250へ直接分岐する。
ステップ1250において、QOSマネージャ1504は、アプリケーションプログラムについて他のリソースの性能を監視すべきかどうかを決定する。もしイエスであれば、方法1200は、他のリソースを選択するため、ステップ1220へ戻る。もしそうでなければ、方法1200は終了する。
方法1200は、多数のアプリケーションプログラムについて割り振られたリソースを連続的に監視及び維持するため、多数のアプリケーションプログラムについて、及び1つ又は複数のアプリケーションプログラムによって利用されているか利用可能な多数のリソースについて、同時又は直線的に実行され得る。
図13は、図12のステップ1245において参照されたように、例示的実施形態に従って、アプリケーションプログラムに関連づけられたサービスレベル契約の違反の前にアプリケーションプログラムの選択されたリソースの割り振りを修正する方法1245を描いたフローチャートである。方法1245は、図13及び図15を参照して説明される。
方法1245は、リソースの利用がアプリケーションプログラムのそのリソースに設定された閾値を超過したときに実行される。閾値は、アプリケーションプログラムへのリソースの割り振られた量を下回るレベルに設定されるので、ステップ1245は、リソースの割り振られた量を超過する利用に先立ってリソースの割り振りを修正するために実行され得る。このようにして、本明細書で説明された方法及びシステムは、サービスレベル契約の来たらんとする違反を予想又は予測することができ、十分なリソースをアプリケーションプログラムへ割り振るため、違反に先立ってアクションを取り得る。
図13を参照して、ステップ1305において、リソース割り振りマネージャ1506は、選択されたリソースが、アプリケーションプログラムへ割り振られ得る追加の未だ割り振られていない能力を有するかどうかを決定する。もしイエスであれば、方法1245はステップ1310へ分岐する。このステップ1310において、リソース割り振りマネージャ1506は選択されたリソースの追加の能力をアプリケーションプログラムへ割り振る。もし選択されたリソースの初期割り振りが、リソースのサービスレベル要件よりも小さかったならば、選択されたリソースの追加の量は、サービスレベル要件に達するまで、アプリケーションプログラムへ割り振られ得る。あるいは、もし選択されたリソースの初期割り振りが、リソースのサービスレベル要件と等しかったならば、より高いサービスレベル要件を創出するため、サービスレベル契約が自動的に調節され、選択されたリソースの追加の量は、より高いサービスレベル要件に達するまで、アプリケーションプログラムへ割り振られ得る。サービスレベル要件の増加は、一時的又は永続的であり得る。ステップ1310から、方法1245は、この後で説明されるステップ1355へ進む。
ステップ1305へ戻って、もし選択されたリソースの追加の能力が利用可能でなければ、方法1245はステップ1315へ分岐する。ステップ1315において、リソース割り振りマネージャ1506は、低優先順位アプリケーションプログラムが、リソースに対する低優先順位アプリケーションプログラムの最小要件を上回るレベルで、選択されたリソースを利用しているかどうかを決定する。もしイエスであれば、方法1245は、監視されるアプリケーションプログラム及び低優先順位アプリケーションプログラムの割り振りにおける増加及び減少の純量に基づいて、監視されるアプリケーションプログラムの増加された能力及び低優先順位アプリケーションプログラムの低減された能力に順応するリソースの十分な能力が存在するかどうかを決定するため、ステップ1318へ分岐する。もしそうでなければ、方法1245は、この後で説明されるステップ1330へ分岐する。もしイエスであれば、方法1245は、低優先順位アプリケーションプログラムから、監視されている高優先順位アプリケーションプログラムへ、選択されたリソースの割り振りをシフトするため、ステップ1320へ分岐する。従って、ステップ1320において、リソース割り振りマネージャ1506は、低優先順位アプリケーションプログラムについて選択されたリソースの割り振りを低減するが、低優先順位アプリケーションプログラムの最小要件を維持する。次いで、ステップ1325において、リソース割り振りマネージャ1506は、監視されている高優先順位アプリケーションプログラムについて選択されたリソースの割り振りを増加する。ステップ1310と同じように、監視されるアプリケーションプログラムへ割り振られる選択されたリソースの量は、既存又は新しく設定されたサービスレベル要件に達するまで増加され得る。
ステップ1325から、方法1245は、リソースの純利用が変更されたかどうかをリソース割り振りマネージャ1506が決定するステップ1328へ進む。もしそうでなければ、方法1245はステップ1250(図12)へ分岐する。もしイエスであれば、方法1245は、この後で説明されるステップ1355へ分岐する。
ステップ1315へ戻って、もし低優先順位アプリケーションプログラムが、選択されたリソース上で作動していないならば、方法1245は、アプリケーションプログラムを一層適切なリソースへ移行するため、ステップ1330へ分岐する。ステップ1330において、リソース割り振りマネージャ1506は、アプリケーションプログラムがアプリケーションプログラムのファミリーの一部分であるかどうかを決定する。ここで、アプリケーションプログラムの「ファミリー」とは、相互に依存するサービスレベル契約を有するアプリケーションプログラムのグループである。もしイエスであれば、方法1245は、アプリケーションプログラムのファミリーを一層適切なリソースへ移行するため、ステップ1335へ分岐する。こうして、ステップ1335において、リソース割り振りマネージャ1506は、アプリケーションプログラムのファミリーの中の各アプリケーションプログラムについて規定されたサービスレベル要件に従ってアプリケーションプログラムのファミリーをサポートすることのできるリソースの代替の源を識別する。
ステップ1338において、リソース割り振りマネージャ1506は、識別されたリソースが、サービスレベル契約の中で設定されたサービスレベル要件を満たすために必要な電力及び冷却要件を含めて、アプリケーションプログラムのファミリーに対するサービスレベル契約に従ってアプリケーションプログラムのファミリーに順応するのに十分であるかどうかを決定する。もしそうでなければ、方法1245は、リソース割り振りマネージャ1506が警告通知をシステム管理者へ発行するステップ1348へ分岐する。例示的実施形態において、警告通知は、モニタ上に表示され、電子メール又はテキストメッセージを介して送られ、又は他の適切なやり方で通信され得る。次いで、システム管理者は1つ又は複数のアプリケーションプログラムについてサービスレベル規定を修正してもよく、リソースは修正されたサービスレベル規定に従ってアプリケーションプログラムの間で割り振られ得る。
ステップ1338へ戻って、もし識別されたリソースが十分であれば、方法1245はステップ1340へ分岐する。ステップ1340において、リソース割り振りマネージャ1506は、アプリケーションプログラムのファミリーを、ステップ1335で識別された代替のリソースへ移行する。例示的実施形態において、移行は、いかなるアプリケーションプログラムの作動も中断しない「生の」移行であり得る。ステップ1340から、方法1245は、この後で説明されるステップ1355へ進む。
ステップ1330へ戻って、もしリソース割り振りマネージャ1506が、アプリケーションプログラムがアプリケーションプログラムのファミリーの一部分ではないと決定するならば、方法1245は、監視されるアプリケーションプログラムのみを一層適切なリソースへ移行するため、ステップ1345へ分岐する。こうして、ステップ1345において、リソース割り振りマネージャ1506は、アプリケーションプログラムについて規定されたサービスレベル要件に従ってアプリケーションプログラムをサポートすることのできるリソースの代替の源を識別する。
ステップ1347において、リソース割り振りマネージャ1506は、識別されたリソースが、サービスレベル契約において設定されたサービスレベル要件を満たすために必要な電力及び冷却要件を含めて、アプリケーションプログラムのサービスレベル契約に従ってアプリケーションプログラムに順応するのに十分であるかどうかを決定する。もしそうでなければ、方法1245は、前に説明されたステップ1348へ分岐する。
もし識別されたリソースが十分であれば、方法1245はステップ1350へ分岐する。ステップ1350において、リソース割り振りマネージャ1506は、アプリケーションプログラムを、ステップ1345において識別された代替のリソースへ移行する。例示的実施形態において、移行は、アプリケーションプログラムの作動を中断しない「生の」移行であり得る。方法1245は、次いでステップ1355へ進む。
ステップ1355において、電力/冷却調節システム1508は、ステップ1310、1340、又は1350において実行された、割り振られたリソースの変更に基づいて、当初及び代替のリソースの冷却及び電力要件を調節する。ステップ1355は、この後で図14を参照して更に詳細に説明される。ステップ1355から、方法1245はステップ1250(図12)へ進む。
図14は、図13のステップ1355において参照されたように、例示的実施形態に従って、ステップ1310、1340、又は1350(図13)において実行された、割り振られたリソースの変更に基づき、当初及び代替のリソースの冷却及び電力要件を調節する方法1355を描いたフローチャートである。方法1355は、図14及び図15を参照して説明される。
ステップ1405において、リソース割り振りマネージャ1506は、ステップ1310、1340、又は1350(図13)において実行された追加又は代替のリソースの割り振りに基づいて、特定のリソースの割り振りの増加又は減少の量を決定する。例えば、リソース割り振りマネージャ1506は、ステップ1310、1340、又は1350におけるリソース割り振りの実行後に存在する割り振りから、特定のリソースの初期割り振りを減じることによって、この決定を行い得る。差異は、特定のリソースの割り振りにおける増加又は減少である。リソース割り振りマネージャ1506は、この情報を電力/冷却調節システム1508へ報告する。
ステップ1410において、電力/冷却調節システム1508は、特定のリソースの割り振りの変更に基づいて、特定のリソースを作動させるために要求される、対応する電力の増加又は減少を決定する。次いで、ステップ1415において、電力/冷却調節システム1508は、それに従って特定のリソースへ供給される電力を調節する。例えば、もしコンピューティングリソースのCPUサイクルが低減されるならば、コンピューティングリソースを作動させるために要求される、対応する電力が低減されてもよい。あるいは、もしコンピューティングリソースのCPUサイクルが増加されるならば、コンピューティングリソースを作動させるために要求される、対応する電力が増加してもよい。この点に関して、電力/冷却調節システム1508は、コンピューティングリソースへ供給される電流及び/又は電圧の量を変更するため、電力コントローラ(図示せず)と連結し得る。従って、アプリケーションプログラムへ割り振られるリソースの量に基づき、リソースを作動させるために必要な電力のみを提供することによって、電力がリソースへ効率的に供給され得る。
同様に、ステップ1420において、電力/冷却調節システム1508は、特定のリソースの割り振りにおける変更に基づいて、特定のリソースを作動させるために要求される冷却における対応する増加又は減少を決定する。次いで、ステップ1425において、電力/冷却調節システム1508は、それに従って特定のリソースへ供給される冷却を調節する。例えば、もしコンピューティングリソースのCPUサイクルが低減されるならば、コンピューティングリソースを作動させるために要求される、対応する冷却が低減されてもよい。あるいは、もしコンピューティングリソースのCPUサイクルが増加されるならば、コンピューティングリソースを作動させるために要求される、対応する冷却が増加してもよい。この点に関して、電力/冷却調節システム1508は、コンピューティングリソースへ供給される冷却の量を変更するため、冷却システムコントローラ(図示せず)と連結し得る。従って、冷却は、アプリケーションプログラムへ割り振られるリソースの量に基づき、リソースを作動させるために必要な冷却のみを提供することによって、リソースへ効率的に供給され得る。例示的実施形態において、冷却システムコントローラは、特定のリソースが提供される室の中でHVACシステムを制御し得る。あるいは、冷却システムコントローラは、特定のリソースの内部又は外部にあるファン(図示せず)を制御し得る。
ステップ1425から、方法1355はステップ1250(図12)へ進む。
例示的実施形態において、電力/冷却調節システム1508は、分散されたコンピューティング環境で作動して本明細書で説明されるように機能するソフトウェアモジュールを備え得る。
従って、QOSマネージャ1504は、サービスレベル契約の潜在的違反がいつ起こるかを予想又は予測することができ、サービスレベル契約の違反に先立って追加又は代替のリソースを割り振り、これによってサービスレベル契約の違反を防止するように行動し得る。
例示的実施形態において、QOSマネージャ1504は、利用可能なリソースに基づき各アプリケーションプログラムの適当なリソースを決定するため、検査を連続的に実行し得る。検査は、既存のリソースを使用する新しいアプリケーションに基づいて、より多くのリソースの潜在的必要性を検出するために実行され得る。
他の例示的実施形態において、人工知能アプリケーションは、リソースの利用を連続的に監視し得る。様々なサービスレベル契約が、本明細書で説明されたように規定されることができ、人工知能は、多数の可能なシナリオに基づいてリソースの効率的、初期、代替、又は他の割り振りを決定するため、検査を実行し得る。リソース割り振りマネージャは、例えば、利用可能なリソース能力、及び、もしあれば、関連コストを決定することができ、その情報を、様々なアプリケーションプログラムの間でリソース割り振りの多数のシナリオを評価する人工知能アプリケーションへ通信し得る。
本発明は、上記で説明された方法及び処理機能を実行するコンピュータハードウェア及びソフトウェアを用いて使用され得る。当業者によって了解されるように、本明細書で説明されたシステム、方法、及び手順は、プログラム可能コンピュータ、コンピュータ実行可能ソフトウェア、又はディジタル回路で体現され得る。ソフトウェアは、コンピュータ読み取り可能メディア上に記憶され得る。例えば、コンピュータ読み取り可能メディアは、フロッピー(登録商標)ディスク、RAM、ROM、ハードディスク、取り外し可能メディア、フラッシュメモリ、メモリスティック、光学メディア、磁気光学メディア、CD−ROMなどを含み得る。ディジタル回路は、集積回路、ゲートアレイ、ビルディングブロック論理、フィールド・プログラマブル・ゲート・アレイ(FPGA)などを含み得る。
本発明の特定の実施形態が本明細書で詳細に説明されたが、説明は単に例証を目的とする。本明細書で説明された例示的方法は単なる例証であり、本発明の代替の実施形態において、或る一定のステップは、異なる順序で実行され、互いに並列に実行され、又は全く省略されることができ、及び/又は或る一定の追加のステップが、本発明の範囲及び趣旨から逸脱することなく実行され得る。追加的に、例示的実施形態の開示された態様の様々な修正、及び対応する同等のステップが、本明細書で説明されたものに加えて、下記の特許請求の範囲で規定された本発明の趣旨及び範囲から逸脱することなく当業者によって行われ得る。特許請求の範囲は、そのような修正及び同等の構造を包含するように最も広い解釈を付与されるべきである。