(57)【特許請求の範囲】
【請求項１】
複数のコンテナへのスロット配置を実行する装置であって、
データ・ストレージと、
前記データ・ストレージに通信可能に接続されたプロセッサであり、
前記複数のコンテナ内に配置される複数のスロットを決定し、前記複数のスロットは、アプリケーション・インスタンスにサービスするように構成される割り振られたリソースの集まりであり、
前記複数のスロットの通信に関する冗長性の特徴を表す複数の冗長パラメータを決定し、
前記複数の冗長パラメータに基づいて前記複数のコンテナにおける前記複数のスロットの配置を決定し、
前記複数のスロットのうちの第１の配置スロットを、前記複数のスロットのうちの第２の配置スロットと交換することであって、有効コンテナ間帯域幅使用量が向上すること、および前記交換が１つまたは複数のコンテナ間帯域幅制約を満たすことの決定に基づいて、前記第１の配置スロットを前記第２の配置スロットと交換することを行う
ように構成されるプロセッサと
を備える装置。
【請求項２】
前記冗長パラメータが、前記複数のスロットのうちの少なくとも一部分の通信内冗長性および通信間冗長性に基づく、請求項１に記載の装置。
【請求項３】
前記冗長パラメータが、前記複数のスロットのうちの少なくとも一部分の間の通信パターンに基づく、請求項２に記載の装置。
【請求項４】
前記複数のスロットの前記配置の前記決定が、前記プロセッサを、
複数のクラスタを決定し、
前記複数のスロットのうちの少なくとも一部分の各々を前記複数のクラスタのうちの少なくとも１つに割り当て、
有効コンテナ間帯域幅使用量に基づき、前記複数のクラスタのうちの少なくとも一部分の各々を前記複数のコンテナのうちの少なくとも１つに割り当てる
ように構成することを含む、請求項１に記載の装置。
【請求項５】
前記複数のスロットのうちの前記一部分の前記割当てが、前記スロットの間のデータ転送における冗長性除去後の必要なスロット帯域幅に基づく、請求項４に記載の装置。
【請求項６】
複数のコンテナへのスロット配置を実行する方法であって、
データ・ストレージに通信可能に接続されたプロセッサで、前記複数のコンテナ内に配置される複数のスロットを決定するステップであって、前記複数のスロットは、アプリケーション・インスタンスにサービスするように構成される割り振られたリソースの集まりであるステップと、
前記データ・ストレージと協働した前記プロセッサによって、前記複数のスロットの通信に関する冗長性の特徴を表す複数の冗長パラメータを決定するステップと、
前記データ・ストレージと協働した前記プロセッサによって、前記複数の冗長パラメータに基づいて前記複数のコンテナにおける前記複数のスロットの配置を決定するステップと、
前記データ・ストレージと協働した前記プロセッサによって、前記複数のスロットのうちの第１の配置スロットを、前記複数のスロットのうちの第２の配置スロットと交換するステップであって、有効コンテナ間帯域幅使用量が向上すること、および前記交換が１つまたは複数のコンテナ間帯域幅制約を満たすことの決定に基づいて、前記第１の配置スロットを前記第２の配置スロットと交換するステップと
を含む方法。
【請求項７】
前記複数のスロットの前記配置を決定する前記ステップが、
前記データ・ストレージと協働した前記プロセッサによって、複数のクラスタを決定するステップと、
前記データ・ストレージと協働した前記プロセッサによって、前記複数のスロットのうちの少なくとも一部分の各々を前記複数のクラスタのうちの少なくとも１つに割り当てるステップと、
前記データ・ストレージと協働した前記プロセッサによって、有効コンテナ間帯域幅使用量に基づき、前記複数のクラスタのうちの少なくとも一部分の各々を前記複数のコンテナのうちの前記少なくとも１つに割り当てるステップと
を含む、請求項６に記載の方法。
【請求項８】
前記複数のスロットのうちの前記一部分を割り当てる前記ステップが、前記スロットの間のデータ転送における冗長性除去後の必要なスロット帯域幅に基づく、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、スロット配置を提供するための方法および装置に関する。
【背景技術】
【０００２】
このセクションでは、本発明のより良好な理解を容易にするのに有効であり得る態様を紹介する。したがって、このセクションの記述は、この観点から読まれるべきものであり、従来技術であるものまたは従来技術ではないものについての承認として理解されるべきものではない。
【０００３】
いくつかの既知の仮想マシン配置戦略において、仮想マシンは、ラックにわたるデータ転送の帯域幅要件を最小限に抑えることに基づいて、データ・センター・ラックに配置される。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な実施形態は、スロット通信対にわたる、およびスロット通信対内の冗長性に基づいてスロットを配置するためのＲＥアウェア技法（RE-aware technique）を提供する方法および装置を提供する。
【０００５】
一実施形態では、スロット配置を提供するための装置が提供される。この装置は、データ・ストレージと、データ・ストレージに通信可能に接続されたプロセッサとを含む。プロセッサは、複数のコンテナ内に配置される複数のスロットを決定し、複数の冗長パラメータ（redundancy parameter）を決定し、複数の冗長パラメータに基づいて複数のコンテナにおける複数のスロットの配置を決定するようにプログラムされる。
【０００６】
実施形態のいくつかでは、複数のスロットのうちの複数は、仮想マシンである。
【０００７】
実施形態のいくつかでは、複数のコンテナのうちの複数は、データ・センター内のラックである。
【０００８】
実施形態のいくつかでは、冗長パラメータは、複数のスロットのうちの少なくとも一部分の通信内冗長性（intra-comm-redundancy）および通信間冗長性（inter-comm-redundancy）に基づく。
【０００９】
実施形態のいくつかでは、冗長パラメータは、複数のスロットのうちの少なくとも一部分の通信パターンに基づく。
【００１０】
実施形態のいくつかでは、複数のスロットの配置の決定は、複数のクラスタを決定し、複数のスロットのうちの少なくとも一部分の各々を複数のクラスタのうちの少なくとも１つに割り当て、複数のクラスタのうちの少なくとも一部分の各々を複数のコンテナのうちの少なくとも１つに割り当てるようにプロセッサをプログラムすることを含む。
【００１１】
実施形態のいくつかでは、複数のスロットのうちの一部分の割当ては、冗長性除去後の必要なスロット帯域幅に基づく。
【００１２】
実施形態のいくつかでは、複数のスロットのうちの一部分の割当ては、１つまたは複数のスロット配置制約にさらに基づく。
【００１３】
実施形態のいくつかでは、複数のクラスタのうちの一部分の割当ては、有効コンテナ間帯域幅使用量（effective-inter-container-bandwidth-usage）に基づく。
【００１４】
実施形態のいくつかでは、複数のスロットの配置の決定は、第１の配置スロットおよび第２の配置スロットを交換することであって、コンテナ間帯域幅使用量が向上すること、および交換が１つまたは複数のコンテナ間帯域幅制約を満たすことの決定に基づいて、第１の配置スロットおよび第２の配置スロットを交換することを行うようにプロセッサをさらにプログラムすることを含む。
【００１５】
第２の実施形態では、スロット配置を提供するための交換システム。システムは、配置コントローラと、配置コントローラに通信可能に接続された複数のエージェントとを含む。複数のエージェントは、複数の冗長測定値を収集し、複数の冗長測定値を配置コントローラに送るようにプログラムされる。配置コントローラは、複数の冗長測定値を受信し、複数のコンテナ内に配置される複数のスロットを決定し、複数の冗長測定値に基づいて複数の冗長パラメータを決定し、複数の冗長パラメータに基づいて複数のコンテナにおける複数のスロットの配置を決定するようにプログラムされる。
【００１６】
実施形態のいくつかでは、複数のスロットの配置の決定は、複数のクラスタを決定し、複数のスロットのうちの少なくとも一部分の各々を複数のクラスタのうちの少なくとも１つに割り当て、複数のクラスタのうちの少なくとも一部分の各々を複数のコンテナのうちの少なくとも１つに割り当てるように配置コントローラをプログラムすることを含む。
【００１７】
実施形態のいくつかでは、複数のスロットのうちの一部分の割当ては、冗長性除去後の必要なスロット帯域幅に基づく。
【００１８】
実施形態のいくつかでは、複数のスロットのうちの一部分の割当ては、１つまたは複数のスロット配置制約にさらに基づく。
【００１９】
実施形態のいくつかでは、複数のクラスタのうちの一部分の割当ては、有効コンテナ間帯域幅使用量に基づく。
【００２０】
実施形態のいくつかでは、複数のスロットの配置の決定は、第１の配置スロットおよび第２の配置スロットを交換することであって、コンテナ間帯域幅使用量が向上すること、および交換が１つまたは複数のコンテナ間帯域幅制約を満たすことの決定に基づいて、第１の配置スロットおよび第２の配置スロットを交換することを行うように配置コントローラをさらにプログラムすることを含む。
【００２１】
第３の実施形態では、スロット配置を提供するための方法が提供される。この方法は、複数のコンテナ内に配置される複数のスロットを決定するステップと、複数の冗長パラメータを決定するステップと、複数の冗長パラメータに基づいて複数のコンテナにおける複数のスロットの配置を決定するステップとを含む。
【００２２】
実施形態のいくつかでは、この方法は、第１の配置スロットおよび第２の配置スロットを交換するステップであって、コンテナ間帯域幅使用量が向上すること、および交換が１つまたは複数のコンテナ間帯域幅制約を満たすことの決定に基づいて、第１の配置スロットおよび第２の配置スロットを交換するステップをさらに含む。
【００２３】
実施形態のいくつかでは、複数のスロットの配置を決定するステップは、複数のクラスタを決定するステップと、複数のスロットのうちの少なくとも一部分の各々を複数のクラスタのうちの少なくとも１つに割り当てるステップと、複数のクラスタのうちの少なくとも一部分の各々を複数のコンテナのうちの少なくとも１つに割り当てるステップとを含む。
【００２４】
実施形態のいくつかでは、複数のスロットのうちの一部分を割り当てるステップは、冗長性除去後の必要なスロット帯域幅に基づく。
【００２５】
様々な実施形態が添付の図面に例示されている。
【図面の簡単な説明】
【００２６】
【図１】ネットワーク１８０を介してクライアント１９０−１および１９０−２にサービスするＲＥアウェア・データ・センター１００の一実施形態を示す図である。
【図２】ＲＥアウェア・システム（たとえば、図１のＲＥアウェア・データ・センター１００）がスロットのＲＥアウェア配置を実行するための方法２００の一実施形態を示すフローチャートである。
【図３】ＲＥアウェア・データ・センター１００における冗長性を示す機能ブロック図３００である。
【図４】図２のステップ２７０に示したように、配置コントローラ（たとえば、図１の配置コントローラ１７０）がスロットを配置するための方法４００の一実施形態を示すフローチャートである。
【図５】図４のステップ４８０に示したようにスロットを配置するための方法５００の一実施形態を示すフローチャートである。
【図６】図４のステップ４８０および図５のステップ５２０、５４０および５６０に示したようにスロットを配置するための方法６００の一実施形態を示すフローチャートである。
【図７】図６のステップ６１０〜６４０の一実施形態を示す疑似コードである。
【図８】図６のステップ６５０の一実施形態を示す疑似コードである。
【図９】図６のステップ６７０の一実施形態を示す疑似コードである。
【図１０】たとえば図１のエンド・ホスト１２０のうちの１つ、ＴｏＲスイッチ１３０のうちの１つ、アグリゲーション・スイッチ１５０のうちの１つ、または配置コントローラ１７０など、様々な装置１０００の一実施形態を概略的に示す図である。
【発明を実施するための形態】
【００２７】
理解を容易にするために、実質的に同じもしくは類似の構造または実質的に同じもしくは類似の機能を有する要素を示すために、同じ参照番号が使用されている。
【００２８】
説明および図面は、単に本発明の原理を示しているにすぎない。したがって、当業者は、本明細書には明確に記載または示されないが、本発明の原理を実施し、その範囲内に含まれる様々な配置を考案することができ得ることを諒解されよう。さらに、本明細書に説明されるすべての例は、主に、明確に、本技術を促進するために発明者によって寄与される概念および本発明の原理を読者が理解するのを援助するための教育上の目的のためであるものとされ、そのような具体的に詳述された例および条件に限定されないものとして解釈されるべきものとする。さらに、本明細書で使用される際、「または」という用語は、特に明記しない限り、非排他的なまたはを指す（たとえば、「あるいは」または「または代替的に」など）。また、いくつかの実施形態が新しい実施形態を形成するために１つまたは複数の他の実施形態と結合され得るので、本明細書に記載される様々な実施形態は必ずしも相互に排他的であるというわけではない。
【００２９】
様々な実施形態は、スロット通信対にわたる、およびスロット通信対内の冗長性に基づいてスロットを配置するためのＲＥアウェア技法を提供する方法および装置を提供する。有利には、そのような配置は、コンテナ（たとえば、ラックまたはデータ・センター）間リンクの全体的な帯域幅の使用量を低減することができる。
【００３０】
図１は、ネットワーク１８０を介してクライアント１９０−１および１９０−２にサービスするＲＥアウェア・データ・センター１００の一実施形態を示す。ＲＥアウェア・データ・センター１００は、ラック１１０−１および１１０−２（総称してラック１１０）と、トップ・オブ・ラック・スイッチ（top of the rack switches）１３０−１および１３０−２（総称してＴｏＲスイッチ１３０）と、冗長性除去（ＲＥ）ボックス１４０−１および１４０−２（総称してＲＥボックス１４０）と、アグリゲーション・スイッチ１５０−１〜１５０−２（総称してアグリゲーション・スイッチ１５０）と、配置コントローラ１７０とを含む。ＲＥアウェア・データ・センター１００は、リンク１３５−１、１４５−１、１５５−１、１７５−１、および１８５−１（総称してＲＥアウェア・データ・センター・リンク）も含む（明快さのために残りのリンク・ラベルは省略されている）。ラック１１０は、ＴｏＲスイッチ１３０、ＲＥボックス１４０、アグリゲーション・スイッチ１５０、および適切なＲＥアウェア・データ・センター・リンクのうちの適切な１つを介して、ネットワーク１８０に通信可能に接続される。ＲＥアウェア・データ・センター１００は、任意の適切な構成で設計され得、ＲＥアウェア・データ・センター１００は、説明の目的で使用されている１つの例示的なアーキテクチャにすぎないことを諒解されたい。配置コントローラ１７０は、ＲＥアウェア・データ・センター１００内のラック１１０におけるリソース（たとえば、処理、メモリ、記憶、またはネットワーク）の割振りを制御する。
【００３１】
ラック１１０は、エンド・ホスト１２０−１−ＥＨ１〜１２０−１−ＥＨ５および１２０−２−ＥＨ１〜１２０−２−ＥＨ５（総称してエンド・ホスト１２０）を含む。本明細書には２つのラックが示されているが、システム１００が含むラックはより少なくてもより多くてもよいことを諒解されたい。システム１００のラックのすべてがエンド・ホストを含むとは限らないこともさらに諒解されたい。
【００３２】
エンド・ホスト１２０−１−ＥＨ１は、スロット１２２−１〜１２２−３（総称してスロット１２２）（ハッシュドボックスとして示される）と、エージェント１６０−１−Ａ１（チェックのボックスとして示される）とを含む。エンド・ホスト１２０−１−ＥＨ１には３つのスロットが示されているが、スロットを有していないいくつかのエンド・ホストを含めて、エンド・ホスト１２０の各々が含むスロットは、より少なくてもより多くてもよい（明快さのために残りのスロットは省略されている）ことを諒解されたい。エンド・ホスト１２０（たとえば、エージェント１６０−１−Ａ１〜１６０−１−Ａ５、および１６０−２−Ａ１〜１６０−２−Ａ５）の各々に１つのエージェントが示されているが、エージェントを有していないいくつかのエンド・ホストを含めて、エンド・ホスト１２０の各々が含むエージェントは、より少なくてもより多くてもよいことをさらに諒解されたい。
【００３３】
スロット１２２は、クライアント１９０−１および１９０−２（総称してクライアント１９０）にサービスするアプリケーション・インスタンスにサービスするように構成される割り振られたリソースの集まりである。本明細書において使用される「スロット」という用語は、処理／計算、メモリもしくはネットワーキング・リソースまたは仮想化されたストレージを備える仮想マシンなど、割り振られたリソースの任意の適切な集まりとすることができる。
【００３４】
ＴｏＲスイッチ１３０は、関連するラックおよび適切なアグリゲート・スイッチにおけるエンド・ホスト間でデータを切り替える。たとえば、ＴｏＲスイッチ１３０−１は、ラック１１０−１におけるエンド・ホストから他のラック（たとえば、ラック１１０−２）におけるエンド・ホストに、またはアグリゲート・スイッチ１５０−１または１５０−２を介してネットワーク１８０にデータを切り替える。
【００３５】
ＲＥボックス１４０は、冗長性除去を実行する。特に、ＲＥボックス１４０は、受信データをキャッシュし、二重のトラフィックを抑制する。２つのＲＥボックスが示されているが、システム１００が含むＲＥボックスは、より少なくてもより多くてもよいことを諒解されたい。システム１００においてＴｏＲスイッチの後に配置されるものとして示されているが、ＲＥボックスは、冗長性除去を実行するために、システム１００の任意の適切な部分に配置され得ることをさらに諒解されたい。さらに、別の構成要素として示されているが、ＲＥボックス１４０は、（ａ）別々の冗長性除去構成要素、（ｂ）たとえばエンド・ホスト１２０のうちの１つもしくは複数、またはＴｏＲスイッチ１３０のうちの１つまたは複数などの構成要素にあるソフトウェア・モジュール、（ｃ）または任意の他の構成の組合せなど、任意の構成を含むことができる。
【００３６】
たとえば、ソースＲＥボックス（たとえば、ＲＥボックス１４０−１）は、エンド・ホスト（たとえば、エンド・ホスト１２０−１−ＥＨ１）から受信されたデータに関連付けられた識別子を作成することができ、作成された識別子をターゲットＲＥボックス（たとえば、ＲＥボックス１４０−２）に送信する。ソースとターゲットのＲＥボックス（両方の方向）の間の次の送信において、ソース側ＲＥボックス（たとえば、ＲＥボックス１４０−１）は、アプリケーション・レイテンシを低減し、帯域幅を節約するために、新しく受信されたデータの次の反復されるバイト・シーケンスを作成された識別子と置き換えることによって、データの重複除外を実行することができる。この例では、受信側ＲＥボックス（たとえば、ＲＥボックス１４０−２）は、完全な記憶されたバイト・シーケンスを取り出すために作成された識別子を使用し、取り出されたバイト・シーケンスをその宛先（たとえば、エンド・ホスト１２０−２−ＥＨ１）に転送する。
【００３７】
アグリゲーション・スイッチ１５０は、関連するＴｏＲスイッチとネットワーク１８０との間でデータを切り替える。たとえば、ＴｏＲスイッチ１３０−１−１は、適切なアグリゲーション・スイッチ（たとえば、アグリゲーション・スイッチ１５０−１または１５０−２）を介して、ラック１１０−１におけるリソースからネットワーク１８０にデータを切り替える。
【００３８】
エージェント１６０−１−Ａ１〜１６０−１−Ａ５、１６０−２−Ａ１〜１６０−２−Ａ５、１６０−３−Ａ１〜１６０−３−Ａ２、および１６０−４−Ａ１〜１６０−４−Ａ２（総称してエージェント１６０）は、通信（たとえば、スロット間）における冗長性を測定し、１つまたは複数の適切なＲＥアウェア・データ・センター・リンクを介して、これらの測定値を配置コントローラ１７０に報告する。本明細書で使用される際、「冗長性」という用語は、ＲＥボックス１４０によって重複除外することができる任意のコンテンツ・シーケンスを指し、任意の反復されるコンテンツ・シーケンスを含むものとして広く理解されるものとする。エンド・ホスト１２０、ＴｏＲスイッチ１３０、およびアグリゲーション・スイッチ１５０の各々にあるものとして示されているが、システム１００が任意の構成のエージェントを含むことができることを諒解されたい。たとえば、エージェントは、（ａ）エンド・ホスト１２０の一部またはすべて、（ｂ）エンド・ホスト１２０の一部またはすべて、およびアグリゲーション・スイッチ１５０の一部またはすべて、（ｃ）または任意の他の構成の組合せに配置され得る。
【００３９】
エンド・ホスト１２０において、エージェントは、エンド・ホストにあるスロットについてスロット間通信を監視することができる。ＴｏＲスイッチ１３０において、エージェントは、（ａ）ラック内の異なるエンド・ホスト上のスロットからのスロット間通信、（ｂ）ラック内のエンド・ホストの間の通信、（ｃ）ラック内のエンド・ホストおよび他のラック上のエンド・ホストの間の通信、または（ｄ）その他を監視することができる。分散データ・センター設定を含む一実施形態では、アグリゲーション・スイッチ１５０上のエージェントは、他のデータ・センターへの送出通信を監視することができる。
【００４０】
配置コントローラ１７０は、スロット（たとえば、スロット１２２のうちの１つまたは複数）をコンテナ（たとえば、ラック１１０のうちの１つ、または分散データ・センターにおけるデータ・センター）に割り当てる。ここでは１つの配置コントローラが示されているが、システム１００は、より多くの配置コントローラを含むことができること、または１組のデータ・センターに１つの配置コントローラがあり得ることを諒解されたい。これらの実施形態のいくつかでは、システム１００内に示されているが、配置コントローラ１７０は、システム１００外に配置され、ネットワーク１８０を介してシステム１００に接続されていてもよい。
【００４１】
ＲＥアウェア・データ・センター・リンクならびにリンク１９５−１および１９５−２は、ワイヤレス通信（たとえば、ＬＴＥ、ＧＳＭ、ＣＤＭＡ、ｂｌｕｅｔｏｏｔｈ）、フェムトセル通信（たとえば、ＷｉＦｉ）、パケットネットワーク通信（たとえば、ＩＰ）、ブロードバンド通信（たとえば、ＤＯＣＳＩＳおよびＤＳＬ）、ストレージ通信（たとえば、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、ｉＳＣＳＩ）など、１つまたは複数の通信チャネルを介した通信をサポートする。単一の接続として示されているが、リンクが任意の数または組合せの通信チャネルでもあってもよいことを諒解されたい。
【００４２】
ネットワーク１８０は、任意の数のアクセスおよびエッジ・ノードならびにネットワーク・デバイスと、任意の数および構成のリンク（明快のために図示せず）を含む。さらに、ネットワーク１８０は、ＬＴＥ、ＧＳＭ、ＣＤＭＡ、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイヤレス・ローカル・エリア・ネットワーク（ＷＬＡＮ）、広域ネットワーク（ＷＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）などを含めて、任意の組合せおよび任意の数のワイヤレスまたはワイヤ・ライン・ネットワークを含み得る。
【００４３】
クライアント１９０−１および１９０−２は、リンク１９５−１または１９５−２のうちの適切な１つを介してネットワーク１８０上で情報を送受信することができる任意のタイプの通信デバイスを含むことができる。たとえば、通信デバイスは、シン・クライアント、スマートフォン（たとえば、クライアント１９０−２）、パーソナルまたはラップトップ・コンピュータ（たとえば１９０−１）、サーバ、ネットワーク・デバイス、タブレット、電子書籍リーダーなどでもよい。通信デバイスは、処理または記憶など一部のタスクを実行するために、例示的なシステム内の他のリソースに依存する、またはタスクを独立して実行し得る。本明細書には２つのクライアントが示されているが、システム１００が含むクライアントはより少なくてもより多くてもよいことを諒解されたい。さらに、操作中の様々なときに、クライアントがシステムに追加されたり、システムから取り去られたりし得るので、クライアントの数は、どの時点においても動的であり得る。
【００４４】
いくつかの実施形態のうちいくつかにおいては、スロット１２２のうちのいくつかまたは一部は、仮想マシンである。
【００４５】
いくつかの実施形態では、スロット１２２のうちのいくつかまたは一部は、仮想化されたストレージである。
【００４６】
いくつかの実施形態では、ＴｏＲスイッチ１３０は、Ｅｔｈｅｒｎｅｔスイッチである。
【００４７】
いくつかの実施形態では、アグリゲーション・スイッチ１５０は、レイヤ２Ｅｔｈｅｒｎｅｔスイッチである。
【００４８】
ＲＥアウェア・データ・センター１００のいくつかの実施形態では、ＲＥアウェア・データ・センター１００は、複数の分散データ・センターのシステムにおける１つの分散データ・センターである。これらの実施形態では、ＲＥボックス１４０は、ＴｏＲスイッチ１３０の後の示された配置の代わりに、またはそれに加えて、アグリゲーション・スイッチ１５０の後（たとえば、アグリゲーション・スイッチ１５０とネットワーク１８０との間）に配置され得る。有利には、ＲＥアウェア・データ・センター１００がアプリケーション・インスタンスのすべてのスロットに対応するというわけではない（たとえば、いくつかのスロットが他のデータ・センターにおいて割り振られる）場合、これらの分散データ・センター間の帯域幅をより効率的に利用するために、データ・センター間トラフィックを低減するために、ＲＥアウェア・データ・センター１００が使用され得る。
【００４９】
図２は、ＲＥアウェア・システム（たとえば、図１のＲＥアウェア・データ・センター１００）がスロットのＲＥアウェア配置を実行するための方法２００の一実施形態を示すフローチャートを示す。方法は、１つまたは複数のエージェント１６０−１〜１６０−Ｎ（たとえば、図１のエージェント１６０のうちの１つまたは複数）が、冗長測定値を収集するステップ（ステップ２１０−１〜２１０−Ｎ）と、報告トリガが行われたことの決定（ステップ２２０−１〜２２０−Ｎ）に基づいて、収集された測定値を配置コントローラ１７０（たとえば、図１の配置コントローラ１７０）に報告するステップ（ステップ２３０−１〜２３０−Ｎ）とを含む。方法は、配置コントローラ１７０が、エージェント１６０−１〜１６０−Ｎから測定値を受信するステップ（ステップ２５０）と、配置トリガが行われたことの決定（ステップ２６０）に基づいて、受信された測定値に基づいて、スロット配置を実行するステップと（ステップ２７０）をさらに含む。
【００５０】
方法２００では、ステップ２１０−１〜２１０−Ｎは、冗長測定値を収集するステップを含む。特に、測定値は、スロット通信パターンと、スロット対に関連付けられた決定された冗長性とを含む。通信パターンは、スロット間の収集された測定値のトラフィック・マトリックスでもよく、決定された冗長性は、トラフィック・マトリックスにおけるスロット間通信間で識別される冗長トラフィックを含み得る。
【００５１】
方法２００で、ステップ２２０−１〜２２０−Ｎは、報告トリガが行われたことを決定するステップを含む。トリガの決定に基づいて、方法は、それぞれステップ２３０−１〜２３０−Ｎのうちの１つに進む、またはそれぞれステップ２２０−１〜２２０−Ｎのうちの１つに戻る。トリガは、収集された測定値が配置コントローラ１７０に送られなければならないことをシグナリングする任意の適切なイベントとすることができる。たとえば、トリガ・イベントは、（ａ）閾値間隔で定期的にトリガされる、（ｂ）それぞれステップ２１０−１〜２１０−Ｎのうちの１つで収集された測定値に基づく、（ｃ）配置コントローラ１７０からの要求の受信に基づく、または（ｄ）その他とすることができる。複数のトリガ・イベントが同時に行われ得ることを諒解されたい。
【００５２】
方法２００で、ステップ２３０−１〜２３０−Ｎは、収集された測定値を配置コントローラ１７０に報告するステップを含む。特に、収集された測定値は、たとえば、（ａ）生の収集された測定値、（ｂ）収集された測定値に基づいて圧縮または変更された情報、（ｃ）収集された測定値の集合、または（ｄ）その他など、任意の適切な形で報告され得る。
【００５３】
方法２００で、ステップ２５０は、エージェント１６０−１〜１６０−Ｎのうちの１つまたは複数から測定値を受信するステップを含む。
【００５４】
測定値が方法を実行する装置にプッシュまたはプルされ得ることを諒解されたい。
【００５５】
方法２００で、ステップ２６０は、配置トリガが行われたことを決定するステップを含む。トリガの決定に基づいて、方法は、ステップ２７０に進む、またはステップ２６０に戻る。トリガは、配置が実行されなければならないことをシグナリングする任意の適切なイベントとすることができる。たとえば、トリガ・イベントは、（ａ）閾値間隔で定期的にトリガされる、（ｂ）ステップ２５０において受信されたエージェント測定値に基づく、または（ｃ）その他とすることができる。複数のトリガ・イベントが同時に行われ得ることを諒解されたい。品質閾値は、推定の最適な有効コンテナ間帯域幅と比較して、限界値よりも大きい現在の有効コンテナ間帯域幅など、任意の適切な閾値でもあってもよい。
【００５６】
方法２００で、ステップ２７０は、エンド・ホスト（たとえば、図１のエンド・ホスト１２０）内にスロットを配置するステップを含む。特に、エンド・ホストに配置されるスロットは、決定され、ステップ２５０において受信されるエージェント測定値に基づいて、エンド・ホストに配置される。
【００５７】
ステップ２１０−１〜２１０−Ｎのうちの１つまたは複数のいくつかの実施形態では、冗長測定値は、スロット間通信における通信内冗長性または通信間冗長性における冗長性の測定値を含む。
【００５８】
本明細書で使用される際、「通信内冗長性」という用語は、スロット間通信内の冗長性を意味し、任意のスロット間通信間の冗長性を含むものとして広く理解されるものとする。たとえば、（ａ）図１のスロット１２２−１と１２２−３との間の通信内の冗長性、（ｂ）図１の１２２−１とエンド・ホスト１２０−２−ＥＨ１におけるスロット（図示せず）との間の通信内の冗長性、（ｃ）図３の３２２−ＳＬＯＴ１と３２２−ＳＬＯＴ２との間の通信内の冗長性、または（ｄ）図３の３２２−ＳＬＯＴ１と３２２−ＳＬＯＴ３との間の通信内の冗長性である。
【００５９】
本明細書で使用される際、「通信間冗長性」という用語は、２つのスロット間通信の間の冗長性を意味し、任意の２つのスロット間通信間の冗長性を含むものとして広く理解されるものとする。たとえば、（ａ）スロット間対スロット１２２−１／１２２−３間の通信と、スロット間対１２２−１と図１のエンド・ホスト１２０−２−ＥＨ１におけるスロット（図示せず）との間の通信との間の冗長性、または（ｂ）図３のスロット間対３２２−ＳＬＯＴ１／３２２−ＳＬＯＴ３間の通信と、スロット間対３２２−ＳＬＯＴ２／３２２−ＳＬＯＴ−４間の通信との間の冗長性は通信間冗長性である。
【００６０】
ステップ２５０のいくつかの実施形態では、配置コントローラとエージェント（たとえば、図１の配置コントローラ１７０とエージェント１６０のうちの１つまたは複数）との間の通信のために、ＡＰＩが提供され得る。これらの実施形態のうちのいくつかでは、配置コントローラは、収集された冗長性測定値の部分のすべてを１つまたは複数のエージェントに要求することができる。
【００６１】
いくつかの実施形態では、ステップ２６０および２７０の部分は、並行して実行され得る。たとえば、ステップ２６０での配置トリガは、現在の有効コンテナ間帯域幅が推定された最適な有効コンテナ間帯域幅を満たすかどうかを決定するステップを伴い得る。諒解されるように、推定された最適な有効コンテナ間帯域幅を決定するステップは、仮想マシンの最適な配置の決定を必要とし得る。したがって、仮想マシンの同じ決定された最適な配置は、ステップ２６０とステップ２７０の両方で使用され得る。
【００６２】
図３は、ＲＥアウェア・データ・センター１００における冗長性の機能ブロック図３００を示す。図３００は、ラック３１０−１および３１０−２（たとえば、図１のラック１１０のうちの２つ）と、ＲＥボックス３４０−１および３４０−２とを含む。ラック３１０−１は、スロット３２２−ＳＬＯＴ１と３２２−ＳＬＯＴ２とを含み、ラック３１０−２は、スロット３２２−ＳＬＯＴ３と３２２−ＳＬＯＴ４とを含む。データ転送経路３９０−１〜３９０−７は、構成要素間のデータ転送経路を示す。ＲＥボックスは、データ転送３９０−４によって示されるネットワーク・リンクを介してデータを重複除外するために配置される。
【００６３】
分散データ・センターの実施形態など、いくつかの実施形態では、ラック３１０−１および３１０−２は、データ・センターであり得る。
【００６４】
いくつかの実施形態では、ＲＥボックス３４０−１または３４０−２は、複数のＲＥボックスを含み得る。たとえば、別々のＲＥボックスは、エンド・ホストのうちの１つまたは複数を実行するソフトウェア・モジュールでもよい。
【００６５】
下記の例では、
１）スロット３２２−ＳＬＯＴ１〜３２２−ＳＬＯＴ４の各々は、ＶＭ１、ＶＭ２、ＶＭ３、およびＶＭ４の４つの仮想マシンのうちの１つが割り振られ得る
２）ＶＭ１→ＶＭ３およびＶＭ２→ＶＭ４の間に通信間冗長性がある（すなわち、ＲＥボックス３４０−１および３４０−２によって重複除外され得るデータ転送間の類似性が高い）
３）ＶＭ１とＶＭ２との間のデータ・トラフィックの帯域幅要件は８Ｖである
４）ＶＭ１とＶＭ３との間のデータ・トラフィックの帯域幅要件は１０Ｖである
５）ＶＭ３とＶＭ４との間のデータ・トラフィックの帯域幅要件は８Ｖである、および
６）ＶＭ２とＶＭ４との間のデータ・トラフィックの帯域幅要件は１０Ｖである
と仮定する。
【００６６】
第１の例では、同じラック内により高い帯域幅トラフィックを有するＶＭ対を配置する帯域幅ベースの配置戦略を使用して、４つの仮想マシンがスロットに割り当てられる。したがって、ＶＭ１およびＶＭ３が同じラックに配置され、ＶＭ２およびＶＭ４が同じラックに配置される。たとえば、配置は、ＶＭ１が３２２−ＳＬＯＴ１に割り当てられ、ＶＭ３が３２２−ＳＬＯＴ２に割り当てられ、ＶＭ２が３２２−ＳＬＯＴ３に割り当てられ、ＶＭ４が３２２−ＳＬＯＴ４に割り当てられ得る。したがって、データ転送リンクにわたる帯域幅要件は、
７）３９０−１を介した３２２−ＳＬＯＴ１と３２２−ＳＬＯＴ２との間の１０Ｖ
８）３９０−２→ＲＥボックス３４０−１→３９０−４→ＲＥボックス３４０−２および３９０−５を介した３２２−ＳＬＯＴ１と３２２−ＳＬＯＴ３との間の８Ｖ
９）３９０−３→ＲＥボックス３４０−１→３９０−４→ＲＥボックス３４０−２および３９０−６を介した３２２−ＳＬＯＴ２と３２２−ＳＬＯＴ４との間の７Ｖ
１０）３９０−７を介した３２２−ＳＬＯＴ３と３２２−ＳＬＯＴ４との間の１０Ｖ
となる。
【００６７】
この例では、ラック間帯域幅要件（すなわち、データ転送３９０−４上の帯域幅）は、以下に示すように１５Ｖである。
スロット３２２−ＳＬＯＴ１とスロット３２２−ＳＬＯＴ３との間とのトラフィック８Ｖ＋スロット３２２−ＳＬＯＴ２とスロット３２２−ＳＬＯＴ４との間のトラフィック７Ｖ。
【００６８】
第２の例では、本明細書で説明するように、ＲＥアウェア配置戦略を使用して、４つの仮想マシンがスロットに割り当てられる。したがって、ＶＭ１およびＶＭ２が同じラックに配置され、ＶＭ３およびＶＭ４が同じラックに配置される。たとえば、配置は、ＶＭ１が３２２−ＳＬＯＴ１に割り当てられ、ＶＭ２が３２２−ＳＬＯＴ２に割り当てられ、ＶＭ３が３２２−ＳＬＯＴ３に割り当てられ、ＶＭ４が３２２−ＳＬＯＴ４に割り当てられ得る。したがって、データ転送リンクにわたる帯域幅要件は、
１１）３９０−１を介した３２２−ＳＬＯＴ１と３２２−ＳＬＯＴ２との間の８Ｖ
１２）３９０−２→ＲＥボックス３４０−１→３９０−４→ＲＥボックス３４０−２および３９０−５を介した３２２−ＳＬＯＴ１と３２２−ＳＬＯＴ３との間の１０Ｖ
１３）３９０−３→ＲＥボックス３４０−１→３９０−４→ＲＥボックス３４０−２および３９０−６を介した３２２−ＳＬＯＴ２と３２２−ＳＬＯＴ４との間の１０Ｖ
１４）３９０−７を介した３２２−ＳＬＯＴ３と３２２−ＳＬＯＴ４との間の７Ｖ
となる。
【００６９】
この例では、ラック間帯域幅要件（すなわち、データ転送３９０−４上の帯域幅）は、以下に示すように１０Ｖである。通信間冗長性（すなわち、データ転送３２２−ＳＬＯＴ１→３２２−ＳＬＯＴ３および３２２−ＳＬＯＴ２→３２２−ＳＬＯＴ４との間の類似性）は、この例では、データの重複除外を可能にする、スロット対がＲＥボックス対３４０−１および３４０−２をトラバースする通信間冗長性として利用されることを諒解されたい。
スロット３２２−ＳＬＯＴ１とスロット３２２−ＳＬＯＴ３との間のトラフィックの１０Ｖ
＋スロット３２２−ＳＬＯＴ２とスロット３２２−ＳＬＯＴ４との間のトラフィックの１０Ｖ
−ＲＥボックス対３４０−１および３４０−２によって重複除外されるデータの１０Ｖ
【００７０】
したがって、この例では、データ転送間の高い類似性を利用することによって、ＲＥアウェア配置戦略は、帯域幅ベースの配置戦略（すなわち、１５Ｖと比較して１０Ｖ）に対して３３％だけ、ラック間（または分散データ・センターにおけるデータ・センター間）のリンク３９０−４の帯域幅の使用量をかなり低減した。
【００７１】
図４は、図２のステップ２７０に示したように、配置コントローラ（たとえば、図１の配置コントローラ１６０）がエンド・ホストにおいてスロットを配置するための方法４００の一実施形態を示すフローチャートを示す。この方法は、配置される決定された組のスロット（ステップ４２０）、決定された通信パターン（ステップ４４０）、および決定されたスロット通信冗長性（ステップ４６０）に基づいてスロットを配置するステップ（ステップ４８０）を含む。
【００７２】
方法４００で、ステップ４２０は、配置するスロットの数およびタイプを決定するステップを含む。特に、方法を実行する装置は、クライアント（たとえば、図１のクライアント１９０）にサービスするアプリケーション・インスタンスをサポートするために必要なスロットの数およびタイプを決定する。
【００７３】
方法４００で、ステップ４４０は、通信パターンを決定するステップを含む。特に、通信パターンは、１つまたは複数のエージェント（たとえば、図２のステップ２５０）から受信された通信パターンから導出される。通信パターンは、たとえば、（ａ）受信された通信パターンを使用する、（ｂ）受信された通信パターンを変更する、（ｃ）受信された通信パターンをアグリゲートする、または（ｄ）その他など、任意の適切な機構を使用して導出され得る。
【００７４】
方法４００で、ステップ４６０は、通信冗長性を決定するステップを含む。特に、通信冗長性は、１つまたは複数のエージェント（たとえば、図２のステップ２５０）から受信された通信冗長性から導出される。通信冗長性は、たとえば、（ａ）受信された通信冗長性を使用する、（ｂ）受信された通信冗長性を変更する、（ｃ）受信された通信冗長性をアグリゲートする、または（ｄ）その他など、任意の適切な機構を使用して導出され得る。
【００７５】
方法４００で、ステップ４８０は、決定された必要なスロット、決定された通信パターン、および決定されたスロット冗長性に基づいてＲＥアウェア配置戦略を実行するステップを含む。特に、ＲＥアウェア配置戦略は、スロット間通信でのデータ転送における冗長性を考慮し、全体的なラック間（またはデータ・センター間）帯域幅使用量を最小限に抑えながら、データ転送における冗長性を利用するためにスロットを配置する。
【００７６】
いくつかの実施形態では、ステップ４８０は、ラックにわたるスロット間データ転送の通信内冗長性と、ラックにわたる２つのスロット間転送の通信間冗長性とにスロットの配置の基礎をおくステップを含む。いくつかの実施形態では、ラックにわたる代わりに、またはそれに加えて、データ・センター（たとえば、分散された設定のデータ・センターなど）にわたって、通信内冗長性および通信間冗長性が決定される。
【００７７】
いくつかの実施形態では、ステップ４８０は、スロット配置を決定するために従来の整数線形プログラムまたは伝統的な最適化技法を使用するステップを含む。従来の最適化技法は、所望の目標または目的を最も達成するアクションを決定するステップを伴う。目標または目的を最も達成するアクションは、目的関数の値を最大または最小にすることによって決定され得る。いくつかの実施形態では、目的関数の目標またはメトリックは、全体的なコンテナ間（たとえば、ラック間またはデータ・センター間）の帯域幅使用量を最小限に抑えるためのものであり得る（たとえば、ｍｉｎ
【数１】
0006385932.tif 000002
式中、ｕａ，ｂがコンテナＣａとＣｂとの間で使用される帯域幅を表す）。
【００７８】
問題は、以下のように表され得る。
最適化：
［Ｅ．１］ｙ＝ｆ（ｘ１，ｘ２，・・・，ｘｎ）
以下を前提とする。
【００７９】
【数２】
0006385932.tif 000003
【００８０】
式中、式Ｅ．１が目的関数であり、式Ｅ．２がソリューションに課される１組の制約を構成する。ｘｉの変数、ｘ１，ｘ２，・・・，ｘｎは、決定変数の組を表し、ｙ＝ｆ（ｘ１，ｘ２，・・・，ｘｎ）は、これらの決定変数に関して表される目的関数である。目的関数は、最大または最小にされ得ることを諒解されたい。
【００８１】
これらの実施形態の任意のもののうちのいくつかにおいて、制約は、以下のうちの１つまたは複数とすることができる。
１．
【数３】
0006385932.tif 000004
式中、各スロットが１つのコンテナに配置され、ｘｉ，ｊは、コンテナ（ｊ）におけるスロット（ｉ）の配置を示す変数である。
２．
【数４】
0006385932.tif 000005
式中、各コンテナ（ｊ）が、（たとえば、容量またはプロビジョニング・パラメータに基づいて）コンテナが対応し得る最大数のスロットにおける制限Ｍａｘｊを有する。
３．ｙｊ，ａ，ｋ，ｂ≧ｘｊ，ａ＋ｘｋ，ｂ−１：式中、ｙｊ，ａ，ｋ，ｂは、スロット（ｉ）がコンテナ（ａ）に配置され、スロット（ｋ）がコンテナ（ｂ）に配置される場合、１であり、そうでなければゼロである変数を表す。
４．コンテナにわたる使用量に関する帯域幅は、各タイプのトラフィック（すなわち、一意の冗長内および冗長間）の寄与に基づく。
ａ．コンテナＣａとＣｂとの間の帯域幅使用量に関する一意のデータ転送の寄与は、Σｊ，ｋ，ｊ≠ｋＵｎｉｊ，ｋ×ｙｊ，ａ，ｋ，ｂである。式中、Ｕｎｉｊ，ｋはスロットｊとｋとの間の一意のトラフィックの量である。スロット（ｊ）がコンテナＣａに配置され、スロット（ｋ）がコンテナＣｂに配置される場合、これは、コンテナＣａ→Ｃｂ間の帯域幅使用量に寄与する。
ｂ．コンテナＣａとＣｂとの間の帯域幅使用量に関する冗長内データ転送の寄与はゼロである。冗長内データがＲＥ機構によって抑制されることを諒解されたい。
ｃ．帯域幅使用量に関する冗長間データ転送の寄与は、以下の通りに計算される。
Σｊ，ｋ，ｌ，ｍ，ｊ≠ｌｏｒｋ≠ｍＩｎｔｅｒｊ，ｋ，ｌ，ｍ×ｚｊ，ｌ，ａ，ｋ，ｍ，ｂ
式中、Ｉｎｔｅｒｊ，ｋ，ｌ，ｍは、スロット間冗長性を表し、Ｚｊ，ｌ，ａ，ｋ，ｍ，ｂは、スロット間冗長性が抑制されるときを表す変数である。たとえば、スロット（ｊ）およびスロット（ｋ）がそれぞれコンテナＣａおよびＣｂに配置されており（すなわち、ｙｊ，ａ，ｋ，ｂ＝１）、スロット（ｌ）およびスロット（ｍ）もそれぞれコンテナＣａおよびＣｂに配置されている（すなわち、ｙｌ，ａ，ｍ，ｂ＝１）とき、スロット間冗長データは、ＲＥ機構によって抑制され、したがって、ｚｊ，ｌ，ａ，ｋ，ｍ，ｂ＝０である。しかしながら、ｙｊ，ａ，ｋ，ｂ＝１およびｙｌ，ａ，ｍ，ｂ＝０である場合、スロット間冗長性は、抑制されず、したがって、ｚｊ，ｌ，ａ，ｋ，ｍ，ｂ＝１である。
５．コンテナＣａとＣｂとの間の帯域幅は、利用可能な帯域幅未満である  ＢＷａ，ｂ：ｕａ，ｂ≦ＢＷａ，ｂ。
６．１つまたは複数のスロットは、１つまたは複数の識別されたコンテナに制限される（たとえば、ｘｊ，ａ＝０）。
【００８２】
図５は、図４のステップ４８０に示されるように、スロットを配置するための方法５００の一実施形態を示すフローチャートを表す。方法は、クラスタの数を決定するステップ（ステップ５２０）、利用可能なクラスタにスロットを割り当てるステップ（ステップ５４０）、およびクラスタをコンテナに割り当てるステップ（ステップ５６０）を含む。
【００８３】
方法５００で、ステップ５２０は、クラスタの数を決定するステップを含む。特に、決定された数の配置されるスロット（たとえば、図４のステップ４２０）は、「Ｋ」個のクラスタに仕切られ、したがって、仕切られた各クラスタは、少なくとも１つのコンテナにおいて割り振られ得る。本明細書において使用される際、「コンテナ」という用語は、たとえばデータ・センターの設定内のラック、または分散データ・センター設定内のデータ・センター自体など、スロットをアグリゲートすることができる任意の適切な構成要素とすることができる。
【００８４】
いくつかの実施形態では、コンテナは、ラックである。
【００８５】
いくつかの実施形態では、コンテナは、データ・センターである。
【００８６】
図６は、図４のステップ４８０および図５のステップ５２０、５４０、および５６０に示されるように、スロットを配置するための方法６００の一実施形態を示すフローチャートを表す。
【００８７】
方法６００で、ステップ６１０は、本明細書に記載されているように、クラスタの数「Ｋ」を選択するステップを含む。この場合、Ｋは、決定されたスロットが分散されるクラスタの数である。
【００８８】
方法６００で、ステップ６２０は、ランダムなスロットの数の各々を利用可能なコンテナに割り当てるステップを含む。これらの実施形態のうちのいくつにおいて、割り当てられるランダムなスロットの数は、「Ｋ」である。
【００８９】
方法６００で、ステップ６３０および６４０は、割り振られる残りのスロット「Ｓ」ごとに（ステップ６４０）、各利用可能なクラスタまでの計算された距離に基づいて利用可能なクラスタにスロット「Ｓ」を配置するステップ（ステップ６３０）を含む。
【００９０】
方法６００で、ステップ６５０は、有効コンテナ間帯域幅使用量メトリックに基づいてクラスタをコンテナに割り当てるステップを含む。
【００９１】
方法６００は、ステップ６６０を随意に含む。ステップ６６０は、ステップ６５０において決定される有効コンテナ間帯域幅使用量が計算された最適値を満たすかどうか、および決定された配置が、各コンテナ間トラフィック（Ｒ１，Ｒ２）がＢＷ（Ｒ１，Ｒ２）未満でなければならないという制約を満たすかどうかを決定するステップを含む。この場合、ＢＷは、コンテナＲＩとＲ２との間の利用可能な帯域幅である。計算された最適な有効コンテナ間帯域幅使用量を決定するステップは、たとえば、（ａ）反復的なカウントを設定し、最善の値を選択すること、（ｂ）ステップ６５０から決定された有効コンテナ間帯域幅使用量をあらかじめ定められた閾値と比較すること、または（ｃ）その他など、任意の適切な方法を使用して行われ得る。
【００９２】
方法６００で、ステップ６７０は、決定されたスロットの配置を最適化するステップを含む。特に、スロット配置の最適化は、コンテナ対を移動させることが有効コンテナ間帯域幅使用量を向上させるかどうかを決定するステップ含む。たとえば、Ｃ１におけるＳ１をＣ２におけるＳ２と交換することは、コンテナＣ１におけるＳ１をコンテナＣ２に移動させ、コンテナＣ２におけるＳ２をＣ１に移動させることが、有効コンテナ間帯域幅使用量を向上させることの決定に基づき得る。
【００９３】
ステップ６１０のいくつかの実施形態では、Ｋは、各コンテナにおける利用可能なスロットの数に基づいて選択される。
【００９４】
ステップ６１０のいくつかの実施形態では、Ｋは、ランダムに選択される。
【００９５】
いくつかの実施形態では、ステップ６３０は、各利用可能なクラスタまでの距離を計算するステップと、各利用可能なクラスタまでの計算された距離に基づいて利用可能なクラスタにスロットＳを配置するステップとを含む。この場合、利用可能なクラスタは、いっぱいではないクラスタである（すなわち、容量よりも割り当てられたスロットを有する）。
【００９６】
ステップ６３０のこれらの実施形態のいくつかでは、各候補クラスタ（たとえば、クラスタＣ）までの距離を計算するステップは、有効帯域幅メトリック（Ｍ）に基づく。特に、有効帯域幅メトリックは、スロットＳからクラスタにおける他のスロットのうちの任意のものへのデータ転送内（通信内冗長性）の、ならびにスロットＳからクラスタにおける任意のスロットｉおよびスロットＳから任意のスロットｊへのデータ転送にわたる（通信間冗長性）、冗長性除去後に必要とされる帯域幅である。
【００９７】
これらの実施形態のうちのいくつかでは、有効帯域幅メトリックは、疑似コード・ライン（１）〜（３）で説明されるように計算される。
【００９８】
【数５】
0006385932.tif 000006
【００９９】
【数６】
0006385932.tif 000007
（３）Ｍ（Ｓ）＝Ｍ＿ｆｒｏｍ（Ｓ）＋Ｍ＿ｔｏ（Ｓ）
【０１００】
式中、関数Ｄｅｍａｎｄ（ｓｌｏｔ−ｉ，ｓｌｏｔ−ｊ）は、スロット「ｉ」と「ｊ」との間の帯域幅要求を戻し、関数ＩｎｔｒａＲｅｄｕｎｄａｎｃｙ（ｓｌｏｔ  ｉ，ｓｌｏｔ  ｊ）は、スロットｉからスロットｊへのデータ転送のための通信内冗長性を戻し、関数ＩｎｔｅｒＲｅｄｕｎｄａｎｃｙ（ｓｌｏｔ  ｉ，ｓｌｏｔ  ｊ，ｓｌｏｔ  ｋ，ｓｌｏｔ  ｌ）は、データ転送（ｓｌｏｔ  ｉ、ｓｌｏｔ  ｊ）とデータ転送（ｓｌｏｔ  ｋ、ｓｌｏｔ  ｌ）との間の通信間冗長性を戻す。
【０１０１】
ステップ６３０のいくつかの実施形態では、クラスタ配置選択は、クラスタＣ（Ｍｉｎ（Ｃ））への計算された最小平均距離に基づく。これらの実施形態のうちのいくつかでは、Ｍｉｎ（Ｃ）は、疑似コード・ライン（４）〜（６）に示されるように計算される。
（４）クラスタＣごとに
（５）ＡｖｇＤｉｓｔａｎｃｅ（Ｃ）＝（１／Ｎ＊１／Ｍ（Ｓ））を計算する
／／この場合、ＮはクラスタＣにおけるスロットの数である
（６）Ｍｉｎ（Ｃ）＝Ｍｉｎ｜ＡｖｇＤｉｓｔａｎｃｅ（Ｃ）｜
【０１０２】
有効帯域幅メトリック（たとえば、Ｍ（Ｓ））の逆数をとり、最小値（スロット、コンテナ）対を選択することによって、コンテナに対する高い帯域幅要求を有するスロットがそのコンテナに配置され、潜在的に、コンテナにわたってトラバースするトラフィックを低減する（たとえば、有効コンテナ間帯域幅使用量を低減する）ことを諒解されたい。
【０１０３】
いくつかの実施形態では、ステップ６１０〜６４０は、図７に示された通りである。この場合、ＶＭは、仮想マシン（たとえば、一種のスロット）であり、Ｍｉｎｄｉｓｔｕは、クラスタＣまでの最小平均距離であり、ＭｉｎＶＭおよびＭｉｎＣは、Ｍｉｎｄｉｓｔｕと関連するそれぞれのＶＭおよびコンテナであり、Ｕｎｉｕ，ｖは、ＶＭ  ｕとｖとの間の一意のトラフィックの量であり、Ｉｎｔｅｒｊ，ｋ，ｌ，ｍは、ＶＭｊ→ＶＭｋおよびＶＭｌ→ＶＭｍからのデータ転送間の冗長性についてのＶＭ間冗長性トラフィック要求である。
【０１０４】
ステップ６５０のいくつかの実施形態では、すべてのコンテナ間帯域幅要求の合計−コンテナ間冗長性トラフィック（通信内冗長性トラフィックおよび通信間冗長性トラフィックを含む）として、有効コンテナ間帯域幅使用量が計算される。これらの実施形態のうちのいくつかでは、有効コンテナ間帯域幅使用量は、疑似コード・ライン（７）〜（１０）に示されるように計算される。
（７）有効コンテナ間帯域幅使用量＝０
（８）対におけるコンテナＣｉ，Ｃｊごとに
（９）スロットｉおよびスロットｊが異なるコンテナにあるように、（スロットｉ、スロットｊ）通信のリストを見つける
（１０）有効コンテナ間帯域幅使用量＋＝
【数７】
0006385932.tif 000008
／／この場合、スロットｉおよびスロットｋがあるコンテナにあり、
／／スロットｊおよびスロットｋが他のコンテナにある
【０１０５】
いくつかの実施形態では、ステップ６５０は、図８に示された通りである。この場合、ＶＭは、仮想マシン（たとえば、一種のスロット）であり、Ｕｎｉｕ，ｖは、ＶＭ  ｕとｖとの間の一意のトラフィックの量であり、Ｉｎｔｅｒｊ，ｋ，ｌ，ｍは、ＶＭｊ→ＶＭｋおよびＶＭｌ→ＶＭｍからのデータ転送間の冗長性についてのＶＭ間冗長トラフィック要求である。
【０１０６】
ステップ６７０のいくつかの実施形態では、最適化の決定は、疑似コード・ライン（１１）〜（１６）に示されるように計算される。
（１１）コンテナＣｉ，Ｃｊ対ごとに
（１２）Ｃｉにおけるスロットｋごとに
（１３）Ｃｊにおけるスロットｌごとに、スロットｋをスロットｌと交換することが有効コンテナ間帯域幅使用量を向上させるかどうかを決定する
（１４）スロットＩｍａｘを選択する
／／この場合、Ｉｍａｘが最高の計算された
／／有効コンテナ間帯域幅使用量メトリックを有するスロットｌである
（１５）スロットｋ≠スロットＩｍａｘ＆＆である場合、
交換は、コンテナ間帯域幅制約を妨害しない
（１６）スロットｋをスロットＩｍａｘと交換する
【０１０７】
いくつかの実施形態では、ステップ６７０は、図９に示された通りである。
【０１０８】
いくつかの実施形態では、方法６００は、スロット配置制約を含む。特に、いくつかのスロットについて、コンテナのサブセットのみが、スロット配置に利用可能である。これらの実施形態のいくつかでは、利用可能なコンテナのサブセットの選択は、たとえばレイテンシなどのサービス・メトリックの質に基づく。
【０１０９】
これらの実施形態のいくつかでは、コンテナの数（「Ｋ」）が選択され、１組のランダムに選択されたＫ個のスロットは、１対１の対応を使用し、スロット配置制約が満たされることを確実にする、Ｋ個のコンテナへの割当てである。ステップ６３０で、コンテナへのスロットの距離を計算する際、スロット配置制約を満たすコンテナのみが考慮に入れられる。ステップ６７０で、スロット配置制約を満たす交換のみが実行される。
【０１１０】
特定のシーケンスで主に表され、記載されているが、方法２００、４００、５００、および６００に示されるステップが任意の適切なシーケンスでも実行され得ることを諒解されたい。さらに、１つのステップによって識別されるステップは、シーケンスにおける１つまたは複数の他のステップでも実行されてもよく、または、複数のステップの共通のアクションが一度だけ実行されてもよい。
【０１１１】
様々な上記の方法のステップがプログラムされたコンピュータによって実行され得ることを諒解されたい。本明細書において、いくつかの実施形態は、たとえば、データ記憶媒体など、プログラム記憶装置をカバーするためのものでもあり、これは機械またはコンピュータ可読で、命令の機械実行可能またはコンピュータ実行可能プログラムをコード化し、前記命令は、上述した方法のステップの一部もしくは全部を実行する。プログラム記憶装置は、たとえば、デジタル・メモリ、磁気記録媒体、たとえば磁気ディスクおよび磁気テープ、ハードドライブ、または光学的に読取り可能なデータ記憶媒体でもよい。実施形態は、上述の方法の前記ステップを実行するようにプログラムされるコンピュータをカバーすることも目的とする。
【０１１２】
図１０は、たとえば、図１のエンド・ホスト１２０のうちの１つ、ＴｏＲスイッチ１３０のうちの１つ、アグリゲーション・スイッチ１５０のうちの１つ、または配置コントローラ１７０など、様々な装置１０００の一実施形態を概略的に示す。装置１０００は、プロセッサ１０１０と、データ・ストレージ１０１１と、随意にＩ／Ｏインターフェース１０３０とを含む。
【０１１３】
プロセッサ１０１０は、装置１０００の動作を制御する。プロセッサ１０１０は、データ・ストレージ１０１１と協働する。
【０１１４】
データ・ストレージ１０１１は、必要に応じて、冗長測定値、通信パターンなどのプログラム・データを記憶することができる。データ・ストレージ１０１１は、プロセッサ１０１０によって実行可能なプログラム１０２０も記憶する。
【０１１５】
プロセッサ実行可能プログラム１０２０は、必要に応じて、エージェント収集プログラム１０２１、配置コントローラ・プログラム１０２３、配置コントローラ配置プログラム１０２５、またはＩ／Ｏインターフェース・プログラム１０２７を含み得る。プロセッサ１０１０は、プロセッサ実行可能プログラム１０２０と協働する。
【０１１６】
Ｉ／Ｏインターフェース１０３０は、たとえば図１のリンクなど、任意の適切な通信チャネルを介した通信をサポートするために、プロセッサ１０１０およびＩ／Ｏインターフェース・プログラム１０２７と協働する。
【０１１７】
エージェント収集１０２１は、上述したように、図２の方法２００のステップ２１０−１、２２０−１、および２３０−１を実行する。
【０１１８】
配置コントローラ・プログラム１０２３は、上述したように、図５の方法２００のステップ２５０、２６０、および２７０を実行する。
【０１１９】
配置コントローラ配置プログラム１０２５は、上述したように、図２の方法２７０のステップ、図４のステップ、図５のステップ、または図６のステップを実行する。
【０１２０】
いくつかの実施形態では、プロセッサ１０１０は、プロセッサ／ＣＰＵコアのなどのリソースを含むことができ、Ｉ／Ｏインターフェース１０３０は、任意の適切なネットワーク・インターフェースも含むことができ、またはデータ・ストレージ１０１１は、メモリまたは記憶装置を含むことができる。さらに、装置１０００は、たとえば、１つまたは複数のサーバ、プロセッサ、メモリ、ネットワーク・インターフェース、または記憶装置などの構成要素からなるブレードなど、任意の適切な物理的なハードウェア構成とすることができる。これらの実施形態のいくつかでは、装置１０００は、互いから離れたクラウド・ネットワーク・リソースを含むことができる。
【０１２１】
いくつかの実施形態では、装置１０００は、仮想マシンでもよい。これらの実施形態のいくつかでは、仮想マシンは、異なる機械からの構成要素を含むことができ、または地理的に分散され得る。たとえば、データ・ストレージ１０１１およびプロセッサ１０１０は、２つの異なる物理的な機械にあってもよい。
【０１２２】
いくつかの実施形態では、装置１０００は、方法２００、４００、５００、または６００を実行するようにプログラムされる汎用コンピュータでもよい。
【０１２３】
プロセッサ実行可能プログラム１０２０がプロセッサ１０１０において実施されるとき、プログラム・コード・セグメントは、プロセッサと結合して、特定の論理回路と同じように動作する一意のデバイスを提供する。
【０１２４】
本明細書では、たとえば、プログラムおよび論理がデータ・ストレージ内に記憶され、メモリがプロセッサに通信可能に接続されている実施形態に関して表され、記載されているが、装置の任意の適切な構成に通信可能に接続されているメモリ、ストレージ、またはデータベースの任意の適切な構成を使用する、メモリ、ストレージ、または内部もしくは外部のデータベースの任意の適切な組合せに情報を記憶する、あるいは任意の適切な数のアクセス可能な外部メモリ、ストレージ、またはデータベースを使用するなど、そのような情報が任意の他の適切な方法（たとえば、任意の適切な数のメモリ、ストレージ、またはデータベースを使用して）で記憶され得ることを諒解されたい。したがって、本明細書で言及されるデータ・ストレージという用語は、メモリ、ストレージ、およびデータベースのすべての適切な組合せを含むものとする。
【０１２５】
説明および図面は、単に本発明の原理を示しているにすぎない。したがって、当業者は、本明細書には明確に記載または示されないが、本発明の原理を実施し、その意図および範囲内に含まれる様々な配置を考案することができることを諒解されよう。さらに、本明細書に説明されるすべての例は、主に、明確に、本技術を促進するために発明者によって寄与される概念および本発明の原理を読者が理解するのを援助するための教育上の目的のためのみであるものとされ、そのような具体的に説明された例および条件に限定されないものとして解釈されるべきものとする。さらに、本発明の原理、態様、および実施形態を説明する本明細書におけるすべての記載、ならびにその具体例は、その均等物を含むものとする。
【０１２６】
「プロセッサ」としてラベル付けされる任意の機能的なブロックを含む、図に示される様々な要素の機能は、専用のハードウェア、ならびに適切なソフトウェアに関連してソフトウェアを実行することができるハードウェアを用いることによって提供され得る。プロセッサによって提供されるとき、機能は、単一の専用プロセッサによって、単一の共有プロセッサによって、またはそのいくつかが共有され得る複数の個々のプロセッサによって提供され得る。さらに、「プロセッサ」または「コントローラ」という用語の明確な使用は、もっぱらソフトウェアを実行することができるハードウェアだけを指すものと解釈されるものではなく、限定はしないが、デジタル信号プロセッサ（ＤＳＰ）ハードウェア、ネットワーク・プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、ソフトウェアを記憶するための読取り専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、および不揮発性ストレージを暗に含み得る。従来またはカスタムの他のハードウェアも含まれ得る。同様に、図中に示された任意のスイッチは、単に概念的なものにすぎない。それらの機能は、プログラム論理の動作を介して、専用の論理を介して、プログラム制御および専用の論理の対話を介して、または、手動でさえ、実施され得、特定の技法は、状況からより具体的に理解されるように、実施者によって選択可能である。
【０１２７】
本明細書における任意のブロック図は、本発明の原理を具体化する例示的な回路の概念上の図を表していることを諒解されたい。同様に、任意のフローチャート、フロー図、状態遷移図、疑似コードなどは、コンピュータ可読媒体において実質的に表され得、そのようなコンピュータまたはプロセッサが明確に示されるかどうかにかかわらず、コンピュータまたはプロセッサによってそのように実行され得る様々なプロセスを表すことを諒解されたい。
【図１】
0006385932.tif 000009
【図２】
0006385932.tif 000010
【図３】
0006385932.tif 000011
【図４】
0006385932.tif 000012
【図５】
0006385932.tif 000013
【図６】
0006385932.tif 000014
【図７】
0006385932.tif 000015
【図８】
0006385932.tif 000016
【図９】
0006385932.tif 000017
【図１０】
0006385932.tif 000018