ここに開示される実施形態は、クラウドコンピューティングシステムに関して説明されるが、本開示の方法及びシステムは、ワークロードを協働して実行する複数のノードを含む任意の適切なコンピューティングシステムに実装されてよい。
ここで参照されるとき、コンピューティングシステムのノードとは、少なくとも1つの処理デバイスと、その少なくとも1つの処理デバイスによってアクセス可能なメモリと、を含むものである。ノードは、例えば、サーバ、仮想サーバ、仮想マシン、インスタンス(instance)又は処理ノードとも称されることがある。
図1は、コンピューティング能力及び記憶容量をエンドユーザへのサービスとして受け渡すように構成される、種々の実施形態による例示的なクラウドコンピューティングシステム10を示す図である。クラウドコンピューティングシステム10は、複数ノードのクラスタ14に動作可能に結合された制御サーバ12を含む。複数ノードのクラスタ14は、分散型通信ネットワーク18に接続されており、各ノード16は、ローカル処理能力及びメモリを含む。具体的には、各ノード16は、少なくとも1つのプロセッサ40(図2)と、プロセッサ40によってアクセス可能な少なくとも1つのメモリ42(図2)と、を含む。通信ネットワーク18は、例えば、伝送制御プロトコル/インターネットプロトコル(Transmission Control Protocol/Internet Protocol)(TCP/IP)若しくはユーザデータグラムプロトコル(User Datagram Protocol)(UDP)を含むインターネットプロトコル(IP)フォーマット、イーサネット(登録商標)(Ethernet(登録商標))ネットワーク、シリアルネットワーク、又は、他のローカルエリア若しくはワイドエリアのネットワーク(LAN若しくはWAN)等の任意の適切なコンピュータネットワークプロトコルを含む。
ここに述べられるように、ノード16は、制御サーバ12によって、通信ネットワーク18に接続された複数の利用可能ノード16のクラウドから、複数ノードのクラスタ14を指定するために選択される。利用可能ノード16は、例えばデータセンタ内の1つ以上のサーバストレージラック上に設けられており、種々のハードウェアコンフィギュレーションを含む。一実施形態では、複数のデータセンタ及び/又は他のハードウェアプロバイダからの利用可能ノード16が、クラウドコンピューティングシステム10のための複数ノードのクラスタ14としての選択及びコンフィギュレーションのために、制御サーバ12によってアクセス可能である。例えば、1つ以上のサードパーティに係るデータセンタ(例えばアマゾンウェブサービス等)及び/又はユーザ提供のハードウェアが、制御サーバ12によってクラウドコンピューティングのためにコンフィギュアされてよい。一例においては、数千のノード16が、制御サーバ12による選択及びコンフィギュレーションのために利用可能であってよいが、任意の数のノード16が利用可能であってよい。図1では5つのノード16が示されているが、任意の適切な数のノード16がクラウドコンピューティングシステム10のために選択されてよい。制御サーバ12は、各々が1つ以上のプロセッサを含む1つ以上のコンピューティングデバイス(例示的にはサーバコンピュータ)を含む。図示された実施形態では、制御サーバ12は、ノードクラスタ14から物理的に離れている専用の制御サーバ12である。一実施形態では、制御サーバ12は、利用可能ノード16を収容しているデータセンタから物理的に遠隔のものであってよい。代替的には、制御サーバ12は、複数ノードからなる選択されたクラスタ14の1つ以上のノード16であってよい。制御サーバ12は、ここに述べられるように、複数ノード16を割り振ると共にコンフィギュアすること、ノード16上でワークロードを開始すること、性能データを収集すると共に報告すること等のために動作するクラウドコンピューティングコンフィギュレーションシステムとして機能する。
制御サーバ12は、例示的には、コンフィギュレータ22と、ロードジェネレータ24と、ロードバランサ26と、を含む。コンフィギュレータ22、ロードジェネレータ24及びロードバランサ26は、ここで参照されるとき、1つ以上のプロセッサによってアクセス可能な内部メモリ又は外部メモリ内に記憶されたソフトウェアコード又はファームウェアコードを実行する当該1つ以上のプロセッサを備えるものである。ソフトウェア/ファームウェアコードは、コンフィギュレータ22、ロードジェネレータ24及びロードバランサ26に対応する命令を含み、これらの命令は、当該1つ以上のプロセッサによって実行されるときに、ここに述べられる種々の機能を当該1つ以上のプロセッサに実行させる。コンフィギュレータ22、ロードジェネレータ24及び/又はロードバランサ26は、代替的には、特定用途向け集積回路(ASICs)、フィールドプログラマブルゲートアレイ(FPGAs)、デジタル信号プロセッサ(DSPs)、ハードウェア論理素子又はこれらの組み合わせを含んでいてよい。コンフィギュレータ22は、ここに述べられるように、複数ノードのクラスタ14に含ませる1つ以上のノード16を選択しコンフィギュアすること、通信ネットワーク18のパラメータをコンフィギュアすること、複数ノードのクラスタ14上での実行のためにワークロードコンテナモジュール及びワークロードを選択し、コンフィギュアし及び展開すること、並びに、ワークロードの実行に関連付けられた性能データを収集し解析することのために動作可能である。コンフィギュレータ22は、ノード16上でソフトウェアをコンフィギュアするためにノード16に提供され且つノード16で処理されるコンフィギュレーションファイル28と、ワークロード要求パラメータをロードジェネレータ24に提供するためにロードジェネレータ24に提供される少なくとも1つのコンフィギュレーションファイル30と、を生成するように動作する。
ロードジェネレータ24は、ワークロード実行のためにノードクラスタ14によって使用される入力としての役割を果たす要求を生成するように動作する。つまり、ノードクラスタ14は、要求、並びに、要求に付随して提供された入力パラメータ及びデータに基づき、ワークロードを実行する。一実施形態では、ロードジェネレータ24からの要求はユーザによって開始される。例えば、ユーザ又は顧客は、指定された検索ターム又はデータセットに対する検索動作又はソート動作をそれぞれ要求してよく(例えばユーザインタフェース200を介して)、ロードジェネレータ24は、対応する検索要求又はソート要求を生成する。一実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信したユーザ要求を記述するコンフィギュレーションファイル30を生成する。ノード16は、検索されるべき識別されたターム又はソートされるべきデータセットを用いてワークロードを実行する。ロードジェネレータ24は、実行されるべきワークロードのタイプに応じて他の適切な要求を生成してよい。ロードバランサ26は、ロードジェネレータ24によって提供された要求を複数ノード16間で分散させて、どのノード16がどの要求を実行するのかを指示するように動作する。また、ロードバランサ26は、ロードジェネレータ24からの要求を複数部分に分割すると共に複数のノード16がその要求を並列動作で実行するよう動作するように、それら複数部分を複数ノード16に分散させるようにも動作する。
コンフィギュレータ22は、例示的には、ユーザがインターネットを介してコンフィギュレータ22にアクセスすることのできるようなウェブベースのものであるが、コンフィギュレータ22は、任意の適切なネットワーク又は通信リンクを介してアクセスされてよい。図1に示される例示的なユーザコンピュータ20は、ディスプレイ21と、プロセッサ32(例えば中央処理ユニット(CPU))と、プロセッサ32によってアクセス可能なメモリ34と、を含む。コンピュータ20は、デスクトップコンピュータ、ラップトップ、モバイルデバイス、スマートフォン等の任意の適切なコンピューティングデバイスを含み得る。ユーザコンピュータ20上では、ソフトウェアコード又はファームウェアコードを含むウェブブラウザ36が実行されており、ウェブブラウザ36は、コンフィギュレータ22によって提供されたグラフィカルユーザインタフェースにアクセスするために用いられ、またグラフィカルユーザインタフェースをディスプレイ21上に表示するためにも用いられる。例えば図7〜30に図示されるグラフィカルユーザインタフェース200を参照されたい。
図示されるものに代替可能な、コンポーネントの種々の他の配置及びそれに対応するクラウドコンピューティングシステム10の接続性が利用可能であり、そのようなコンポーネントの配置及び対応する接続性は、ここに開示される実施形態に従うものとする。
図2を参照すると、コンフィギュレータ22によってコンフィギュアされる図1のノードクラスタ14の例示的なノード16が、一実施形態に従って図示されている。ノード16は、メモリ42内に記憶されたソフトウェア又はファームウェアを実行するように動作する少なくとも1つのプロセッサ40を含む。メモリ42は、1つ以上の物理的メモリロケーションを含み、プロセッサ40の内部にあってもよいし、外部にあってもよい。
図2は、各ノード16上へとロードされたソフトウェア(又はファームウェア)コードを示しており、このコードは、オペレーティングシステム44と、カーネルモード測定エージェント46と、ネットワークトポロジドライバ48と、ユーザモード測定エージェント50と、ウェブアプリケーションサーバ52と、ワークロードコンテナモジュール54と、サービス志向アーキテクチャランタイムエージェント56と、合成ワークロードエンジン58と、を含む。図示された実施形態では、カーネルモード測定エージェント46及びネットワークトポロジドライバ48は、例えばノード16の入力/出力(I/O)デバイスからのデータ等の特定のデータにアクセスするために、オペレーティングシステム44からの特権(privilege)を要求する。一方、ユーザモード測定エージェント50、ウェブアプリケーションサーバ52、ワークロードコンテナモジュール54、サービス志向アーキテクチャランタイムエージェント56及び合成ワークロードエンジン58は、例示的には、データにアクセスするため又はそれらのそれぞれの機能を行うためには、オペレーティングシステム44からの特権を要求しない。
オペレーティングシステム44は、例えば、アプリケーション、特権及びハードウェアリソースを管理すること、並びに、プロセッサ時間及びメモリ使用量を割り振ることを含む、ノード16の全体動作を管理する。ネットワークトポロジドライバ48は、通信ネットワーク18(図1)上でのノード16のネットワーク特性及びネットワークパラメータを制御するように動作する。一実施形態では、ネットワークトポロジドライバ48は、コンフィギュレータ22(図1)から受信したコンフィギュレーションファイル28(図1)に基づき、ノード16に関連付けられたネットワーク特性を変更するように動作する。
また、ネットワークソフトウェアスタック(図示せず)が各ノード16で記憶され実行される。ネットワークソフトウェアスタックは、図1のネットワーク18上での通信を容易にするためのネットワークソケットを含む。ここに述べられる実施形態においては、ネットワークソケットは、ネットワーク通信のためのアドレスと、1つ以上のポート番号と、が割り当てれらたTCPソケットを含む。一実施形態では、ネットワークソフトウェアスタックは、オペレーティングシステム44のネットワークドライバを利用する。
カーネルモード測定エージェント46及びユーザモード測定エージェント50の各々は、ノード16での動作及びワークロード性能をモニタするためのデータを収集し解析するように動作する。カーネルモード測定エージェント46は、例えば、プロセッサ命令の数、プロセッサ利用、各I/O動作のために送信され及び受信されたバイト数、並びに他の適切なデータ、又は、これらの組み合わせをモニタする。例示的なカーネルモード測定エージェント46は、システムタップ(SystemTap)ソフトウェアを含む。ユーザモード測定エージェント50は、データへのアクセスのためにオペレーティングシステム44からシステム特権を要求する必要のない性能データを収集する。この性能データの例としては、個々のサブタスクの開始時間と完了時間とを表示するアプリケーション特有ログ、そのようなタスクが実行される速度、システムによって利用された仮想メモリの量、あるタスクのために処理された入力記録の量、等が挙げられる。一実施形態では、エージェント46,50及び/又は他のモニタリングツールは、各ノード16に予めインストールされており、コンフィギュレーションファイル28(図1)に基づき各ノード16でコンフィギュレータ22によってコンフィギュアされる。代替的には、コンフィギュアされたエージェント46,50及び/又は他のモニタリングツールを、コンフィギュレータ22が、ワークロード展開に際してノード16へとロードする。
ウェブアプリケーションサーバ52は、ノード16と、図1の制御サーバ12及びノードクラスタ14の他のノード16の両者と、の間での通信を制御するアプリケーションである。ウェブアプリケーションサーバ52は、ノード16間でのファイル転送、及び、制御サーバ12とノードとの間でのファイル転送をもたらす。例示的なウェブアプリケーションサーバ52は、アパッチトムキャット(Apache Tomcat)である。
また、ワークロードコンテナモジュール54も、各ノード16のメモリ42内に記憶されている。ここに述べられるように、制御サーバ12は、ユーザ選択と、ワークロードコンテナモジュール54のコンフィギュレーションとに基づき、ワークロードコンテナモジュール54をノード16に提供する。ワークロードコンテナモジュール54の例としては、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memcached)、アパッチカサンドラ(Apache Cassandra)、又は、市販されていないユーザによって提供されたカスタムワークロードコンテナモジュールが挙げられる。一実施形態では、ワークロードコンテナモジュール54は、プロセッサによって実行されるときにメモリ42内でのデータ記憶とノード16間データ通信とを管理するコードモジュールを備えるファイルシステム55を含む。例示的なファイルシステム55は、アパッチハドゥープワークロードコンテナの分散型ファイルシステム(HDFS)である。ファイルシステム55は、データ及びファイルのコピーをノードメモリ42内に複数記憶することによって、データ複製をサポートする。
随意的なサービス志向アーキテクチャ(SOA)ランタイムエージェント56及び随意的な合成ワークロードエンジン58等の他の適切なワークロードコンテナモジュールが設けられていてもよい。SOAランタイムエージェント56は、プロセッサによって実行されるときにワークロードの実行を連携させるように動作する他のタイプのワークロードコンテナモジュールである。SOAランタイムエージェント56は、例えば、ワークロード動作を迅速化するために、頻繁に使用されるファイル(例えばイメージ等)をキャッシュしたりサーブするサービス機能を行う。SOAランタイムエージェント56の例としては、グーグルプロトコルバッファ(Google Protocol Buffers)が挙げられる。合成ワークロードエンジン58は、ここに述べられるように、プロセッサによって実行されるときに、コンフィギュレータ22(図1)を介して受信した合成テストワークロードをアクティベートして実行するように動作するワークロードコンテナモジュールを含む。図示された実施形態では、合成ワークロードエンジン58は、実際の非テストワークロードにではなく合成テストワークロードでの実行に合わせられている。
図3を参照すると、一実施形態による制御サーバ12のコンフィギュレータ22が示されている。コンフィギュレータ22は、例示的には、オーセンティケータ(authenticator)70と、ノードコンフィギュレータ72と、ネットワークコンフィギュレータ74と、ワークロードコンテナコンフィギュレータ76と、ワークロードコンフィギュレータ78と、バッチプロセッサ80と、データモニタコンフィギュレータ82と、データアグリゲータ84と、を含み、これらの各々は、ここに述べられる種々の機能を行うために制御サーバ12の1つ以上のプロセッサ22によってアクセス可能なメモリ(例えばメモリ90)内に記憶されたそれぞれのソフトウェアコードモジュール又はファームウェアコードモジュールを実行する制御サーバ12の1つ以上のプロセッサ22を備えている。オーセンティケータ70は、認証コードモジュールを実行する1つ以上のプロセッサ22を含み、図7に関してここに述べられるように、コンフィギュレータ22へのユーザアクセスを認証するように動作する。ノードコンフィギュレータ72は、ノードコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図8〜10に関してここに述べられるように、指定されたハードウェア及び動作のコンフィギュレーションを有する複数ノードのクラスタ14を識別するために、ノード16を選択してコンフィギュアするように動作する。ネットワークコンフィギュレータ74は、ネットワークコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図11〜17に関してここに述べられるように、テストや性能解析及び/又はシステム電力消費を調節すること等のために、図1の通信ネットワーク18のネットワークパラメータを調節するように動作する。ワークロードコンテナコンフィギュレータ76は、ワークロードコンテナコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図18〜21に関してここに述べられるように、ノード16上での動作のためにワークロードコンテナモジュールを選択してコンフィギュアするように動作する。ワークロードコンフィギュレータ78は、ワークロードコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、ノード16によって選択されたワークロードコンテナでの実行のためにワークロードを選択してコンフィギュアするように動作する。ワークロードコンフィギュレータ78は、例示的には、合成テストワークロード生成コードモジュールを実行する1つ以上のプロセッサ22を含むコードシンセサイザ79を含み、コードシンセサイザ79は、図23及び図32〜35に関してここに述べられるように、ユーザ定義のワークロードパラメータに基づき合成テストワークロードを生成するように動作する。バッチプロセッサ80は、バッチプロセッサコードモジュールを実行する1つ以上のプロセッサ22を含み、図25に関してここに述べられるように、複数のワークロードのバッチ処理を開始するように動作し、複数のワークロードはノードクラスタ14上のシーケンス内で実行される。データモニタコンフィギュレータ82は、データモニタリングコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図26〜29に関してここで述べられるように、ワークロードの実行に際して性能データをリアルタイムでモニタすると共にデータを収集するモニタリングツールをコンフィギュアするように動作する。データアグリゲータ84は、データアグリゲーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図30及び31に関してここに述べられるように、各ノード16からの性能データを収集及び集約する(collect and aggregate)と共にログ、統計、グラフ、及び、データの他の表現を生成するように動作する。
コンフィギュレータ22からの出力は、例示的には、制御サーバ12のメモリ90内に記憶される。メモリ90は、制御サーバ12の1つ以上のプロセッサの内部にあってもよいし、外部にあってもよく、1つ以上の物理的メモリロケーションを含む。メモリ90は、例示的には、コンフィギュレータ22によって生成された図1のコンフィギュレーションファイル28,30を記憶する。また、メモリ90は、ワークロードの実行に続いてノード16によって生成され制御サーバ12へ伝えられたログファイル98を記憶する。図示されるように、オペレーティングシステムのイメージファイル92と、ワークロードコンテナコンフィギュレータ76で選択されたワークロードコンテナのイメージファイル94と、ワークロードコンフィギュレータ78で選択又は生成されたワークロードのイメージファイル96とは、メモリ90内に記憶される。一実施形態では、複数のオペレーティングシステムイメージファイル92がメモリ90内に記憶されており、ユーザは、各ノード16にインストールされるべきオペレーティングシステムを、コンフィギュレータ22を介して選択することができる。一実施形態では、ユーザは、ノード16にインストールされるべきオペレーティングシステムイメージファイル92を遠隔メモリ(例えば図1のコンピュータ20のメモリ34)から制御サーバ12へアップロードすることができる。ワークロードコンテナイメージファイル94は、複数の利用可能ワークロードコンテナモジュールからのユーザによるワークロードコンテナモジュールの選択及びコンフィギュレーションに基づき、ワークロードコンテナコンフィギュレータ76で生成される。ここに述べられる実施形態では、ワークロードコンテナコンフィギュレータ76は、図7〜30のユーザインタフェース200を介して受信したユーザ入力に基づき、対応するワークロードコンテナイメージファイル94をコンフィギュアする。同様に、ワークロードコンフィギュレータ78は、制御サーバ12のユーザインタフェース200を介しての、1つ以上の利用可能ワークロードからのワークロードのユーザ選択に基づき、ワークロードイメージファイル96を生成してコンフィギュアする。ワークロードイメージファイル96は、ユーザ入力に基づきワークロードコンフィギュレータ78によって選択された予め定義された実際のワークロード、又はユーザ入力に基づきワークロードコンフィギュレータ78によって生成された合成テストワークロードを含む。
一実施形態では、メモリ90は、ノードクラスタ14の各ノード16によってアクセス可能であり、制御サーバ12は、各イメージファイル92,94,96のメモリ90内のロケーションを識別するポインタ又は他の識別子をノードクラスタ14の各ノード16へ送る。ノード16は、ポインタに基づきそれぞれのイメージファイル92,94,96をメモリ90からリトリーブする(retrieve)。代替的には、制御サーバ12は、イメージファイル92,94,96及び適切なコンフィギュレーションファイル28を各ノード16へロードし、又は、任意の他の適切なメカニズムによりイメージファイル92,94,96及びコンフィギュレーションファイル28をノード16へ提供する。
ここに述べられるように、コンフィギュレータ22は、ユーザ選択及びユーザ入力に基づき自動的に以下の作用をするように動作する。即ち、所望のリソース(例えばノード16)を割り振り、ノード16を予めコンフィギュアし(例えばネットワークトポロジ、メモリ特性)、ワークロードコンテナソフトウェアを各ノード16にインストールし、ユーザ提供のワークロードソフトウェア及びデータをノード16に展開し、モニタリングツール(例えばガングリア(Ganglia)、システムタップ(SystemTap))を起動して各ノード16から性能データを収集し始め、ワークロード実行に際してライブ状態更新をユーザに提供し、ワークロードの結果及びモニタリングツールによって集められた情報を含めユーザによって要求された全データを収集し、ユーザによって要求された性能データを処理し、まとめ、表示し、そして他の適切な機能を行う。更に、ユーザは、ここに述べられるように、コンフィギュレータ22を用いて、順次又は並列で実行されるワークロードのシーケンスを作成して展開してよい。ユーザは、実行に際して又は実行の合間にコンフィギュレーション又は入力パラメータの随意的な調節をしながら、任意のワークロード又は全てのワークロードを繰り返し実行してもよい。また、コンフィギュレータ22は、ユーザによる要求に基づき、ノードクラスタ14の指定されたデータベースノード16上でデータを記憶するようにも動作する。
図4は、クラウドコンピューティングシステムをコンフィギュアするために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図100である。図4の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は、図7〜30に示されるユーザインタフェース200等のユーザインタフェースを介して受信した複数のユーザ選択に基づき、図4のフロー図100に従って図1のノードクラスタ14をコンフィギュアする。ブロック102では、コンフィギュレータ22のノードコンフィギュレータ72は、複数の利用可能ノード16から複数ノードのクラスタ14を選択する。複数ノードのクラスタ14の各ノード16は、少なくとも1つの処理デバイス40及びメモリ42(図2)を含み、ここに述べられるように、ワークロードの処理をクラスタ14の他のノード16と共有するように動作する。図示された実施形態では、複数のノード16がコンフィギュレータ22による選択のために利用可能であり、コンフィギュレータ22は、利用可能ノード16のサブセットをノードクラスタ14として選択する。一実施形態では、コンフィギュレータ22は、ユーザインタフェースを介して受信したユーザ選択に基づき、複数ノードのクラスタ14の各ノード16から収集されるべき少なくとも1種類のデータを選択し、コンフィギュレータ22のデータアグリゲータ84は、図26〜30に関してここに述べられるように、複数ノードのクラスタ14の各ノード16からの当該少なくとも1種類のデータを収集及び集約する。
ブロック104では、コンフィギュレータ22のワークロードコンテナコンフィギュレータ76は、複数ノードからなる選択されたクラスタ14の各ノード16上での動作のためのワークロードコンテナモジュールを選択する。ワークロードコンテナモジュールは、ノード16によって実行されるときにワークロードの実行を開始し連携させるように動作する選択可能コードモジュールを含む。一実施形態では、ワークロードコンテナモジュールは、図18に関してここに述べられるように、複数の利用可能ワークロードコンテナモジュールから選択される。一実施形態では、コンフィギュレータ22は、ユーザインタフェースを介して受信したユーザ入力に基づき、各ノード16上のワークロードコンテナモジュールの少なくとも1つの動作パラメータを修正する。この少なくとも1つの動作パラメータは、ここに述べられるように、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている。
一実施形態では、選択されたワークロードコンテナモジュールは、クラウドコンピューティングシステム10からは遠隔のメモリ(例えば図1のメモリ34)上に記憶されたカスタムワークロードコンテナモジュールであり、コンフィギュレータ22は、遠隔メモリ上に記憶されたカスタムワークロードコンテナモジュールを複数ノードのクラスタ14の各ノード16へとロードする。例えば、カスタムワークロードコンテナモジュールは、ユーザによって提供される市販されていないワークロードコンテナモジュールを含む。一実施形態では、カスタムワークロードコンテナモジュールは、ワークロードを実行するためのユーザ定義の命令及びパラメータを含むコンフィギュレーションファイルを含む。命令の例としては、典型的なワークロードではあまり見られないワークロードパラメータであって及び/又は特定のワークロードに固有のワークロードパラメータをテストするための命令が挙げられる。カスタムワークロードコンテナモジュールの命令の他の例としては、実行の出力又はログファイルを更なる解析のために異なるロケーションにリダイレクトするための命令が挙げられる。代替的には、ワークロードコンテナモジュールは、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memchashed)、アパッチカサンドラ(Apache Cassandra)等の、コンピューティングシステム10に記憶され(例えば図3のメモリ90)且つコンフィギュレータ22による選択及び展開のために利用可能な市販のサードパーティに係るワークロードコンテナモジュールを含む。
ブロック106では、コンフィギュレータ22のワークロードコンフィギュレータ78は、複数ノードのクラスタ14上でのワークロードコンテナモジュールでの実行のためのワークロードを選択する。選択されたワークロードの処理は、ここに述べられるように、複数ノードのクラスタ14に分散される。一実施形態では、ワークロードは、実際のワークロード及び合成テストワークロードの少なくとも一方から選択される。1つ以上の実際の予めコンパイルされたワークロードが、制御サーバ12のプロセッサによってアクセス可能なメモリ(例えば図1のメモリ34)内に記憶され、コンフィギュレータ22は、選択された実際のワークロードをノード16へとロードする。合成テストワークロードは、図23及び図32〜35に関してここに述べられるように、ユーザインタフェース200を介して受信したユーザ定義のワークロードパラメータに基づきコンフィギュレータ22によって生成され、各ノード16へとロードされる。一実施形態では、コンフィギュレータ22は、図11〜17に関してここに述べられるように、ユーザインタフェース200を介して受信したユーザ入力に基づき、少なくとも1つの通信ネットワークパラメータを調節して、選択されたワークロードの実行に際しての通信ネットワーク18の性能を修正し又は制限する。
図示された実施形態では、コンフィギュレータ22は、選択可能ノードデータ(例えば図8のテーブル258)と、選択可能ワークロードコンテナデータ(例えば図18の選択可能入力352)と、選択可能ワークロードデータ(例えば図22の選択可能入力418)と、を含むユーザインタフェース200(図7〜30)を提供する。複数ノードのクラスタ14は、選択可能ノードデータのユーザ選択に基づき選択され、ワークロードコンテナモジュールは、選択可能ワークロードコンテナデータのユーザ選択に基づき選択され、ワークロードは、選択可能ワークロードデータのユーザ選択に基づき選択される。
図5は、クラウドコンピューティングシステム10をコンフィギュアするために図1及び図3のコンフィギュレータ22によって行われる他の例示的な動作のフロー図120である。図5の説明全体に対して図1及び図3が参照される。ブロック122では、ワークロードコンテナコンフィギュレータ76は、ユーザインタフェース(例えばユーザインタフェース200)を介して受信したユーザ選択に基づき、クラウドコンピューティングシステム10の複数ノードのクラスタ14の各ノード16上での動作のためのワークロードコンテナモジュールを複数の利用可能ワークロードコンテナモジュールから選択する。図示された実施形態では、ワークロードコンテナモジュールは、例えば、図18の入力352,360,362及び図21の入力353,401等の選択可能ワークロードコンテナデータに基づき選択される。選択されたワークロードコンテナモジュールは、ワークロードの実行を連携させるように動作する選択可能コードモジュール(例えば図18の入力360,362及び図21の入力401で選択可能)を含む。一実施形態では、複数の利用可能ワークロードコンテナモジュールは、ここに述べられるように、カスタムワークロードコンテナモジュールを含む。ブロック124では、ノードコンフィギュレータ72は、ワークロードの処理が複数ノードのクラスタに分散されるようにワークロードを実行するために、複数ノードのクラスタ14の各ノード16を選択されたワークロードコンテナモジュールでコンフィギュアする。ここに述べられるように、各ノード16は、処理デバイス40及びメモリ42を含み、ワークロードの動作を複数ノードのクラスタ14の他のノード16と共有するように動作する。コンフィギュレータ22は、選択されたワークロードコンテナモジュールを複数ノードのクラスタ14の各ノード16にインストールし、複数ノードのクラスタ14上での選択されたワークロードコンテナモジュールでのワークロードの実行を開始する。
図6は、クラウドコンピューティングシステム10をコンフィギュアするために図1及び図3のコンフィギュレータ22によって行われる他の例示的な動作のフロー図140である。図6の説明全体に対して図1及び図3が参照される。ブロック142では、コンフィギュレータ22のノードコンフィギュレータ72は、ワークロードの処理を共有するように動作する複数ノードのクラスタ14をクラウドコンピューティングシステム10のための複数の利用可能ノード16から選択する。図示された実施形態では、複数ノードのクラスタ14は、ここに述べられるように、選択可能ノードデータに基づき選択される。
ブロック144では、ワークロードコンテナコンフィギュレータ76は、ユーザインタフェースを介して受信したユーザ入力(例えば図19のユーザインタフェース200の選択可能入力367及びフィールド374,378,380)に基づき、各ノード16の同じワークロードコンテナモジュールの動作パラメータを修正する。この同じワークロードコンテナモジュールは、ノード16によって実行されるときに動作パラメータに基づきワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。動作パラメータは、図19及び図20に関してここに述べられるように、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている。コンフィギュレータ22は、ワークロードコンテナモジュールを各ノード16へと展開するのに先立ち、又は、コンフィギュレーションを更新する場合には各ノード16へのワークロードコンテナモジュールの展開の後に、1つ以上の動作パラメータを修正する。ワークロードコンテナモジュールは、各ノード16によって実行されるときに、修正された動作パラメータに基づき複数ノードのクラスタ14上でのワークロードの実行を連携させるように動作する。一実施形態では、動作パラメータは、リード/ライト動作のためのメモリバッファサイズ、リード/ライト動作に際して転送されるデータブロックのサイズ、各ノード16のメモリ42内に記憶されるデータブロックの数、ファイルシステム55に対する要求を処理するために割り振られる各ノード16の処理スレッドの数、及び/又は、データをソーティングするときにマージする(merge)データストリームの数を含む。図19及び図20に関して述べられるように、他の適切な動作パラメータが修正されてもよい。
図3の制御サーバ12へのユーザアクセスを提供する例示的なユーザインタフェース200が図7〜30に示されている。ユーザインタフェース200は、例示的には、コンピュータ20(図1)のディスプレイ21等のディスプレイ上への表示のためにコンフィギュアされた複数の選択可能画面を含むウェブベースのグラフィカルユーザインタフェース200である。ネイティブユーザインタフェースアプリケーション、コマンドライン駆動インタフェース、プログラム可能API、他の種類のもの、又は、複数のインタフェースの組み合わせ等の他の適切なインタフェースが提供されてもよい。ユーザインタフェース200は、選択可能な入力、フィールド、モジュール、タブ、ドロップ・ダウンメニュー、ボックス及び他の適切な選択可能データ等の、コンフィギュレータ22のコンポーネント70〜84にリンクされると共にそれらへの入力を提供する選択可能データを含む。一実施形態では、ユーザインタフェース200の選択可能データは、それが個別に選択可能になるような方法で描画される。例えば、選択可能データは、マウスポインタによって、ユーザインタフェース200のタッチ画面に触れることによって、キーボードのキーを押下することによって、又は、任意の他の適切な選択メカニズムによって、ユーザにより選択される。データが選択された結果、そのデータが例えばハイライトされ又はチェックされてよく、何らかの選択可能データ(例えばモジュール、ドロップ・ダウンメニュー等)の選択に基づき、新たな画面、メニュー又はポップ・アップウィンドウが現れてよい。
ユーザインタフェース200の説明全体に対して図1〜3が参照される。図7に示されるように、ユーザインタフェース200は、選択されたときにコンフィギュレータ22へのアクセスを提供することによりユーザ選択を可能にすると共にコンフィギュレータ22への他のユーザ入力を可能にする幾つかの選択可能モジュールを含む。具体的には、認証及び設定ライブラリモジュール202は、コンフィギュレータ22のオーセンティケータ70を表し且つこれにリンクされたデータを備える。インスタンスモジュール204は、コンフィギュレータ22のノードコンフィギュレータ72を表し且つこれにリンクされたデータを備える。ネットワークコンフィギュレーションモジュール206は、コンフィギュレータ22のネットワークコンフィギュレータ74を表し且つこれにリンクされたデータを備える。ワークロードコンテナコンフィギュレーションモジュール208は、コンフィギュレータ22のワークロードコンテナコンフィギュレータ76を表し且つこれにリンクされたデータを備える。ワークロードコンフィギュレーションモジュール210は、コンフィギュレータ22のワークロードコンフィギュレータ78を表し且つこれにリンクされたデータを備える。バッチ処理モジュール212は、コンフィギュレータ22のバッチプロセッサ80を表し且つこれにリンクされたデータを備える。モニタリングモジュール214は、コンフィギュレータ22のデータモニタコンフィギュレータ82を表し且つこれにリンクされたデータを備える。制御及び状態モジュール216は、コンフィギュレータ22のデータアグリゲータ84を表し且つこれにリンクされたデータを備える。コンフィギュレータ22のコンポーネント70〜84は、それらのそれぞれの機能を、ユーザ選択、データ及びユーザインタフェース200のモジュール202〜216を介して提供された他のユーザ入力に基づき実装する。
図7を参照すると、認証及び設定ライブラリモジュール202が選択されている。モジュール202へのユーザ入力に基づき、オーセンティケータ70は、コンフィギュレータ22へのユーザアクセスを認証すると共に、先にセーブされたシステムコンフィギュレーションをロードする。オーセンティケータ70は、それぞれのフィールド220,222,224内のアクセスキー、秘密キー、及び/又は、EC2キーペアの形態にある信用証明データを確認することによって、コンフィギュレータ22へのユーザアクセスを許可する。図示された実施形態では、フィールド224のEC2キーペアは、モジュール202を用いてアマゾンウェブサービスクラウドプラットフォームにアクセスするときに、新たに選択されたノード16へのルート又は初期アクセスを提供する。オーセンティケータ70は、入力238のユーザ選択に基づき、先にセーブされたシステムコンフィギュレーションをシステムコンフィギュレーションファイル(例えば図1のユーザコンピュータ20又は制御サーバ12に記憶されている)からロードする。システムコンフィギュレーションファイルは、ワークロード及びワークロードコンテナのコンフィギュレーション、ノード16及びネットワークの設定情報、クラウドコンピューティングシステム10のためのデータモニタリング/収集の設定、並びに、コンフィギュレータ22で先にセーブされたシステムコンフィギュレーションに関連付けられている全ての他のコンフィギュレーション情報を含む。先にセーブされたシステムコンフィギュレーションファイルをロードすることにより、システムコンフィギュレーションファイルからのコンフィギュレーション情報でコンフィギュレータ22が更新される。システムコンフィギュレーションファイルは、例示的には、JSONファイルフォーマットを含むが、他の適切なフォーマットが提供されてもよい。システムコンフィギュレーションファイルをロードした後に、ロードされたシステムコンフィギュレーションは、ユーザインタフェース200のモジュールを介して修正されてよい。入力240が選択されると、オーセンティケータ70は、コンフィギュレータ22の現在のシステムコンフィギュレーションをファイルにセーブする。認証データは、選択ボックス242の選択に基づきセーブされたシステムコンフィギュレーションファイル内に含まれていてよい。
システムコンフィギュレーションファイルは、ウェブベースのユーザインタフェース200を介して識別され制御サーバ12へとロードされるが、システムコンフィギュレーションファイルを得るために、他の適切な遠隔メソッド呼び出し(remote method invocation)(RMI)メカニズムが用いられてもよい。例えば、アパッチハイパーテキスト転送プロトコル(Apache Hypertext Transfer Protocol)(HTTP)サーバ、アパッチトムキャット(Apache Tomcat)サーバ、RMIメカニズムを用いてシステムコンフィギュレーションファイルを渡すトムキャットサーブレット(Tomcat survlet)、又は、RMIメカニズムを用いてシステムコンフィギュレーションファイルを直接的に制御サーバ12へ渡すカスタムアプリケーション(例えばコマンドラインユーティリティ)である。
設定ライブラリ226は、選択入力227を介して選択及び実行のために利用可能な先に作成されたシステムコンフィギュレーションファイルのテーブル又はリストを提供する。入力228の選択があると、オーセンティケータ70は、ライブラリ226内で選択されたシステムコンフィギュレーションファイルからのコンフィギュレーション情報でモジュール202〜216を更新する。現在のシステムコンフィギュレーション(例えばモジュール202〜216を介してコンフィギュアされている)は、入力230の選択に基づきファイルにセーブされると共にライブラリ226に追加され、システムコンフィギュレーションファイルは、入力234の選択に基づきライブラリ226から削除される。入力232があると、オーセンティケータ70は、システムコンフィギュレーションファイルをローカルコンピュータ(例えば図1のコンピュータ20)からライブラリ226へアップロードし、あるいは入力236があると、オーセンティケータ70は、システムコンフィギュレーションファイルを遠隔コンピュータからライブラリ226へダウンロードする(例えばインターネットを介して)。ライブラリ226は、1つ以上の先に用いられたシステムコンフィギュレーションが迅速にロードされ実行されることを可能にする。ライブラリ226のシステムコンフィギュレーションファイルは、クラウドコンピューティングシステム10上で別個に、並列に又は順次的に選択及び実行されてよい。例えば、バッチシーケンスにおける実行のために複数のシステムコンフィギュレーションファイルがライブラリ226内に提供されてよく、この場合、コンフィギュレータ22は、各選択されたシステムコンフィギュレーションを自動的に順次展開して、各システムコンフィギュレーションで1つ以上のワークロードを実行する。図示された実施形態では、ここに述べられるように、システムコンフィギュレーションは、図30の制御及び状態モジュール216を介してノード16に展開される。システムコンフィギュレーションの展開は、図30を参照してここに述べられるように、システムコンフィギュレーションファイルに関連付けられた設定、ソフトウェア及びワークロード情報でコンフィギュレータ22がクラウドコンピューティングシステム10をコンフィギュアすることを伴う。ここに述べられるように、コンフィギュレータ22は、例示的には、それぞれのノード16をコンフィギュアするために各ノード16にルート付けられた1つ以上のコンフィギュレーションファイル28を生成する。ノード16に展開されたコンフィギュレーションファイル28は、モジュール202を介してロードされたシステムコンフィギュレーションファイルに含まれる全てのコンフィギュレーション情報に加えて、システムコンフィギュレーションファイルをロードした後にモジュール202〜216を介してなされた任意の追加的なコンフィギュレーション変更を含む。
図8を参照すると、ノード16の数及び特性をコンフィギュアするためのインスタンスモジュール204が選択されている。モジュール204へのユーザ入力に基づき、ノードコンフィギュレータ72は、指定されたハードウェア及び動作のコンフィギュレーションを有する複数ノードのクラスタ14を識別し選択する。インスタンスモジュール204は、インスタンスタブ250と、インスタンスタイプタブ252と、他のインスタンス設定タブ254と、を含む。図8でインスタンスタブ250が選択されている状態で、ノードクラスタ14に含ませるための所望のノード16の数がフィールド256へとエンターされる。ノードコンフィギュレータ72は、フィールド256でユーザが選択したノード16の所望の数の下で、特定のハードウェアコンフィギュレーションを各々が有する当該数のノード16のデフォルトリストをテーブル258内に生成する。テーブル258は、図1の複数ノードのクラスタ14のリスト及びコンフィギュレーション記述を提供する。テーブル258は、各ノード16のための幾つかの記述的フィールドを含み、これらのフィールドは、ノードの番号及び名前、インスタンス(ノード)タイプ、メモリ容量、コアプロセッサ(例えばCPU)の数、記憶容量、割り当て量(quota)、受信/送信割り当て量、及び、受信/送信上限(cap)を含む。インスタンスタイプは、一般的にはノードの相対サイズ及び演算能力を記述し、例示的には、微小(micro)、小(small)、中(medium)、大(large)、x−大(x-large)、2x−大(2x-large)、4x−大(4x-large)等(図9)から選択される。図8の例示的なテーブル258において、各ノード16は、7680メガバイト(MB)のメモリ容量と、850ギガバイト(GB)の記憶容量と、4コアプロセッサと、を伴う大タイプである。ノードコンフィギュレータ72は、選択可能ノードデータ、例示的には選択ボックス259及び選択可能入力262、のユーザ選択に基づきノード16を選択する。各ノード16のタイプは、テーブル258のノード16の選択(例えば入力262を用いた選択又は対応する選択ボックス259をチェックすることによる選択)及びインスタンスタイプ編集入力260を選択することに基づき変更可能であり、インスタンスタイプ編集入力260は選択されたノード16のためのインスタンスタイプタブ252を表示させる。図9を参照すると、テーブル264は、ノードクラスタ14における使用に対する選択のために利用可能であるノード16のタイプ(即ち利用可能なサーバハードウェア)のリストを備えている。テーブル264の1つ以上のノード16が、図8のテーブル258において選択されたノード16と差し替えるために、選択可能入力265で選択される。一実施形態では、テーブル264のフィールド(例えばメモリ、VCPUs、記憶容量等)は、選択されたノード16の所望のハードウェア性能特性を更に識別するために、ユーザによって修正可能である。利用可能なサーバハードウェアに応じて、より少ない又は追加的なノード16のタイプがテーブル264における選択のために利用可能であってよい。図示された実施形態では、ノードクラスタ14に追加するために、テーブル264にリストされている各ノードタイプに対して複数のノード16が利用可能である。
図10を参照すると、ノードコンフィギュレータ72は、ユーザインタフェース200のインスタンス設定タブ254において提供されたユーザ入力に基づき、各ノード16のブート時間コンフィギュレーションを調節する。ブート時間コンフィギュレーションは、個々のノード16、ノード16のグループ又はノードクラスタ14全体に適用される1つ以上のブート時間パラメータを含む。各ノード16の演算能力、システムメモリ容量及び/又は記憶容量等のブート時間パラメータは、それぞれのノード16が最大能力未満で動作するように、フィールド268,270,272,274へのユーザ入力に基づき制限又は制約される。デフォルトのブート時間パラメータは、入力269のユーザ選択に基づき選択され、カスタマイズされたブート時間パラメータは、入力271のユーザ選択に基づき選択される。図示された実施形態では、各調節可能パラメータの最大設定がデフォルトであるが、ユーザは、入力271で「カスタム」オプションを選択してコンフィギュレーション設定をそれぞれのフィールド268,270,272,274にエンターすれば、各パラメータを調節することができる。
図示された実施形態では、ノード16の処理コアの数はフィールド268で調節可能である。例えば、インスタンスタブ250(図8)のテーブル258において選択されたノード16が4つの処理コアを有している場合、ワークロード実行に際して有効にされる処理コアの数は、フィールド268を介して0,1,2又は3に減らすことができ、それにより、選択されたノード16の1つ以上の処理コアをワークロード実行に際してオペレーティングシステム44(図2)から「隠す」こと(hiding)ができる。可視(visible)システムメモリサイズ、即ちオペレーティングシステム44(図2)によってアクセス可能なシステムメモリのサイズは、フィールド270,272への入力に基づき調節可能である。例えば、インスタンスタブ250(図8)のテーブル258において選択されたノード16が2048MBのメモリ容量を有している場合、ワークロード実行に際して有効にされる「可視」メモリ(例えばランダムアクセスメモリ)は、2048MB未満に減らされてよく、それにより、ワークロード実行に際してそのメモリの一部をオペレーティングシステム44(図2)から「隠す」ことができる。追加的なブート時間パラメータを調節するために、追加的なワークロード引数(arguments)又は命令がフィールド274で適用される。ワークロードの引数の数は、フィールド274にエンターされた数に基づき増大又は減少させられてよい。例えば、ワークロードの命令のサブセットが実行のためにフィールド274で選択可能であり、それにより、残りの命令をオペレーティングシステム44(図2)から隠すことができる。更に、64ビットアーキテクチャを有するノード16は、32ビットだけがオペレーティングシステム44に可視である場合に32ビットモードで動作するように、フィールド274への入力に基づきコンフィギュア可能である。追加的なブート時間パラメータがフィールド276にエンターされてよい。一実施形態では、追加的なクラウドコンフィギュレーション設定を提供するために、命令又はコードがユーザによって手動でフィールド276にエンターされてよい。例えば、ブートに際して特定のノード16がマスタとして動作するように、マップリデュースワークロードのためのマスタノード16がフィールド276を介して指定されてよい。一実施形態では、ここに述べられるように、1つ以上のノード16の動作をノードコンフィギュレータ72で制限することは、クラウドコンピューティングシステム10の性能をテストするために用いられる。図示された実施形態では、図10において指定されたブート時間コンフィギュレーション設定は、図36〜38に関してここに述べられるように、それぞれのノード16のブート時間コンフィギュレーションを調節するためにノードコンフィギュレータ72から各ノード16に提供されるブート時間コンフィギュレーションファイル28(図3)内で提供される。
コンフィギュレータ22は、図7のネットワークコンフィギュレーションモジュール206のユーザ選択に基づき、図11〜17に示される例示的なネットワーク設定ウィザードウィンドウ280を生成する。図11を参照すると、ネットワーク設定ウィザード280は、1つ以上のノード16のネットワークパラメータを調節するための選択可能データを各々が含む複数のグローバルネットワーク設定を提供する。調節可能なネットワークパラメータは、タブ282を介してのネットワーク遅延、タブ284を介してのパケット損失、タブ286を介してのパケット重複、タブ288を介してのパケット破損、タブ290を介してのパケット並び替え、タブ292を介してのパケット速度制御、及び、タブ294を介しての他のカスタムコマンドを含む。ユーザインタフェース200のネットワーク設定ウィザード280を介したユーザ選択及びユーザ入力に基づき、図3のネットワークコンフィギュレータ74は、ここに述べられるように、図1の通信ネットワーク18のノード16のネットワークパラメータを調節するように動作する。一実施形態では、ネットワークパラメータの修正は、ネットワークテスト及び性能解析のために用いられ且つ/又はシステム電力消費を調節するために用いられる。図示された実施形態では、ネットワークコンフィギュレータ74は、ネットワーク設定ウィザード280へのユーザ入力に基づきネットワークのトラフィック及び挙動を人為的に形成し、それにより種々のタイプのネットワークトポロジをモデル化する。例えば、異なる通信ネットワークは、ネットワークコンフィギュレーションに応じて異なるレイテンシ(latencies)、帯域、性能等を有する。そこで、ネットワークコンフィギュレータ74は、異なるコンフィギュレーションを有するネットワークに、選択されたワークロードでそれら異なるネットワークの性能をテストし解析するためのワークロード実行が実装されることを可能にする。一実施形態では、テスト及び解析は、異なるネットワークコンフィギュレーションでのワークロード実行をバッチプロセッサ80が開始することに連動して行われる。例えば、選択されたハードウェア(ノード16)コンフィギュレーションでの特定のワークロードの実行のために、最適ネットワークトポロジが決定されてよい。一実施形態では、ネットワークコンフィギュレータ74は、ノードクラスタ14のノード16の特定のグループ又はサブセットにネットワーク設定を適用するように動作する。
引き続き図11を参照すると、通信ネットワーク遅延を実装することに関連する選択可能データは、タブ282内に示される。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)298〜301及びフィールド302,304,306,308,310,312のユーザ選択に基づきネットワーク遅延を選択し修正する。通信ネットワーク18(図1)を介しての各パケット通信(即ち、パケットはノード16間又はあるノード16と制御サーバ12との間でデータ又は情報を搬送する)に対する通信遅延は、入力298の選択及びフィールド302を介してエンターされた遅延値に基づき実装される。指定された通信遅延の変動は、入力299の選択及びフィールド304を介してエンターされた変動値(例えば例示的にはプラスマイナス10ミリ秒の変動)に基づき実装される。フィールド310,312は、フィールド302,304のそれぞれの値に関連する時間の単位(例えばミリ秒、マイクロ秒等)を選択するためのドロップダウンメニューを含む。指定された通信遅延間の相関は、入力300の選択及びフィールド306を介してエンターされた相関値、例示的にはパーセンテージ相関値、に基づき実装される。指定された通信遅延の分布は、ドロップダウンメニュー301の選択に基づき実装される。分布は、正規分布又は他の適切な分布タイプを含む。
図12を参照すると、ネットワークパケット損失率を実装することに関連する選択可能データがタブ284内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)313,314及びフィールド315,316のユーザ選択に基づきパケット損失率(即ちパケットが人為的に失われる比率)を選択し修正する。パケット損失率は、入力313の選択及びフィールド315を介してエンターされた比率の値に基づき、ネットワーク18を介したパケット通信に対して実装される。パケット損失率は例示的にはパーセンテージとしてエンターされ、例えば0.1%はノード16によって送られる1000パケット毎に1パケットの損失をもたらす。パケット損失率のための相関は、入力314の選択及びフィールド316を介してエンターされた相関値(例示的にはパーセント値)に基づき実装される。
図13を参照すると、ネットワークパケット重複率を実装することに関連する選択可能データがタブ286内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)317,318及びフィールド319,320のユーザ選択に基づきパケット重複率(即ち、パケットが人為的に重複させられる比率)を選択し修正する。パケット重複率は、入力317の選択及びフィールド319を介してエンターされた比率の値に基づき、ネットワーク18を介したパケット通信に対して実装される。パケット重複率は例示的にはパーセンテージとしてエンターされ、例えば0.1%はノード16によって送られる1000パケット毎に1パケットの重複をもたらす。パケット重複率のための相関は、入力318の選択及びフィールド320を介してエンターされた相関値(例示的にはパーセント値)に基づき実装される。
図14を参照すると、ネットワークパケット破損率を実装することに関連する選択可能データがタブ288内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)321及びフィールド322のユーザ選択に基づきパケット破損率(即ち、パケットが人為的に破損させられる比率)を選択し修正する。パケット破損率は、入力321の選択及びフィールド322を介してエンターされた比率の値に基づき、ネットワーク18を介したパケット通信に対して実装される。パケット破損率は、例示的にはパーセンテージとしてエンターされ、例えば0.1%はノード16によって送られる1000パケット毎に1パケットの破損をもたらす。一実施形態では、パケット破損率のための相関が選択され実装されてもよい。
図15を参照すると、ネットワークパケット並び替え率を実装することに関連する選択可能データがタブ290内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)323,324及びフィールド325,326のユーザ選択に基づきパケット並び替え率(即ち、パケット通信に際してパケットが順序を変えて置かれる比率)を選択し修正する。パケット並び替え率は、入力323の選択及びフィールド325を介してエンターされた比率の値に基づき、ネットワーク18を介したパケット通信に対して実装される。パケット並び替え率は、例示的にはパーセンテージとしてエンターされ、例えば0.1%はノード16によって送られる1000パケット毎に1パケットの並び替えをもたらす。パケット並び替え率のための相関は、入力324の選択及びフィールド326を介してエンターされた相関値(例示的にはパーセント値)に基づき実装される。
図16を参照すると、ネットワーク通信速度を実装することに関連する選択可能データがタブ292内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)327〜330及びフィールド331〜338のユーザ選択に基づきパケット通信速度(即ち、ノード16間でパケットが通信される速度)を選択し修正する。パケット通信速度は、入力327の選択及びフィールド331を介してエンターされた速度値に基づき通信ネットワーク18に対して実装され、パケット通信速度に対する許容限度(ceiling)(最大値)は、入力328の選択及びフィールド332を介してエンターされた許容限度値に基づき実装される。パケットバーストは、入力329の選択及びフィールド333を介してエンターされたパケットバースト値に基づき実装され、パケットバーストに対する許容限度(最大値)は、入力330の選択及びフィールド334を介してエンターされた許容限度値に基づき実装される。フィールド335及び336は、速度単位(例示的にはキロバイト毎秒)を選択するためのドロップダウンメニューを提供し、フィールド337及び338は、バースト単位(例示的にはバイト)を選択するためのドロップダウンメニューを提供する。
図17を参照すると、ネットワーク通信速度を実装することに関連する選択可能データがタブ294内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)340のユーザ選択及びフィールド342を介してエンターされたカスタムコマンドに基づき、通信ネットワーク18上の1つ以上のノード16に関連するネットワークパラメータを修正するためのカスタムコマンドを提供する。
図18を参照すると、ワークロードコンテナコンフィギュレーションモジュール208が選択されている。モジュール208へのユーザ入力(例えば、入力352,360,362等の選択可能ワークロードコンテナデータのユーザ選択)に基づき、ワークロードコンテナコンフィギュレータ76は、ノードクラスタ14上での動作のためのワークロードコンテナモジュールを選択しコンフィギュアするように動作する。モジュール208は、種々の利用可能ワークロードコンテナモジュールに対応する複数の選択可能タブ350を含む。各利用可能ワークロードコンテナモジュールは、実行されるときにノードクラスタ14上でのワークロードの実行を開始し制御するように動作する選択可能コードモジュールを含む。図示された実施形態においてモジュール208を介して利用可能なワークロードコンテナモジュールは、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memchashed)、カサンドラ(Cassandra)及びダーウィンストリーミング(Darwin Streaming)等の幾つかのサードパーティに係る市販のワークロードコンテナモジュールを含む。カサンドラは、基本的データベース動作を提供するためのキー値ストアを提供するオープンソースの分散型データ管理システムである。ダーウィンストリーミングは、アップルインク(Apple, Inc.)によって提供されるクィックタイム(QuickTime)等の、種々の動画媒体をストリーミングするために利用される媒体ストリーミングアプリケーションのオープンソースの実装である。オープンソースのワークロードコンテナソフトウェアがモジュール208を介して例示的に提供されているが、クローズドソースのワークロードコンテナが選択のために提供されてもよい。例えば、クローズドソースのワークロードコンテナソフトウェアに関連するライセンス情報が、ユーザインタフェース200を介して入力され又は購入されてよい。また、1つ以上のカスタムワークロードコンテナモジュールが、モジュール208の「カスタム」タブを介してロードされ選択されてもよい。他のワークロードコンテナモジュールが提供されてもよい。例えば先に使用されたカスタムワークロードコンテナモジュール等の選択のために利用可能な追加的なワークロードコンテナモジュールのライブラリへのアクセスを提供する「ライブラリ」タブも提供されている。
図18の「ハドゥープ」タブの下で、ワークロードコンテナコンフィギュレータ76は、入力352のユーザ選択に基づきアパッチハドゥープワークロードコンテナモジュールを選択する。アパッチハドゥープのバージョン及びビルドバリアント(build variant)は、一般タブ354の下でそれぞれドロップダウンメニュー360,362を介して選択可能である。選択されたワークロードコンテナモジュールの動作パラメータは、拡張タブ356及びカスタムタブ358を介して提供されるユーザ入力に基づきワークロードコンテナコンフィギュレータ76によって調節可能である。調節のために利用可能な動作パラメータは、例示的には、選択されたワークロードコンテナモジュールに依存する。例えば、アパッチハドゥープがワークロードコンテナモジュールとして選択されている場合、図19に示される拡張タブ356は、ワークロードコンテナコンフィギュレータ76によってコンフィギュア可能な、アパッチハドゥープワークロードコンテナモジュールの例示的な選択可能動作パラメータのテーブル366を表示する。ワークロードコンテナコンフィギュレータ76は、対応する選択ボックス367のユーザ選択に基づき、コンフィギュレーションのための動作パラメータを選択する。テーブル366は、オーバーライドフィールド374、マスタ値フィールド378及びスレーブ値フィールド380を含むコンフィギュレーションデータを受信するために、ワークロードコンテナコンフィギュレータ76のための幾つかのフィールドを提供する。オーバーライドフィールド374内でのユーザ選択に基づき、対応する動作パラメータでそのワークロードコンテナが調節されるべきノード16が選択される。ノード16は、対応するドロップダウンメニューにおけるユーザ選択に基づき又は入力384のユーザ選択に基づきオーバーライドフィールド374において選択される。例示的には、「非(never)」の選択は、全ノード16で実装されている対応する動作パラメータのデフォルトコンフィギュレーションをもたらし、「マスタ」又は「スレーブ」の選択は、それぞれマスタノード16又はスレーブノード16でのパラメータ調節の実装をもたらし、「常に(always)」の選択は、ノードクラスタ14の全ノード16でのパラメータ調節の実装をもたらす。代替的には、ノードクラスタ14の個々のノード16が、調節された動作パラメータの実装のために選択されてよい。
マスタ値フィールド378及びスレーブ値フィールド380においては、制約、データ値又は他のユーザ選択が、マスタノード16又はスレーブノード16のそれぞれにおけるワークロードコンテナの対応する動作パラメータのための調節値を提供する。プロパティ名フィールド376は、例示的には、選択されたワークロードコンテナモジュールのコードモジュールにおいて参照される関連動作パラメータの名前をリストする。記述フィールド382は、例示的には、関連動作パラメータのユーザに対して概要を表示する。入力386により、ユーザはテーブル366内にリストされた全動作パラメータを選択又は除外することができる。入力388により、ユーザは、先の選択又はパラメータ変更を逆にすること又は「取り消し(undo)」が可能であり、入力390により、ユーザは、フィールド374,378,380内に提供された値をデフォルト設定にリセットすることができる。
テーブル366内でのユーザ選択に基づきワークロードコンテナコンフィギュレータ76で調節可能な動作パラメータの例としては、ノード16のリード/ライト(I/O)動作、ソーティング動作、ノード16のネットワークソケット動作(例えばTCPソケット接続)のコンフィギュレーション、及び、ワークロードコンテナのファイルシステム55(例えばアパッチハドゥープのためのHDFS)に関連する動作パラメータが挙げられる。リード/ライト動作に関連する動作パラメータは、例えば、ノード16のメモリバッファサイズ及びリード/ライト動作に際して転送されるデータブロックのサイズを含む。例示的には、テーブル366の行368に示されるメモリバッファサイズは、ノード16のリード/ライト(I/O)動作に際してどれくらいの量のデータがバッファされる(キャッシュ内に一時的に記憶される)のかに対応している。図示された実施形態では、メモリバッファサイズは、ノードハードウェアのメモリページ又はデータブロックサイズの倍数である。メモリページ又はデータブロックは、ここに述べられるように、メモリ割り振り及びメモリ転送のためのデータの最小単位である、ノード16の固定長ブロック又は仮想メモリを参照する。図19の行368においては、マスタノード及びスレーブノードの値は、例示的に4096ビットに設定されているが、これらの値は、8192ビット又はノードプロセッサ40(図2)のデータブロックサイズの他の適切な倍数に調節されてよい。同様に、リード/ライト動作に際して転送されるデータブロックのサイズもまた、テーブル366へのユーザ入力に基づき調節される。
ソーティング動作に関連する動作パラメータは、例えば、データをソーティングするときに同時にマージするデータストリームの数を含む。ワークロードコンテナのファイルシステム(例えば図2のファイルシステム55)に関連する動作パラメータは、各ノード16のメモリ42に記憶されるファイルシステム記録又はファイルの数(例えば行370参照)及びファイルシステム55に対する処理要求のために割り振られる各ノード16の処理スレッドの数を含む。テーブル366の例示的な行370においては、図2のファイルシステム55のためにメモリ42内に記憶される記録の数は、マスター及びスレーブノード16に対して両方とも100000記録であるが、他の適切な記録制限値がエンターされてもよい。一実施形態では、ファイルシステム記録の数を制限することは、ファイルシステム55によるファイルの複製を制限するのに役立つ。
ここで述べられるTCPネットワークソケット等のネットワークソケットのコンフィギュレーション及び動作に関連する動作パラメータは、ワークロードコンテナとネットワークソケットの相互作用を伴う。例えば、ネットワークソケットの通信遅延又はレイテンシ及びネットワーク18(図1)を介して送られるパケットの数が調節されてよい。例えば、ノード16のTCPソケット接続を介して送られるデータパケットのレイテンシ及び数を調節するために、テーブル366の行372が、アルゴリズム、例示的には当該技術分野において知られる「ネーグルアルゴリズム(Nagle's algorithm)」、のフィールド378,380を介してのアクティベーション/ディアクティベーションを可能にしている。ネットワークソケットの動作に関連する他の適切な動作パラメータが調節されてもよい。
ワークロードコンテナコンフィギュレータ76によって調節可能な他の例示的な動作パラメータは、ノード16のプロセッサ40により同時に実行されるソフトウェアタスクの数を含む。例えば、ユーザは、ワークロード実行に際して同時に実行される一定数のタスク(例えばJAVA(登録商標)タスク)を、テーブル366への入力を介して指定してよく、これに伴いワークロードコンテナコンフィギュレータ76はタスクの数を調節する。ワークロードコンテナに関連する他の適切な動作パラメータが調節されてよい。
図20のカスタムタブ358を参照すると、選択されたワークロードコンテナモジュールの更なるカスタム化を可能にするために、追加的なコンフィギュレーション調節が、選択されたワークロードコンテナモジュール、例示的にはハドゥープワークロードコンテナモジュール、のために実装されてよい。ワークロードコンテナコンフィギュレータ76は、フィールド392,394,396へと入力されたコマンド文字列並びに対応する選択可能ボックス398のユーザ選択に基づき、選択されたワークロードコンテナモジュールのコンフィギュレーションを更に調節する。図示された実施形態では、これらのフィールド392,394,396は、それぞれ、ハドゥープマスタノードと、ハドゥープファイルシステムと、タスクトラッカ(task tracker)内のタスクの数、一時的データを何処に置くかのローカルディレクトリ及び他の適切なパラメータ等の、マップリデュース実行に関連するパラメータと、に適用されるコンフィギュレーションを指定する。
他の利用可能ワークロードコンテナモジュール(例えばメムキャッシュディー、カサンドラ、ダーウィンストリーミング等)に関連する動作パラメータは、ハドゥープワークロードコンテナモジュールで説明したのと同様に調節される。モジュール208の入力352とタブ354,356,358を介して提供されたコンフィギュレーション情報とに基づき、ワークロードコンテナコンフィギュレータ76は、ノードクラスタ14のノード16へとロードするためのワークロードコンテナイメージファイル94(図3)を生成する。一実施形態では、ワークロードコンテナイメージファイル94は、制御サーバ12のメモリ90内又はノード16のメモリ42内にセーブされ、ワークロードコンテナコンフィギュレータ76は、イメージファイル94をコンフィギュレーション情報で更新する。一実施形態では、ワークロードコンテナモジュールの複数のコンフィギュレーションがセーブされてよく、次いで、例えばワークロード及びシステム性能に対するワークロードコンテナコンフィギュレーション変更の影響を調査する等のために、順に実行されてよい。
図21を参照すると、ワークロードコンテナコンフィギュレータ76は、モジュール208の「カスタム」タブの入力353,401のユーザ選択に基づき、ノード16上での実行のためのユーザ定義のカスタムワークロードコンテナモジュールを選択する。図示された実施形態では、カスタムワークロードコンテナモジュールは、ここに述べられるように、ユーザによって提供され且つ商業的には利用可能でなくてよいワークロードコンテナモジュールを含む。ワークロードコンテナコンフィギュレータ76は、例示的には、ワークロードコンテナコードモジュールを含む圧縮ジップ(zip)ファイルをロードする。具体的には、ジップファイルは、ノードクラスタ14上でのワークロードの実行を連携させるためのユーザ定義のパラメータを含むコンフィギュレーションファイル又はスクリプトを含む。図21に示されるように、テーブル400は、制御サーバ12(又はコンピュータ20)に記憶され且つ選択可能な1つ以上の入力401を介してユーザ選択のために利用可能なロード済みのカスタムワークロードコンテナモジュールのリストを提供する。追加的なカスタムワークロードコンテナモジュールが、入力402,404のユーザ選択に基づきそれぞれアップロード又はダウンロードされテーブル400内に表示され、カスタムワークロードコンテナモジュールは、入力403のユーザ選択に基づきテーブル400から削除される。ユーザは、ジップフォルダパス及び/又はコンフィギュレーションスクリプトパスを、それぞれのフィールド406,408を介してエンターすることができる。一実施形態では、カスタムワークロードコンテナモジュールは、コンピュータ20(図1)のメモリ34上など、クラウドコンピューティングシステム10から遠隔の場所に記憶されており、入力402のユーザ選択に基づき制御サーバ12のメモリ90(図3)へとアップロードされる。
図22を参照すると、ワークロードコンフィギュレーションモジュール210が選択されている。モジュール210へのユーザ入力に基づき、ワークロードコンフィギュレータ78(図3)は、ノードクラスタ14により選択されたワークロードコンテナモジュールでの実行のためのワークロードを選択しコンフィギュアするように動作する。また、ワークロードコンフィギュレータ78は、選択されたワークロードコンテナモジュールでノード16上で実行される合成テストワークロードを、ユーザ定義のワークロードパラメータに基づき生成するようにも動作する。モジュール210は幾つかの選択可能タブを含み、これらの選択可能タブは、ワークロードタブ410、合成カーネルタブ412、MCブラスタ(MC-Blaster)タブ414、設定ライブラリタブ416及びクラウドスィート(CloudSuite)タブ417を含む。図22のワークロードタブ410の下で、例示的には選択可能入力418,424,428を含む選択可能ワークロードデータのユーザ選択に基づき、実行されるべきワークロードがワークロードコンフィギュレータ78によって選択される。例示的には、利用可能ワークロードは、例えば、ハドゥープワークロードコンテナ上での実行に適したワークロード(入力418)、メムキャッシュディーワークロードコンテナ上での実行に適したワークロード(入力424)、又は、カスタムワークロード(入力428)等の、選択されたワークロードコンテナのためにコンフィギュアされた任意の他の適切なワークロードを含む。
図22を参照すると、ハドゥープワークロードが、実際のワークロード及び合成テストワークロードから、対応する入力418の1つのユーザ選択に基づき選択されている。実際のワークロードは、ハドゥープワークロードコンテナのマップリデュース機能に適した予め定義されたコードモジュールを含み、フィールド422内の実際のワークロードの記憶ロケーションの識別に基づき制御サーバ12へとロードされる。一実施形態では、実際のワークロードは、図1のメモリ34等の、クラウドコンピューティングシステム10から遠隔のメモリ上に記憶され、フィールド422を介して制御サーバ12のメモリ90へとアップロードされる。他の実施形態では、実際のワークロードは、ハドゥープワークロードコンテナモジュールと共に提供されるサンプルハドゥープワークロードであり、あるいは制御サーバ12へ予めロードされた他のワークロードである。また、合成テストワークロードは、ハドゥープワークロードコンテナ上での実行のために、対応する入力418のユーザ選択に基づき選択可能である。入力記録の数、又は、合成テストワークロードと共に生成されるべき命令の数であって、合成テストワークロードの「マップ」段階において処理されるべき命令の数は、ここに述べられるように、フィールド420を介してエンターされてよく、また、ワークロードコンフィギュレータ78のシンセサイザ79(図3)への入力として提供されてよい。シンセサイザ79による合成テストワークロードの生成のための他の入力パラメータは、ここに述べられるように、合成カーネルタブ412を介してコンフィギュアされる。ハドゥープワークロードコンテナでの実行のために合成テストワークロードが例示的に適用されているが、他の利用可能ワークロードコンテナのために合成テストワークロードが選択され生成されてもよい。
カスタムスクリプトは、選択されたワークロードコンテナモジュールでの実行のための予め定義された実際のワークロードとして、フィールド430を介して且つ入力428のユーザ選択があった場合にロードされる。カスタムスクリプトは、選択されたワークロードコンテナモジュールでノードクラスタ14によって実行される1つ以上の実行コマンドを含むユーザ提供のコードを備える。図示された実施形態では、カスタムスクリプトは、バッチプロセッサ80でのシステムテストに際して実行されるワークロードとして用いられ、種々のネットワーク、ワークロードコンテナ及び/又は他のシステムコンフィギュレーションの変更が、ここに述べられるように、逐次的ワークロード実行に際してなされて、システム性能への影響がモニタされる。
予め定義されたワークロードが、入力424のユーザ選択に基づき、メムキャッシュディーワークロードコンテナでの実行のためにロードされてもよい。一実施形態では、メムキャッシュディーワークロードは、「セット」コマンドを介してキー値ペアを記憶すると共に「ゲット」コマンドを介してキー値ペアをリトリーブするメモリ内加速構造を含む。1つのキー値ペアは、2つのリンクされたデータ項目のセットであり、これらデータ項目は、データのある項目のための識別子であるキーと、そのキーによって識別されたデータ又はそのデータのロケーションへのポインタのいずれかである値と、を含む。メムキャッシュディーワークロードは、例示的には、フィールド426への入力値に基づきそのランタイムが選択される選択可能MCブラスタツールで動作する。MCブラスタは、一定数のネットワーク(例えばTCP)ソケット接続上でメムキャッシュディーから記録をリード/ライトする要求を生成することによって、テスト中のシステムを刺激するためのツールである。各要求は、キー及び値を指定する。MCブラスタツールは、図24のMCブラスタタブ414を介してコンフィギュアされる。図24を参照すると、フィールド460への入力は処理スレッド毎に利用するTCP接続の数を指定し、フィールド462への入力は動作させるキーの数を指定し、そしてフィールド464,466への入力は、1秒あたりに送られることを要求される「ゲット」コマンド及び「セット」コマンドをそれぞれ指定する。ユーザ指定の(カスタム)バッファサイズは、対応する入力469の選択及びフィールド468へエンターされた値に基づきワークロードコンフィギュレータ78によって実装されてよく、TCP要求は、入力470の「オン(on)」の選択に基づき遅延させられてよい。開始すべき一定数の処理スレッドが、対応する入力473のユーザ選択及びフィールド472にエンターされた値に基づき、ワークロードコンフィギュレータ78によってカスタマイズされてよい。処理スレッドのデフォルト数は、ノード16のアクティブな処理コアの数に等しい。UDPリプレイポートの数は、フィールド474への入力に基づき選択され、ワークロード実行の結果として記憶される(又は戻される)値のサイズ(バイト)は、フィールド476への入力に基づき選択される。
図23を参照すると、合成テストワークロードが、合成カーネルタブ412を介して提供されたユーザ入力に基づき、シンセサイザ79によって生成される。具体的には、ワークロードコンフィギュレータ78のシンセサイザ79(図3)は、制御サーバ12のメモリ90へとロードされるコードモジュール、例示的にはトレース(trace)ファイル(例えばコンフィギュレーションファイル)、において提供されるユーザ定義のパラメータに基づき、合成テストワークロードを生成する。トレースファイルは、ここに述べられるように、合成テストワークロードの所望の計算上の(computational)特性を記述するデータを含む。図23の「合成」入力434のユーザ選択があると、フィールド436又はフィールド438へのユーザ入力に基づき、記憶されているトレースファイルのロケーションが識別されてよい。フィールド436は、例示的には、トレースファイルを含むハードディスクロケーション(例えば図1のコンピュータ20のメモリ34)を識別し、フィールド438は、例示的には、トレースファイルをリトリーブするためのウェブアドレス又はURLを識別する。テーブル440は、トレースファイルと、ロード済みで選択のために利用可能な先に生成された合成テストワークロードと、を表示する。トレースファイルは、入力442のユーザ選択でロードされると共にテーブル440内に表示され、入力444のユーザ選択でテーブル440から削除され、そして入力446のユーザ選択に基づきダウンロードされる(即ちフィールド438において識別されたURLから)。トレースファイルは例示的にはJSONファイルフォーマットであるが、他の適切なファイルタイプが提供されてもよい。合成テストワークロードにおいて生成されるべき命令の最大数はフィールド448において識別され、合成テストワークロードの繰り返しの最大数はフィールド450において識別される。代替的には、先に生成された合成テストワークロードが、ライブラリ入力432のユーザ選択、フィールド436又は438での合成テストワークロードの記憶ロケーション(ローカルハードドライブ、ウェブサイト等)の識別、及び、テーブル440に表示された所望の先に生成された合成テストワークロードに対応する入力441のユーザ選択に基づき、ワークロードコンフィギュレータ78によってロードされる。先に生成された合成テストワークロードの命令及び繰り返しの最大数は、フィールド448,450で調節可能である。
トレースファイルは、ワークロード特性と、合成テストワークロードを生成するためにシンセサイザ79による入力として用いられるユーザ定義のパラメータと、を識別する修正可能データ構造、例示的には修正可能フィールドを有するテーブル、を含む。このテーブルは、テーブルのフィールドがテーブルへのユーザ入力及びユーザ選択に基づき修正され得るように、ユーザインタフェース200又はユーザコンピュータ20のユーザインタフェースを伴う等してユーザインタフェース上に表示される。例えば、ここに述べられる図32のテーブル150を参照されたい。トレースファイルは、更に、シンセサイザ79による入力として用いられる対象となる命令セットアーキテクチャ(ISA)の少なくとも一部を識別する。トレースファイルは、更に、合成テストワークロードの命令に関連する他の特性を識別し、これら他の特性は、命令間依存関係(例えば第1の命令は第1の命令を実行する前の第2の命令の完了に依存する)、メモリレジスタ割り振り制約(例えば命令が特定のレジスタからの値をとるように制約する)、及び、アーキテクチャ上の実行制約(例えば制限された数の論理ユニットが特定のタイプの命令を実行するために利用可能である)を含む。従って、コンフィギュレータ22は、トレースファイルで指定された実行特性に基づきワークロード命令がどれくらい長く実行されるべきであるかを予測するように動作する。
トレースファイル内に記述されたユーザ定義のワークロードパラメータの例としては、生成されるべき命令の総数や、例えば浮動小数点命令、整数命令及び分岐命令を含め生成されるべき命令のタイプや、例えば実行フローの分岐の蓋然性(即ち命令実行に際して分岐が行われやすいかどうか又は実行が当該実行フローパスに沿って進行して分岐へはジャンプしないかどうか)等の命令実行の挙動(例えば実行フロー)や、命令間でのデータ依存性の分布や、実行及び/又は転送される基本ブロックの平均サイズや、命令実行に関連するレイテンシ(即ち特定の命令又は命令タイプの実行にどれくらいのサイクルが必要であるか等、1つの命令又は命令タイプを実行するのに要する時間の長さ)が挙げられる。一実施形態では、ユーザ定義のワークロードパラメータは、整数命令又は浮動小数点命令として特定のどの命令を用いるのかを指定する。一実施形態では、ユーザ定義のワークロードパラメータは、各命令タイプ(例えば整数、浮動小数点、分岐)の平均数及び統計的分布を指定する。一実施形態では、各命令は1つ以上の入力及び出力引数を含む。
図示された実施形態では、トレースファイル内に記述されたワークロードパラメータ及び命令セットアーキテクチャは、テーブル駆動で再対象化可能な方法において(in a table-driven, retargetable manner)提供される。テーブルのコンテンツに対する変更に基づき、コンフィギュレータ22は、種々のマイクロアーキテクチャ及びシステム並びにノード16の種々の命令セットアーキテクチャを対象とするように動作する。例示的なテーブル150が図32に示されており、テーブル150は、コードシンセサイザ79へ入力されるべきユーザ定義のワークロードパラメータのセットを表すデータを含む。図32を参照すると、テーブル15は、生成された合成テストワークロードに対する命令の集まりを記述する命令部152と、合成テストワークロードと共に用いられるべきアドレシングモードを記述するアドレシングモード部154と、を含む。図示されたもの以外の命令及びアドレシングモードがテーブル150内に提供されてもよい。テーブル150の命令部152は、幾つかの修正可能フィールド158,160,162,164を含む。フィールド158は生成されるべき命令を識別するデータを含み、フィールド160は命令に関連する計算タイプを識別するデータを含み、フィールド162はシンセサイザ79によるコード生成を支援するために割り当てられたニーモニック(mnemonic)を識別するデータを含む。フィールド164は、種々のアドレシングモード(即ち命令の引数がメモリから得られるウェイ(way))を識別するデータを含む。
図示された実施形態では、入力コマンド156(「gen_ops.initialize()」)は、生成されるべき命令を記述するテーブル150の命令部152が開始していることを示している。行166は、1つ以上の命令を生成するためのユーザ定義のワークロードパラメータの一例を示す。行166を参照すると、フィールド158にエンターされた「D(IntShortLatencyArith)」は、短いレイテンシを有する整数演算命令を指定し、フィールド160,162にエンターされた「op_add」及び「addq」は、その命令が加算、即ち「add」命令であることを示している。一実施形態では、短いレイテンシは、プロセッサ(例えばノードプロセッサ40)が命令を実行するのに1サイクル又は数サイクル要することを示している。フィールド164の「addr_regOrw_reg1r」は、第1のレジスタ0引数が「rw」(リード及びライト)であり第2のレジスタ1引数が「r」(リード)であることを示している。同様に、フィールド164の「addr_reg0rw_imm」は、命令の他の変数を記述し、ここでは、第1の引数(レジスタ0引数)は「rw」(リード及びライト)であり、第2の引数は「imm」(「即時的(immediate)」)値(例えば123のような数字)である。
テーブル150のアドレシングモード部154を参照すると、例示的な行170は、レジスタ上でのみ動作する命令のクラスを識別するフィールド172の「addr_regOw_reg1r」を含む。第1のレジスタ引数(即ちレジスタ0)は宛先「w」(ライト)であり、第2のレジスタ引数(即ちレジスタ1)は入力「r」(リード)である。フィールド174,176におけるエントリは、引数を識別すると共に、リード引数に対しては「src」を、ライト引数に対しては「dst」を、又は、リード・修正・ライト引数に対しては「rmw」を示している。x86アーキテクチャにおいては、例えば、第1のレジスタ引数は「rmw」であってよく(引数はリードされ、そこで動作し、次いで結果と共にライトされる)、あるいは他の適切な引数であってよい。追加的な又は異なるユーザ定義のワークロードパラメータがテーブル150を介して指定されてよい。
一実施形態では、テーブル150(例えばトレースファイル)は、例えばユーザコンピュータ20による等、オフラインで生成されて、コンフィギュレータ22へとロードされる。一実施形態では、テーブル150は、制御サーバ12に記憶され又は制御サーバ12へとロードされ、そしてユーザインタフェース200によって表示された選択可能且つ修正可能なデータを介してユーザがユーザ定義のワークロードパラメータを修正することができるように、ユーザインタフェース200で表示される。
図33を参照すると、合成テストワークロードを生成して実行するための例示的な処理フローが示されている。合成テストワークロードを生成すると共にコンフィギュレーションファイル28及び合成ワークロードイメージ96を各ノード16へと出力するコードシンセサイザ79が示されており、各ノード16の合成ワークロードエンジン58は、ここに述べられるように合成テストワークロードを実行する。図33のブロック60,62,64は、シンセサイザ79へと入力されるトレースファイル内に提供されるコンテンツの抽象的表現を提供する。ブロック60は、命令セットの実行フローを表現する一般的タスクグラフである。ブロック62は実行されるタスク機能を表現しており、これらのタスク機能は、入力命令、出力命令、開始命令及び終了命令を含む。ブロック64はワークロード挙動パラメータを表現しており、これらのパラメータは、データブロックサイズ、実行の継続時間とレイテンシ、メッセージ伝搬、及び、ここに述べられる他のユーザ定義のパラメータを含む。
シンセサイザ79は、例示的には、コードジェネレータ66及びコードエミッタ68を含み、これらの各々は、ここに述べられる種々の機能を行うために1つ以上のプロセッサ22によってアクセス可能なメモリ(例えばメモリ90)に記憶されたソフトウェアコード又はファームウェアコードを実行する制御サーバ12の1つ以上のプロセッサ22を備える。コードジェネレータ66は、ユーザ定義のワークロードパラメータ及び対象となる命令セットアーキテクチャを記述するトレースファイルのデータ構造(例えばテーブル)上で動作し、指定された実行プロパティを有する抽象化(abstracted)合成コードを生成する。コードエミッタ68は、抽象化合成コード(例えば実行ハーネスにおいてリンクされるべきアセンブリコード、バイナリコード、又は、シミュレーション基盤とリンクされるべき位置無依存(position-independent)コード、等)から、実行環境に適したフォーマットで実行可能合成コード(即ち合成テストワークロード)を作成する。一実施形態では、実行可能コードの所望のフォーマットは、シンセサイザ79においてハードコード化される。他の実施形態では、実行可能コードの所望のフォーマットは、ユーザインタフェース200の選択可能データを介して選択可能である。一実施形態では、フルサイズのワークロードを実行するようには構成されていないサイクル・アキュレート(cycle-accurate)シミュレータを介して実行可能コードが実行され得るように、実行可能コードはコンパクトなサイズである。シンセサイザ79の他の適切なコンフィギュレーションが提供されてもよい。一実施形態では、シンセサイザ79は、ノードクラスタ14のノード16のコンピュータアーキテクチャデータへのアクセスを有する。従って、シンセサイザ79は、ノードクラスタ14の既知のコンピュータアーキテクチャデータに基づき、特定のマイクロアーキテクチャ及び命令セットアーキテクチャを対象とする合成テストワークロードを生成する。従って、合成テストワークロードは、例えば、アーキテクチャ上の特性の所望のセットをエクササイズするために対象とされてよい。
シンセサイザ79によって生成された合成テストワークロードは、選択されたワークロードコンテナモジュールと共にノード16上で実行可能なコードモジュールを含む。合成テストワークロードが実行のために生成され選択されると、その合成テストワークロードは、図3のワークロードイメージファイル96として制御サーバ12のメモリ90内に記憶される。コンフィギュレータ22は、次いでそのワークロードイメージファイル96を実行のために各ノード16へとロードし、あるいはノード16がそのワークロードイメージファイル96をリトリーブする。一実施形態では、ハドゥープワークロードコンテナモジュールが選択されると、合成テストワークロードは、マップリデュースの「マップ」段階として実行される。
図示された実施形態では、合成テストワークロードは、ここに述べられるように、テスト及び性能解析に対してコンピューティングシステム10のハードウェアをエクササイズするために実行される。シンセサイザ79は、トレースファイルを介して所望のワークロード挙動を入力として受信し、この入力に従って挙動する合成テストワークロードを生成する。具体的には、ここに述べられるように、実行されるべき命令の数及び命令のタイプの統計的分布等の、所望のワークロード挙動の統計的プロパティが、シンセサイザ79への入力である。例えば、ロードされたトレースファイルは、1000個の命令を含むプログラムループを要求するユーザ定義のパラメータを含んでいてよく、そのトレースファイルは、命令の30%が整数命令であり、10%が特定の分岐構造を有する分岐命令であり、40%が浮動小数点命令である、等を指定してよい。トレースファイル(又は図23のフィールド450)は、そのループが100回実行されるべきであることを指定してよい。シンセサイザ79は、次いで、要求されたパラメータを含むプログラムループを合成テストワークロードとして生成する。
一実施形態では、生成された合成テストワークロードは、特定のプロプリエタリ(proprietary)コード又は既知のアプリケーション若しくはプログラムの複合(complex)コード等の実際のワークロードの挙動をエミュレートする役割を果たす。例えば、何らかのプロプリエタリコードは、ユーザにとってアクセス可能でなく利用可能でない命令を含む。同様に、何らかの複合コードは、複雑且つ多数の命令を含む。場合によっては、そのようなプロプリエタリコード又は複合コードに基づきワークロードを作成することは、好ましくはなく又は困難であるかもしれない。従って、プロプリエタリコード又は複合コードの全命令を含むワークロードコードモジュールを作成するのではなく、プロプリエタリコード又は複合コードがプロプリエタリコード又は複合コードの実行に際してどのようにサーバハードウェア(ノード16又は他のサーバハードウェア)をエクササイズするのかをモニタするために、モニタリングツール(例えばコンフィギュレータ22からはオフラインである)が用いられるのである。プロプリエタリコードの実行に際してモニタリングツールによって集められた統計的データは、プロプリエタリコード又は複合コードの所望の実行特性を表すパラメータを識別するために用いられる。パラメータの集まりはトレースファイル内に提供される。トレースファイルは次いでシンセサイザ79への入力としてロードされ、シンセサイザ79は、統計的入力及び他の所望のパラメータに基づき、プロプリエタリコードと同様に挙動する合成コードを生成する。従って、特定のコードの複合命令又はプロプリエタリ命令は、そのコードのクラウドコンピューティングシステム10上での挙動をモデル化する上で必要とされない。
一実施形態では、シンセサイザ79は、バッチプロセッサ80と協働して、種々のトレースファイルからシンセサイザ79によって生成された複数の合成テストワークロードを実行する。一実施形態では、ノード16の異なる対象プロセッサ、即ちCPU及びGPUsの両者、をテストする修正されたユーザ定義のワークロードパラメータのテーブル(例えば図32のテーブル150)に基づき、複数の合成テストワークロードが生成される。
図34は、選択されたワークロードでクラウドコンピューティングシステム10をコンフィギュアするために図1及び図3の制御サーバ12のコンフィギュレータ22によって行われる例示的な動作のフローダイアグラム600を示している。図34の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信した複数のユーザ選択に基づき、図34のフローダイアグラム600に従って図1のノードクラスタ14をコンフィギュアする。ブロック602では、ユーザインタフェース200を介して受信したユーザ選択(例えば入力418の選択)に基づき、ワークロードコンフィギュレータ78は、クラウドコンピューティングシステム10の複数ノードのクラスタ14上での実行のためのワークロードを選択する。ワークロードは、ブロック602で、実際のワークロード及び合成テストワークロードを含む複数の利用可能ワークロードから選択される。実際のワークロードは、ここに述べられるように、制御サーバ12によってアクセス可能なメモリ(例えばメモリ90又はメモリ34)内に記憶されたコードモジュールを備えている。ブロック604では、ここに述べられるように、選択されたワークロードの処理が複数ノードのクラスタ14に分散されるように、選択されたワークロードを実行するために、コンフィギュレータ22は、クラウドコンピューティングシステム10の複数ノードのクラスタ14をコンフィギュアする。
一実施形態では、コンフィギュレータ22は、選択可能な実際のワークロードデータと選択可能な合成テストワークロードデータとを備えるユーザインタフェース200を提供し、ワークロードの選択は、選択可能な実際のワークロードデータ及び選択可能な合成テストワークロードデータの少なくとも一方に基づく。例示的な選択可能な実際のワークロードデータは、「実際のワークロード」に対応する図22の選択可能入力418と、図22の選択可能入力424,428と、を含み、例示的な選択可能合成テストワークロードデータは、「合成ワークロード」に対応する図22の選択可能入力418と、図23の選択可能入力434,436,441と、を含む。一実施形態では、ワークロードコンフィギュレータ78は、予め生成された合成テストワークロード、及び、選択可能合成テストワークロードデータのユーザ選択に基づくユーザ定義のワークロードパラメータのセット、の少なくとも一方を選択する。予め生成された合成テストワークロードは、制御サーバ12によってアクセス可能なメモリ(例えばメモリ90又はメモリ34)内に記憶されたコードモジュール(例えばライブラリ入力432を介してロードされる)を備える。シンセサイザ79は、例示的にはここに述べられるトレースファイルを介して提供されたユーザ定義のワークロードパラメータのセットの選択に基づき、合成テストワークロードを生成するように動作する。トレースファイルのユーザ定義のワークロードパラメータは、ここに述べられるように、合成テストワークロードの実行特性を識別する。
ここに述べられるように、例示的なユーザ定義のワークロードパラメータは、合成テストワークロードの命令の数、合成テストワークロードの命令のタイプ、合成テストワークロードの少なくとも1つの命令の実行に関連するレイテンシ、及び、合成テストワークロードの実行繰り返しの最大数の少なくとも1つを含み、命令のタイプは、整数命令、浮動小数点命令、及び、分岐命令の少なくとも1つを含む。一実施形態では、複数ノードのクラスタ14による合成テストワークロードの実行は、ここに述べられるように、複数ノードのクラスタ14による複合ワークロード又はプロプリエタリワークロード等の実際のワークロードの実行に関連する実行特性をシミュレートするように動作する。
図35は、合成テストワークロードでクラウドコンピューティングシステム10をコンフィギュアするために図1及び図3の制御サーバ12のコンフィギュレータ22によって行われる例示的な動作のフロー図610を示している。図35の説明全体に対して図1及び3が参照される。図示された実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信した複数のユーザ選択に基づき、図35のフロー図610に従って図1のノードクラスタ14をコンフィギュアする。ブロック612では、ユーザインタフェース200を介して提供されたユーザ定義のワークロードパラメータのセットに基づき、ワークロードコンフィギュレータ78のコードシンセサイザ79は、複数ノードのクラスタ14上での実行のための合成テストワークロードを生成する。ユーザ定義のワークロードパラメータのセット(例えばトレースファイルで提供される)は、ここに述べられるように、合成テストワークロードの実行特性を識別する。ブロック614では、ここに述べられるように、合成テストワークロードの処理が複数ノードのクラスタに分散されるように合成テストワークロードを実行するために、コンフィギュレータ22は、複数ノードのクラスタ14を合成テストワークロードでコンフィギュアする。
一実施形態では、合成テストワークロードの生成は、複数ノードのクラスタ14に関連する命令セットアーキテクチャ及びマイクロアーキテクチャの少なくとも一方を識別するコンピュータアーキテクチャデータに更に基づく。ここに述べられるように、一実施形態では、コンフィギュレータ22は、複数ノードのクラスタ14の各ノード16の命令セットアーキテクチャ及びマイクロアーキテクチャをコンフィギュレータ22が識別することができるように、コンピュータアーキテクチャデータをメモリ(例えばメモリ90)内に記憶している。従って、メモリ内に記憶されたコンピュータアーキテクチャデータに基づき合成テストワークロードがノードクラスタ14のノード16の特定のコンピュータアーキテクチャでの実行のためにコンフィギュアされるように、コンフィギュレータ22は、合成テストワークロードを生成する。一実施形態では、コードシンセサイザ79は、複数ノードのクラスタ14のノード16に関連する異なるコンピュータアーキテクチャに各々が基づく複数の合成テストワークロードを生成し、各コンピュータアーキテクチャは、命令セットアーキテクチャ及びマイクロアーキテクチャの少なくとも一方を含む。一実施形態では、コンフィギュレータ22は、選択可能合成テストワークロードデータを備えるユーザインタフェース200を提供し、ワークロードコンフィギュレータ78は、選択可能合成テストワークロードデータのユーザ選択に基づき、合成テストワークロードの生成のためのユーザ定義のワークロードパラメータのセットを選択する。例示的な選択可能合成テストワークロードデータは、「合成ワークロード」に対応する図22の選択可能入力418と、図23の選択可能入力434,436,441と、を含む。一実施形態では、ユーザ定義のワークロードパラメータのセットは、ユーザインタフェース(例えばユーザインタフェース200又はコンピュータ20のディスプレイ21上に表示されたユーザインタフェース)上に表示されたデータ構造(例えば図32のテーブル150)において識別され、このデータ構造は、図32のテーブル150に関してここに述べられるように、少なくとも1つのユーザ定義のワークロードパラメータを各々が識別する複数の修正可能入力フィールドを含む。一実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信したユーザ選択(例えば入力269〜276でのブート時間パラメータの選択)に基づき、ノードクラスタ14の少なくとも1つのノード16の修正されたハードウェアコンフィギュレーションを選択する。この実施形態では、コンフィギュレータ22は、修正されたハードウェアコンフィギュレーションを有する複数ノードのクラスタ14上で合成テストワークロードを実行するために、複数ノードのクラスタ14を合成テストワークロードでコンフィギュアし、修正されたハードウェアコンフィギュレーションは、ここに述べられるように、当該少なくとも1つのノード16においてコンピューティング能力の低下及びメモリ容量の低減の少なくとも一方を結果としてもたらす。
再び図23を参照すると、先にセーブされたワークロードが設定ライブラリタブ416を介してローカルメモリ(例えば図3のメモリ90)からロードされてよい。設定ライブラリタブ416を介してロードされたワークロードは、実際のワークロード、合成テストワークロード、カスタムスクリプト、又は、選択されたワークロードコンテナモジュールでの実行に適した任意の他のワークロードを含んでいてよい。ロードされたワークロードコンフィギュレーションは、ユーザインタフェース200のモジュール210へのユーザ入力に基づき修正されてよい。現在のワークロードコンフィギュレーションもまた、設定ライブラリタブ416を介してメモリ90にセーブされてよい。
図示された実施形態では、タブ417を介してクラウドスイートワークロードの集まりがロードされコンフィギュアされてもよい。クラウドスイートは、クラウドシステムを特徴付けるために利用される典型的なクラウドワークロードを備えるワークロードの集まりである。
図25を参照すると、バッチ処理モジュール212が選択されている。モジュール212へのユーザ入力に基づき、バッチプロセッサ80(図3)は、複数のワークロードのバッチ処理を開始するように動作する。また、バッチプロセッサ80は、ここに述べられるように、種々のネットワークコンフィギュレーション、種々のワークロードコンテナコンフィギュレーション、種々の合成ワークロードコンフィギュレーション、及び/又は、種々のノードコンフィギュレーション(例えばブート時間コンフィギュレーションなど)等の複数の異なるコンフィギュレーションを有する1つ以上のワークロードの実行を開始するようにも動作する。ユーザ入力に基づき、バッチプロセッサ80は、全てのワークロードの実行が完了するために手動の介入が必要のないように、各ワークロード及び/又はコンフィギュレーションの実行を順にノードクラスタ14上で開始する。更に、バッチプロセッサ80は、ユーザインタフェース200のモジュール212を介して受信したユーザ設定に基づき、1つ以上のワークロードが複数回実行され得るようにこれらをコンフィギュアしてよい。バッチプロセッサ80は、実際のワークロード及び/又は合成テストワークロードをバッチとして実行するように動作する。図示された実施形態では、例えば図47及び図48に関してここに述べられるように、自動的なシステムチューニングを可能にするために、複数のワークロードのバッチ処理から性能データがモニタされ集約される。
ワークロード及び/又はコンフィギュレーションのバッチのための実行の回数は、繰り返しカウントフィールド480を介して指定される。フィールド480へのユーザ入力に基づき、バッチプロセッサ80は、1つ以上のワークロードを指定された繰り返し回数だけ実行する。バッチシーケンステーブル482は、ノードクラスタ14によって実行されるべきバッチジョブをリストするディスプレイデータを備える。1つのバッチジョブは、指定された回数(フィールド480への入力に基づき指定される)の実行に適した1つ以上のワークロードを含む。一実施形態では、1つのバッチジョブは、1つ以上のワークロードでの指定された回数の実行に適した1つ以上のクラウドシステムコンフィギュレーションを含む。テーブル482には1つのバッチジョブのみがリストされているが、複数のバッチジョブがテーブル482に加えられてもよい。バッチプロセッサ80は、リストされた1つ以上のバッチジョブに対応する1つ以上の入力483のユーザ選択に基づき、リストされた1つ以上のバッチジョブを実行のために選択する。一実施形態では、選択された複数のバッチジョブは、それらがテーブル482内にリストされている順序で順に実行される。バッチジョブは例示的にはJSONファイルフォーマットの形態にあるが、他の適切なフォーマットが用いられてもよい。テーブル482内にリストされたバッチジョブは、入力484,486,488のユーザ選択に基づきそれぞれ編集され、加えられ、削除される。バッチシーケンスの順序は、選択したバッチジョブをテーブル482内に表示されたシーケンスにおいて異なる位置に移動させるための入力490,492のユーザ選択に基づき調節可能である。バッチシーケンス及びバッチジョブの実行に関連する他の設定は、選択可能入力494を介してメモリ(例えばメモリ34又はメモリ90)からロードされてよく、現在コンフィギュアされているバッチシーケンスは、選択可能入力496を介してメモリ(例えばメモリ34又はメモリ90)にセーブされてよい。入力484〜496は例示的には選択可能ボタンである。
図26を参照すると、モニタリングモジュール214が選択されている。モジュール214へのユーザ入力に基づき、データモニタコンフィギュレータ82(図3)は、ノードクラスタ14上でのワークロードの実行に際して性能データをモニタし収集するために用いられる1つ以上のデータモニタリングツールをコンフィギュアするように動作する。データモニタコンフィギュレータ82は、ノード16の性能、ワークロード、ワークロードコンテナ、及び/又は、ネットワーク18に関係するデータをモニタするモニタリングツールをコンフィギュアするように動作する。一実施形態では、データモニタコンフィギュレータ82によってコンフィギュアされるモニタリングツールは、市販のモニタリングツール及びユーザによって提供されるカスタムモニタリングツールの両方を含む。モニタリングツールは、クラウドコンピューティングシステム10内の複数のソース及び他の利用可能ノード16からのデータを収集する。例えば、モニタリングツールは、各ノード16でデータを収集するカーネルモード測定エージェント46及びユーザモード測定エージェント50(図2)を含む。また、制御サーバ12も、ノードクラスタ14上でのネットワーク及びコンピューティング性能をモニタするように動作する1つ以上のモニタリングツールを含む。一実施形態では、ユーザ入力(例えば図27のフィールド530,532への入力)に基づき、データモニタコンフィギュレータ82は、1つ以上のモニタリングツールがノード16からのデータをモニタするサンプリングレートを指定する。データモニタコンフィギュレータ82は、複数のデータモニタリングツールの動作をコンフィギュアし開始するように動作し、これらのモニタリングツールは、各ノード16上で提供されるアパッチハドゥープモニタリングツール(タブ500)、制御サーバ12上で提供されるガングリアツール(タブ502)、各ノード16上で提供されるシステムタップツール(タブ504)、及び、1つ以上のノード16上で提供される仮想メモリ統計やI/O統計のためのモニタリングツール(タブ506)を含む。
ハドゥープモニタリングツールは、ハドゥープワークロードコンテナモジュールがノード16上での実行のために選択されているときのワークロードコンテナレベルでノード16の性能をモニタする。ハドゥープモニタリングツールは、図26で識別されたモニタリングコンフィギュレーションに基づきハドゥープワークロードコンテナモジュールの性能に関連するデータをモニタするために、コンフィギュレータ22によって、ハドゥープワークロードコンテナモジュールと共に各ノード16へとロードされる。図26に示されるように、ハドゥープモニタリングツールに関連する種々のモニタリングパラメータが、幾つかの修正可能フィールド及びドロップダウンメニューへのユーザ入力に基づき、データモニタコンフィギュレータ82によってコンフィギュアされる。修正可能モニタリングパラメータは、デフォルトログレベル(ドロップダウンメニュー508への入力に基づき選択される)、収集されるデータの最大ファイルサイズ(フィールド510への入力に基づき選択される)、収集されるデータの全ファイルの合計サイズ(フィールド512への入力に基づき選択される)、ハドゥープワークロードコンテナのジョブトラッカ(JobTracker)ツールのログレベル(ドロップダウンメニュー514への入力に基づき選択される)、ハドゥープワークロードコンテナのタスクトラッカ(TaskTracker)ツールのログレベル(ドロップダウンメニュー516への入力に基づき選択される)、及び、ハドゥープワークロードコンテナのエフエスネームシステム(FSNamesystem)ツールのログレベル(ドロップダウンメニュー518への入力に基づき選択される)を含む。ログレベルは、情報(「INFO」)、警告(warning)、エラー等の、ハドゥープモニタリングツールを介して収集するデータのタイプを識別する。ハドゥープワークロードコンテナのジョブトラッカツール、タスクトラッカツール及びエフエスネームシステムツールは、データモニタコンフィギュレータ82によって追跡される種々の処理及びデータを含み、これらは、例えば、マスタノード16でのワークロードの開始と終了、ファイルシステム55(図2)に関連するメタデータ、及び、ワーカノード16でのマップリデュースタスクの開始を含む。他の適切なデータがハドゥープモニタリングツールで収集されてよい。
図27を参照すると、ガングリアモニタリングツールはまた、データモニタコンフィギュレータ82によって実装されたモニタリングコンフィギュレーションに基づき、クラウドコンピューティングシステム10の性能データをモニタし収集するように動作する。ガングリアは、システム性能の遠隔ライブヴューイング(例えば制御サーバ12を介して)並びに履歴統計を示すグラフ及びチャートを提供する既知のシステムモニタリングツールである。図示された実施形態では、ガングリアモニタリングツールは、データモニタコンフィギュレータ82で提供されたコンフィギュレーションデータに基づき制御サーバ12上で実行される。ガングリアでモニタされるデータの例としては、ワークロード実行に際してのノードプロセッサ40(CPUs)の処理ロード平均、ワークロード実行に際してのノードプロセッサ40とネットワーク18の利用(例えば停止又は非アクティブな時間(stall or inactive time)、処理に費やした時間のパーセンテージ、待ちに費やした時間のパーセンテージ等)、及び、他の適切なデータが挙げられる。ガングリアモニタリングツールは、選択可能入力520のユーザ選択に基づきデータモニタコンフィギュレータ82によって有効及び無効にされ、ユニキャスト又はマルチキャストの通信モードが、選択可能入力522のユーザ選択に基づきデータモニタコンフィギュレータ82によって選択される。ガングリアに関連する他のコンフィギュア可能モニタリングパラメータは、収集されたデータから生成されたグラフのデータリフレッシュ間隔(フィールド524への入力に基づき選択される)、クリーンナップスレッショルド(cleanup threshold)(フィールド526への入力に基づき選択される)、及び、メタデータを送信するための間隔(フィールド528への入力に基づき選択される)を含む。フィールド524,526,528へ入力されるデータは、例示的には秒の単位である。データモニタコンフィギュレータ82は、ノードプロセッサ40(CPU)に関連するワークロード実行に際してデータを収集するためにそれぞれのフィールド530,532にエンターされる値(例示的には単位は秒)に基づく収集(即ちサンプリング)間隔及び送信間隔と、ノード16上での処理ロード(例えば実行されているワークロードに関連する)と、ノードメモリ42の使用量と、通信ネットワーク18上でのノード16のネットワーク性能と、各ノード16のハードディスク使用量と、を調節するように動作する。
システムタップツールは、クラウドコンピューティングシステム10のノード16に関連するデータを抽出し、フィルタし、そしてまとめるように動作するシステムタップモニタリングソフトウェアを含むカーネルモード測定エージェント46(図2)である。一実施形態では、システムタップツールは、各ノード16上で実行される。システムタップは、リナックス(登録商標)(Linux(登録商標))ベースのオペレーティングシステムで実装される。システムタップは、カスタマイズされたモニタリングスクリプトが、例えばサンプリングレート並びにヒストグラムの生成及び表示を含むカスタマイズされたモニタリングコンフィギュレーションで各ノード16へとロードされることを可能にする。図28に示されるように、「スクリプト(Script)」タブが選択されているときに、システムタップは、入力536のユーザ選択に基づきデータモニタコンフィギュレータ82によって有効又は無効にされる。システムタップスクリプトファイルは、それぞれの入力(ボタン)540のユーザ選択に基づき、データモニタコンフィギュレータ82によって、制御サーバ12へダウンロードされ、テーブル538内での表示のために追加され、または、テーブル538内での表示から除去/削除される。テーブル538は、対応する1つ以上の入力539のユーザ選択に基づく選択のために利用可能なスクリプトファイルを表示するディスプレイデータを備えている。データモニタコンフィギュレータ82は、コンフィギュレータ22によるクラウドコンフィギュレーションの展開があった場合に、テーブル538の選択されたスクリプトファイルを各ノード16へとロードする。システムタップモニタリングツールのために、タブ534を介したユーザ入力及びユーザ選択に基づく他の適切なコンフィギュレーションオプション(Options)が利用可能であり、これらは、例えば、ディスクI/O(Disk I/O)、ネットワークI/O(Network I/O)及び診断(Diagnostics)のコンフィギュレーションを含む。
図29を参照すると、I/O時間タブ506が、追加的なモニタリングツールをコンフィギュアするためのユーザアクセスを提供しており、これらのツールは、1つ以上のノード16へとロードされる仮想メモリ統計(virtual memory statistics (VMStat))及び入力/出力統計(input/output statistics (IOStat))を含む。VMStatは、例えば、オペレーティングシステムで制御されるシステムメモリ及びブロックI/Oの利用可能性並びに利用、処理の性能、割り込み、ページング等に関連するデータを収集する。例えば、VMStatは、システムメモリ及び/又はメモリ制御器がリード/ライト動作を実行するためにビジーである時間又は待機している時間の長さ又はパーセンテージ等のシステムメモリの利用に関連するデータを収集する。IOStatは、例えば、オペレーティングシステムで制御されるストレージI/Oの統計(例えば利用、利用可能性等)に関連するデータを収集する。例えば、IOStatは、対応するノード16のプロセッサ40の処理コアが命令を実行するためにビジーである時間、又は、命令を実行するのに待機している時間のパーセンテージに関連するデータを収集する。VMStat及びIOStatは、それぞれの入力546,548の対応するユーザ選択に基づきデータモニタコンフィギュレータ82によって有効/無効にされ、サンプリングレート(即ちリフレッシュ間隔)は、フィールド550,552へとエンターされた値(例示的には単位は秒)に基づきデータモニタコンフィギュレータ82によって選択される。対応する「有効」にされた入力546,548のユーザ選択及びタブ506のフィールド550,552に入力された値に基づき、データモニタコンフィギュレータ82は、VMStatモニタリングツール及びIOStatモニタリングツールをコンフィギュアし、コンフィギュレータ22は、対応する「有効」にされた入力546,548のユーザ選択があった場合に、各ノード16へとツールをロードする。
データモニタコンフィギュレータ82でコンフィギュアされたこれらのモニタリングツールは、システム性能をモニタするために協働してクラウドコンピューティングシステム10のための動的計装(dynamic instrumentation)を提供する。コンフィギュアされたモニタリングツールを介して収集されたデータに基づき、コンフィギュレータ22は、例えばここに述べられるように、システムボトルネックを診断すると共に最適なシステムコンフィギュレーション(例えばハードウエア及びネットワークのコンフィギュレーション)を決定するように動作する。更に、データモニタコンフィギュレータ82は、各モニタリングツールをコンフィギュアするのに用いられるユーザ入力を受信すること及び各ツールからのモニタされたデータを表示することのために、ユーザインタフェース200上にモニタリングモジュール214を表示することによって、共通ユーザインタフェースを提供する。
図30を参照すると、選択可能データを備える制御及び状態モジュール216が選択されている。モジュール216へのユーザ入力に基づき、コンフィギュレータ22は、各ノード16へとロードされる複数のコンフィギュレーションファイル28を生成することによって、システムコンフィギュレーションをノードクラスタ14へとローンチする(即ち展開する)ように動作する。コンフィギュレータ22は、選択可能入力560のユーザ選択に基づき現在のシステムコンフィギュレーション(即ちモジュール202〜216で現在識別されているシステムコンフィギュレーション)の展開を開始する。コンフィギュレータ22のバッチプロセッサ80は、選択可能入力562のユーザ選択に基づき、1つ以上のワークロード及び/又はコンフィギュレーションのバッチ処理、即ち図25のテーブル482において識別されたバッチシーケンス、を開始する。コンフィギュレータ22のワークロードコンフィギュレータ78は、選択可能入力564のユーザ選択に基づき、図22のフィールド430において識別されたカスタムワークロード等のカスタムワークロードの実行を開始する。入力560,562,564のユーザ選択に基づくシステムコンフィギュレーションの展開があった場合、コンフィギュレータ22は、選択されたノード及びワットワークの設定、ワークロード、ワークロードコンテナモジュール、データモニタリングツール等で各選択されたノード16を自動的にコンフィギュアし、選択されたワークロード及び/又はバッチジョブをシステムコンフィギュレーション情報に基づき実行開始する旨をノードクラスタ14に指示する。コンフィギュレータ22は、それぞれ選択可能入力566,568のユーザ選択に基づき、ワークロード実行をその完了前に終了し又は一時停止する。コンフィギュレータ22は、選択可能入力570のユーザ選択に基づき、ノードクラスタ14上の現在実行途上にあるワークロードを再開する。コンフィギュレータ22は、選択可能入力572のユーザ選択に基づき、例えばノード16がバッチの次のワークロードの実行へと進むように、ノードクラスタ14上の現在実行途上にあるワークロードをスキップする。選択可能入力576の選択に基づき、コンフィギュレータ22のデータモニタコンフィギュレータ82は、モジュール214を介して識別されたデータモニタリングツール、設定及びコンフィギュレーションを実装する。一実施形態では、ノード16上にデータモニタリング設定を実装することは、各ノード16に提供される対応するコンフィギュレーションファイル28(図3)を生成することを含む。1つ以上のワークロード実行の完了に続き、即ちノードクラスタ14からのワークロード実行の結果及び全要求データの集まりの受信に続き、コンフィギュレータ22は、入力574のユーザ選択に基づき、ノードクラスタ14を終了させ又はシャットダウンする。入力560〜572及び入力582〜595は例示的にはボタンである。
ワークロード実行に際してシステム状態がディスプレイ578,580を介して提供される。ディスプレイ578,580は、ノードクラスタ14の各アクティブノード16に関連するワークロード実行の進行及び状態情報を示す。システム状態の表示は、ボタン595のユーザ選択に基づき有効又は無効にされる。
図示された実施形態では、ノードコンフィギュレータ72、ネットワークコンフィギュレータ74、ワークロードコンテナコンフィギュレータ76、ワークロードコンフィギュレータ78、バッチプロセッサ80、及び、データモニタコンフィギュレータ82(図3)の各々は、それらのそれぞれのコンフィギュレーション機能を実装するための入力560,562,564を介しての展開開始に続き、少なくとも1つの対応するコンフィギュレーションファイル28を自動的に生成する。コンフィギュレーションファイル28は、ここに述べられるように、ノードクラスタ14の各ノード16をコンフィギュアするための対応するコンフィギュレーションデータ及び命令を含む。一実施形態では、コンフィギュレータ22は、コンフィギュレーションファイル28の生成に続き、各ファイル28をノードクラスタ14の各ノード16へと自動的にロードする。代替的には、コンフィギュレータ22の各コンポーネント70〜84からのコンフィギュレーションデータ及び命令を含む単一のコンフィギュレーションファイル28が生成され、コンフィギュレータ22は、そのコンフィギュレーションファイル28の生成に続き、単一のコンフィギュレーションファイル28をノードクラスタ14の各ノード16へと自動的にロードする。入力560,562,564でコンフィギュレーション展開をローンチする際には、オペレーティングシステム、ワークロードコンテナモジュール及びワークロードにそれぞれ対応するイメージファイル92,94,96の各々も、各ノードへとロードされる。代替的には、コンフィギュレータ22による1つ以上のコンフィギュレーションファイル28及びイメージファイル92,94,96の生成に続いて、ノード16は、コンフィギュレーションファイル28及び/又はイメージファイル92,94,96をリトリーブ又は要求してよい。
ノード16に展開されたコンフィギュレーションファイル28、及び、図7の入力240を介してセーブされたシステムコンフィギュレーションファイルは、モジュール202〜216へのユーザ入力及びモジュール202〜216のデフォルト設定に基づき選択及びロードされた全てのコンフィギュレーションデータ及び情報を含む。例えば、ノードコンフィギュレータ72によって生成されたコンフィギュレーションファイル28は、ここに述べられるように、ノードクラスタ14に対して割り振り及び/又は使用するノード16の数、並びに、各ノード16のハードウェア要求及びブート時間を含む。ハードウェア要求は、例えば、RAMサイズ、CPUコアの数、及び、利用可能なディスクスペースを含む。ネットワークコンフィギュレータ74によって生成されたコンフィギュレーションファイル28は、例えば、全ノード16に適用されるグローバルデフォルト設定や、ノードクラスタ14の所与のグループにどのノード16が属するのかと、ノードグループ内のネットワークトラフィックのための設定と、ノードクラスタ14の他のノードグループに対するネットワークトラフィックのための設定と、を含むグループ設定や、任意のノード16間でのネットワークトラフィックのためのカスタム設定を含むノード固有設定や、図11〜17に関してここに述べられるような、レイテンシ、帯域、破損及び脱落したパケットの比率、破損及び脱落したパケットの相関及び分布、並びに、並び替えられたパケットの比率を含むネットワークパラメータや、他の適切なネットワークパラメータ及びネットワークトポロジコンフィギュレーションデータを含む。ワークロードコンテナコンフィギュレータ76によって生成されたコンフィギュレーションファイル28は、例えば、ワークロードを実行するために用いられる主たるワークロードコンテナソフトウェアのためのコンフィギュレーション設定を含む。ワークロードコンフィギュレータ78によって生成されたコンフィギュレーションファイル28は、例えば、ノード16上で実行されるように選択された、予め定義された即ち合成のワークロードコンテナのためのコンフィギュレーション設定を含む。コンフィギュレーション設定は、例えば、合成テストワークロードイメージファイル、最大命令カウント、最大繰り返しカウント、及び、I/O動作の速度、を含む合成テストワークロードコンフィギュレーションデータを含む。
入力560(又は入力562,564)を介した展開の開始に際して、コンフィギュレータ22は自動的に幾つかの動作を行う。一実施形態では、コンフィギュレータ22は、複数ノードのクラスタ14を選択するために所望のノード16を割り振って起動する。コンフィギュレータ22は、次いで、制御サーバ12のアドレス(例えばIPアドレス)を各ノード16に渡し、識別子及び/又はアドレスを各ノード16に割り当てたり渡したりする。一実施形態では、各ノード16は、制御サーバ12アドレスの受信に続き、制御サーバ12と自動的にコンタクトすると共にジョブ及び他のコンフィギュレーション情報を記述している1つ以上のコンフィギュレーションファイル28を要求するようにコンフィギュアされる。各ノード16は、任意の適切なメカニズムを用いて制御サーバ12と通信し、そのようなメカニズムは、例えば、制御サーバ12と直接通信するために指定されたRMIメカニズム(例えばウェブベースのインタフェース)や、アパッチHTTPサーバ又はトムキャットサーバを介して制御サーバ12とやりとりするためのHTTP要求や、遠隔シェルメカニズムを含む。
一実施形態では、コンフィギュレータ22は、ノードクラスタ14の各ノード16からの要求を受信するまで待機する。一実施形態では、あるノード16が起動しない場合、即ちそのノード16からの要求又は受信確認がないことに基づいて、コンフィギュレータ22はそのノード16を再起動するよう試みる。そのノード16が継続して起動しない場合には、コンフィギュレータ22は、その起動しないノード16の代わりに、ノードクラスタ14内に元々は含まれていなかった他の利用可能ノード16を識別し要求する。代替ノード16は、起動しないノード16と同一又は類似のハードウェア仕様及び処理能力を有する。一実施形態では、コンフィギュレータ22は、ワークロード実行の間ずっとノード16をモニタし続け、応答を停止したノード16(及びワークロード)を再起動する。コンフィギュレータ22は、データモニタリングの失敗や他の通信上の失敗に基づき、ワークロード実行に際して非応答のノード16を検出してもよい。
コンフィギュレータ22がノードクラスタ14の各ノード16からの要求を受信すると、コンフィギュレータ22は、各ノード16が次へ進む準備ができていると判断する。一実施形態では、コンフィギュレータ22は、次いで要求データを各ノード16に提供し、要求データは、1つ以上のコンフィギュレーションファイル28と、ノードクラスタ14における他のノード16のアドレス及びアイディー(IDs)と、イメージファイル92,94,96と、を含む。要求データを制御サーバ12から受信すると、ノードクラスタ14内の各ノード16の役割が決定される。一実施形態では、役割決定は、制御サーバ12によってなされ(例えば自動的に又はユーザ入力に基づいて)、ノード16へ伝えられる。代替的には、役割決定はノードクラスタ14が分散型アービトレーション(arbitration)メカニズムを用いることによってなされる。一実施形態では、役割決定はワークロードに依存する。例えば、ハドゥープワークロードコンテナで動作するノードクラスタ14に対しては、第1のノード16がマスタノード16(「ネームノード(namenode)」)として指定されてよく、残りのノード16がスレーブ/ワーカノード16(「データノード(datanodes)」)として指定されてよい。一実施形態では、ノード16の役割決定は、そのノード16のハードウェアプロパティに更に依存する。例えば、より低速なノードプロセッサ40を伴うノード16のグループがデータ記憶のためのデータベースサーバとして指定されてよく、より高速なノードプロセッサ40を伴うノード16の他のグループがワークロードを処理するための計算ノードとして指定されてよい。一実施形態では、役割決定は、コンフィギュレーションファイル28を介して提供されたユーザ入力に基づく。例えば、ユーザは、1つ以上の第1のノード16が第1のタスクを行い、1つ以上の第2のノード16が第2のタスクを行い、1つ以上の第3のノード16が第3のタスクを行う等、割り当てしてよい。
各ノード16は、1つ以上のコンフィギュレーションファイル28を介して受信したネットワークコンフィギュレーションデータに基づき、その仮想ネットワーク設定をコンフィギュアし始める。このことは、例えばここに述べられるように、ネットワーク遅延及び/又はパケット損失エミュレータを用いることを含む。各ノード16は、更に、ユーザ要求に係るソフトウェアアプリケーションをインストール及び/又はコンフィギュアすることを開始し、これらのアプリケーションは、ワークロードコンテナイメージファイル94を介して受信したワークロードコンテナコードモジュールを含む。一実施形態では、複数のワークロードコンテナモジュール(例えば複数のバージョン/製造業者)が各ノード16でプリインストールされており、選択されたワークロードコンテナモジュールのロケーションへのソフトリンクがコンフィギュレーションファイル28に基づき作成される。合成テストワークロードが制御サーバ12で生成され選択される場合には、各ノード16は、ワークロードイメージファイル96に基づき合成テストワークロードをアクティベートし始める。各ノード16は、更に、コンフィギュレーション情報に基づき診断ツール及びモニタリングツール(例えばガングリア、システムタップ、ヴィエムスタット(VMStat)、アイオースタット(IOStat)等)の実行を開始する。最後に、各ノード16は選択されたワークロードの実行を開始する。
図示された実施形態では、展開ローンチに続きコンフィギュレータ22及びノード16によって行われる各ステップは、ノードクラスタ14のノード16間で同期している。一実施形態では、制御サーバ12のコンフィギュレータ22が複数ノード16を連携させるが、代替的には、ノードクラスタ14の1つ以上のノード16が同期を管理してもよい。一実施形態では、ノード動作を連携させるために用いられる同期メカニズムにより、各ノード16は、制御サーバ12への状態フィードバックを定期的に提供する。従って、指定された時間内に報告のないノード16は、クラッシュしたものとみなされ、コンフィギュレータ22によって再起動される。また、コンフィギュレータ22は、ジョブの進行を示すために、図30のディスプレイ578,580を介する等してユーザに状態を提供してもよい。
ジョブが完了すると、データアグリゲータ84(図3)が各ノード16からのデータを収集するように動作する。具体的には、各ノード16のモニタリングツールによって収集されたデータ(例えばジョブ出力、性能統計、アプリケーションログ等、モジュール214参照)が、制御サーバ12(例えば図3のメモリ90)によってアクセスされる。一実施形態では、データアグリゲータ84が各ノード16からデータをリトリーブする。他の実施形態では、各ノード16がデータアグリゲータ84にデータを転送する。図示された実施形態では、図31(図3も参照)に示されるように、データは、ログファイル98の形態で各ノード16から制御サーバ12へ通信される。各ログファイル98は、各ノード16の種々のモニタリングツールの1つ以上によって収集されたデータを含む。ここに述べられるように、データアグリゲータ84は、ログファイル98からの収集データを操作し解析すると共に集約されたデータをグラフ、ヒストグラム、チャート等の形態でユーザに対して表示する(例えば図1のディスプレイ21を介して)ように動作する。また、データアグリゲータ84は、図27に記載のガングリアモニタリングツール等の、制御サーバ12上に提供されたモニタリングツールからのデータを集約する。
図30を再び参照すると、データアグリゲータ84は、各ノード16からの性能データを収集及び集約すると共にモジュール216の対応する入力582〜594のユーザ選択に基づきログ、統計、グラフ及びデータの他の表現を生成するように動作する。データアグリゲータ84は、入力586のユーザ選択に基づき、ログファイル98内に提供される統計上の生データ及び他のモニタリングツールで提供される統計上の生データを集める。データアグリゲータ84は、入力588のユーザ選択に基づき、全てのログファイル98をノード16からローカルファイルシステムへとダウンロードし、これらのログファイル98は更にそこで解析されてよく、あるいは履歴トレンド解析のために記憶されてよい。データアグリゲータ84は、入力590のユーザ選択に基づき、システムタップモニタリングツールに関連するログファイルのみをリトリーブする。データアグリゲータ84は、入力582のユーザ選択に基づき、ノード16によって提供されたログファイル98の1つ以上をユーザインタフェース200上に表示する。データアグリゲータ84は、入力584のユーザ選択に基づき、統計的データをグラフ及びチャートの形態でユーザインタフェース200上に表示する。統計的データは、例えば、ネットワーク18の性能、ノード16によるネットワーク通信の性能、ノード16の種々のハードウェアコンポーネントの性能、ワークロード実行、及び、ノードクラスタ14全体の性能に関連する性能データを含む。データアグリゲータ84は、入力592のユーザ選択に基づき、ノード16及び他のモニタリングツールから収集された種々のデータを示す1つ以上のグラフをユーザインタフェース200上での表示のために生成する。
一実施形態では、データアグリゲータ84は、モニタリングモジュール214においてコンフィギュアされたモニタリングツールでのモニタリングのために選択されたデータに基づき、表示するデータを選択する。他の実施形態では、データアグリゲータ84は、制御及び状態モジュール216へのユーザ入力に基づき、集約され表示されるデータを選択する。例えば、ユーザは、それぞれ入力582,584,592を選択することで、ログファイル98、統計的データ及びグラフの何れを表示するのかを選択する。一実施形態では、データアグリゲータ84は、ユーザインタフェース200へのユーザ入力に基づき、どのデータをグラフで表示するのかを選択し、またそのデータをどのように表示するのか(例えば線グラフ、棒グラフ、ヒストグラム等)を選択する。入力592の選択に基づき表示されるグラフィカルデータの例としては、プロセッサ速度対ネットワーク遅延追加、ワークロード実行速度対プロセッサコア数、ワークロード実行速度対コア当たり処理スレッド数、特定のノード16によって送信又は受信されたデータパケットの数の時間変化、通信された所定サイズのデータパケットの数の時間変化、ネットワークスタック内でデータパケットによって消費された時間、等が挙げられる。
(クラウドコンピューティングシステムのノードのブート時間パラメータをコンフィギュアすること)
図36は、クラウドコンピューティングシステム10のブート時間コンフィギュレーションをコンフィギュアするために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図620を示している。図36の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信した複数のユーザ選択に基づき、図36のフロー図620に従って図1のノードクラスタ14をコンフィギュアする。ブロック622では、コンフィギュレータ22は、選択可能ブート時間コンフィギュレーションデータを備えるユーザインタフェース200を提供する。例示的な選択可能ブート時間コンフィギュレーションデータは、図10の表示画面の選択可能入力269,271及びフィールド268,270,272,274,276を含む。ブロック624では、コンフィギュレータ22のノードコンフィギュレータ72は、選択可能なブート時間コンフィギュレーションデータの少なくとも1つのユーザ選択に基づき、クラウドコンピューティングシステム10の複数ノードのクラスタ14の少なくとも1つのノード16のためのブート時間コンフィギュレーションを選択する。
ブロック626では、コンフィギュレータ22は、選択されたブート時間コンフィギュレーションで複数ノードのクラスタ14の少なくとも1つのノード16をコンフィギュアして、それら少なくとも1つのノード16の少なくとも1つのブート時間パラメータを修正する。例えば、当該少なくとも1つのブート時間パラメータは、ワークロードの実行に際して有効にされている当該少なくとも1つのノード16の処理コアの数(フィールド268への入力に基づく)、及び/又は、当該少なくとも1つのノード16のオペレーティングシステム44(図2)によってアクセス可能なシステムメモリの量(フィールド270,272への入力に基づく)を含む。更に、修正されたブート時間パラメータは、フィールド274へ入力された命令の数及び対応するカスタム入力271の選択に基づき、当該少なくとも1つのノード16によって実行されるべきワークロードの複数の命令のサブセットを識別してよい。従って、ワークロードは、当該少なくとも1つのノード16の当該少なくとも1つのブート時間パラメータの修正に基づき、複数ノードのクラスタ14で実行される。一実施形態では、コンフィギュレータ22がワークロードの実行を開始し、複数ノードのクラスタ14は、当該少なくとも1つのブート時間パラメータの修正に基づき低下したコンピューティング能力及び低減されたメモリ容量の少なくとも一方の下でワークロードを実行する。具体的には、フィールド268及び対応する入力271の選択に伴う処理コア数の修正は、コンピューティング能力を低下させることに役立ち、フィールド270,272及び対応する入力271の選択に伴うシステムメモリ数の修正は、メモリ容量を低減することに役立つ。
一実施形態では、ノードコンフィギュレータ72は、選択可能ブート時間コンフィギュレーションデータの少なくとも1つのユーザ選択に基づき、複数ノードのクラスタ14の第1のノード16のための第1のブート時間コンフィギュレーションと、複数ノードのクラスタ14の第2のノード16のための第2のブート時間コンフィギュレーションと、を選択する。この実施形態では、第1のブート時間コンフィギュレーションは、第1のノード16の少なくとも1つのブート時間パラメータの第1の修正を含み、第2のブート時間コンフィギュレーションは、第2のノード16の少なくとも1つのブート時間パラメータの第2の修正を含み、第1の修正は第2の修正とは異なる。一例では、第1のブート時間コンフィギュレーションは、第1のノード16の2つの処理コアを有効にすることを含み、第2のブート時間コンフィギュレーションは、第2のノード16の3つの処理コアを有効にすることを含む。各ノード16のブート時間パラメータの他の適切な修正が、上述したように提供されてよい。
図37は、ノード16のブート時間コンフィギュレーションをコンフィギュアするために図1の複数ノードのクラスタ14の1つのノード16によって行われる例示的な動作のフロー図630を示している。図37の説明全体に対して図1及び図3が参照される。ブロック632では、複数ノードのクラスタ14の1つのノード16は、クラウドコンフィギュレーションサーバ12によって提供されたブート時間コンフィギュレーション調節要求に基づき、そのノード16の少なくとも1つのブート時間パラメータを修正する。図示された実施形態では、ブート時間コンフィギュレーション調節要求は、コンフィギュレーションファイル28(図3)内に提供され、ここに述べられるように、図10の入力270,271及びフィールド268,270,272,274,276を介してなされたユーザ選択に基づき、ノード16の1つ以上のブート時間パラメータに対して要求された修正を識別する。図示された実施形態では、ノード16は、当該少なくとも1つのブート時間パラメータを修正する前の初期ブート時間コンフィギュレーションと、当該少なくとも1つのブート時間パラメータを修正することに続く修正されたブート時間コンフィギュレーションと、を有する。修正されたブート時間コンフィギュレーションは、ここに述べられるように、ノード16のコンピューティング能力の低下及びメモリ容量の低減の少なくとも一方を提供する。
ブロック634では、ブート時間コンフィギュレーション調節要求に従って少なくとも1つのブート時間パラメータが既に修正されていることを、ノード16のリブートに続いてそのノード16が決定すると、そのノード16は、そのノード16によるそのノード16のリブートに続き、ワークロードの少なくとも一部を実行する。一実施形態では、ノード16は、ワークロードの当該少なくとも一部をクラウドコンフィギュレーションサーバ12から取得し、当該少なくとも1つのブート時間パラメータへの修正に基づきワークロードを実行する。一実施形態では、ノード16による決定は、当該少なくとも1つのブート時間パラメータへの修正の後で且つノード16のリブートより前にセットされたフラグ(例えば1ビット又は2ビット以上)に基づく。セットされたフラグは、当該少なくとも1つのブート時間パラメータが既に修正されていることを、ノード16の再起動に続いてノード16に示すので、ノード16は、当該少なくとも1つのブート時間パラメータを修正し再度リブートすることを試みない。一実施形態では、決定は、ノード16のブート時間コンフィギュレーションと、ブート時間コンフィギュレーション調節要求で識別された要求ブート時間コンフィギュレーションとの比較に基づく。例えば、ノード16は、ノード16の現在のブート時間パラメータをブート時間コンフィギュレーション調節要求で識別された要求ブート時間パラメータと比較し、これらのパラメータが同じである場合には、当該少なくとも1つのブート時間パラメータを修正することと再度リブートすることとを試みない。一実施形態では、新たなブート時間コンフィギュレーション調節要求を含む新たなコンフィギュレーションファイルをノード16が受信すると、ノード16は、新たなブート時間コンフィギュレーション調節要求に従うブート時間パラメータの修正を実装する前に、フラグをクリアする。
図38は、ノードクラスタ14の1つ以上のノード16のブート時間コンフィギュレーションをコンフィギュアするためにクラウドコンピューティングシステム10によって行われる例示的な詳細動作のフロー図650を示している。図38の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は図38のブロック652〜656を行い、各コンフィギュアされたノード16は図38のブロック658〜664を行う。ブロック652では、コンフィギュレータ22は、ここに述べられるように、ユーザインタフェース200(図10)を介してエンターされたユーザ定義のブート時間パラメータに基づき、対応するノード16のための1つ以上のブート時間コンフィギュレーションファイル28を作成する。一実施形態では、ブート時間コンフィギュレーションファイル28は、ノード16の1つ以上のコンフィギュレーションファイルのパッチであり、あるいはタスク固有ファイル/データフォーマットの形態にある。ブロック654では、コンフィギュレータ22は、複数ノードのクラスタ14を起動する(例えばここに述べられるように図30の入力560又は入力562,564のユーザ選択があった場合)。ブロック656では、コンフィギュレータ22は、1つ以上のブート時間コンフィギュレーションファイルを複数ノードのクラスタ14の適切なノード16に分散させる。一実施形態では、各ノード16がブート時間コンフィギュレーションファイルを受信し、各ファイルは、それぞれのノード16に対して固有のブート時間パラメータを識別してよい。一実施形態では、コンフィギュレーションファイル28は、セキュアシェル(secure shell)(SSH)ファイル転送を介して、fptクライアントを介して、アマゾンAWSにおけるユーザデータストリングを介して、又は、他の適切なファイル転送メカニズムを介して、ノードへと転送される。他の実施形態では、ブート時間コンフィギュレーション情報に対して、ノード16が各々制御サーバ12又はマスタノード16にクエリする(query)(例えばHTTP要求を介して)。ブロック658では、ノード16は、受信したブート時間コンフィギュレーションファイル28において指定された所望のブート時間パラメータ変更を適用する。一例では、ノード16は、ノード16のブートファイルに対してパッチを適用し、あるいはノード16は、ユーティリティを用いて、受信したブート時間コンフィギュレーションファイル28において指定されたブート時間パラメータに基づきノード16のためのブートファイルの新たなセットを生成する。一実施形態では、ブロック658で所望のブート時間変更を適用する間または適用する場合、ノード16は、ここに述べられるように、ブート時間コンフィギュレーションが既に更新されている旨を示す状態フラグをセットする。ブロック660では、ノード16は、ブート時間コンフィギュレーション変更の適用に続き、リブートを強制する。リブートに際して、ノード16は、受信したブート時間コンフィギュレーションファイル28において指定されたブート時間パラメータ変更でノード16のブート時間コンフィギュレーションが既に更新されていることをブロック662で決定する。一実施形態では、ノード16は、ここに述べられるように、ブロック658でセットされた状態フラグに基づき、又は、ノード16の現在のブート時間コンフィギュレーションとブート時間コンフィギュレーションファイル28との比較に基づき、ブート時間コンフィギュレーションが更新されていることをブロック662で決定する。従って、ノード16は、ブート時間コンフィギュレーション変更を何度も適用する可能性を低減する。ブロック664では、ノード16は、ワークロード又は制御サーバ12から受信したワークロードの一部の実行を含め、他のタスクの実行を開始する。
(ネットワークコンフィギュレーションを修正及び/又はエミュレートすること)
図39は、クラウドコンピューティングシステム10において割り振られた複数ノードのクラスタ14のネットワークコンフィギュレーションを修正するために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図700を示している。図39の説明全体に対して図1及び図3並びに図11〜17が参照される。ブロック702では、ネットワークコンフィギュレータ74は、ユーザインタフェース200を介して受信したユーザ選択に基づき、クラウドコンピューティングシステム10の複数ノードのクラスタ14の少なくとも1つのノード16のネットワークコンフィギュレーションを修正する。ブロック702で当該少なくとも1つのノード16のネットワークコンフィギュレーションを修正することは、当該少なくとも1つのノード16の通信ネットワーク18(図1)上でのネットワーク性能を修正することを含む。ネットワーク性能は、ここに述べられるように、パケット通信速度、脱落又は破損したパケット、並び替えられたパケット等のネットワークパラメータを修正することによって修正される。図示された実施形態では、ネットワークコンフィギュレータ74は、図11〜17に関してここに述べられるように、ユーザインタフェース200のモジュール280を介して提供されたユーザ選択又はユーザ入力に基づきネットワークコンフィギュレーションファイル28(図3)を生成することによって、及び、ネットワークコンフィギュレーションファイル28をノード16に提供することによって(又はノード16がファイル28をフェッチすることによって)、ノード16のネットワークコンフィギュレーションを修正する。ノード16は、次いで、アクセスされたネットワークコンフィギュレーションファイル28において指定されたノード16のネットワークコンフィギュレーションへの変更を実装する。図示された実施形態では、当該少なくとも1つのノード16は、修正前の初期ネットワークコンフィギュレーションと、修正後の修正されたネットワークコンフィギュレーションと、を有する。一実施形態では、修正されたネットワークコンフィギュレーションは、選択されたワークロードの実行に際して通信ネットワーク18上での当該少なくとも1つのノード16のネットワーク性能を低下させる。代替的には、修正されたネットワークコンフィギュレーションは、例えば図11のフィールド302を介して指定された通信遅延値を減少させること等によって、当該少なくとも1つのノード16のネットワーク性能を高める。
一実施形態では、ネットワークコンフィギュレータ74は、当該少なくとも1つのノード16の少なくとも1つのネットワークパラメータを変更してワークロードの実行に際しての通信ネットワーク18上での当該少なくとも1つのノード16のネットワーク性能を制限することによって、当該少なくとも1つのノード16のネットワークコンフィギュレーションを修正する。一実施形態では、変更される当該少なくとも1つのネットワークパラメータは、パケット通信遅延、パケット損失率、パケット重複率、パケット破損率、パケット並び替え率、及び、パケット通信速度の少なくとも1つを備え、これらはここに述べられるようにタブ282〜294を介してユーザによって選択可能である。従って、ネットワークコンフィギュレータ74は、ネットワークパラメータへの修正(例えば増大されたノード16間の通信遅延、増大されたパケット損失又はパケット破損率等)を識別するコンフィギュレーションファイル28へのノード16アクセスを生成し提供することによって、当該少なくとも1つのノード16のネットワーク性能を制限する。
図示された実施形態では、コンフィギュレータ22は、選択可能ネットワークコンフィギュレーションデータを備えるユーザインタフェース200を提供し、ネットワークコンフィギュレータ74は、ここに述べられるように、選択可能ネットワークコンフィギュレーションデータの少なくとも1つのユーザ選択に基づき、当該少なくとも1つのノード16のネットワークコンフィギュレーションを修正する。選択可能ネットワークコンフィギュレーションデータの例としては、図11の入力298〜301及び対応するフィールド302〜312、図12の入力313,314及び対応するフィールド315,316、図13の入力317,318及び対応するフィールド319,320、図14の入力321及び対応するフィールド322、図15の入力323,324及び対応するするフィールド325,326、図16の入力327〜330,335〜338及び対応するフィールド331〜334、並びに、図17の入力340及び対応するフィールド342が挙げられる。一実施形態では、ネットワークコンフィギュレータ74は、選択可能ネットワークコンフィギュレーションデータの少なくとも1つのユーザ選択に基づき、複数ノードのクラスタ14の第1のノード16の第1のネットワークパラメータを変更して(即ちネットワークコンフィギュレーションファイル28を介して)ワークロードの実行に際しての通信ネットワーク18上での第1のノード16のネットワーク性能を制限することによって、及び、複数ノードのクラスタ14の第2のノード16の第2のネットワークパラメータを変更してワークロードの実行に際しての通信ネットワーク18上での第2のノード16のネットワーク性能を制限することによって、ネットワーク性能を修正する。一実施形態では、第1のネットワークパラメータは第2のネットワークパラメータとは異なる。従って、ネットワークコンフィギュレータ74は、複数ノードのクラスタ14の異なるノード16の異なるネットワークパラメータを修正してワークロード実行に際して複数ノードのクラスタ14の所望のネットワーク特性を達成するように動作する。
図示された実施形態では、図40〜42に関してここに述べられるように、コンフィギュレータ22は、更に、エミュレートされたノードクラスタのネットワークコンフィギュレーションと実質的に一致するネットワークコンフィギュレーションを有するクラウドコンピューティングシステム10のための複数ノードのクラスタ14を選択するように動作する。ここで参照されるとき、エミュレートされたノードクラスタとは、制御サーバ12によって選択されたノードクラスタ14によりエミュレートされることになる既知のネットワークコンフィギュレーションを有するネットワークノードの任意のグループを含むものである。エミュレートされたノードクラスタの各ノードは、1つ以上の処理デバイスと、これら処理デバイスによってアクセス可能なメモリと、を含む。一実施形態では、エミュレートされたノードクラスタは、コンフィギュレータ22によって選択可能な利用可能ノード16を含まない。例えば、エミュレートされたノードクラスタは、ユーザによって提供されるノード等の、1つ以上のデータセンタ内に収容された利用可能ノード16からは離れており且つコンフィギュレータ22によってアクセス可能なノードを含む。代替的には、エミュレートされたノードクラスタは、利用可能ノード16のグループを含んでいてもよい。エミュレートされたノードクラスタのネットワークトポロジ及びネットワーク性能特性は、以下に述べられるように、1つ以上のネットワーク性能テストを用いて得られる。図40を参照すると、エミュレートされたノードクラスタのネットワーク特性と実質的に一致するネットワーク特性を有する複数ノードのクラスタ14を選択するために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図710が示されている。図40の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は、ここに述べられるように、ユーザインタフェース200を介して受信したユーザ選択に基づき、図40のフロー図710に従い図1のノードクラスタ14を選択しコンフィギュアする。ブロック712では、ノードコンフィギュレータ72は、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーションと、複数の利用可能ノード16の実際の通信ネットワークコンフィギュレーションと、を比較する。ブロック714では、ノードコンフィギュレータ72は、ブロック712の比較に基づき、通信ネットワーク18に結合された複数の利用可能ノード16からクラウドコンピューティングシステム10のための複数ノードのクラスタ14を選択する。選択された複数ノードのクラスタ14は、複数の利用可能ノード16のサブセットを含む。ブロック716では、ノードコンフィギュレータ72は、ここに述べられるように、複数ノードのクラスタ14の各ノード16が複数ノードのクラスタ14の他のノード16とワークロードの処理を共有するよう動作するようにワークロードを実行するために、選択された複数ノードのクラスタ14をコンフィギュアする。一実施形態では、ここに述べられるように、ブロック712〜716は、図30のモジュール216へのユーザ入力に基づくクラウドコンフィギュレーションの展開があった場合に開始される。
図示された実施形態では、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーション及び複数の利用可能ノード16の実際の通信ネットワークコンフィギュレーションは、各々、対応するノードに関連する通信ネットワーク特性を含む。ノードコンフィギュレータ72は、エミュレートされたノードクラスタの通信ネットワーク特性と、複数の利用可能ノード16の通信ネットワーク特性と、の間での類似性に基づき、複数ノードのクラスタ14を選択する。例示的な通信ネットワーク特性はネットワークトポロジ及びネットワークパラメータを含む。例示的なネットワークパラメータは、ノード間での通信速度及びレイテンシ、ノード間でのネットワーク帯域、並びに、パケットエラー率を含む。ネットワークトポロジは、ノードの物理的及び論理的な接続性、ノードクラスタのどのノード及びノードのグループが物理的に近くに位置しているのかあるいは互いに離れているのかの識別、ノード間の接続のタイプ(光ファイバリンク、衛星接続等)、並びに、他の適切な特性を含む。パケットエラー率は、脱落又は失われたパケット、破損したパケット、並び替えられたパケット、重複したパケット等を含む。一実施形態では、ノードコンフィギュレータ72は、図41に関してここに述べられるように、エミュレートされたノードクラスタの通信ネットワーク特性を優先させ、優先させた通信ネットワーク特性に基づき複数ノードのクラスタ14を選択する。
図示された実施形態では、ノードコンフィギュレータ72は、利用可能ノード16上でのネットワーク性能テストを開始して、利用可能ノード16の実際の通信ネットワークコンフィギュレーションを識別する。任意の適切なネットワーク性能テストが用いられてよい。例えば、ノードコンフィギュレータ72は、利用可能ノード16間でのネットワーク性能に関してテストしデータを収集するために、パケットインターネットグロウパ(Packet Internet Groper)(「ピング(Ping)」)等のコンピュータネットワーク管理(administration)ユーティリティを実行するように要求を各利用可能ノード16へ送ってよい。各ノード16によって提供されたピングテストの結果に基づき、ノードコンフィギュレータ72は、利用可能ノード16の実際の通信ネットワークコンフィギュレーションを決定する。一実施形態では、ピングは、実際の通信ネットワークコンフィギュレーションを得るために他のネットワーク性能テストと共に用いられる。コンフィギュレータ22は、ノード16から受信したネットワーク性能テスト結果を集約して、利用可能ノード16の実際の通信ネットワークコンフィギュレーションを識別するネットワーク記述子(descriptor)データファイル又はオブジェクト(例えば図42のデータファイル750を参照)を作成する。一実施形態では、コンフィギュレータ22は、ユーザインタフェース200へのユーザ入力に基づき、ネットワーク性能テストを開始し結果を集約する。例えば、図30のボタン586のユーザ選択又は他の適切な入力により、コンフィギュレータ22がテストを開始して結果を集約してよい。
図示された実施形態では、ノードコンフィギュレータ72はまた、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーションを識別する1つ以上のデータファイル(例えば図42のデータファイル750)にアクセスする。一実施形態では、これら1つ以上のデータファイルは、エミュレートされた複数ノードのクラスタに1つ以上のネットワーク性能テスト(例えばピングテスト等)を実装することによって、制御サーバ12のオフラインで得られる。一実施形態では、コンフィギュレータ22は、エミュレートされたノードクラスタに関連するデータファイルをアクセス可能メモリ(例えば図3のメモリ90)へとロードする。例えば、コンフィギュレータ22は、図7のテーブル226への入力を介して等のようにユーザインタフェース200を介してユーザがデータファイルのロケーションを識別することに基づきデータファイルをロードしてよい。従って、コンフィギュレータ22は、利用可能ノード16に関連して生成されたデータファイルにおいて識別された通信ネットワーク特性と、エミュレートされたノードクラスタに関連してアクセスされたデータファイルと、を比較することによって、図40のブロック712で比較を行う。
図42に例示的なデータファイル750が示されている。データファイル750は、制御サーバ12によってアクセス可能な利用可能ノード16又はエミュレートされたノードクラスタのノード等の任意の適切なネットワークノードのネットワークコンフィギュレーションを識別する。図示されるように、データファイル750は、例示的にはグループA,B,…,Mを含むノードの幾つかのグループ(groups)を識別する。各グループA,B,Mは、データセンタの同じ物理的ラック上のノード等の物理的に互いに近くにある複数のノードを含む。行6〜11はグループAのノードによるネットワーク通信に関連するネットワークパラメータを識別し、行15〜22はグループBのノードによるネットワーク通信に関連するネットワークパラメータを識別し、行27〜34はグループMのノードによるネットワーク通信に関連するネットワークパラメータを識別する。例えば、行6及び行7は、グループAのノード間での通信に関連するレイテンシ(latency)、帯域(bandwidth)及びエラー率(error rate)を識別する。行8及び行9は、グループAノードとグループBノードとの間での通信に関連するレイテンシ、帯域及びエラー率を識別する。同様に、行10及び行11は、グループAノードとグループMノードとの間での通信に関連するレイテンシ、帯域及びエラー率を識別する。グループB及びグループMのノードによる通信に関連するネットワークパラメータも同様にデータファイル750内で識別される。データファイル750は、ここに述べられるように、ネットワークトポロジデータ及び他のネットワークパラメータ等の追加的なネットワークコンフィギュレーションデータを識別してもよい。
図41を参照すると、エミュレートされたノードクラスタのネットワーク特性と実質的に一致するネットワーク特性を有する複数ノードのクラスタ14を選択するために、図1及び図3のコンフィギュレータ22を含む1つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図720が示されている。図41の説明全体に対して図1及び図3が参照される。ブロック722では、ネットワークコンフィギュレーションが、エミュレートされたノードクラスタの各ノードから要求される。例えば、ここに述べられるように、ネットワーク性能テストは各ノードで開始され、テスト結果がコンピューティングデバイスによって受信される。ブロック724では、エミュレートされたノードクラスタのノードから受信した、性能テストの結果としてのネットワークコンフィギュレーションデータに基づき、ネットワークコンフィギュレーションデータファイル(例えばデータファイル750)が作成される。ここに述べられるように、ブロック722,724は、例えば図1のコンピュータ20による等して、クラウドコンピューティングシステム10から離れたコンピューティングシステムによってオフラインで実行されてよい。
ブロック726では、コンフィギュレータ22は、各利用可能ノード16から又はデータセンタの利用可能ノード16のグループからネットワークコンフィギュレーションを要求する。例えば、コンフィギュレータ22は、ここに述べられるように、利用可能ノード16上でネットワーク性能テストを開始し、コンフィギュレータ22は、ネットワーク性能テストからもたらされるコンフィギュレーションデータを集約する。ブロック728では、コンフィギュレータ22は、利用可能ノード16から受信したネットワークコンフィギュレーションデータに基づき、ネットワークコンフィギュレーションデータファイル(例えばデータファイル750)を作成する。従って、コンフィギュレータ22は、エミュレートされたノードクラスタを記述しているデータファイルと、利用可能ノード16を記述しているデータファイルと、を含む2つのコンフィギュレーションデータファイルへのアクセスを有する。コンフィギュレータ22は、ブロック730に示されるように、2つのデータファイル内で識別されたネットワークプロパティの比較に基づき、エミュレートされたノードクラスタと類似したネットワーク特性を有する適切なノード16を利用可能ノード16から選択する。一実施形態では、コンフィギュレータ22は、ここに述べられるように、エミュレートされたノードクラスタ及び利用可能ノード16のノードハードウェア特性(例えば処理能力、メモリ容量等)の比較に基づき、ブロック730で適切なノードを更に選択する。
ブロック732では、コンフィギュレータ22は、エミュレートされたノードクラスタに関連するデータファイル内で識別された所望のネットワークコンフィギュレーションパラメータに基づき、選択されたノード16をチューニングする(tunes)。例えば、選択されたノード16のネットワーク特性は、エミュレートされたノードクラスタのネットワーク特性に厳密には一致していなくてよく、更なるネットワークチューニングが必要になり又は所望されることもある。従って、オペレーティングシステム44、ネットワークトポロジドライバ48及び/又は他のネットワークコンポーネント並びに各ノード16のネットワークパラメータがチューニングされて、エミュレートされたノードクラスタの所望のネットワーク性能が更に達成される。一実施形態では、コンフィギュレータ22は、データファイル内で識別されたネットワーク特性に基づき、選択されたノード16を自動的にチューニングする。一実施形態では、ネットワークパラメータは、例えば図11〜17に関してここに述べられるように、ユーザインタフェース200のモジュール206を介して提供されたユーザ入力に基づき更にチューニングされる。
例示的な一実施形態では、コンフィギュレータ22は、ブロック730で以下の「ベストマッチング(best matching)」技術を用いて適切なノード16を選択するが、他の適切な方法又はアルゴリズムが提供されてもよい。コンフィギュレータ22は、データファイルのネットワークコンフィギュレーションデータ(例えばレイテンシ−p0、帯域−p1、エラー率−pZ)を比較するときにZ個のネットワークプロパティ(Z network properties)(即ち特性)を考慮し、ノードX1,X2,…,XQはエミュレートされたノードクラスタのノードである。コンフィギュレータ22は、ネットワークプロパティp1,p2,…,pXに関してノードX1,X2,…,XQに最も類似している利用可能ノード16のサブセット(例えばノードY1,Y2,…,YQ)を選択する。この選択を行うために他のアルゴリズムが用いられてもよいが、利用可能ノード16の適切なサブセットを発見可能なようにコンフィギュレータ22によって実装される例示的アルゴリズムは、ネットワークプロパティに優先順位を付けることを含む。例示的な優先順位付けにおいては、プロパティp0はプロパティp1よりも高い優先順位を有しており、プロパティpkはプロパティpk+1よりも高い優先順位を有する。従って、図示された例では、ノード選択に際してレイテンシは帯域よりも高い優先順位を与えられ、帯域は、ノード選択に際してエラー率よりも高い優先順位を与えられる。ネットワークノードX及びYの間でネットワークプロパティNの値をリターンするために、入力N(ネットワークプロパティ)、X(ノード)及びY(ノード)をパラメータとする関数P(N,X,Y)がコンフィギュアされてよい。そのような関数は、ブロック724,728で作成されたネットワーク記述データファイル/オブジェクト(例えばデータファイル750)を用いて実装されてよい。ノードL={Y1,Y2,Y3,…}の初期リストは、全ての利用可能ノード16を含む。1≦g≦R(RはL内のノードの総数、R≧Q)とするときに、各ノードYgに対して次の等式(1)を適用する。
Sx(g)=Σ1≦N≦Z,1≦h≦R,g≠hP(N,Yg,Yh) …(1)
1≦i≦Q(Qはエミュレートされたノードクラスタ内のノードの数)とするときに、エミュレートされたノードクラスタ内の各ノードXiに対して次の等式(2)を適用する。
Sy(i)=Σ1≦N≦Z,1≦j≦R,i≠jP(N,Yi,Yj) …(2)
アルゴリズムは、Sy(w)−Sx(i)=minv,f(Sy(v)−Sx(f))となるような、クラウドコンピューティングシステム10のための利用可能ノードYWを探し始める。従って、ノードYWはオリジナルノードXiをシミュレートするために用いられ、ノードYWはリストLから除かれる。アルゴリズムは、利用可能ノード16のフルセットが選択されるまで続く。ブロック730でノード16を選択するための他の適切な方法及びアルゴリズムが提供されてもよい。
例示的な一実施形態では、コンフィギュレータ22は、以下の方法を用いて、選択されたノード16をブロック732でチューニングするが、他の方法又はアルゴリズムが提供されてもよい。この方法では、コンフィギュレータは、各ノード16上で適切なネットワークシミュレーションレイヤを自動的に作成するコンフィギュレーションアプリケーションを実行する。ネットエム(Netem)ネットワーク遅延及び損失エミュレータを用いる場合には、以下のアルゴリズムがコンフィギュレータ22によって実装される。エミュレートされたノードクラスタの各ノードに対して、Gsはエミュレートされたそのノードが属するノードグループである(即ち各ノードグループは例えば同じラック内にあるような互いに物理的に近いノードを備える)。各グループGiに対してコンフィギュレータ22によって以下が行われ、ここで、1≦i≦Eであり、Eはエミュレートされたノードクラスタに関連するデータファイルにおいて定義されるグループの総数である。コンフィギュレータ22は、ノードGsからノードGiに出てゆくトラフィックに対して所望のネットワークプロパティp0,…,pNを調べる。コンフィギュレータ22は、例えばコマンド「tc class add dev」を用いる等してサービスの新たなクラスを作成する。コンフィギュレータ22は、例えばコマンド「tc qdisc add dev」を用いる等して新たな待ち行列規律(queuing discipline)を作成する。コンフィギュレータ22は、そのクラス又はその待ち行列規律「qdisc」に対して所望のネットワークプロパティをセットする。そのクラスで帯域及びバーストネットワークプロパティが指定され、その待ち行列規律で他のプロパティ(レイテンシ、エラー率等)が指定される。各ノードYnに対して、GynはそのノードYnが属するグループである。コンフィギュレータ22は、宛先(destination)IPアドレス(ノードYnのアドレス)に基づきフィルタをコンフィギュアし、それをクラスGynに割り当てる。このことは、例えば、コマンド「tc filter add dev」を用いてなされ得る。
結果として、ネットエムエミュレータが起動されると、選択されたノードクラスタは、少なくとも以下のネットワークプロパティに関して、エミュレートされたノードクラスタと同等のネットワーク性能を有することになり、即ちこれらのネットワークプロパティは、最小レイテンシ、最大帯域、最大バースト率、最小パケット破損率、最小パケット損失率、及び、最小パケット並び替え率である。ブロック732でノード16をチューニングするための他の適切な方法及びアルゴリズムが提供されてもよい。
一実施形態では、図41のブロック726〜732は、エミュレートされたノードクラスタに対応する複数ノードからなる全クラスタ14が選択されるまで、利用可能ノード16の異なるグループで繰り返される。一実施形態では、エミュレートされたノードクラスタは、物理的なノード16が存在してもしなくてもよいという点で理論上のものであるが、所望のネットワークコンフィギュレーションは既知であり、それがノード選択を行うためのコンフィギュレータ22への入力として提供される。一実施形態では、エミュレートされたノードクラスタに基づき複数ノードのクラスタ14が選択されると、コンフィギュレータ22は、ここに述べられるバッチプロセッサ80を用いる等して、所望のネットワークコンフィギュレーションを有する複数ノードからなる選択されたクラスタ14で種々のワークロードをテストするように動作する。
(ハードウェア特性に基づき複数ノードのクラスタを割り振ること)
図43は、クラウドコンピューティングシステム10に対して複数ノードのクラスタ14を割り振るために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図760を示している。図43の説明全体に対して図1〜3が参照される。ブロック762では、コンフィギュレータ22(例えばデータモニタコンフィギュレータ82)は、1つ以上のデータセンタの利用可能ノード16のグループについてハードウェア性能アセスメントテストを開始して、利用可能ノード16のグループの実際のハードウェア性能特性を得る。ブロック764では、ノードコンフィギュレータ72は、利用可能ノード16のグループの実際のハードウェア性能特性と、ユーザインタフェース200を介してのユーザ選択に基づき識別された所望のハードウェア性能特性と、を比較する。ブロック766では、ノードコンフィギュレータ72は、ブロック764での比較に基づき、利用可能ノード16のグループからクラウドコンピューティングシステム10のためのノード16のサブセットを選択する。ノードクラスタ14又はノードクラスタ14のノード16のグループ等のノード16のサブセットは、ここに述べられるように、ワークロードの処理を共有するように動作する。ノード16のサブセット内のノード16の数は、ここに述べられるように、ノードクラスタ14に対してユーザによって要求されたノード16の数に等しいかそれよりも少ない。
一実施形態では、ノードコンフィギュレータ72は、所望のハードウェア性能特性を有する、クラウドコンピューティングシステム10のための複数ノードのクラスタを要求するユーザ要求を、ユーザインタフェース200を介して受信する。ユーザ要求は、例えば、図8の選択ボックス259、入力262及びフィールド256並びに図9の選択可能入力265等の選択可能ハードウェアコンフィギュレーションデータの選択に基づき、所望のハードウェア性能特性を識別する。一実施形態では、図9のテーブル264のフィールドは、所望のハードウェア性能特性を更に識別するために選択可能/修正可能である。ノードコンフィギュレータ72は、ユーザインタフェース200の他の適切な選択可能入力及びフィールドに基づき所望のハードウェア性能特性を識別してもよい。ノードコンフィギュレータ72は、複数ノードのクラスタのユーザ要求及びその要求において識別された所望のハードウェア性能特性に基づき(例えば利用可能ノード16と要求された複数ノードのクラスタとの間でのハードウェア類似性に基づき)、ハードウェア性能アセスメントテストでテストするための利用可能ノード16のグループを選択する。図示された実施形態では、利用可能ノード16のグループのノード16の数は、ユーザ要求で要求された複数ノードのクラスタのノード16の数よりも多い。
例示的なハードウェア性能特性は、ネイティブな32ビット及び/又は64ビット動作を要求するワークロードをサポートするためにノード16が64ビットプロセッサアーキテクチャを有しているのかあるいは32ビットプロセッサアーキテクチャを有しているのか等のノード16のコンピュータアーキテクチャを含む。他の例示的なハードウェア性能特性は、ノード16の1つ以上のプロセッサ40の製造業者(エーエムディー(AMD)、インテル(Intel)、エヌビディア(Nvidia)等)、ノード16の1つ以上のプロセッサ40の動作周波数、及び、ノード16のリード/ライト性能を含む。更に他の例示的なハードウェア性能特性は、システムメモリ容量及びディスクスペース(記憶容量)、ノード16のプロセッサ40の数及びサイズ、ノード16のキャッシュサイズ、ノード16の利用可能命令セット、ノード16のディスクI/O性能及びハードドライブ速度、エミュレーティングソフトウェアをサポートするノード16の能力、チップセット、ノード16のメモリのタイプ、ノード16間でのネットワーク通信レイテンシ/帯域、並びに、他の適切なハードウェア性能特性を含む。図示された実施形態では、これらのハードウェア性能特性の各々は、ユーザインタフェース200を介して提供されたユーザ要求に基づきユーザによって所望に応じて指定されてよい。更に、1つ以上のハードウェア性能アセスメントテストが、各選択された利用可能ノード16のこれら実際のハードウェア性能特性を決定するように動作する。
一実施形態では、ノードコンフィギュレータ72は、ブロック762で、ノード16のハードウェア性能特性を識別し又は決定すると共にこれらの特性を表すハードウェアコンフィギュレーションデータを生成するように動作する1つ以上のハードウェア性能アセスメントツールを各ノード16に展開することによって、ハードウェア性能アセスメントテストを開始する。次いでデータアグリゲータ84は、集約されたデータに基づきノードコンフィギュレータ72が各ノード16の実際のハードウェア性能特性を決定することができるように、ハードウェア性能アセスメントツールによって提供されたハードウェア性能データを集約するように動作する。例示的なアセスメントツールは、ノード16の1つ以上のプロセッサのタイプと、プロセッサの種々の特性/特徴(例えば製造業者、プロセッサの速度及び能力、利用可能なメモリ及びディスクスペース等)とを識別するための実行可能動作コードを含むCPU識別ツール(「CPUID」)を含み、このようなツールは当該技術分野で既知である。他の例示的なモニタリングツールは、ノード16によって実行されるときに、ノード16に適合し且つ/又は1つ以上のプロセッサの製造業者に適合する命令セットを決定するために命令セット拡張又は命令種類をテストするように動作するソフトウェアコードモジュールを含む。他の例示的なモニタリングツールは、ノード16によって実行されるときに、ノード16が64ビットアーキテクチャを有しているのかあるいは32ビットアーキテクチャを有しているのかをテストするように動作するソフトウェアコードモジュールを含む。例えば、そのようなテストは、コマンド又は処理要求を発行することと、プロセッサが要求を完了するのにどれくらいの時間かかるのかを測定することと、を伴う。他の適切なアセスメントツールが提供されてもよい。
一実施形態では、ブロック766で選択されるノード16のサブセットのノード16の数は、ユーザ要求において識別されるノード16の数より少ない。従って、コンフィギュレータ22は、選択されたノード16の数がユーザ要求で要求されたノード16の数に等しくなるまでステップ762〜766を繰り返して、ノード16の追加的なサブセットを得る。一実施形態では、ブロック766でノード16の第1のサブセットを選択した後、ノードコンフィギュレータ72は、ブロック762で最初にテストされた利用可能ノード16の第1のグループとは異なる利用可能ノード16の第2のグループを選択する。データモニタコンフィギュレータ82は、利用可能ノード16の第2のグループの実際のハードウェア性能特性を得るために利用可能ノード16の第2のグループについてハードウェア性能アセスメントテストを開始し、ノードコンフィギュレータ72は、利用可能ノードの第2のグループの実際のハードウェア性能特性と所望のハードウェア性能特性とのノードコンフィギュレータ72による比較に基づき、利用可能ノード16の第2のグループからクラウドコンピューティングシステム10のためのノード16の第2のサブセットを選択する。一実施形態では、ノード16の選択された複数のサブセットのノードの合計数がユーザ要求で要求されたノード16の数に等しくなると、ノードコンフィギュレータ72は、ノード16の当該選択された複数のサブセットをクラウドコンピューティングシステム10の複数ノードのクラスタ14としてコンフィギュアする(即ち、ノードクラスタ14をユーザ指定のコンフィギュレーションパラメータでコンフィギュアし、ノードクラスタ14上でワークロードを実行する等)。
図44を参照すると、ユーザによって指定された所望のハードウェア性能特性に実質的に一致するハードウェア特性を有する複数ノードのクラスタ14を選択するために、図1及び図3のコンフィギュレータ22を含む1つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図770が示されている。図44の説明全体に対して図1〜3が参照される。ブロック772では、ノードコンフィギュレータ72は、所望のハードウェア性能特性を有するN個のノード16に対するユーザ要求を受信し、ここでNは所望のノード16の任意の適切な数である。一実施形態では、ユーザ要求は、図43に関してここに述べられるように、選択可能ハードウェアコンフィギュレーションデータ(例えば図8及び図9)のユーザ選択に基づく。ブロック774では、ノードコンフィギュレータ72は、アクセスした1つ以上のデータセンタ又はクラウドの利用可能ノード16からN+Mのノード16を要求し又は予約する。Mは予約した利用可能ノード16の数(N+M)が要求したノード16の数Nを超えるような任意の適切な数である。例えば、MはNに等しくてよく、あるいはNの倍に等しくてよい。代替的には、ノードコンフィギュレータ72は、ブロック774でN個の利用可能ノード16を要求してよい。一実施形態では、(N+M)個のノード16は、アプリケーション特有API(例えばアマゾンAWS API、オープンスタックAPI、カスタムAPI等)を用いて割り振られ又は予約される。ノードコンフィギュレータ72は、所望の複数ノードのクラスタと類似したハードウェア特性を有する利用可能ノード16に基づき、ブロック774(及びブロック788)で利用可能ノード16を要求する。例えば、ノードコンフィギュレータ72は、同じノードタイプ(例えばここに述べられるように、小型、中型、大型、x−大型)の利用可能ノード16を予約してよい。
ブロック776では、図43に関してここに述べられるように、データモニタコンフィギュレータ82は、1つ以上のハードウェア性能アセスメントツールを展開することによって、各予約されたノード16についてハードウェア性能アセスメントテストを開始し、データアグリゲータ84は、各ノード16で開始されたハードウェア性能アセスメントテストからもたらされるハードウェア性能データを集約する(例えば収集し記憶する)。一実施形態では、ハードウェア性能アセスメントツールは、ノード16に予めインストールされているソフトウェアコードモジュールであり、あるいはSSH、HTTP又は何らかの他の適切なプロトコル/メカニズムを用いてノード16にインストールされるソフトウェアコードモジュールである。
ブロック780では、ノードコンフィギュレータ72は、ユーザ要求の所望のハードウェア性能特性(ブロック772)をハードウェア性能アセスメントテストからもたらされた実際のハードウェア性能特性と比較する。実際の及び所望のハードウェア性能特性における類似性に基づき、ノードコンフィギュレータ72は、ブロック782で、所望のハードウェア特性にベストマッチのX個のノード16を(N+M)個の予約されたノード16から選択し、ここでXは要求されたノード16の数Nに等しいかそれよりも少ない任意の数である。ハードウェア特性を比較しベストマッチングノード16を選択するために、図41に関してここに述べられているハードウェア特性に基づく「ベストマッチング」技術等の任意の適切なアルゴリズムが用いられてよい。ブロック784では、ノードコンフィギュレータ72は、選択されなかった残りの利用可能ノード16(例えば(N+M)−X)を、それらが他のクラウドコンピューティングシステムでの使用のために利用可能になるように、例えばアプリケーション特有APIを用いる等によって、1つ以上のデータセンタ又はクラウドへと解放する。ブロック786で、選択されたノード16の数Xが要求されたノード16の数Nよりも少ない場合には、ノードコンフィギュレータ72は、ブロック788で、1つ以上のデータセンタ/クラウドから追加のノード16を要求し又は予約する。次いでコンフィギュレータ22は、選択されたノード16の総数(即ち選択方法の全繰り返しからもたらされるノード16の合計数)が要求されたノード16の数Nに等しくなるまで、ステップ776〜786を繰り返す。選択されたノード16は次いで、ユーザによって割り当てられたクラウドコンピューティングタスクを実行するための複数ノードのクラスタ14としてコンフィギュアされる。
一実施形態では、図44の方法は、所望のハードウェア特性及びネットワーク特性を有する複数ノードのクラスタ14を選択するために、図41の方法と共に動作する。一実施形態では、図44の方法は、ネットワーク特性上の近接性に更に基づきノード16を選択する。一実施形態では、ブロック772でユーザ要求で識別されたハードウェア特性が、ノードクラスタ14のためのノード16を選択するのに先立ち優先付けられる。一実施形態では、図44(及び図43)の方法は、実際の選択された複数ノードのクラスタ14とユーザによって指定された所望の複数ノードのクラスタとの適切な一致性を見出すために、コンフィギュレータ22によって自動的に実行される。代替的には、例えばユーザインタフェース200の選択可能入力に基づき図43及び図44の動作を開始するためのオプションがコンフィギュレータ22によってユーザに与えられてもよい。
(クラウドコンピューティングシステムのハードウェアコンフィギュレーションを選択及び/又は修正すること)
図45は、クラウドコンピューティングシステム10の複数ノードのクラスタ14のハードウェアコンフィギュレーションを選択するために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図800を示している。図45の説明全体に対して図1及び図3が参照される。ブロック802では、ノードコンフィギュレータ72は、クラウドコンピューティングシステム10の複数ノードのクラスタ14によって共有されたワークロードの実行に基づき、複数ノードのクラスタ14の少なくとも1つのノード16が、ワークロードの共有された実行に際してスレッショルド動作能力未満で動作したことを決定する。スレッショルド動作能力は、例示的には、当該少なくとも1つのノード16によるハードウェア利用、例えばワークロード実行に際してのプロセッサ40及び/又はメモリ42の利用、に基づく。スレッショルド動作能力は、例えば最大動作能力(100%)又は90%動作能力等の任意の適切なスレッショルドであってよい。ブロック804では、ノードコンフィギュレータ72は、修正されたハードウェアコンフィギュレーションを伴う複数ノードのクラスタ14が低下したコンピューティング能力及び低減された記憶容量の少なくとも一方を有するように、ブロック802での決定に基づき複数ノードのクラスタ14の修正されたハードウェアコンフィギュレーションを選択する。
一実施形態では、ノードコンフィギュレータ72は、データセンタの複数の利用可能ノード16から少なくとも1つの異なるノード16を選択すると共に複数ノードのクラスタ14の当該少なくとも1つのノード16を当該少なくとも1つの異なるノード16と交換することによって、修正されたハードウェアコンフィギュレーションを選択する。その異なるノード16は、複数ノードのクラスタ14の交換対象となったノード16と比べて低下したコンピューティング能力及び低減された記憶容量の少なくとも一方を有する。例えば、ノードコンフィギュレータ72は、交換対象となったノード16と比べてより低速なプロセッサ40を有し、より少ない処理コアを有し、より少ないメモリ容量を有し、又は、任意の他の適切な低下したハードウェア特性を有する異なるノード16を利用可能ノード16から選択する。例えば、交換対象となったノード16は、交換対象となったノード16のハードウェアの一部がワークロード実行に際して利用されないような、ワークロードを処理するのに必要とされるよりも高いコンピューティング能力又はメモリ容量を有する。図示された実施形態では、その異なるノード16は、1つ以上の交換対象となったノード16と同等の性能(例えば同等の実行速度等)で、しかしその異なるノード16の低下したコンピューティング能力及び/又は記憶容量に起因してより効率的にワークロードを処理するよう動作するように選択される。従って、その異なるノード16で修正された複数ノードのクラスタ14は、全体的な性能損失を全く呈することなくあるいは殆ど呈することなく、その異なるノード16の低下したコンピューティング能力及び/又は記憶容量に起因してより効率的にワークロードを実行する。例えば、ノードクラスタ14は、交換対象となったノード16を伴う場合と実質的に同等の速度で、その異なるノード16を伴ってワークロードを実行する。
一実施形態では、ノードコンフィギュレータ72は、交換対象となったノード16を異なるノード16と交換することなしに、1つ以上のノード16を選択し複数ノードのクラスタ14から除くことによって、ブロック804の修正されたハードウェアコンフィギュレーションを選択し実装する。例えば、ノードコンフィギュレータ72は、ノードクラスタ14の1つ以上のノード16がノードクラスタ14の残りのノード16にとって同様の実行性能でワークロードを実行するのに必要のないことを決定する。従ってノードコンフィギュレータ72は、これら1つ以上のノード16をノードクラスタ14から除き、これら1つ以上のノード16をデータセンタへと解放する。一実施形態では、ノードコンフィギュレータ72は、ノードクラスタ14の1つ以上のノード16のコンピューティング能力及びメモリ容量の少なくとも一方を低下させることによって、ブロック804の修正されたハードウェアコンフィギュレーションを選択し実装する。
図示された実施形態では、コンフィギュレータ22は、種々のハードウエアリソース(例えばノード16)をノードクラスタ14のために使用することに関連するハードウェア使用コストを識別するハードウェア使用コストデータへのアクセスを有する。例えば、クラウドコンピューティングサービス(例えばアマゾン、オープンスタック等)は、ノードクラスタ14の各選択された16のコンピューティング能力及びメモリ容量等のハードウェアに基づき使用コストをチャージする。そこで、一実施形態では、ノードコンフィギュレータ72は、複数ノードのクラスタ14における当該少なくとも1つの異なるノード16を使用することに関連する使用コストデータと、複数ノードのクラスタ14における当該少なくとも1つの交換対象となったノード16を使用することに関連する使用コストデータと、のノードコンフィギュレータ72による比較に更に基づき、ノードクラスタ14の1つ以上のノード16と交換する当該少なくとも1つの異なるノード16を選択する。一実施形態では、ノードコンフィギュレータ72は、当該少なくとも1つの異なるノード16の使用コストが、交換対象となったノード16の使用コストよりも低いことを条件として、当該少なくとも1つの異なるノード16を選択する。例えば、ノードコンフィギュレータ72は、複数ノードのクラスタ14において使用されたハードウェアリソース(例えばノード16)のコストを計算し、複数ノードのクラスタ14の可能なハードウェアコンフィギュレーション変更に関連するコスト便益を決定する。例えば、ノードコンフィギュレータ72は、ノードクラスタ14に割り振られたハードウェアリソースの、より低い使用コスト及び最小の性能損失でのより効率的な使用をもたらすであろう1つ以上の異なるノード16を選択する。一実施形態では、コンフィギュレータ22は、同様のコスト分析に基づきネットワークコンフィギュレーション又は他のコンフィギュレーションをコンフィギュアする。
図示された実施形態では、コンフィギュレータ22は、1つ以上のハードウェア利用モニタリングツールを複数ノードのクラスタ14の各ノード16に展開することによって、各ノード16のハードウェア利用をモニタする。各ノード16によるハードウェア利用モニタリングツールの実行によって、各ノード16の少なくとも1つのプロセッサ40は、ワークロードの実行に際してコンピュータハードウェア(例えばプロセッサ40、メモリ42、メモリ制御器等)の利用又は使用量をモニタする。次いでモニタリングツールにより、ノード16は、ワークロードの実行に際しての各ノード16のハードウェア利用に関連する、コンフィギュレータ22によってアクセス可能なハードウェア利用データを提供する。コンフィギュレータ22のデータアグリゲータ84は、集約されたハードウェア利用データに基づきコンフィギュレータ22が各ノード16のハードウェア利用を決定し得るように、各ノード16によって提供されたハードウェア利用データを集約するように動作する。例示的なハードウェアモニタリングツールは、図26〜29のモニタリングモジュール214に関してここに述べられている。例えば、IOStatツール及びVMStatツールは、ワークロード実行に際してプロセッサ40、仮想メモリ及び/又はメモリ制御器が命令を実行し又はI/O動作を行うのにビジーである時間のパーセンテージ、ワークロード実行に際してこれらのコンポーネントが待機/停止している時間のパーセンテージ、並びに、他の適切な利用パラメータをモニタするために、ノードプロセッサ40によって実行可能なコードモジュールを含む。ノード16の決定されたハードウェア利用に基づき、ノードコンフィギュレータ72は、そのノード16にとって、最初に要求され割り振られたよりも少ないメモリ又は低いコンピューティング能力が必要とされていることを決定してよく、また、ここに述べられるように、そのノード16を交換し又はクラスタ14から除いてよい。
一実施形態では、ノードコンフィギュレータ72は、ブロック804で選択された修正されたハードウェアコンフィギュレーションを表す選択可能ハードウェアコンフィギュレーションデータをユーザインタフェース200上に表示する。選択可能ハードウェアコンフィギュレーションデータのユーザ選択に基づき、ノードコンフィギュレータ72は、複数ノードのクラスタ14のハードウェアコンフィギュレーションを修正し、例えばノードクラスタ14のノード16を交換し又は除く。例示的な選択可能ハードウェアコンフィギュレーションデータは、図8のテーブル258内に、選択可能入力259,262と共に示されている。例えば、ノードコンフィギュレータ72は、1つ以上の異なるノード16又は除かれたノード16を含むノードクラスタ14の推奨ノード16をリストすることによって、ノードクラスタ14の推奨される修正されたハードウェアコンフィギュレーションをテーブル258内に表示してよい。ユーザは、リストされたノード16に対応する入力259を選択してハードウェア変更を承認し、ノードコンフィギュレータ72は、ここに述べられるように、ワークロード展開の開始の場合に、承認された変更に基づき、修正されたノードクラスタ14をコンフィギュアする。一実施形態では、ハードウェア使用コストもユーザインタフェース200で表示されて、ノードクラスタ14の1つ以上の推奨ハードウェアコンフィギュレーションにより、関連する使用コストに基づきユーザが実装のためのコンフィギュレーションを選択することを可能にしている。複数ノードのクラスタ14の修正されたハードウェアコンフィギュレーションを表示するために、他の適切なインタフェースが提供されてよい。一実施形態では、ノードコンフィギュレータ72は、ユーザによる入力又は確認なしに、ブロック804で選択された修正されたハードウェアコンフィギュレーションで複数ノードのクラスタ14を自動的にコンフィギュアし、更に、修正されたノードクラスタ14でワークロードの実行を開始する。
図46を参照すると、クラウドコンピューティングシステム10の複数ノードのクラスタ14のハードウェアコンフィギュレーションを選択するために、図1及び図3のコンフィギュレータ22を含む1つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図810が示されている。図46の説明全体に対して図1〜3が参照される。ブロック812では、コンフィギュレータ22は、ここに述べられるように、所望のハードウェアコンフィギュレーションを伴う所望の複数ノードのクラスタ14のブロック814でのユーザ選択を可能にするために、選択可能ノードデータを含むユーザインタフェース200を提供する。ブロック816では、コンフィギュレータ22は、ここに述べられるように、複数ノードのクラスタ14を選択しコンフィギュアし、ワークロードを複数ノードのクラスタ14に展開する。ブロック818では、コンフィギュレータ22は、ノードクラスタ14の各ノード16上でハードウェア利用モニタリングツールをインストール及び/又はコンフィギュアする。一実施形態では、モニタリングツールは、図26〜29のモニタリングモジュール214を介してユーザによって選択される。代替的には、コンフィギュレータ22は、図46の方法の開始に基づき、IOStatツール及びVMStatツール等の1つ以上のモニタリングツールを自動的に展開してよい。ブロック820では、ワークロードコンフィギュレータ78は、複数ノードのクラスタ14上でのワークロードの実行を開始し、ブロック822では、その実行に続いて又はその実行の間、データアグリゲータ84は、各ノード16のモニタリングツールによって提供されるハードウェア利用データを収集し記憶する。
ノードクラスタ14によるワークロード実行が完了すると、ノードコンフィギュレータ72は、ブロック824で表されるように、ハードウェア利用データに基づき各ノード16のハードウェア利用を決定する。ブロック826では、ノードコンフィギュレータ72は、各ノード16のハードウェア利用が利用スレッショルド(例えば100%利用、90%利用又は任意の他の適切な利用スレッショルド)以上になったかどうかを判定する。一実施形態では、ノードコンフィギュレータ72は、ブロック826で、プロセッサ利用、メモリ利用、メモリ制御器利用等の複数の利用測定値を1つ以上の利用スレッショルドと比較する。ブロック826で肯定(yes)の場合には、ノードクラスタ14は更なるワークロード実行に適しているものと決定され、即ちコンフィギュレータ22によって何らノードクラスタ14のハードウェアコンフィギュレーションに対する調節はなされない。ブロック826で利用スレッショルド未満の各ノード16に対しては、ノードコンフィギュレータ72は、図45に関してここに述べられるように、交換用の異なるノード16であって、ワークロードの実行に適したハードウェアを有する(即ち交換対象となった1つ以上のノード16と同等の性能を有する)一方で交換対象となったノード16より低いコンピューティング能力又は記憶容量を有する交換用の異なるノード16を、データセンタの利用可能ノード16から識別する。ブロック830では、ノードコンフィギュレータ72は、図45に関してここに述べられるように、複数ノードのクラスタ14の推奨ハードウェアコンフィギュレーションをユーザインタフェース200上に表示することによって、ブロック828で識別された任意の推奨ハードウェアコンフィギュレーション変更のユーザへのフィードバックを提供する。ブロック832では、ノードコンフィギュレータ72は、オリジナルノードクラスタ14のノード16を除くこと及び/又は当該ノード16をブロック828で識別された異なるノード16と交換することによって、ワークロードの将来の実行のために推奨ハードウェアコンフィギュレーション変更を適用する。
一実施形態では、ユーザインタフェース200の選択可能入力でのユーザによる選択によって、ノードコンフィギュレータ72は、図45及び図46で述べたハードウェアコンフィギュレーション方法を実施して、ワークロードを実行するのに適したノードクラスタ14のコンフィギュレーションを見出す。代替的には、コンフィギュレータ22は、例えばバッチ処理ジョブの開始に際して等、図45及び図46の方法を自動的に実装して、ワークロード性能を著しくは制限しない、複数ノードのクラスタ14の適切な代替的コンフィギュレーションを見出す。
(クラウドコンピューティングシステムをチューニングすること)
図47は、複数の利用可能なコンフィギュレーションからクラウドコンピューティングシステム10の複数ノードのクラスタ14の適切なコンフィギュレーションを選択するために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図850を示している。図47の説明全体に対して図1及び図3が参照される。ブロック852では、コンフィギュレータ22(バッチプロセッサ80)は、複数ノードのクラスタ14のためのコンフィギュレーションパラメータの複数の異なるセットに基づき、複数ノードのクラスタ14上でのワークロードの複数の実行を開始する。コンフィギュレータ22によってノード16への入力として提供(例えばここに述べられるように1つ以上のコンフィギュレーションファイル28を介して)されたコンフィギュレーションパラメータは、コンフィギュレーションパラメータの当該異なるセットを提供するために、コンフィギュレータ22によって調節可能であり、ワークロードは、コンフィギュレーションパラメータの各異なるセットで、複数ノードのクラスタ14によって実行される。一実施形態では、コンフィギュレータ22は、ここに述べられるように、ユーザインタフェース200を介して提供されたユーザ入力に基づき、各ワークロード実行のためのコンフィギュレーションパラメータを調節する。一実施形態では、これらコンフィギュレーションパラメータは、少なくとも1つのノード16のワークロードコンテナの動作パラメータ、少なくとも1つのノード16のブート時間パラメータ、及び、少なくとも1つのノード16のハードウェアコンフィギュレーションパラメータの少なくとも1つを含む。
ブロック854では、ノードコンフィギュレータ72は、コンフィギュレーションパラメータの当該複数の異なるセットから、複数ノードのクラスタ14のためのコンフィギュレーションパラメータのセットを選択する。ブロック856では、ワークロードコンフィギュレータ78は、その選択されたコンフィギュレーションパラメータのセットでコンフィギュアされた複数ノードのクラスタ14による実行のために、ワークロードを複数ノードのクラスタ14に提供する(展開する)。従って、ワークロードの将来の実行は、その選択されたコンフィギュレーションパラメータのセットに基づくコンフィギュレーションを有する複数ノードのクラスタ14によって行われる。
ブロック854でのコンフィギュレーションパラメータのセットの選択は、ワークロードの各実行に際してモニタされた(例えばモニタリングツールで)複数ノードのクラスタ14の少なくとも1つの性能特性と、複数ノードのクラスタ14の少なくとも1つの所望の性能特性と、のノードコンフィギュレータ72による比較に基づく。例えば一実施形態では、ノードコンフィギュレータ72は、ワークロード実行に際して、ユーザによって指定された所望の性能特性にベストマッチのノードクラスタ14の性能特性をもたらすコンフィギュレーションパラメータのセットを選択する。図示された実施形態では、所望の性能特性は、ユーザインタフェース200を介して提供されたユーザ入力に基づき、ノードコンフィギュレータ72によって識別される。例えば、ユーザインタフェース200は、選択されたワークロードを実行するときにユーザが複数ノードのクラスタ14の所望の性能特性を選択することを可能にする選択可能入力又は空きを埋めることが可能な(fillable)フィールド等の選択可能性能データを含む。例えば、図10の埋めることが可能なフィールド276又は所望の性能特性を識別するためのユーザ入力を受け取るように構成されたユーザインタフェース200の任意の他の適切な選択可能入力若しくはフィールドを参照されたい。他の例では、ノードコンフィギュレータ72は、例えば図7の入力238,228,230,232のユーザ選択及び/又は図25のバッチ処理モジュール212のボタン494に基づく等して、所望の性能特性を識別するデータを含むユーザ提供のファイルをロードしてもよい。
ワークロード実行に際してユーザによって指定されると共にモニタされる例示的な性能特性は、ワークロード実行時間、ノード16によるプロセッサ利用、ノード16によるメモリ利用、ノード16による電力消費、ノード16によるハードディスク入力/出力(I/O)利用、及び、ノード16によるネットワーク利用を含む。図26〜29に関してここに述べられるモニタリングツールでモニタされた性能特性等の他の適切な性能特性がモニタされ且つ/又はユーザによって指定されてよい。
一実施形態では、ブロック854でのコンフィギュレーションパラメータのセットの選択は、ワークロードの実行に際してモニタされた1つ以上の性能特性に関連する値が、1つ以上の対応する所望の性能特性に関連する許容値の範囲に含まれる旨のノードコンフィギュレータ72による決定に更に基づく。例えば、対応する所望の性能特性に関連する許容値の範囲(例えばユーザによって入力され又はノードコンフィギュレータ72によってセットされる)は、プロセッサ利用についての85%〜100%及びメモリ利用についての85%〜100%を含んでいてよい。これに伴い、ノードコンフィギュレータ72は、95%のプロセッサ利用及び90%のメモリ利用をもたらすコンフィギュレーションパラメータのセットを選択するが、80%のプロセッサ利用及び75%のメモリ利用をもたらすコンフィギュレーションパラメータのセットを拒絶する。値の許容範囲を満足する性能特性をコンフィギュレーションパラメータの複数のセットがもたらす場合には、ノードコンフィギュレータ72は、最高性能値、最低使用コスト、性能特性の優先順位、又は、他の適切なファクタ等の追加的ファクタに基づき、コンフィギュレーションパラメータのセットを選択する。許容範囲に含まれる性能特性をもたらすコンフィギュレーションパラメータのセットが無い場合には、ノードコンフィギュレータ72は、ベストマッチの性能特性をもたらすセットを選択し、適切なセットが見つかるまでコンフィギュレーションパラメータを自動的に更に調節し、及び/又は、許容範囲内のコンフィギュレーションパラメータのセットが見つからなかった旨をユーザに通知する。
一実施形態では、ノードコンフィギュレータ72は、所望の性能特性に対するモニタされた性能特性の類似性に基づき、コンフィギュレーションパラメータの各異なるセットにスコア値を割り当てる。従って、ブロック854でのコンフィギュレーションパラメータのセットの選択は、選択されたコンフィギュレーションパラメータのセットに割り当てられたスコア値に更に基づく。例えば、ノードコンフィギュレータ72は、最も高いスコア値をもたらすコンフィギュレーションパラメータのセットを選択する。スコア値は、ノードクラスタ14の性能特性が所望の性能特性にどれほどマッチしているのかに基づき、コンフィギュレーションパラメータのセットをランク付けする。
一実施形態では、ブロック854でのコンフィギュレーションパラメータのセットの選択は、異なる利用可能ノード16を使用すること又は複数ノードのクラスタ14での異なるネットワークコンフィギュレーションを使用することに関連する使用コストデータの比較に更に基づく。例えば、ノードコンフィギュレータ72は、スレッショルド利用レベルよりも多いプロセッサ利用及びメモリ利用、並びに、スレッショルドコストレベルよりも低い使用コストをもたらすコンフィギュレーションパラメータのセットを選択してよい。使用コストに関する任意の他の適切な考慮がブロック854での選択に適用されてもよい。
一実施形態では、コンフィギュレータ22は、ユーザによって提供された(例えばユーザインタフェース200を介して)コンフィギュレーションパラメータの初期セットに基づき、ノードクラスタ14上でのワークロードの第1の実行を開始する。この実施形態では、所望の性能特性をもたらすコンフィギュレーションパラメータのセットを見出すために、ノードコンフィギュレータ72は、自動的に初期セットの少なくとも1つのコンフィギュレーションパラメータを調節すると共にこの修正された初期セットに基づきワークロードの追加的な実行を開始することによって、コンフィギュレーションパラメータの種々のセットを網羅する。このようなコンフィギュレーションパラメータの種々のセットを探索するために、任意の適切な設計スペース探索方法又はアルゴリズムが用いられてよい。
一実施形態では、データモニタコンフィギュレータ82は、1つ以上のノード及びネットワーク性能モニタリングツール(例えば図26〜29で述べられている)を複数ノードのクラスタ14の各ノード16に展開する。モニタリングツールは、各ノード16によって(又は制御サーバ12によって)実行されるときに、ここに述べられるように、ワークロードの各実行に際して各ノード16の性能特性をモニタするように動作する。実行されたモニタリングツールは、コンフィギュレータ22によってアクセス可能な、対応するノード16の性能特性を表す性能データを生成する。データアグリゲータ84は、各ノード16の性能モニタリングツールによって提供された性能データを集約し、ノードコンフィギュレータ72は、集約された性能データに基づきブロック854でコンフィギュレーションパラメータのセットを選択する。
ここに述べられるように、複数ノードのクラスタ14のコンフィギュレーションパラメータの種々のセットは、ワークロードコンテナの動作パラメータ、ブート時間パラメータ、及び、ハードウェアコンフィギュレーションパラメータの少なくとも1つを含む。ワークロードコンテナの例示的な動作パラメータは、図4〜6,19及び図20に関してここに述べられており、例えば、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連する動作パラメータを含む。動作パラメータは、図19及び図20に示されここに述べられている選択可能データ(例えば入力及びフィールド)のユーザ選択に基づき、ワークロードコンテナコンフィギュレータ76によって修正される。リード/ライト動作に関連する例示的な動作パラメータは、リード/ライト動作のためのメモリバッファサイズ及びリード/ライト動作に際して転送されるデータブロックのサイズを含む。ファイルシステム動作に関連する例示的な動作パラメータは、各ノード16のメモリ内に記憶されるファイルシステム記録の数、及び、ファイルシステムのための要求を処理するために割り振られる各ノード16の処理スレッドの数の少なくとも一方を備える。ソーティング動作に関連する例示的な動作パラメータは、ソーティング動作を行うときにマージするデータストリームの数を含む。ワークロードコンテナの他の適切な動作パラメータが提供されてもよい。
例示的なブート時間パラメータは、図10及び図36〜38に関してここに述べられており、例えば、ワークロードの実行に際して有効にされるノード16の処理コアの数、及び、ノード16のオペレーティングシステム44によってアクセス可能なノード16のシステムメモリの量を含む。ブート時間パラメータは、図10に示されここに述べられている選択可能データ(例えば入力及びフィールド)のユーザ選択に基づき、ノードコンフィギュレータ72によって選択され修正される。他の適切なブート時間パラメータが提供されてもよい。例示的なハードウェアコンフィギュレーションパラメータは、図8,9及び図43〜46に関してここに述べられており、例えば、ノード16のプロセッサ40の数、ノード16のシステムメモリの量、及び、ノード16のハードディスクスペースの量の少なくとも1つを含む。ハードウェアコンフィギュレーションパラメータは、図8及び図9に示されここに述べられている選択可能データ(例えば入力及びフィールド)のユーザ選択に基づき、ノードコンフィギュレータ72によって選択され修正される。他の適切なハードウェアコンフィギュレーションパラメータが提供されてもよい。
図48を参照すると、複数の利用可能なコンフィギュレーションからクラウドコンピューティングシステム10の複数ノードのクラスタ14の適切なコンフィギュレーションを選択するために、図1及び図3のコンフィギュレータ22を含む1つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図860が示されている。図48の説明全体に対して図1〜3が参照される。図48に図示された実施形態では、コンフィギュレータ22は、ノードクラスタ14の実際の性能が所望の性能以上の場合に、コンフィギュレーションパラメータの適切なセットのサーチを中止する。他の実施形態では、コンフィギュレータ22は、所望の性能特性及び/又は他の適切なファクタ(例えば使用コスト)に基づきベストマッチであるコンフィギュレーションパラメータのセットを選択する前に、識別されたコンフィギュレーションパラメータの各セットを試行する。
ブロック862では、コンフィギュレータ22は、ここに述べられるように、ユーザインタフェース200を介して受信したユーザ入力に基づくワークロード実行に関連するコンフィギュレーションパラメータの1つ以上のセット及び所望の性能特性を受信する。ブロック864では、コンフィギュレータ22は、複数ノードのクラスタ14を割り振り、ブロック862で受信したコンフィギュレーションパラメータのセットで複数ノードのクラスタ14をコンフィギュアする。一実施形態では、コンフィギュレータ22は、ここに述べられるように、ブロック864でコンフィギュレーションパラメータを識別する1つ以上のネットワークコンフィギュレーションファイル28をノード16に展開する。コンフィギュレータ22は、ブロック866で1つ以上のモニタリングツール(例えばモジュール214を介してユーザによって選択される)を各ノード16上でインストール及び/又はコンフィギュアし、ブロック868で複数ノードのクラスタ14によるワークロードの実行を開始する。ワークロードの実行の場合又はワークロードの実行の間、コンフィギュレータ22は、ブロック870で、各ノード16の1つ以上のモニタリングツールによって生成された性能データを集約する。ここに述べられるように、ブロック872では、集約された性能データに基づき、コンフィギュレータ22は、ブロック862で識別された所望の性能特性を、集約された性能データで識別されたクラスタ14の実際の性能特性と比較する。ブロック874では、コンフィギュレータ22は、ここに述べられるように、性能特性が所望の性能特性と比べて適切なものであるかどうか(例えば許容範囲内にあるかどうか、適切なスコア値を有しているかどうか等)を判定する。ブロック874で肯定(yes)である場合には、コンフィギュレータは、ブロック864で最後に実装された現在のコンフィギュレーションパラメータをワークロードの将来の実行のために保存する。ブロック874で性能特性が所望のものでなく且つブロック876でコンフィギュレーションパラメータの利用可能な種々のセットが使い尽くされていない場合には、コンフィギュレータ22は、ブロック878でコンフィギュレーションパラメータの異なるセットを選択し、ブロック864〜876の機能を繰り返す。例えば、コンフィギュレータ22は、ここに述べられるように、ブロック862で識別されたコンフィギュレーションパラメータの異なるセットを実装してよく、あるいはコンフィギュレータ22によって提供されるパラメータの増加的に調節されたセットを実装してよい。プロセスは、コンフィギュレータ22がブロック874でコンフィギュレーションパラメータの適切なセットを見出すまで又はコンフィギュレーションパラメータオプションがブロック876で使い尽くされるまで繰り返される。コンフィギュレーションオプションがブロック876で使い尽くされた場合には、コンフィギュレータ22は、最良の性能特性及び他の識別された特性(例えば使用コスト)を提供したコンフィギュレーションパラメータのセットをブロック880で選択する。
数ある利益のなかでも、この方法及びシステムは、ユーザインタフェースを介しての、複数ノードのクラスタ、ワークロード、ワークロードコンテナ及びネットワークコンフィギュレーションの選択、コンフィギュレーション及び展開を可能にし得る。加えて、この方法及びシステムは、クラウドコンフィギュレーションパラメータの制御及び調節を可能にするので、これにより、ノード、ネットワーク、ワークロードコンテナ及び/又はワークロードの変化しつつある特性下でのクラウドコンピューティングシステムの性能解析が可能になる。他の利益は当業者によって認識されるはずである。
好ましい設計を有しているものとして本発明が述べられてきたが、本発明は、本開示の精神及び範囲内で更に修正され得る。従って、本出願は、本発明の一般的原理を用いる本発明の任意の改変、使用又は適応を網羅することを意図されている。更に、本出願は、本開示が属する技術の分野において既知の又は慣習となっている慣例に含まれるような本開示からの逸脱であって添付の特許請求の範囲の限定に包含される本開示からの逸脱を網羅することが意図されている。