(57)【特許請求の範囲】
【請求項１】
１つ以上のコンピューティングデバイスによって実施されるコンピューティングコンフィギュレーション方法であって、
ワークロードの処理が前記複数ノードのクラスタに分散されるように、ユーザインタフェースを介して受信した複数のユーザ選択に基づいて、コンピューティングシステムのための複数ノードのクラスタをノードコンフィギュレータがコンフィギュアすることを備え、
前記コンフィギュアすることは、
前記コンピューティングシステムのための前記複数ノードのクラスタを複数の利用可能ノードから選択することと、
各ノードによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを備えるワークロードコンテナモジュールを、前記複数ノードのクラスタの各ノード上での動作のために選択することと、
前記複数ノードのクラスタ上での前記ワークロードコンテナモジュールでの実行のためのワークロードを選択することと、を含む、
コンピューティングコンフィギュレーション方法。
【請求項２】
前記ユーザインタフェースを介して受信したユーザ入力に基づき前記ワークロードコンテナモジュールの少なくとも１つの動作パラメータを修正することを更に備え、前記少なくとも１つの動作パラメータは、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている請求項１の方法。
【請求項３】
前記ワークロードコンテナモジュールは複数の利用可能ワークロードコンテナモジュールから選択される請求項１の方法。
【請求項４】
前記選択されたワークロードコンテナモジュールは、前記１つ以上のコンピューティングデバイスから離れた位置にあるメモリ上に記憶されたカスタムワークロードコンテナモジュールであり、前記カスタムワークロードコンテナモジュールは、前記ワークロードの実行を連携させるように動作する複数のユーザ定義の命令を含み、前記コンフィギュアすることは、前記カスタムワークロードコンテナモジュールを前記複数ノードのクラスタの各ノードへとロードすることを更に備える請求項１の方法。
【請求項５】
前記ユーザインタフェースを提供することを更に備え、前記ユーザインタフェースは選択可能ノードデータ、選択可能ワークロードコンテナデータ及び選択可能ワークロードデータを提示し、前記複数ノードのクラスタを選択することは、前記選択可能ノードデータのユーザ選択に基づき、前記ワークロードコンテナモジュールを選択することは、前記選択可能ワークロードコンテナデータのユーザ選択に基づき、前記ワークロードを選択することは、前記選択可能ワークロードデータのユーザ選択に基づく請求項１の方法。
【請求項６】
前記複数ノードのクラスタは通信ネットワークに接続されており、前記方法は、前記選択されたワークロードの実行に際して前記通信ネットワークの性能を制限するために、前記ユーザインタフェースを介して受信したユーザ入力に基づき少なくとも１つの通信ネットワークパラメータを調節することを更に備える請求項１の方法。
【請求項７】
前記コンフィギュアすることは、前記ユーザインタフェースを介して受信したユーザ選択に基づき、前記複数ノードのクラスタの各ノードから収集されるべきデータの複数のタイプからデータの少なくとも１つのタイプを選択することを備え、前記方法は、前記複数ノードのクラスタの各ノードから前記少なくとも１つのタイプのデータを収集することを更に備える請求項１の方法。
【請求項８】
少なくとも１つのプロセッサを備えるコンピューティングコンフィギュレーションシステムであって、
前記少なくとも１つのプロセッサは、
ワークロードの処理を共有するように動作する複数ノードのクラスタを、コンピューティングシステムのための複数の利用可能ノードから選択するように動作するノードコンフィギュレータと、
各ノードによって実行されるときに前記ワークロードの実行を連携させるように動作する選択可能コードモジュールを備えるワークロードコンテナモジュールを、前記複数ノードのクラスタの各ノード上での動作のために選択するように動作するワークロードコンテナコンフィギュレータと、
前記複数ノードのクラスタ上での前記選択されたワークロードコンテナモジュールでの実行のためのワークロードを選択するように動作するワークロードコンフィギュレータと、を備えるコンピューティングコンフィギュレーションシステム。
【請求項９】
前記ワークロードコンテナコンフィギュレータは、ユーザインタフェースを介して受信したユーザ入力に基づき前記ワークロードコンテナモジュールの少なくとも１つの動作パラメータを修正するように更に動作し、前記少なくとも１つの動作パラメータは、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている請求項８のシステム。
【請求項１０】
前記ワークロードコンテナコンフィギュレータは、前記ワークロードコンテナモジュールを複数の利用可能ワークロードコンテナモジュールから選択する請求項８のシステム。
【請求項１１】
前記選択されたワークロードコンテナモジュールは、前記コンピューティングコンフィギュレーションシステムから離れた位置にあるメモリ上に記憶されたカスタムワークロードコンテナモジュールであり、前記カスタムワークロードコンテナモジュールは、前記ワークロードの実行を連携させるための複数のユーザ定義の命令を有するコンフィギュレーションファイルを備え、前記ワークロードコンテナコンフィギュレータは、前記遠隔のメモリに記憶された前記カスタムワークロードコンテナモジュールを前記複数ノードのクラスタの各ノードへとロードするように更に動作する請求項８のシステム。
【請求項１２】
前記複数ノードのクラスタは通信ネットワークを介して相互接続されており、前記システムは、前記選択されたワークロードの実行に際して前記通信ネットワークの性能を修正するために前記コンピューティングシステムの少なくとも１つの通信ネットワークパラメータを調節するように動作するネットワークコンフィギュレータを更に備える請求項８のシステム。
【請求項１３】
前記ワークロードコンフィギュレータは、実際のワークロード及び合成テストワークロードの少なくとも一方から前記ワークロードを選択し、前記実際のワークロードは、前記コンピューティングコンフィギュレーションシステムによってアクセス可能なメモリ内に記憶されており、前記合成テストワークロードは、ユーザ定義のワークロードパラメータに基づき前記コンピューティングコンフィギュレーションシステムによって生成される請求項８のシステム。
【請求項１４】
前記複数ノードのクラスタの各ノードから前記ワークロードの実行に関連する性能データを収集すると共に各ノードから収集された前記性能データを表す統計的グラフを生成するように動作するデータアグリゲータを更に備える請求項８のシステム。
【請求項１５】
前記少なくとも１つのプロセッサによって実行されるときにディスプレイ上にグラフィカルユーザインタフェースを提供することを前記少なくとも１つのプロセッサに実行させる実行可能命令を含むメモリを更に備え、前記グラフィカルユーザインタフェースは、前記ノードコンフィギュレータ、前記ワークロードコンテナコンフィギュレータ及び前記ワークロードコンフィギュレータを表すデータを提示する請求項８のシステム。
【請求項１６】
１つ以上のコンピューティングデバイスによって実施されるコンピューティングシステムをコンフィギュアする方法であって、
前記方法は、ワークロードコンテナコンフィギュレータが、ユーザインタフェースを介して受信したユーザ選択に基づき、前記コンピューティングシステムの複数ノードのクラスタの各ノード上での動作のための複数の利用可能ワークロードコンテナモジュールからワークロードコンテナモジュールを選択することを備え、前記選択されたワークロードコンテナモジュールは、各ノードによって実行されるときに前記複数ノードのクラスタ上でのワークロードの実行を連携させるように動作する選択可能コードモジュールを備え、
前記方法は、前記ワークロードの処理が前記複数ノードのクラスタに分散されるように前記ワークロードを実行するために、前記複数ノードのクラスタの各ノードを、前記選択されたワークロードコンテナモジュールを用いてコンフィギュアすることを更に備える方法。
【請求項１７】
前記１つ以上のコンピューティングデバイスは、前記コンピューティングシステムの制御サーバを備え、前記複数の利用可能ワークロードコンテナモジュールは、前記コンピューティングシステムから離れた位置にあるメモリ上に記憶されたカスタムワークロードコンテナモジュールを含み、前記カスタムワークロードコンテナモジュールは、前記ワークロードの実行を連携させるための複数のユーザ定義の命令を含む請求項１６の方法。
【請求項１８】
前記ユーザインタフェースを提供することを更に備え、前記ユーザインタフェースは選択可能ワークロードコンテナデータを提示し、前記ワークロードコンテナモジュールを選択することは、前記選択可能ワークロードコンテナデータのユーザ選択に基づく請求項１６の方法。
【請求項１９】
前記ユーザインタフェースを介して受信したユーザ入力に基づき各ノードのための前記選択されたワークロードコンテナモジュールの動作パラメータを修正することを更に備え、前記動作パラメータは、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている請求項１６の方法。
【請求項２０】
前記コンフィギュアすることは、前記選択されたワークロードコンテナモジュールを前記複数ノードのクラスタの各ノードへとインストールすることと、前記複数ノードのクラスタの各ノードが前記ワークロードの少なくとも１つの処理スレッドを処理するように前記複数ノードのクラスタ上での前記選択されたワークロードコンテナモジュールでの前記ワークロードの実行を開始することと、を備える請求項１６の方法。
【請求項２１】
少なくとも１つのプロセッサを備えるコンピューティングコンフィギュレーションシステムであって、
前記少なくとも１つのプロセッサは、ワークロードコンテナコンフィギュレータと、ノードコンフィギュレータとを備え、
前記ワークロードコンテナコンフィギュレータは、ユーザ入力を受信すると共に前記ユーザ入力に基づき複数の利用可能ワークロードコンテナモジュールからワークロードコンテナモジュールを選択するように動作し、前記選択されたワークロードコンテナモジュールは、コンピューティングシステムの複数ノードのクラスタによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを備え、
前記ノードコンフィギュレータは、前記ワークロードの処理が前記複数ノードのクラスタに分散されるように前記ワークロードを実行するために、前記コンピューティングシステムの前記複数ノードのクラスタの各ノードを、前記選択されたワークロードコンテナモジュールを用いてコンフィギュアするように動作するコンピューティングコンフィギュレーションシステム。
【請求項２２】
前記複数の利用可能ワークロードコンテナモジュールは、前記コンピューティングコンフィギュレーションシステムから離れた位置にあるメモリ上に記憶されたカスタムワークロードコンテナモジュールを備え、前記カスタムワークロードコンテナモジュールは、前記ワークロードの実行を連携させるように動作する複数のユーザ定義の命令を含むコンフィギュレーションファイルを備える請求項２１のシステム。
【請求項２３】
前記少なくとも１つのプロセッサによって実行されるときにディスプレイ上にグラフィカルユーザインタフェースを提供することを前記少なくとも１つのプロセッサに実行させる実行可能命令を含むメモリを更に備え、前記グラフィカルユーザインタフェースは、前記ワークロードコンテナコンフィギュレータ及び前記ノードコンフィギュレータを表すデータを提示する請求項２１のシステム。
【請求項２４】
前記ワークロードコンテナコンフィギュレータは、ユーザインタフェースを介して受信したユーザ入力に基づき前記選択されたワークロードコンテナモジュールの動作パラメータを修正するように更に動作し、前記動作パラメータは、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている請求項２１のシステム。
【請求項２５】
前記ノードコンフィギュレータは、前記選択されたワークロードコンテナモジュールを前記複数ノードのクラスタの各ノードへとインストールすると共に前記複数ノードのクラスタの各ノードが前記ワークロードの少なくとも１つの処理スレッドを処理するように前記複数ノードのクラスタ上での前記選択されたワークロードコンテナモジュールでの前記ワークロードの実行を開始するように更に動作する請求項２１のシステム。
【請求項２６】
１つ以上のコンピューティングデバイスによって実施されるコンピューティングシステムをコンフィギュアする方法であって、
ノードコンフィギュレータが、前記コンピューティングシステムのための複数の利用可能ノードからワークロードの処理を共有するように動作する複数ノードのクラスタを選択することと、
ユーザインタフェースを介して受信したユーザ入力に基づき前記複数ノードのクラスタの各ノードの同じワークロードコンテナモジュールの動作パラメータを修正することと、を備え、前記ワークロードコンテナモジュールは、前記複数ノードのクラスタの各ノードによって実行されるときに前記動作パラメータに基づき前記ワークロードの実行を前記複数ノードのクラスタで連携させるように動作するコードモジュールを備え、前記動作パラメータは、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている方法。
【請求項２７】
前記ユーザインタフェースを提供することを更に備え、前記ユーザインタフェースは選択可能ワークロードコンテナデータを提示し、前記ワークロードコンテナモジュールの前記動作パラメータを修正することは、前記選択可能ワークロードコンテナデータのユーザ選択に基づく請求項２６の方法。
【請求項２８】
前記リード／ライト動作に関連する前記動作パラメータは、前記リード／ライト動作のためのメモリバッファサイズ及び前記リード／ライト動作に際して転送されるデータブロックのサイズの少なくとも一方を備える請求項２６の方法。
【請求項２９】
前記ファイルシステム動作に関連する前記動作パラメータは、各ノードのメモリ内に記憶されるファイルシステム記録の数及びファイルシステムに対する要求を処理するために割り振られる各ノードの処理スレッドの数の少なくとも一方を備える請求項２６の方法。
【請求項３０】
前記ソーティング動作に関連する前記動作パラメータは、前記ソーティング動作を行うときにマージするデータストリームの数を備える請求項２６の方法。
【請求項３１】
前記複数ノードのクラスタは通信ネットワークに接続されており、前記方法は、前記ワークロードの実行に際して前記通信ネットワークの性能を制限するために、前記ユーザインタフェースを介して受信したユーザ入力に基づき少なくとも１つの通信ネットワークパラメータを調節することを更に備える請求項２６の方法。
【請求項３２】
少なくとも１つのプロセッサを備えるコンピューティングコンフィギュレーションシステムであって、
前記少なくとも１つのプロセッサは、ノードコンフィギュレータと、ワークロードコンテナコンフィギュレータとを備え、
前記ノードコンフィギュレータは、コンピューティングシステムのための複数の利用可能ノードから複数ノードのクラスタを選択するように動作し、前記複数ノードのクラスタはワークロードの処理を共有するように動作し、
前記ワークロードコンテナコンフィギュレータは、ユーザインタフェースを介して受信したユーザ入力に基づき前記複数ノードのクラスタの各ノードの同じワークロードコンテナモジュールの動作パラメータを修正するように動作し、前記ワークロードコンテナモジュールは、前記複数ノードのクラスタの各ノードによって実行されるときに前記動作パラメータに基づき前記ワークロードの実行を前記複数ノードのクラスタで連携させるように動作するコードモジュールを備え、前記動作パラメータは、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられているコンピューティングコンフィギュレーションシステム。
【請求項３３】
前記リード／ライト動作に関連する前記動作パラメータは、前記リード／ライト動作のためのメモリバッファサイズ及び前記リード／ライト動作に際して転送されるデータブロックのサイズの少なくとも一方を備える請求項３２のシステム。
【請求項３４】
前記ファイルシステム動作に関連する前記動作パラメータは、各ノードのメモリ内に記憶されるファイルシステム記録の数及びファイルシステムに対する要求を処理するために割り振られる各ノードの処理スレッドの数の少なくとも一方を備える請求項３２のシステム。
【請求項３５】
前記ソーティング動作に関連する前記動作パラメータは、前記ソーティング動作を行うときにマージするデータストリームの数を備える請求項３２のシステム。
【請求項３６】
前記複数ノードのクラスタは通信ネットワークに接続されており、前記システムは、前記ワークロードの実行に際して前記通信ネットワークの性能を制限するために、前記ユーザインタフェースを介して受信したユーザ入力に基づき少なくとも１つの通信ネットワークパラメータを調節するように動作するネットワークコンフィギュレータを更に備える請求項３２のシステム。
【請求項３７】
前記ユーザインタフェースはグラフィカルユーザインタフェースを備え、前記システムは、少なくとも１つのプロセッサと、前記少なくとも１つのプロセッサによって実行されるときにディスプレイ上に前記グラフィカルユーザインタフェースを提供することを前記少なくとも１つのプロセッサに実行させる実行可能命令を含むメモリと、を更に備え、前記グラフィカルユーザインタフェースは、前記ノードコンフィギュレータ及び前記ワークロードコンテナコンフィギュレータを表すデータを提示する請求項３２のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してコンピューティングシステムの分野に関し、より特定的にはクラウドコンピューティングシステムをコンフィギュアするための方法及びシステム、並びに、そのクラウドコンピューティングシステムの性能を解析するための方法及びシステムに関する。
【背景技術】
【０００２】
クラウドコンピューティングは、例えば、インターネット等のネットワークを介してのホストサービスの受け渡し(delivery)に関与する。クラウドコンピューティングシステムは、エンドユーザへのサービスとしてコンピューティング能力及び記憶容量の受け渡しを提供する。クラウドコンピューティングシステムは、分散型通信ネットワーク上で動作する複数のサーバ、即ち複数の「ノード」を含み、各ノードはローカル処理能力及びメモリを含む。例えば、クラウドコンピューティングシステムの各ノードは、コンピューティング能力を提供するための少なくとも１つの処理デバイスと、記憶容量を提供するためのメモリと、を含む。ユーザは、アプリケーションをローカル的に実行し又はデータをローカル的に記憶するよりもむしろ、クラウド上、即ち複数ノードの「クラスタ」上でアプリケーションを遠隔的に実行し又はデータを遠隔的に記憶することができる。エンドユーザは、例えばローカルコンピュータ上のウェブブラウザその他の何らかのソフトウェアアプリケーションを介してクラウドベースのアプリケーションにアクセスすることができる一方で、そのソフトウェアアプリケーション及び／又はそのソフトウェアアプリケーションに関連するデータは、遠隔位置にあるクラウドノード上で記憶され且つ／又は実行される。クラウドコンピューティングリソースは、典型的には、要求に応じてエンドユーザに割り振られ(allocated)、これには、エンドユーザによって利用されたリソースの実際の量に対応するクラウドコンピューティングシステムコストが伴う。
【０００３】
コンピューティングタスクは、ワークロードの形態で、クラウドコンピューティングシステムの複数のノードに分散される。ノードは、ワークロードの処理を共有するように動作する。ワークロード（「カーネル」とも称する）は、複数ノードのクラウド上で行われ実行されるコンピューティングジョブ又はタスクを含む。ワークロードは、ソフトウェアコード又はファームウェアコードの集まり及び任意の必要なデータを備えており、任意のアプリケーション若しくはプログラム又は複数ノードのクラスタ上で実行されるアプリケーション若しくはプログラムの一部を含む。例えば、１つの例示的なワークロードは、１つ以上のアルゴリズムを実装するアプリケーションである。例示的なアルゴリズムは、例えば、データセットをクラスタ化し、ソーティングし、分類し又はフィルタリングすることを含む。他の例示的なワークロードは、コンピューティングサービスをエンドユーザに提供するために実行されるサービス指向型アプリケーションを含む。幾つかの形態では、ワークロードは、複製されて複数のノード上で一斉に実行される単一のアプリケーションを含む。ロードバランサは、ワークロードに関連付けられた処理ロードを複数ノードが共有するように、ワークロードと共に実行されるべき要求を複数ノードのクラスタに分散させる。複数ノードのクラスタは、ワークロードの実行の結果について協働して最終結果を生成する。
【０００４】
ワークロードコンテナは、ワークロードコンテナモジュール（例えばソフトウェアコード又はファームウェアコード）を実行しているノードの１つ以上のプロセッサを備えており、各ノード上で動作する。ワークロードコンテナは、複数ノードのクラスタ上でのワークロードの実行を開始し且つ指揮するソフトウェア環境を提供する、ワークロードのための実行フレームワークである。ワークロードコンテナは、典型的には、複数ノードのクラスタ上の特定のクラスのワークロードのための実行フレームワークを提供する。ワークロードコンテナは、関連ノードが、クラウドのあるノードとして、そのノードがワークロードを実行し、ワークロード実行の結果をクラウドの他のノードと共有し、且つ、クラウドの他のノードと協働及び通信するように動作するように、関連ノードをコンフィギュアする。１つの形態では、ワークロードコンテナは、他のノードとインタフェースすると共に関連ノードの他のアプリケーション及びハードウェアともインタフェースするためのアプリケーションプログラムインタフェース（ＡＰＩｓ）又はＸＭＬベースのインタフェースを含む。
【０００５】
１つの例示的なワークロードコンテナは、マップリデュース(map-reduce)ワークロードのためのマップリデュースフレームワーク及び分散型ファイルシステム（ＨＤＦＳ）を提供するＪＡＶＡ（登録商標）ベースのアパッチハドゥープ(Apache Hadoop)である。ハドゥープワークロードコンテナを伴って動作する複数ノードのクラスタは、典型的には、マスタノードと、複数のワーカノードと、を含む。ハドゥープワークロードコンテナは、各ノードへのマスタ状態又はワーカ状態の割り当て(assignment)を連携させると共に、各ノードにそれがクラウド上で動作していることを通知する。マスタノードは、ジョブ（即ちワークロード）の開始及び完了並びにファイルシステムメタデータを追跡する。マップリデュースフレームワークの「マップ」段階においては、１つのタスク、即ち１つのワークロードは、複数の部分（即ち、１つ以上の処理スレッドの複数のグループ）へと区分化され、そのワークロードの複数部分は、それら処理スレッド及び関連入力データを処理する複数のワーカノードへと分散させられる。「リデュース」段階においては、各ワーカノードからの出力が収集されて結合され、最終的な結果又は回答が生成される。ハドゥープの分散型ファイルシステム（ＨＤＦＳ）は、データを記憶し、複数のワーカノード間でデータを通信するために利用される。ＨＤＦＳファイルシステムは、データ複製をサポートして、データ及びファイルのコピーを複数記憶することによってデータ信頼性の尤度を高める。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のクラウドコンピューティングプラットフォームにおいて複数ノードのクラスタをセットアップし又はコンフィギュアすることは、険しい学習曲線を必要とする複雑な処理である。クラウドソフトウェア及びワークロードは、各ノードに個別に展開される必要があり、また、いかなるコンフィギュレーション変化であっても各ノードに個別に展開される必要がある。複数ノードのクラスタの性能を解析しクラウドセットアップを最適化することは、複数の独立変数を伴い、多くの場合に時間のかかるものであり、特定のアプリケーションをモニタし且つ解析するのに適したその場その場での(ad-hoc)インタフェースを必要とする。特に、クラウドのオペレータ又はエンジニアは、ワークロードがどのように実行されているかについてのデータを獲得し、ワークロードの実際の結果を獲得するために、コマンドを作成する必要がある。加えて、そのようなデータは、目下のシステムコンフィギュレーションに特有なフォーマットの形態にあり、当該データは、クラウドのオペレータ又はエンジニアによって、性能解析に適した形態に統一される必要もある。クラウドのオペレータ又はエンジニアにとっては、クラウドメカニズム、任意のネットワーキング問題、システム管理関連のタスク、並びに、利用可能な性能解析ツールの展開及びデータフォーマットの具体的詳細について学習することが要求される。更に、ワークロードの性能を複数ノードのクラスタ上でモニタし解析することは、複雑であり、時間もかかり、特定のクラウドコンフィギュレーションに依存する。クラウドのオペレータ又はエンジニアは、特定のクラウドシステムのためのコンフィギュレーション及びハードウェア情報の全ての内情に通じているとは限らず、このことが正確な性能解析を困難にしている。
【０００７】
今日では、例えばアマゾンウェブサービス(Amazon Web Services)（ＡＷＳ）及びオープンスタック(OpenStack)を含め、いくつかのクラウドコンピューティングプラットフォームが利用可能である。アマゾンのＡＷＳは、エラスティックコンピュートクラウド(Elastic Compute Cloud)（ＥＣ２）を含み、クラウドコンピューティングシステムとしての使用のために、複数ノード（サーバ）のクラスタをエンドユーザに貸し出す。ＡＷＳは、ユーザが複数ノードのクラスタを割り振ること及び複数ノードのそのクラスタ上でワークロードを実行することを許可している。ＡＷＳは、特定のハードウェアコンフィギュレーション及びソフトウェアコンフィギュレーションを要求する等の種々の制約で、ユーザがアマゾン提供のサーバハードウェア上でのみワークロードを実行するように制限している。オープンスタックは、ユーザがユーザ提供のハードウェア上で複数ノードのクラスタを構築し管理することを許可している。ＡＷＳ及びオープンスタックには、ワークロード及びワークロードコンテナソフトウェアを迅速にコンフィギュアして各ノードに展開し、ネットワークパラメータを修正し、またクラスタの全ノードからの性能データを集約するためのメカニズムが欠けている。
【０００８】
特定のローカルプロセッサの性能をテストする既知の方法は、そのローカルプロセッサによって実行可能なユーザ指定のパラメータに基づく合成バイナリコードを作成することを含む。しかし、バイナリ合成コードの作成には、ユーザがユーザ指定のパラメータをハードコード化することが必要であり、かなりの展開時間を要し、対象となるプロセッサのアーキテクチャに関する予備知識も必要である。そのようなハードコード化された合成コードは、対象となるプロセッサの特定の命令セットアーキテクチャ(instruction set architecture)（ＩＳＡ）（例えばｘ８６）や特定のマイクロアーキテクチャを対象として書かれていなければならない。命令セットアーキテクチャとは、データのタイプ／フォーマット、命令、データブロックサイズ、処理レジスタ、メモリアドレッシングモード、メモリアーキテクチャ、割り込み及び例外の扱い、Ｉ／Ｏ等を識別するコンピュータアーキテクチャのコンポーネントのことである。マイクロアーキテクチャとは、データパス、データ処理要素（例えば論理ゲート、演算論理ユニット（ＡＬＵｓ）等）、データ記憶要素（例えばレジスタ、キャッシュ等）などを識別し、また、プロセッサがどのように命令セットアーキテクチャを実装するのかを識別するコンピュータアーキテクチャのコンポーネントのことである。従って、合成コードは、他の１つ以上のプロセッサの種々の命令セットアーキテクチャや異なるマイクロアーキテクチャを実行するためには、修正された又は新たなハードコード化パラメータ及び命令で再設計される必要がある。このため、そのようなハードコード化された合成コードは、クラウドコンピューティングシステムの複数のノードをテストするのには適していない。
【０００９】
ローカルプロセッサの性能をテストする他の方法は、標準性能評価法人(Standard Performance Evaluation Corporation)（ＳＰＥＣ）によって提供されるワークロード等の業界標準のワークロード又はトレースを実行して、プロセッサの性能を性能ベンチマークと比較するものである。しかし、業界標準のワークロードを完全に実行するためには、多くの場合に多大なシミュレーション時間が必要である。関連するより小さなトレースをプロセッサによる実行のためにワークロードから抽出する場合には、シミュレーション時間が短縮されるかもしれないが、関連するトレースを識別し抽出するための余分な技術的努力が必要とされる。更に、業界標準のワークロードの選択又はワークロードからのより小さなトレースの抽出は、１つ以上のプロセッサの異なるアーキテクチュラルコンフィギュレーションに対して繰り返されなければならない。
【００１０】
コンピューティング能力及び記憶容量をエンドユーザへのサービスとして受け渡す現行のクラウドシステムには、クラウドシステムの複数ノードのクラスタの各ノードのブート時間コンフィギュレーションを変更するメカニズムが欠けている。例えば、ブート時間コンフィギュレーション変更は、複数ノードのブート時間パラメータを修正するためにエンジニア又はプログラマによってクラウドの各ノード上へハードコード化される必要があり、多大な時間がかかり、また煩雑なものである。更に、エンジニアは、コンフィギュレーションコードを書くにあたり、複数ノードのクラスタのハードウェア及びコンピュータアーキテクチャに関する詳細な知識を有している必要がある。
【００１１】
コンピューティング能力及び記憶容量をエンドユーザへのサービスとして受け渡す典型的なクラウドシステムには、ユーザが複数ノードからなる割り振られたクラスタのネットワークコンフィギュレーションを特定すること及び修正することを可能にするメカニズムが欠けている。多くのクラウドシステムでは、ユーザは、汎用タイプのノードを要求することができるだけであり、ネットワークトポロジ、つまりノードの物理的及び論理的なネットワーク接続性に関する直接制御や要求したノードのネットワーク性能特性に関する直接制御を行うことが不可能であり、可能であったとしてもごく僅かである。例えば、アマゾンＡＷＳは、ユーザが国内又は世界のある同じ地域（例えば米国東部又は西部、欧州、等）に物理的に位置しているノードを選択することを可能にしているが、それらノードのネットワーク接続性やそれらノードのネットワーク性能特性を選択することができないし、修正することもできない。更に、選択されたノードの幾つかは、国内の同じ地域あるいはましてや同じデータセンタ内にあるにもかかわらず、他の選択されたノードから物理的に遠く離れている場合がある。例えば、クラウドシステムによって割り振られたノードは、分散型データセンタ内で物理的に遠く離れた別のラック上にあることがあり、結果としてノード間のネットワーク性能が低下したり一貫性がなくなったりしてしまう。
【００１２】
同様に、典型的なクラウドシステムでは、ノードクラスタの実際のハードウェアリソースに対するエンドユーザによる制御が制限されており、あるいは不可能である。例えば、ノードを割り振る場合、ユーザは、汎用タイプのノードを要求することができるだけである。各利用可能なノードのタイプは、ノードのＣＰＵの数、利用可能なメモリ、利用可能なディスクスペース、及び、ノードが位置する国内又は世界の地域によって分類されることがある。しかし、割り振られたノードは、選択されたノードタイプとして的確なハードウェア特性を有していないかもしれない。選択可能なノードタイプは粗い分類である。例えば、ノードタイプは、システムメモリ及びディスクスペースの量並びにノードの処理コアの数に応じて、小型、中型、大型及び超大型であるものを含み得る。しかし、同じ汎用タイプとして選択されたノードであっても、システムにより割り振られたノードのコンピューティング能力及び記憶容量が変化することがある。例えば、利用可能なメモリ及びディスクスペース並びに動作周波数や他の特性がばらつき得るし、即ちそれらの値のある一定の範囲内に収まることになろう。例えば、「中型」ノードは、１５００ＭＢ〜５０００ＭＢのシステムメモリ及び２００ＧＢ〜４００ＧＢの記憶容量を有する任意のノードを含み得る。従って、ユーザは、割り振られたノードの実際のハードウェアコンフィギュレーションに通じているとは限らない。更に、同数のプロセッサ及び同じメモリ／ディスクスペースを有するノード間でさえも、これらのノードの他のハードウェア特性が変化することがある。例えば、同様のノードであっても、ノードの動作周波数、キャッシュのサイズ、３２ビットアーキテクチャであるのか６４ビットアーキテクチャであるのか、ノードの製造業者、命令セットアーキテクチャ等に基づいてばらつきが生じ、ユーザは、選択されたノードのこれらの特性について制御することができない。
【００１３】
多くの場合、ユーザは、ユーザのアプリケーション又はワークロードに必要な具体的なハードウェアリソースについて明確に理解していない。ノードクラスタをセットアップしてワークロードを実行することが難しい結果、ユーザが異なるハードウェアコンフィギュレーションを試す機会は限られている。このことは、割り振られたノードの実際のハードウェアリソースに関するユーザの知識が欠如していることと相まって、しばしば結果として、利用下にあるハードウェアリソースに対する不必要な費用をユーザにもたらす。ＣＰＵ、メモリ及びディスク並びに単一の物理的処理マシンのネットワーク利用に関する測定が可能な種々のモニタリングツールが利用可能である。しかし、現行のクラウドシステムは、ユーザがこれらのモニタリングツールをクラスタの複数ノードに展開してハードウェア使用量をモニタすることを可能にするメカニズムを提供していない。従って、ユーザは、ワークロード実行に際しての実際のハードウェア利用を知ることができない。最も一般的なクラウドサービスは、ユーザによって要求され使用されたハードウェアリソースの、ワークロードを実行している間の費用に関する基本情報を提供することができる会計メカニズムを用意している。しかし、そのようなメカニズムは、要求されたハードウェアリソースのコストに関する基本情報を提供するだけであるから、ワークロード実行に際して使用された実際のハードウェアリソースを識別しない。
【００１４】
多くのクラウドシステムでは、ユーザがノードクラスタのコンフィギュレーションを調節し改善するために、限定された数のコンフィギュレーションパラメータしか利用できない。例えば、ユーザは、クラウドコンフィギュレーションを変更するために、異なる汎用ノードタイプの幾つかのノードを選択することができるだけであろう。更に、各コンフィギュレーション変更は、ユーザが、ノードクラスタのための幾つかのノードを選択すると共にこれらのノードでワークロードを開始することによって手動で実装されなければならない。コンフィギュレーション変更を適用し結果をテストするためのそのような手動労力は、費用がかかり、また時間を浪費する。更に、ノード性能をテストするのに利用可能な種々の性能モニタリングツールは、典型的には単一の物理的処理マシンに適しており、現行のクラウドシステムには、ユーザがこれらのモニタリングツールをクラスタの複数ノードに展開してノードクラスタの性能を異なるコンフィギュレーションでテストすることを可能にするメカニズムが欠けている。
【００１５】
そこで、任意サイズのノードクラスタ上でのワークロードの作成、展開、提供、実行及びデータ集約を自動化するための方法及びシステムが求められている。また、ワークロード及びワークロードコンテナソフトウェアを迅速にコンフィギュアして各ノードに展開すると共にクラスタの全ノードからのワークロード性能データを集約し解析する方法及びシステムが求められている。また、クラウドコンピューティングシステムの複数のノードの性能をテストすると共にモニタされた性能に基づくクラウドコンピューティングシステムの自動化されたコンフィギュレーションチューニングを提供する方法及びシステムが求められている。また、種々のコンピュータアーキテクチャを有するノードプロセッサをテストするためのクラウドコンピューティングシステム上での実行に対する再対象化可能な(retargetable)合成テストワークロードを作成する方法及びシステムが求められている。また、クラウドコンピューティングシステムの複数ノードのブート時間コンフィギュレーションの修正を提供する方法及びシステムが求められている。また、クラウドシステムの複数ノードのクラスタのネットワークコンフィギュレーションの修正を容易にする方法及びシステムが求められている。また、クラウドシステムの所望のネットワークトポロジ、所望のネットワーク性能及び／又は所望のハードウェア性能に基づく、複数ノードのクラスタのために適したノードの自動化された選択を可能にする方法及びシステムが求められている。また、ワークロード実行に際してのノードクラスタのハードウェアリソースの使用量を測定すると共にハードウェア使用量フィードバックをユーザに提供し及び／又はハードウェアリソースのモニタされた使用量に基づきノードクラスタコンフィギュレーションを自動的に修正する方法及びシステムが求められている。
【課題を解決するための手段】
【００１６】
本開示の例示的な実施形態では、１つ以上のコンピューティングデバイスによって実施されるコンピューティングコンフィギュレーション方法が提供される。この方法は、ユーザインタフェースを介して受信した複数のユーザ選択に基づき、コンピューティングシステムのための複数ノードのクラスタを、ワークロードの処理が複数ノードのクラスタに分散されるようにコンフィギュアすることを含む。コンフィギュアすることは、コンピューティングシステムのための複数ノードのクラスタを複数の利用可能ノードから選択することと、各ノードによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを備えるワークロードコンテナモジュールを、複数ノードのクラスタの各ノード上での動作のために選択することと、複数ノードのクラスタ上でのワークロードコンテナモジュールでの実行のためのワークロードを選択することと、を含む。
【００１７】
数ある利益のなかでも、幾つかの実施形態は、ユーザインタフェースを介しての、複数ノードのクラスタ、ワークロード、ワークロードコンテナ及びネットワークコンフィギュレーションの選択、コンフィギュレーション及び展開を可能にし得る。加えて、幾つかの実施形態は、コンフィギュレーションパラメータの制御及び調節を可能にし得るので、これにより、ノード、ネットワーク、ワークロードコンテナ及び／又はワークロードの変化しつつある特性下でのコンピューティングシステムの性能解析が可能になる。他の利益は当業者によって認識されるはずである。
【００１８】
本開示の他の例示的な実施形態では、複数ノードのクラスタをコンピューティングシステムのための複数の利用可能ノードから選択するように動作するノードコンフィギュレータを含むコンピューティングコンフィギュレーションシステムが提供される。複数ノードのクラスタは、ワークロードの処理を共有するように動作する。このシステムは、ワークロードコンテナモジュールを複数ノードのクラスタの各ノード上での動作のために選択するように動作するワークロードコンテナコンフィギュレータを更に含む。ワークロードコンテナモジュールは、各ノードによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。このシステムは、複数ノードのクラスタ上での選択されたワークロードコンテナモジュールでの実行のためのワークロードを選択するように動作するワークロードコンフィギュレータを更に含む。
【００１９】
本開示の更に他の例示的な実施形態においては、１つ以上のコンピューティングデバイスによって実施されるコンピューティングシステムをコンフィギュアする方法が提供される。この方法は、ユーザインタフェースを介して受信したユーザ選択に基づき、コンピューティングシステムの複数ノードのクラスタの各ノード上での動作のための複数の利用可能ワークロードコンテナモジュールからワークロードコンテナモジュールを選択することを含む。選択されたワークロードコンテナモジュールは、各ノードによって実行されるときに複数ノードのクラスタ上でのワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。この方法は、ワークロードの処理が複数ノードのクラスタに分散されるようにワークロードを実行するために複数ノードのクラスタの各ノードを選択されたワークロードコンテナモジュールでコンフィギュアすることを更に含む。
【００２０】
本開示の更なる他の例示的な実施形態においては、ユーザ入力を受信すると共にユーザ入力に基づき複数の利用可能ワークロードコンテナモジュールからワークロードコンテナモジュールを選択するように動作するワークロードコンテナモジュールを含むコンピューティングコンフィギュレーションシステムが提供される。選択されたワークロードコンテナモジュールは、コンピューティングシステムの複数ノードのクラスタによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。このシステムは、ワークロードの処理が複数ノードのクラスタに分散されるようにワークロードを実行するためにコンピューティングシステムの複数ノードのクラスタの各ノードを選択されたワークロードコンテナモジュールでコンフィギュアするように動作するノードコンフィギュレータを更に含む。
【００２１】
本開示の別の例示的な実施形態においては、１つ以上のコンピューティングデバイスによって実施されるコンピューティングシステムをコンフィギュアする方法が提供される。この方法は、コンピューティングシステムのための複数の利用可能ノードからワークロードの処理を共有するように動作する複数ノードのクラスタを選択することを含む。この方法は、ユーザインタフェースを介して受信したユーザ入力に基づき複数ノードのクラスタの各ノードの同じワークロードコンテナモジュールの動作パラメータを修正することを更に含む。ワークロードコンテナモジュールは、複数ノードのクラスタの各ノードによって実行されるときに動作パラメータに基づきワークロードの実行を複数ノードのクラスタで連携させるように動作するコードモジュールを含む。動作パラメータは、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている。
【００２２】
本開示の更に別の例示的な実施形態においては、コンピューティングシステムのための複数の利用可能ノードから複数ノードのクラスタを選択するように動作するノードコンフィギュレータを含むコンピューティングコンフィギュレーションシステムが提供される。複数ノードのクラスタはワークロードの処理を共有するように動作する。このシステムは、ユーザインタフェースを介して受信したユーザ入力に基づき複数ノードのクラスタの各ノードの同じワークロードコンテナモジュールの動作パラメータを修正するように動作するワークロードコンテナコンフィギュレータを更に含む。ワークロードコンテナモジュールは、複数ノードのクラスタの各ノードによって実行されるときに動作パラメータに基づきワークロードの実行を複数ノードのクラスタで連携させるように動作するコードモジュールを含む。動作パラメータは、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている。
【図面の簡単な説明】
【００２３】
本発明は、以下の図面と共に下記の説明を考慮してより容易に理解されるはずである。図面において同様の参照番号は同様の要素を示す。
【００２４】
【図１】図１は、通信ネットワーク上で動作する複数ノードのクラスタ、複数ノードのクラスタと通信する制御サーバ、及び、制御サーバのコンフィギュレータと、を含む実施形態によるクラウドコンピューティングシステムのブロック図である。
【００２５】
【図２】図２は、少なくとも１つのプロセッサ及びメモリを含む図１の複数ノードのクラスタの例示的なノードのブロック図である。
【００２６】
【図３】図３は、図１のクラウドコンピューティングシステムをコンフィギュアするように動作するコンフィギュレータを含む図１のクラウドコンピューティングシステムの例示的な制御サーバのブロック図である。
【００２７】
【図４】図４は、クラウドコンピューティングシステムをコンフィギュアするための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００２８】
【図５】図５は、クラウドコンピューティングシステムをコンフィギュアするための図３のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
【００２９】
【図６】図６は、クラウドコンピューティングシステムをコンフィギュアするための図３のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
【００３０】
【図７】図７は、ユーザアクセス認証を容易にするための認証及び設定ライブラリモジュールを含む、図３のコンフィギュレータによって提供される例示的なユーザインタフェースを示す図である。
【００３１】
【図８】図８は、図１の複数ノードのクラスタの選択を容易にするためのインスタンスタブを含む図７の例示的なユーザインタフェースのインスタンスモジュールを示す図である。
【００３２】
【図９】図９は、図１の複数ノードのクラスタのノードのためのノードタイプの選択を容易にするための図８のインスタンスモジュールのインスタンスタイプタブを示す図である。
【００３３】
【図１０】図１０は、図１の複数ノードのクラスタの１つ以上のノードのブート時間パラメータのコンフィギュレーションを容易にするための図８のインスタンスモジュールの他のインスタンス設定タブを示す図である。
【００３４】
【図１１】図１１は、図１の通信ネットワーク上でのネットワーク遅延の実装を容易にするための遅延タブを含む図７の例示的なユーザインタフェースのネットワークコンフィギュレーションモジュールのネットワーク設定ウィザードを示す図である。
【００３５】
【図１２】図１２は、図１の通信ネットワーク上でのパケット損失率の調節を容易にするための図１１のネットワークコンフィギュレーションモジュールのパケット損失タブを示す図である。
【００３６】
【図１３】図１３は、図１の通信ネットワーク上でのパケット重複率の調節を容易にするための図１１のネットワークコンフィギュレーションモジュールのパケット重複タブを示す図である。
【００３７】
【図１４】図１４は、図１の通信ネットワーク上でのパケット破損率の調節を容易にするための図１１のネットワークコンフィギュレーションモジュールのパケット破損タブを示す図である。
【００３８】
【図１５】図１５は、図１の通信ネットワーク上でのパケット並べ替え率の調節を容易にするための図１１のネットワークコンフィギュレーションモジュールのパケット並び替えタブを示す図である。
【００３９】
【図１６】図１６は、図１の通信ネットワーク上での通信速度の調節を容易にするための図１１のネットワークコンフィギュレーションモジュールの速度制御タブを示す図である。
【００４０】
【図１７】図１７は、カスタムコマンドストリングに基づく図１の通信ネットワーク上でのネットワークパラメータの調節を容易にするための図１１のネットワークコンフィギュレーションモジュールのカスタムコマンドタブを示す図である。
【００４１】
【図１８】図１８は、ハドゥープワークロードコンテナの選択を容易にするためのハドゥープタブを含む図７の例示的なユーザインタフェースのワークロードコンテナコンフィギュレーションモジュールを示す図である。
【００４２】
【図１９】図１９は、ハドゥープワークロードコンテナの動作パラメータのコンフィギュレーションを容易にするための拡張タブを含む図１８のワークロードコンテナコンフィギュレーションモジュールのハドゥープタブを示す図である。
【００４３】
【図２０】図２０は、カスタムコマンドストリングに基づくハドゥープワークロードコンテナの動作パラメータのコンフィギュレーションを容易にするためのカスタムタブを含む図１８のワークロードコンテナコンフィギュレーションモジュールのハドゥープタブを示す図である。
【００４４】
【図２１】図２１は、カスタムワークロードコンテナの選択を容易にするための図１８のワークロードコンテナコンフィギュレーションモジュールのカスタムタブを示す図である。
【００４５】
【図２２】図２２は、図１の複数ノードのクラスタ上での実行のためのワークロードの選択を容易にするためのワークロードタブを含む図７の例示的なユーザインタフェースのワークロードコンフィギュレーションモジュールを示す図である。
【００４６】
【図２３】図２３は、合成テストワークロードのコンフィギュレーションを容易にするための図２２のワークロードコンフィギュレーションモジュールの合成カーネルタブを示す図である。
【００４７】
【図２４】図２４は、メムキャッシュディーワークロードのコンフィギュレーションを容易にするための図２２のワークロードコンフィギュレーションモジュールのＭＣブラスタタブを示す図である。
【００４８】
【図２５】図２５は、図１の複数ノードのクラスタ上での実行のためのバッチシーケンスの選択及びコンフィギュレーションを容易にするための図７の例示的なユーザインタフェースのバッチ処理モジュールを示す図である。
【００４９】
【図２６】図２６は、ハドゥープデータモニタリングツールのコンフィギュレーションを容易にするためのハドゥープタブを含む図７の例示的なユーザインタフェースのモニタリングモジュールを示す図である。
【００５０】
【図２７】図２７は、ガングリアデータモニタリングツールのコンフィギュレーションを容易にするための図２６のモニタリングモジュールのガングリアタブを示す図である。
【００５１】
【図２８】図２８は、システムタップデータモニタリングツールのコンフィギュレーションを容易にするための図２６のモニタリングモジュールのシステムタップタブを示す図である。
【００５２】
【図２９】図２９は、仮想メモリ統計(VMStat)及び入力／出力統計(IOStat)のコンフィギュレーションを容易にするための図２６のモニタリングモジュールのＩ／Ｏ時間タブを示す図である。
【００５３】
【図３０】図３０は、図１の複数ノードのクラスタのシステムコンフィギュレーションの展開を容易にし図２６〜２９のモニタリングツールによってモニタされたデータの集約を容易にするための図７の例示的なユーザインタフェースの制御及び状態モジュールを示す図である。
【００５４】
【図３１】図３１は、図１のコンフィギュレータのウェブベースのデータアグリゲータを示す図１のクラウドコンピューティングシステムの他のブロック図である。
【００５５】
【図３２】図３２は、合成テストワークロードを生成するための複数のユーザ定義のワークロードパラメータを示す例示的なテーブルを示す図である。
【００５６】
【図３３】図３３は、合成テストワークロードを生成するように動作するシンセサイザと、合成テストワークロードの少なくとも一部をアクティベートして実行するように動作するノードの合成ワークロードエンジンと、を含む例示的な合成テストワークロードシステムのブロック図である。
【００５７】
【図３４】図３４は、実際のワークロード及び合成テストワークロードの少なくとも一方でクラウドコンピューティングシステムをコンフィギュアするための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００５８】
【図３５】図３５は、合成テストワークロードでクラウドコンピューティングシステムをコンフィギュアするための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００５９】
【図３６】図３６は、図１の複数ノードのクラスタの少なくとも１つのノードのブート時間コンフィギュレーションを選択するための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００６０】
【図３７】図３７は、ノードの少なくとも１つのブート時間パラメータを修正するための図１の複数ノードのクラスタのノードの動作の例示的な方法のフローチャートである。
【００６１】
【図３８】図３８は、図１の複数ノードのクラスタの１つ以上のノードのブート時間コンフィギュレーションを修正するための図１のクラウドコンピューティングシステムの動作の例示的な方法のフローチャートである。
【００６２】
【図３９】図３９は、図１の複数ノードのクラスタの少なくとも１つのノードの通信ネットワークコンフィギュレーションを修正するための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００６３】
【図４０】図４０は、エミュレートされたノードクラスタのネットワークコンフィギュレーションに基づきクラウドコンピューティングシステムに対して複数ノードのクラスタを選択するための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００６４】
【図４１】図４１は、エミュレートされたノードクラスタのネットワークコンフィギュレーションに基づきクラウドコンピューティングシステムに対して複数ノードのクラスタを選択しコンフィギュアするための図３のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
【００６５】
【図４２】図４２は、ノードクラスタの複数の通信ネットワーク特性を識別する例示的なデータファイルを示す図である。
【００６６】
【図４３】図４３は、図１の複数ノードのクラスタを選択するための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００６７】
【図４４】図４４は、図１の複数ノードのクラスタを選択するための図３のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
【００６８】
【図４５】図４５は、図１の複数ノードのクラスタのハードウェアコンフィギュレーションを選択するための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００６９】
【図４６】図４６は、図１の複数ノードのクラスタのハードウェアコンフィギュレーションを選択するための図３のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
【００７０】
【図４７】図４７は、複数ノードのクラスタのモニタされた性能特性に基づき図１の複数ノードのクラスタに対してコンフィギュレーションパラメータを選択するための図３のコンフィギュレータの動作の例示的な方法のフローチャートである。
【００７１】
【図４８】図４８は、複数ノードのクラスタのモニタされた性能特性に基づき図１の複数ノードのクラスタに対してコンフィギュレーションパラメータを選択するための図３のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
【発明を実施するための形態】
【００７２】
ここに開示される実施形態は、クラウドコンピューティングシステムに関して説明されるが、本開示の方法及びシステムは、ワークロードを協働して実行する複数のノードを含む任意の適切なコンピューティングシステムに実装されてよい。
【００７３】
ここで参照されるとき、コンピューティングシステムのノードとは、少なくとも１つの処理デバイスと、その少なくとも１つの処理デバイスによってアクセス可能なメモリと、を含むものである。ノードは、例えば、サーバ、仮想サーバ、仮想マシン、インスタンス(instance)又は処理ノードとも称されることがある。
【００７４】
図１は、コンピューティング能力及び記憶容量をエンドユーザへのサービスとして受け渡すように構成される、種々の実施形態による例示的なクラウドコンピューティングシステム１０を示す図である。クラウドコンピューティングシステム１０は、複数ノードのクラスタ１４に動作可能に結合された制御サーバ１２を含む。複数ノードのクラスタ１４は、分散型通信ネットワーク１８に接続されており、各ノード１６は、ローカル処理能力及びメモリを含む。具体的には、各ノード１６は、少なくとも１つのプロセッサ４０（図２）と、プロセッサ４０によってアクセス可能な少なくとも１つのメモリ４２（図２）と、を含む。通信ネットワーク１８は、例えば、伝送制御プロトコル／インターネットプロトコル(Transmission Control Protocol/Internet Protocol)（ＴＣＰ／ＩＰ）若しくはユーザデータグラムプロトコル(User Datagram Protocol)（ＵＤＰ）を含むインターネットプロトコル（ＩＰ）フォーマット、イーサネット（登録商標）(Ethernet（登録商標）)ネットワーク、シリアルネットワーク、又は、他のローカルエリア若しくはワイドエリアのネットワーク（ＬＡＮ若しくはＷＡＮ）等の任意の適切なコンピュータネットワークプロトコルを含む。
【００７５】
ここに述べられるように、ノード１６は、制御サーバ１２によって、通信ネットワーク１８に接続された複数の利用可能ノード１６のクラウドから、複数ノードのクラスタ１４を指定するために選択される。利用可能ノード１６は、例えばデータセンタ内の１つ以上のサーバストレージラック上に設けられており、種々のハードウェアコンフィギュレーションを含む。一実施形態では、複数のデータセンタ及び／又は他のハードウェアプロバイダからの利用可能ノード１６が、クラウドコンピューティングシステム１０のための複数ノードのクラスタ１４としての選択及びコンフィギュレーションのために、制御サーバ１２によってアクセス可能である。例えば、１つ以上のサードパーティに係るデータセンタ（例えばアマゾンウェブサービス等）及び／又はユーザ提供のハードウェアが、制御サーバ１２によってクラウドコンピューティングのためにコンフィギュアされてよい。一例においては、数千のノード１６が、制御サーバ１２による選択及びコンフィギュレーションのために利用可能であってよいが、任意の数のノード１６が利用可能であってよい。図１では５つのノード１６が示されているが、任意の適切な数のノード１６がクラウドコンピューティングシステム１０のために選択されてよい。制御サーバ１２は、各々が１つ以上のプロセッサを含む１つ以上のコンピューティングデバイス（例示的にはサーバコンピュータ）を含む。図示された実施形態では、制御サーバ１２は、ノードクラスタ１４から物理的に離れている専用の制御サーバ１２である。一実施形態では、制御サーバ１２は、利用可能ノード１６を収容しているデータセンタから物理的に遠隔のものであってよい。代替的には、制御サーバ１２は、複数ノードからなる選択されたクラスタ１４の１つ以上のノード１６であってよい。制御サーバ１２は、ここに述べられるように、複数ノード１６を割り振ると共にコンフィギュアすること、ノード１６上でワークロードを開始すること、性能データを収集すると共に報告すること等のために動作するクラウドコンピューティングコンフィギュレーションシステムとして機能する。
【００７６】
制御サーバ１２は、例示的には、コンフィギュレータ２２と、ロードジェネレータ２４と、ロードバランサ２６と、を含む。コンフィギュレータ２２、ロードジェネレータ２４及びロードバランサ２６は、ここで参照されるとき、１つ以上のプロセッサによってアクセス可能な内部メモリ又は外部メモリ内に記憶されたソフトウェアコード又はファームウェアコードを実行する当該１つ以上のプロセッサを備えるものである。ソフトウェア／ファームウェアコードは、コンフィギュレータ２２、ロードジェネレータ２４及びロードバランサ２６に対応する命令を含み、これらの命令は、当該１つ以上のプロセッサによって実行されるときに、ここに述べられる種々の機能を当該１つ以上のプロセッサに実行させる。コンフィギュレータ２２、ロードジェネレータ２４及び／又はロードバランサ２６は、代替的には、特定用途向け集積回路（ＡＳＩＣｓ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡｓ）、デジタル信号プロセッサ（ＤＳＰｓ）、ハードウェア論理素子又はこれらの組み合わせを含んでいてよい。コンフィギュレータ２２は、ここに述べられるように、複数ノードのクラスタ１４に含ませる１つ以上のノード１６を選択しコンフィギュアすること、通信ネットワーク１８のパラメータをコンフィギュアすること、複数ノードのクラスタ１４上での実行のためにワークロードコンテナモジュール及びワークロードを選択し、コンフィギュアし及び展開すること、並びに、ワークロードの実行に関連付けられた性能データを収集し解析することのために動作可能である。コンフィギュレータ２２は、ノード１６上でソフトウェアをコンフィギュアするためにノード１６に提供され且つノード１６で処理されるコンフィギュレーションファイル２８と、ワークロード要求パラメータをロードジェネレータ２４に提供するためにロードジェネレータ２４に提供される少なくとも１つのコンフィギュレーションファイル３０と、を生成するように動作する。
【００７７】
ロードジェネレータ２４は、ワークロード実行のためにノードクラスタ１４によって使用される入力としての役割を果たす要求を生成するように動作する。つまり、ノードクラスタ１４は、要求、並びに、要求に付随して提供された入力パラメータ及びデータに基づき、ワークロードを実行する。一実施形態では、ロードジェネレータ２４からの要求はユーザによって開始される。例えば、ユーザ又は顧客は、指定された検索ターム又はデータセットに対する検索動作又はソート動作をそれぞれ要求してよく（例えばユーザインタフェース２００を介して）、ロードジェネレータ２４は、対応する検索要求又はソート要求を生成する。一実施形態では、コンフィギュレータ２２は、ユーザインタフェース２００を介して受信したユーザ要求を記述するコンフィギュレーションファイル３０を生成する。ノード１６は、検索されるべき識別されたターム又はソートされるべきデータセットを用いてワークロードを実行する。ロードジェネレータ２４は、実行されるべきワークロードのタイプに応じて他の適切な要求を生成してよい。ロードバランサ２６は、ロードジェネレータ２４によって提供された要求を複数ノード１６間で分散させて、どのノード１６がどの要求を実行するのかを指示するように動作する。また、ロードバランサ２６は、ロードジェネレータ２４からの要求を複数部分に分割すると共に複数のノード１６がその要求を並列動作で実行するよう動作するように、それら複数部分を複数ノード１６に分散させるようにも動作する。
【００７８】
コンフィギュレータ２２は、例示的には、ユーザがインターネットを介してコンフィギュレータ２２にアクセスすることのできるようなウェブベースのものであるが、コンフィギュレータ２２は、任意の適切なネットワーク又は通信リンクを介してアクセスされてよい。図１に示される例示的なユーザコンピュータ２０は、ディスプレイ２１と、プロセッサ３２（例えば中央処理ユニット（ＣＰＵ））と、プロセッサ３２によってアクセス可能なメモリ３４と、を含む。コンピュータ２０は、デスクトップコンピュータ、ラップトップ、モバイルデバイス、スマートフォン等の任意の適切なコンピューティングデバイスを含み得る。ユーザコンピュータ２０上では、ソフトウェアコード又はファームウェアコードを含むウェブブラウザ３６が実行されており、ウェブブラウザ３６は、コンフィギュレータ２２によって提供されたグラフィカルユーザインタフェースにアクセスするために用いられ、またグラフィカルユーザインタフェースをディスプレイ２１上に表示するためにも用いられる。例えば図７〜３０に図示されるグラフィカルユーザインタフェース２００を参照されたい。
【００７９】
図示されるものに代替可能な、コンポーネントの種々の他の配置及びそれに対応するクラウドコンピューティングシステム１０の接続性が利用可能であり、そのようなコンポーネントの配置及び対応する接続性は、ここに開示される実施形態に従うものとする。
【００８０】
図２を参照すると、コンフィギュレータ２２によってコンフィギュアされる図１のノードクラスタ１４の例示的なノード１６が、一実施形態に従って図示されている。ノード１６は、メモリ４２内に記憶されたソフトウェア又はファームウェアを実行するように動作する少なくとも１つのプロセッサ４０を含む。メモリ４２は、１つ以上の物理的メモリロケーションを含み、プロセッサ４０の内部にあってもよいし、外部にあってもよい。
【００８１】
図２は、各ノード１６上へとロードされたソフトウェア（又はファームウェア）コードを示しており、このコードは、オペレーティングシステム４４と、カーネルモード測定エージェント４６と、ネットワークトポロジドライバ４８と、ユーザモード測定エージェント５０と、ウェブアプリケーションサーバ５２と、ワークロードコンテナモジュール５４と、サービス志向アーキテクチャランタイムエージェント５６と、合成ワークロードエンジン５８と、を含む。図示された実施形態では、カーネルモード測定エージェント４６及びネットワークトポロジドライバ４８は、例えばノード１６の入力／出力（Ｉ／Ｏ）デバイスからのデータ等の特定のデータにアクセスするために、オペレーティングシステム４４からの特権(privilege)を要求する。一方、ユーザモード測定エージェント５０、ウェブアプリケーションサーバ５２、ワークロードコンテナモジュール５４、サービス志向アーキテクチャランタイムエージェント５６及び合成ワークロードエンジン５８は、例示的には、データにアクセスするため又はそれらのそれぞれの機能を行うためには、オペレーティングシステム４４からの特権を要求しない。
【００８２】
オペレーティングシステム４４は、例えば、アプリケーション、特権及びハードウェアリソースを管理すること、並びに、プロセッサ時間及びメモリ使用量を割り振ることを含む、ノード１６の全体動作を管理する。ネットワークトポロジドライバ４８は、通信ネットワーク１８（図１）上でのノード１６のネットワーク特性及びネットワークパラメータを制御するように動作する。一実施形態では、ネットワークトポロジドライバ４８は、コンフィギュレータ２２（図１）から受信したコンフィギュレーションファイル２８（図１）に基づき、ノード１６に関連付けられたネットワーク特性を変更するように動作する。
【００８３】
また、ネットワークソフトウェアスタック（図示せず）が各ノード１６で記憶され実行される。ネットワークソフトウェアスタックは、図１のネットワーク１８上での通信を容易にするためのネットワークソケットを含む。ここに述べられる実施形態においては、ネットワークソケットは、ネットワーク通信のためのアドレスと、１つ以上のポート番号と、が割り当てれらたＴＣＰソケットを含む。一実施形態では、ネットワークソフトウェアスタックは、オペレーティングシステム４４のネットワークドライバを利用する。
【００８４】
カーネルモード測定エージェント４６及びユーザモード測定エージェント５０の各々は、ノード１６での動作及びワークロード性能をモニタするためのデータを収集し解析するように動作する。カーネルモード測定エージェント４６は、例えば、プロセッサ命令の数、プロセッサ利用、各Ｉ／Ｏ動作のために送信され及び受信されたバイト数、並びに他の適切なデータ、又は、これらの組み合わせをモニタする。例示的なカーネルモード測定エージェント４６は、システムタップ(SystemTap)ソフトウェアを含む。ユーザモード測定エージェント５０は、データへのアクセスのためにオペレーティングシステム４４からシステム特権を要求する必要のない性能データを収集する。この性能データの例としては、個々のサブタスクの開始時間と完了時間とを表示するアプリケーション特有ログ、そのようなタスクが実行される速度、システムによって利用された仮想メモリの量、あるタスクのために処理された入力記録の量、等が挙げられる。一実施形態では、エージェント４６，５０及び／又は他のモニタリングツールは、各ノード１６に予めインストールされており、コンフィギュレーションファイル２８（図１）に基づき各ノード１６でコンフィギュレータ２２によってコンフィギュアされる。代替的には、コンフィギュアされたエージェント４６，５０及び／又は他のモニタリングツールを、コンフィギュレータ２２が、ワークロード展開に際してノード１６へとロードする。
【００８５】
ウェブアプリケーションサーバ５２は、ノード１６と、図１の制御サーバ１２及びノードクラスタ１４の他のノード１６の両者と、の間での通信を制御するアプリケーションである。ウェブアプリケーションサーバ５２は、ノード１６間でのファイル転送、及び、制御サーバ１２とノードとの間でのファイル転送をもたらす。例示的なウェブアプリケーションサーバ５２は、アパッチトムキャット(Apache Tomcat)である。
【００８６】
また、ワークロードコンテナモジュール５４も、各ノード１６のメモリ４２内に記憶されている。ここに述べられるように、制御サーバ１２は、ユーザ選択と、ワークロードコンテナモジュール５４のコンフィギュレーションとに基づき、ワークロードコンテナモジュール５４をノード１６に提供する。ワークロードコンテナモジュール５４の例としては、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memcached)、アパッチカサンドラ(Apache Cassandra)、又は、市販されていないユーザによって提供されたカスタムワークロードコンテナモジュールが挙げられる。一実施形態では、ワークロードコンテナモジュール５４は、プロセッサによって実行されるときにメモリ４２内でのデータ記憶とノード１６間データ通信とを管理するコードモジュールを備えるファイルシステム５５を含む。例示的なファイルシステム５５は、アパッチハドゥープワークロードコンテナの分散型ファイルシステム（ＨＤＦＳ）である。ファイルシステム５５は、データ及びファイルのコピーをノードメモリ４２内に複数記憶することによって、データ複製をサポートする。
【００８７】
随意的なサービス志向アーキテクチャ（ＳＯＡ）ランタイムエージェント５６及び随意的な合成ワークロードエンジン５８等の他の適切なワークロードコンテナモジュールが設けられていてもよい。ＳＯＡランタイムエージェント５６は、プロセッサによって実行されるときにワークロードの実行を連携させるように動作する他のタイプのワークロードコンテナモジュールである。ＳＯＡランタイムエージェント５６は、例えば、ワークロード動作を迅速化するために、頻繁に使用されるファイル（例えばイメージ等）をキャッシュしたりサーブするサービス機能を行う。ＳＯＡランタイムエージェント５６の例としては、グーグルプロトコルバッファ(Google Protocol Buffers)が挙げられる。合成ワークロードエンジン５８は、ここに述べられるように、プロセッサによって実行されるときに、コンフィギュレータ２２（図１）を介して受信した合成テストワークロードをアクティベートして実行するように動作するワークロードコンテナモジュールを含む。図示された実施形態では、合成ワークロードエンジン５８は、実際の非テストワークロードにではなく合成テストワークロードでの実行に合わせられている。
【００８８】
図３を参照すると、一実施形態による制御サーバ１２のコンフィギュレータ２２が示されている。コンフィギュレータ２２は、例示的には、オーセンティケータ(authenticator)７０と、ノードコンフィギュレータ７２と、ネットワークコンフィギュレータ７４と、ワークロードコンテナコンフィギュレータ７６と、ワークロードコンフィギュレータ７８と、バッチプロセッサ８０と、データモニタコンフィギュレータ８２と、データアグリゲータ８４と、を含み、これらの各々は、ここに述べられる種々の機能を行うために制御サーバ１２の１つ以上のプロセッサ２２によってアクセス可能なメモリ（例えばメモリ９０）内に記憶されたそれぞれのソフトウェアコードモジュール又はファームウェアコードモジュールを実行する制御サーバ１２の１つ以上のプロセッサ２２を備えている。オーセンティケータ７０は、認証コードモジュールを実行する１つ以上のプロセッサ２２を含み、図７に関してここに述べられるように、コンフィギュレータ２２へのユーザアクセスを認証するように動作する。ノードコンフィギュレータ７２は、ノードコンフィギュレーションコードモジュールを実行する１つ以上のプロセッサ２２を含み、図８〜１０に関してここに述べられるように、指定されたハードウェア及び動作のコンフィギュレーションを有する複数ノードのクラスタ１４を識別するために、ノード１６を選択してコンフィギュアするように動作する。ネットワークコンフィギュレータ７４は、ネットワークコンフィギュレーションコードモジュールを実行する１つ以上のプロセッサ２２を含み、図１１〜１７に関してここに述べられるように、テストや性能解析及び／又はシステム電力消費を調節すること等のために、図１の通信ネットワーク１８のネットワークパラメータを調節するように動作する。ワークロードコンテナコンフィギュレータ７６は、ワークロードコンテナコンフィギュレーションコードモジュールを実行する１つ以上のプロセッサ２２を含み、図１８〜２１に関してここに述べられるように、ノード１６上での動作のためにワークロードコンテナモジュールを選択してコンフィギュアするように動作する。ワークロードコンフィギュレータ７８は、ワークロードコンフィギュレーションコードモジュールを実行する１つ以上のプロセッサ２２を含み、ノード１６によって選択されたワークロードコンテナでの実行のためにワークロードを選択してコンフィギュアするように動作する。ワークロードコンフィギュレータ７８は、例示的には、合成テストワークロード生成コードモジュールを実行する１つ以上のプロセッサ２２を含むコードシンセサイザ７９を含み、コードシンセサイザ７９は、図２３及び図３２〜３５に関してここに述べられるように、ユーザ定義のワークロードパラメータに基づき合成テストワークロードを生成するように動作する。バッチプロセッサ８０は、バッチプロセッサコードモジュールを実行する１つ以上のプロセッサ２２を含み、図２５に関してここに述べられるように、複数のワークロードのバッチ処理を開始するように動作し、複数のワークロードはノードクラスタ１４上のシーケンス内で実行される。データモニタコンフィギュレータ８２は、データモニタリングコンフィギュレーションコードモジュールを実行する１つ以上のプロセッサ２２を含み、図２６〜２９に関してここで述べられるように、ワークロードの実行に際して性能データをリアルタイムでモニタすると共にデータを収集するモニタリングツールをコンフィギュアするように動作する。データアグリゲータ８４は、データアグリゲーションコードモジュールを実行する１つ以上のプロセッサ２２を含み、図３０及び３１に関してここに述べられるように、各ノード１６からの性能データを収集及び集約する(collect and aggregate)と共にログ、統計、グラフ、及び、データの他の表現を生成するように動作する。
【００８９】
コンフィギュレータ２２からの出力は、例示的には、制御サーバ１２のメモリ９０内に記憶される。メモリ９０は、制御サーバ１２の１つ以上のプロセッサの内部にあってもよいし、外部にあってもよく、１つ以上の物理的メモリロケーションを含む。メモリ９０は、例示的には、コンフィギュレータ２２によって生成された図１のコンフィギュレーションファイル２８，３０を記憶する。また、メモリ９０は、ワークロードの実行に続いてノード１６によって生成され制御サーバ１２へ伝えられたログファイル９８を記憶する。図示されるように、オペレーティングシステムのイメージファイル９２と、ワークロードコンテナコンフィギュレータ７６で選択されたワークロードコンテナのイメージファイル９４と、ワークロードコンフィギュレータ７８で選択又は生成されたワークロードのイメージファイル９６とは、メモリ９０内に記憶される。一実施形態では、複数のオペレーティングシステムイメージファイル９２がメモリ９０内に記憶されており、ユーザは、各ノード１６にインストールされるべきオペレーティングシステムを、コンフィギュレータ２２を介して選択することができる。一実施形態では、ユーザは、ノード１６にインストールされるべきオペレーティングシステムイメージファイル９２を遠隔メモリ（例えば図１のコンピュータ２０のメモリ３４）から制御サーバ１２へアップロードすることができる。ワークロードコンテナイメージファイル９４は、複数の利用可能ワークロードコンテナモジュールからのユーザによるワークロードコンテナモジュールの選択及びコンフィギュレーションに基づき、ワークロードコンテナコンフィギュレータ７６で生成される。ここに述べられる実施形態では、ワークロードコンテナコンフィギュレータ７６は、図７〜３０のユーザインタフェース２００を介して受信したユーザ入力に基づき、対応するワークロードコンテナイメージファイル９４をコンフィギュアする。同様に、ワークロードコンフィギュレータ７８は、制御サーバ１２のユーザインタフェース２００を介しての、１つ以上の利用可能ワークロードからのワークロードのユーザ選択に基づき、ワークロードイメージファイル９６を生成してコンフィギュアする。ワークロードイメージファイル９６は、ユーザ入力に基づきワークロードコンフィギュレータ７８によって選択された予め定義された実際のワークロード、又はユーザ入力に基づきワークロードコンフィギュレータ７８によって生成された合成テストワークロードを含む。
【００９０】
一実施形態では、メモリ９０は、ノードクラスタ１４の各ノード１６によってアクセス可能であり、制御サーバ１２は、各イメージファイル９２，９４，９６のメモリ９０内のロケーションを識別するポインタ又は他の識別子をノードクラスタ１４の各ノード１６へ送る。ノード１６は、ポインタに基づきそれぞれのイメージファイル９２，９４，９６をメモリ９０からリトリーブする(retrieve)。代替的には、制御サーバ１２は、イメージファイル９２，９４，９６及び適切なコンフィギュレーションファイル２８を各ノード１６へロードし、又は、任意の他の適切なメカニズムによりイメージファイル９２，９４，９６及びコンフィギュレーションファイル２８をノード１６へ提供する。
【００９１】
ここに述べられるように、コンフィギュレータ２２は、ユーザ選択及びユーザ入力に基づき自動的に以下の作用をするように動作する。即ち、所望のリソース（例えばノード１６）を割り振り、ノード１６を予めコンフィギュアし（例えばネットワークトポロジ、メモリ特性）、ワークロードコンテナソフトウェアを各ノード１６にインストールし、ユーザ提供のワークロードソフトウェア及びデータをノード１６に展開し、モニタリングツール（例えばガングリア(Ganglia)、システムタップ(SystemTap)）を起動して各ノード１６から性能データを収集し始め、ワークロード実行に際してライブ状態更新をユーザに提供し、ワークロードの結果及びモニタリングツールによって集められた情報を含めユーザによって要求された全データを収集し、ユーザによって要求された性能データを処理し、まとめ、表示し、そして他の適切な機能を行う。更に、ユーザは、ここに述べられるように、コンフィギュレータ２２を用いて、順次又は並列で実行されるワークロードのシーケンスを作成して展開してよい。ユーザは、実行に際して又は実行の合間にコンフィギュレーション又は入力パラメータの随意的な調節をしながら、任意のワークロード又は全てのワークロードを繰り返し実行してもよい。また、コンフィギュレータ２２は、ユーザによる要求に基づき、ノードクラスタ１４の指定されたデータベースノード１６上でデータを記憶するようにも動作する。
【００９２】
図４は、クラウドコンピューティングシステムをコンフィギュアするために図１及び図３のコンフィギュレータ２２によって行われる例示的な動作のフロー図１００である。図４の説明全体に対して図１及び図３が参照される。図示された実施形態では、コンフィギュレータ２２は、図７〜３０に示されるユーザインタフェース２００等のユーザインタフェースを介して受信した複数のユーザ選択に基づき、図４のフロー図１００に従って図１のノードクラスタ１４をコンフィギュアする。ブロック１０２では、コンフィギュレータ２２のノードコンフィギュレータ７２は、複数の利用可能ノード１６から複数ノードのクラスタ１４を選択する。複数ノードのクラスタ１４の各ノード１６は、少なくとも１つの処理デバイス４０及びメモリ４２（図２）を含み、ここに述べられるように、ワークロードの処理をクラスタ１４の他のノード１６と共有するように動作する。図示された実施形態では、複数のノード１６がコンフィギュレータ２２による選択のために利用可能であり、コンフィギュレータ２２は、利用可能ノード１６のサブセットをノードクラスタ１４として選択する。一実施形態では、コンフィギュレータ２２は、ユーザインタフェースを介して受信したユーザ選択に基づき、複数ノードのクラスタ１４の各ノード１６から収集されるべき少なくとも１種類のデータを選択し、コンフィギュレータ２２のデータアグリゲータ８４は、図２６〜３０に関してここに述べられるように、複数ノードのクラスタ１４の各ノード１６からの当該少なくとも１種類のデータを収集及び集約する。
【００９３】
ブロック１０４では、コンフィギュレータ２２のワークロードコンテナコンフィギュレータ７６は、複数ノードからなる選択されたクラスタ１４の各ノード１６上での動作のためのワークロードコンテナモジュールを選択する。ワークロードコンテナモジュールは、ノード１６によって実行されるときにワークロードの実行を開始し連携させるように動作する選択可能コードモジュールを含む。一実施形態では、ワークロードコンテナモジュールは、図１８に関してここに述べられるように、複数の利用可能ワークロードコンテナモジュールから選択される。一実施形態では、コンフィギュレータ２２は、ユーザインタフェースを介して受信したユーザ入力に基づき、各ノード１６上のワークロードコンテナモジュールの少なくとも１つの動作パラメータを修正する。この少なくとも１つの動作パラメータは、ここに述べられるように、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている。
【００９４】
一実施形態では、選択されたワークロードコンテナモジュールは、クラウドコンピューティングシステム１０からは遠隔のメモリ（例えば図１のメモリ３４）上に記憶されたカスタムワークロードコンテナモジュールであり、コンフィギュレータ２２は、遠隔メモリ上に記憶されたカスタムワークロードコンテナモジュールを複数ノードのクラスタ１４の各ノード１６へとロードする。例えば、カスタムワークロードコンテナモジュールは、ユーザによって提供される市販されていないワークロードコンテナモジュールを含む。一実施形態では、カスタムワークロードコンテナモジュールは、ワークロードを実行するためのユーザ定義の命令及びパラメータを含むコンフィギュレーションファイルを含む。命令の例としては、典型的なワークロードではあまり見られないワークロードパラメータであって及び／又は特定のワークロードに固有のワークロードパラメータをテストするための命令が挙げられる。カスタムワークロードコンテナモジュールの命令の他の例としては、実行の出力又はログファイルを更なる解析のために異なるロケーションにリダイレクトするための命令が挙げられる。代替的には、ワークロードコンテナモジュールは、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memchashed)、アパッチカサンドラ(Apache Cassandra)等の、コンピューティングシステム１０に記憶され（例えば図３のメモリ９０）且つコンフィギュレータ２２による選択及び展開のために利用可能な市販のサードパーティに係るワークロードコンテナモジュールを含む。
【００９５】
ブロック１０６では、コンフィギュレータ２２のワークロードコンフィギュレータ７８は、複数ノードのクラスタ１４上でのワークロードコンテナモジュールでの実行のためのワークロードを選択する。選択されたワークロードの処理は、ここに述べられるように、複数ノードのクラスタ１４に分散される。一実施形態では、ワークロードは、実際のワークロード及び合成テストワークロードの少なくとも一方から選択される。１つ以上の実際の予めコンパイルされたワークロードが、制御サーバ１２のプロセッサによってアクセス可能なメモリ（例えば図１のメモリ３４）内に記憶され、コンフィギュレータ２２は、選択された実際のワークロードをノード１６へとロードする。合成テストワークロードは、図２３及び図３２〜３５に関してここに述べられるように、ユーザインタフェース２００を介して受信したユーザ定義のワークロードパラメータに基づきコンフィギュレータ２２によって生成され、各ノード１６へとロードされる。一実施形態では、コンフィギュレータ２２は、図１１〜１７に関してここに述べられるように、ユーザインタフェース２００を介して受信したユーザ入力に基づき、少なくとも１つの通信ネットワークパラメータを調節して、選択されたワークロードの実行に際しての通信ネットワーク１８の性能を修正し又は制限する。
【００９６】
図示された実施形態では、コンフィギュレータ２２は、選択可能ノードデータ（例えば図８のテーブル２５８）と、選択可能ワークロードコンテナデータ（例えば図１８の選択可能入力３５２）と、選択可能ワークロードデータ（例えば図２２の選択可能入力４１８）と、を含むユーザインタフェース２００（図７〜３０）を提供する。複数ノードのクラスタ１４は、選択可能ノードデータのユーザ選択に基づき選択され、ワークロードコンテナモジュールは、選択可能ワークロードコンテナデータのユーザ選択に基づき選択され、ワークロードは、選択可能ワークロードデータのユーザ選択に基づき選択される。
【００９７】
図５は、クラウドコンピューティングシステム１０をコンフィギュアするために図１及び図３のコンフィギュレータ２２によって行われる他の例示的な動作のフロー図１２０である。図５の説明全体に対して図１及び図３が参照される。ブロック１２２では、ワークロードコンテナコンフィギュレータ７６は、ユーザインタフェース（例えばユーザインタフェース２００）を介して受信したユーザ選択に基づき、クラウドコンピューティングシステム１０の複数ノードのクラスタ１４の各ノード１６上での動作のためのワークロードコンテナモジュールを複数の利用可能ワークロードコンテナモジュールから選択する。図示された実施形態では、ワークロードコンテナモジュールは、例えば、図１８の入力３５２，３６０，３６２及び図２１の入力３５３，４０１等の選択可能ワークロードコンテナデータに基づき選択される。選択されたワークロードコンテナモジュールは、ワークロードの実行を連携させるように動作する選択可能コードモジュール（例えば図１８の入力３６０，３６２及び図２１の入力４０１で選択可能）を含む。一実施形態では、複数の利用可能ワークロードコンテナモジュールは、ここに述べられるように、カスタムワークロードコンテナモジュールを含む。ブロック１２４では、ノードコンフィギュレータ７２は、ワークロードの処理が複数ノードのクラスタに分散されるようにワークロードを実行するために、複数ノードのクラスタ１４の各ノード１６を選択されたワークロードコンテナモジュールでコンフィギュアする。ここに述べられるように、各ノード１６は、処理デバイス４０及びメモリ４２を含み、ワークロードの動作を複数ノードのクラスタ１４の他のノード１６と共有するように動作する。コンフィギュレータ２２は、選択されたワークロードコンテナモジュールを複数ノードのクラスタ１４の各ノード１６にインストールし、複数ノードのクラスタ１４上での選択されたワークロードコンテナモジュールでのワークロードの実行を開始する。
【００９８】
図６は、クラウドコンピューティングシステム１０をコンフィギュアするために図１及び図３のコンフィギュレータ２２によって行われる他の例示的な動作のフロー図１４０である。図６の説明全体に対して図１及び図３が参照される。ブロック１４２では、コンフィギュレータ２２のノードコンフィギュレータ７２は、ワークロードの処理を共有するように動作する複数ノードのクラスタ１４をクラウドコンピューティングシステム１０のための複数の利用可能ノード１６から選択する。図示された実施形態では、複数ノードのクラスタ１４は、ここに述べられるように、選択可能ノードデータに基づき選択される。
【００９９】
ブロック１４４では、ワークロードコンテナコンフィギュレータ７６は、ユーザインタフェースを介して受信したユーザ入力（例えば図１９のユーザインタフェース２００の選択可能入力３６７及びフィールド３７４，３７８，３８０）に基づき、各ノード１６の同じワークロードコンテナモジュールの動作パラメータを修正する。この同じワークロードコンテナモジュールは、ノード１６によって実行されるときに動作パラメータに基づきワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。動作パラメータは、図１９及び図２０に関してここに述べられるように、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連付けられている。コンフィギュレータ２２は、ワークロードコンテナモジュールを各ノード１６へと展開するのに先立ち、又は、コンフィギュレーションを更新する場合には各ノード１６へのワークロードコンテナモジュールの展開の後に、１つ以上の動作パラメータを修正する。ワークロードコンテナモジュールは、各ノード１６によって実行されるときに、修正された動作パラメータに基づき複数ノードのクラスタ１４上でのワークロードの実行を連携させるように動作する。一実施形態では、動作パラメータは、リード／ライト動作のためのメモリバッファサイズ、リード／ライト動作に際して転送されるデータブロックのサイズ、各ノード１６のメモリ４２内に記憶されるデータブロックの数、ファイルシステム５５に対する要求を処理するために割り振られる各ノード１６の処理スレッドの数、及び／又は、データをソーティングするときにマージする(merge)データストリームの数を含む。図１９及び図２０に関して述べられるように、他の適切な動作パラメータが修正されてもよい。
【０１００】
図３の制御サーバ１２へのユーザアクセスを提供する例示的なユーザインタフェース２００が図７〜３０に示されている。ユーザインタフェース２００は、例示的には、コンピュータ２０（図１）のディスプレイ２１等のディスプレイ上への表示のためにコンフィギュアされた複数の選択可能画面を含むウェブベースのグラフィカルユーザインタフェース２００である。ネイティブユーザインタフェースアプリケーション、コマンドライン駆動インタフェース、プログラム可能ＡＰＩ、他の種類のもの、又は、複数のインタフェースの組み合わせ等の他の適切なインタフェースが提供されてもよい。ユーザインタフェース２００は、選択可能な入力、フィールド、モジュール、タブ、ドロップ・ダウンメニュー、ボックス及び他の適切な選択可能データ等の、コンフィギュレータ２２のコンポーネント７０〜８４にリンクされると共にそれらへの入力を提供する選択可能データを含む。一実施形態では、ユーザインタフェース２００の選択可能データは、それが個別に選択可能になるような方法で描画される。例えば、選択可能データは、マウスポインタによって、ユーザインタフェース２００のタッチ画面に触れることによって、キーボードのキーを押下することによって、又は、任意の他の適切な選択メカニズムによって、ユーザにより選択される。データが選択された結果、そのデータが例えばハイライトされ又はチェックされてよく、何らかの選択可能データ（例えばモジュール、ドロップ・ダウンメニュー等）の選択に基づき、新たな画面、メニュー又はポップ・アップウィンドウが現れてよい。
【０１０１】
ユーザインタフェース２００の説明全体に対して図１〜３が参照される。図７に示されるように、ユーザインタフェース２００は、選択されたときにコンフィギュレータ２２へのアクセスを提供することによりユーザ選択を可能にすると共にコンフィギュレータ２２への他のユーザ入力を可能にする幾つかの選択可能モジュールを含む。具体的には、認証及び設定ライブラリモジュール２０２は、コンフィギュレータ２２のオーセンティケータ７０を表し且つこれにリンクされたデータを備える。インスタンスモジュール２０４は、コンフィギュレータ２２のノードコンフィギュレータ７２を表し且つこれにリンクされたデータを備える。ネットワークコンフィギュレーションモジュール２０６は、コンフィギュレータ２２のネットワークコンフィギュレータ７４を表し且つこれにリンクされたデータを備える。ワークロードコンテナコンフィギュレーションモジュール２０８は、コンフィギュレータ２２のワークロードコンテナコンフィギュレータ７６を表し且つこれにリンクされたデータを備える。ワークロードコンフィギュレーションモジュール２１０は、コンフィギュレータ２２のワークロードコンフィギュレータ７８を表し且つこれにリンクされたデータを備える。バッチ処理モジュール２１２は、コンフィギュレータ２２のバッチプロセッサ８０を表し且つこれにリンクされたデータを備える。モニタリングモジュール２１４は、コンフィギュレータ２２のデータモニタコンフィギュレータ８２を表し且つこれにリンクされたデータを備える。制御及び状態モジュール２１６は、コンフィギュレータ２２のデータアグリゲータ８４を表し且つこれにリンクされたデータを備える。コンフィギュレータ２２のコンポーネント７０〜８４は、それらのそれぞれの機能を、ユーザ選択、データ及びユーザインタフェース２００のモジュール２０２〜２１６を介して提供された他のユーザ入力に基づき実装する。
【０１０２】
図７を参照すると、認証及び設定ライブラリモジュール２０２が選択されている。モジュール２０２へのユーザ入力に基づき、オーセンティケータ７０は、コンフィギュレータ２２へのユーザアクセスを認証すると共に、先にセーブされたシステムコンフィギュレーションをロードする。オーセンティケータ７０は、それぞれのフィールド２２０，２２２，２２４内のアクセスキー、秘密キー、及び／又は、ＥＣ２キーペアの形態にある信用証明データを確認することによって、コンフィギュレータ２２へのユーザアクセスを許可する。図示された実施形態では、フィールド２２４のＥＣ２キーペアは、モジュール２０２を用いてアマゾンウェブサービスクラウドプラットフォームにアクセスするときに、新たに選択されたノード１６へのルート又は初期アクセスを提供する。オーセンティケータ７０は、入力２３８のユーザ選択に基づき、先にセーブされたシステムコンフィギュレーションをシステムコンフィギュレーションファイル（例えば図１のユーザコンピュータ２０又は制御サーバ１２に記憶されている）からロードする。システムコンフィギュレーションファイルは、ワークロード及びワークロードコンテナのコンフィギュレーション、ノード１６及びネットワークの設定情報、クラウドコンピューティングシステム１０のためのデータモニタリング／収集の設定、並びに、コンフィギュレータ２２で先にセーブされたシステムコンフィギュレーションに関連付けられている全ての他のコンフィギュレーション情報を含む。先にセーブされたシステムコンフィギュレーションファイルをロードすることにより、システムコンフィギュレーションファイルからのコンフィギュレーション情報でコンフィギュレータ２２が更新される。システムコンフィギュレーションファイルは、例示的には、ＪＳＯＮファイルフォーマットを含むが、他の適切なフォーマットが提供されてもよい。システムコンフィギュレーションファイルをロードした後に、ロードされたシステムコンフィギュレーションは、ユーザインタフェース２００のモジュールを介して修正されてよい。入力２４０が選択されると、オーセンティケータ７０は、コンフィギュレータ２２の現在のシステムコンフィギュレーションをファイルにセーブする。認証データは、選択ボックス２４２の選択に基づきセーブされたシステムコンフィギュレーションファイル内に含まれていてよい。
【０１０３】
システムコンフィギュレーションファイルは、ウェブベースのユーザインタフェース２００を介して識別され制御サーバ１２へとロードされるが、システムコンフィギュレーションファイルを得るために、他の適切な遠隔メソッド呼び出し(remote method invocation)（ＲＭＩ）メカニズムが用いられてもよい。例えば、アパッチハイパーテキスト転送プロトコル(Apache Hypertext Transfer Protocol)（ＨＴＴＰ）サーバ、アパッチトムキャット(Apache Tomcat)サーバ、ＲＭＩメカニズムを用いてシステムコンフィギュレーションファイルを渡すトムキャットサーブレット(Tomcat survlet)、又は、ＲＭＩメカニズムを用いてシステムコンフィギュレーションファイルを直接的に制御サーバ１２へ渡すカスタムアプリケーション（例えばコマンドラインユーティリティ）である。
【０１０４】
設定ライブラリ２２６は、選択入力２２７を介して選択及び実行のために利用可能な先に作成されたシステムコンフィギュレーションファイルのテーブル又はリストを提供する。入力２２８の選択があると、オーセンティケータ７０は、ライブラリ２２６内で選択されたシステムコンフィギュレーションファイルからのコンフィギュレーション情報でモジュール２０２〜２１６を更新する。現在のシステムコンフィギュレーション（例えばモジュール２０２〜２１６を介してコンフィギュアされている）は、入力２３０の選択に基づきファイルにセーブされると共にライブラリ２２６に追加され、システムコンフィギュレーションファイルは、入力２３４の選択に基づきライブラリ２２６から削除される。入力２３２があると、オーセンティケータ７０は、システムコンフィギュレーションファイルをローカルコンピュータ（例えば図１のコンピュータ２０）からライブラリ２２６へアップロードし、あるいは入力２３６があると、オーセンティケータ７０は、システムコンフィギュレーションファイルを遠隔コンピュータからライブラリ２２６へダウンロードする（例えばインターネットを介して）。ライブラリ２２６は、１つ以上の先に用いられたシステムコンフィギュレーションが迅速にロードされ実行されることを可能にする。ライブラリ２２６のシステムコンフィギュレーションファイルは、クラウドコンピューティングシステム１０上で別個に、並列に又は順次的に選択及び実行されてよい。例えば、バッチシーケンスにおける実行のために複数のシステムコンフィギュレーションファイルがライブラリ２２６内に提供されてよく、この場合、コンフィギュレータ２２は、各選択されたシステムコンフィギュレーションを自動的に順次展開して、各システムコンフィギュレーションで１つ以上のワークロードを実行する。図示された実施形態では、ここに述べられるように、システムコンフィギュレーションは、図３０の制御及び状態モジュール２１６を介してノード１６に展開される。システムコンフィギュレーションの展開は、図３０を参照してここに述べられるように、システムコンフィギュレーションファイルに関連付けられた設定、ソフトウェア及びワークロード情報でコンフィギュレータ２２がクラウドコンピューティングシステム１０をコンフィギュアすることを伴う。ここに述べられるように、コンフィギュレータ２２は、例示的には、それぞれのノード１６をコンフィギュアするために各ノード１６にルート付けられた１つ以上のコンフィギュレーションファイル２８を生成する。ノード１６に展開されたコンフィギュレーションファイル２８は、モジュール２０２を介してロードされたシステムコンフィギュレーションファイルに含まれる全てのコンフィギュレーション情報に加えて、システムコンフィギュレーションファイルをロードした後にモジュール２０２〜２１６を介してなされた任意の追加的なコンフィギュレーション変更を含む。
【０１０５】
図８を参照すると、ノード１６の数及び特性をコンフィギュアするためのインスタンスモジュール２０４が選択されている。モジュール２０４へのユーザ入力に基づき、ノードコンフィギュレータ７２は、指定されたハードウェア及び動作のコンフィギュレーションを有する複数ノードのクラスタ１４を識別し選択する。インスタンスモジュール２０４は、インスタンスタブ２５０と、インスタンスタイプタブ２５２と、他のインスタンス設定タブ２５４と、を含む。図８でインスタンスタブ２５０が選択されている状態で、ノードクラスタ１４に含ませるための所望のノード１６の数がフィールド２５６へとエンターされる。ノードコンフィギュレータ７２は、フィールド２５６でユーザが選択したノード１６の所望の数の下で、特定のハードウェアコンフィギュレーションを各々が有する当該数のノード１６のデフォルトリストをテーブル２５８内に生成する。テーブル２５８は、図１の複数ノードのクラスタ１４のリスト及びコンフィギュレーション記述を提供する。テーブル２５８は、各ノード１６のための幾つかの記述的フィールドを含み、これらのフィールドは、ノードの番号及び名前、インスタンス（ノード）タイプ、メモリ容量、コアプロセッサ（例えばＣＰＵ）の数、記憶容量、割り当て量(quota)、受信／送信割り当て量、及び、受信／送信上限(cap)を含む。インスタンスタイプは、一般的にはノードの相対サイズ及び演算能力を記述し、例示的には、微小(micro)、小(small)、中(medium)、大(large)、ｘ−大(x-large)、２ｘ−大(2x-large)、４ｘ−大(4x-large)等（図９）から選択される。図８の例示的なテーブル２５８において、各ノード１６は、７６８０メガバイト（ＭＢ）のメモリ容量と、８５０ギガバイト（ＧＢ）の記憶容量と、４コアプロセッサと、を伴う大タイプである。ノードコンフィギュレータ７２は、選択可能ノードデータ、例示的には選択ボックス２５９及び選択可能入力２６２、のユーザ選択に基づきノード１６を選択する。各ノード１６のタイプは、テーブル２５８のノード１６の選択（例えば入力２６２を用いた選択又は対応する選択ボックス２５９をチェックすることによる選択）及びインスタンスタイプ編集入力２６０を選択することに基づき変更可能であり、インスタンスタイプ編集入力２６０は選択されたノード１６のためのインスタンスタイプタブ２５２を表示させる。図９を参照すると、テーブル２６４は、ノードクラスタ１４における使用に対する選択のために利用可能であるノード１６のタイプ（即ち利用可能なサーバハードウェア）のリストを備えている。テーブル２６４の１つ以上のノード１６が、図８のテーブル２５８において選択されたノード１６と差し替えるために、選択可能入力２６５で選択される。一実施形態では、テーブル２６４のフィールド（例えばメモリ、ＶＣＰＵｓ、記憶容量等）は、選択されたノード１６の所望のハードウェア性能特性を更に識別するために、ユーザによって修正可能である。利用可能なサーバハードウェアに応じて、より少ない又は追加的なノード１６のタイプがテーブル２６４における選択のために利用可能であってよい。図示された実施形態では、ノードクラスタ１４に追加するために、テーブル２６４にリストされている各ノードタ��プに対して複数のノード１６が利用可能である。
【０１０６】
図１０を参照すると、ノードコンフィギュレータ７２は、ユーザインタフェース２００のインスタンス設定タブ２５４において提供されたユーザ入力に基づき、各ノード１６のブート時間コンフィギュレーションを調節する。ブート時間コンフィギュレーションは、個々のノード１６、ノード１６のグループ又はノードクラスタ１４全体に適用される１つ以上のブート時間パラメータを含む。各ノード１６の演算能力、システムメモリ容量及び／又は記憶容量等のブート時間パラメータは、それぞれのノード１６が最大能力未満で動作するように、フィールド２６８，２７０，２７２，２７４へのユーザ入力に基づき制限又は制約される。デフォルトのブート時間パラメータは、入力２６９のユーザ選択に基づき選択され、カスタマイズされたブート時間パラメータは、入力２７１のユーザ選択に基づき選択される。図示された実施形態では、各調節可能パラメータの最大設定がデフォルトであるが、ユーザは、入力２７１で「カスタム」オプションを選択してコンフィギュレーション設定をそれぞれのフィールド２６８，２７０，２７２，２７４にエンターすれば、各パラメータを調節することができる。
【０１０７】
図示された実施形態では、ノード１６の処理コアの数はフィールド２６８で調節可能である。例えば、インスタンスタブ２５０（図８）のテーブル２５８において選択されたノード１６が４つの処理コアを有している場合、ワークロード実行に際して有効にされる処理コアの数は、フィールド２６８を介して０，１，２又は３に減らすことができ、それにより、選択されたノード１６の１つ以上の処理コアをワークロード実行に際してオペレーティングシステム４４（図２）から「隠す」こと(hiding)ができる。可視(visible)システムメモリサイズ、即ちオペレーティングシステム４４（図２）によってアクセス可能なシステムメモリのサイズは、フィールド２７０，２７２への入力に基づき調節可能である。例えば、インスタンスタブ２５０（図８）のテーブル２５８において選択されたノード１６が２０４８ＭＢのメモリ容量を有している場合、ワークロード実行に際して有効にされる「可視」メモリ（例えばランダムアクセスメモリ）は、２０４８ＭＢ未満に減らされてよく、それにより、ワークロード実行に際してそのメモリの一部をオペレーティングシステム４４（図２）から「隠す」ことができる。追加的なブート時間パラメータを調節するために、追加的なワークロード引数(arguments)又は命令がフィールド２７４で適用される。ワークロードの引数の数は、フィールド２７４にエンターされた数に基づき増大又は減少させられてよい。例えば、ワークロードの命令のサブセットが実行のためにフィールド２７４で選択可能であり、それにより、残りの命令をオペレーティングシステム４４（図２）から隠すことができる。更に、６４ビットアーキテクチャを有するノード１６は、３２ビットだけがオペレーティングシステム４４に可視である場合に３２ビットモードで動作するように、フィールド２７４への入力に基づきコンフィギュア可能である。追加的なブート時間パラメータがフィールド２７６にエンターされてよい。一実施形態では、追加的なクラウドコンフィギュレーション設定を提供するために、命令又はコードがユーザによって手動でフィールド２７６にエンターされてよい。例えば、ブートに際して特定のノード１６がマスタとして動作するように、マップリデュースワークロードのためのマスタノード１６がフィールド２７６を介して指定されてよい。一実施形態では、ここに述べられるように、１つ以上のノード１６の動作をノードコンフィギュレータ７２で制限することは、クラウドコンピューティングシステム１０の性能をテストするために用いられる。図示された実施形態では、図１０において指定されたブート時間コンフィギュレーション設定は、図３６〜３８に関してここに述べられるように、それぞれのノード１６のブート時間コンフィギュレーションを調節するためにノードコンフィギュレータ７２から各ノード１６に提供されるブート時間コンフィギュレーションファイル２８（図３）内で提供される。
【０１０８】
コンフィギュレータ２２は、図７のネットワークコンフィギュレーションモジュール２０６のユーザ選択に基づき、図１１〜１７に示される例示的なネットワーク設定ウィザードウィンドウ２８０を生成する。図１１を参照すると、ネットワーク設定ウィザード２８０は、１つ以上のノード１６のネットワークパラメータを調節するための選択可能データを各々が含む複数のグローバルネットワーク設定を提供する。調節可能なネットワークパラメータは、タブ２８２を介してのネットワーク遅延、タブ２８４を介してのパケット損失、タブ２８６を介してのパケット重複、タブ２８８を介してのパケット破損、タブ２９０を介してのパケット並び替え、タブ２９２を介してのパケット速度制御、及び、タブ２９４を介しての他のカスタムコマンドを含む。ユーザインタフェース２００のネットワーク設定ウィザード２８０を介したユーザ選択及びユーザ入力に基づき、図３のネットワークコンフィギュレータ７４は、ここに述べられるように、図１の通信ネットワーク１８のノード１６のネットワークパラメータを調節するように動作する。一実施形態では、ネットワークパラメータの修正は、ネットワークテスト及び性能解析のために用いられ且つ／又はシステム電力消費を調節するために用いられる。図示された実施形態では、ネットワークコンフィギュレータ７４は、ネットワーク設定ウィザード２８０へのユーザ入力に基づきネットワークのトラフィック及び挙動を人為的に形成し、それにより種々のタイプのネットワークトポロジをモデル化する。例えば、異なる通信ネットワークは、ネットワークコンフィギュレーションに応じて異なるレイテンシ(latencies)、帯域、性能等を有する。そこで、ネットワークコンフィギュレータ７４は、異なるコンフィギュレーションを有するネットワークに、選択されたワークロードでそれら異なるネットワークの性能をテストし解析するためのワークロード実行が実装されることを可能にする。一実施形態では、テスト及び解析は、異なるネットワークコンフィギュレーションでのワークロード実行をバッチプロセッサ８０が開始することに連動して行われる。例えば、選択されたハードウェア（ノード１６）コンフィギュレーションでの特定のワークロードの実行のために、最適ネットワークトポロジが決定されてよい。一実施形態では、ネットワークコンフィギュレータ７４は、ノードクラスタ１４のノード１６の特定のグループ又はサブセットにネットワーク設定を適用するように動作する。
【０１０９】
引き続き図１１を参照すると、通信ネットワーク遅延を実装することに関連する選択可能データは、タブ２８２内に示される。ネットワークコンフィギュレータ７４は、入力（例示的にはボックス）２９８〜３０１及びフィールド３０２，３０４，３０６，３０８，３１０，３１２のユーザ選択に基づきネットワーク遅延を選択し修正する。通信ネットワーク１８（図１）を介しての各パケット通信（即ち、パケットはノード１６間又はあるノード１６と制御サーバ１２との間でデータ又は情報を搬送する）に対する通信遅延は、入力２９８の選択及びフィールド３０２を介してエンターされた遅延値に基づき実装される。指定された通信遅延の変動は、入力２９９の選択及びフィールド３０４を介してエンターされた変動値（例えば例示的にはプラスマイナス１０ミリ秒の変動）に基づき実装される。フィールド３１０，３１２は、フィールド３０２，３０４のそれぞれの値に関連する時間の単位（例えばミリ秒、マイクロ秒等）を選択するためのドロップダウンメニューを含む。指定された通信遅延間の相関は、入力３００の選択及びフィールド３０６を介してエンターされた相関値、例示的にはパーセンテージ相関値、に基づき実装される。指定された通信遅延の分布は、ドロップダウンメニュー３０１の選択に基づき実装される。分布は、正規分布又は他の適切な分布タイプを含む。
【０１１０】
図１２を参照すると、ネットワークパケット損失率を実装することに関連する選択可能データがタブ２８４内に示されている。ネットワークコンフィギュレータ７４は、入力（例示的にはボックス）３１３，３１４及びフィールド３１５，３１６のユーザ選択に基づきパケット損失率（即ちパケットが人為的に失われる比率）を選択し修正する。パケット損失率は、入力３１３の選択及びフィールド３１５を介してエンターされた比率の値に基づき、ネットワーク１８を介したパケット通信に対して実装される。パケット損失率は例示的にはパーセンテージとしてエンターされ、例えば０．１％はノード１６によって送られる１０００パケット毎に１パケットの損失をもたらす。パケット損失率のための相関は、入力３１４の選択及びフィールド３１６を介してエンターされた相関値（例示的にはパーセント値）に基づき実装される。
【０１１１】
図１３を参照すると、ネットワークパケット重複率を実装することに関連する選択可能データがタブ２８６内に示されている。ネットワークコンフィギュレータ７４は、入力（例示的にはボックス）３１７，３１８及びフィールド３１９，３２０のユーザ選択に基づきパケット重複率（即ち、パケットが人為的に重複させられる比率）を選択し修正する。パケット重複率は、入力３１７の選択及びフィールド３１９を介してエンターされた比率の値に基づき、ネットワーク１８を介したパケット通信に対して実装される。パケット重複率は例示的にはパーセンテージとしてエンターされ、例えば０．１％はノード１６によって送られる１０００パケット毎に１パケットの重複をもたらす。パケット重複率のための相関は、入力３１８の選択及びフィールド３２０を介してエンターされた相関値（例示的にはパーセント値）に基づき実装される。
【０１１２】
図１４を参照すると、ネットワークパケット破損率を実装することに関連する選択可能データがタブ２８８内に示されている。ネットワークコンフィギュレータ７４は、入力（例示的にはボックス）３２１及びフィールド３２２のユーザ選択に基づきパケット破損率（即ち、パケットが人為的に破損させられる比率）を選択し修正する。パケット破損率は、入力３２１の選択及びフィールド３２２を介してエンターされた比率の値に基づき、ネットワーク１８を介したパケット通信に対して実装される。パケット破損率は、例示的にはパーセンテージとしてエンターされ、例えば０．１％はノード１６によって送られる１０００パケット毎に１パケットの破損をもたらす。一実施形態では、パケット破損率のための相関が選択され実装されてもよい。
【０１１３】
図１５を参照すると、ネットワークパケット並び替え率を実装することに関連する選択可能データがタブ２９０内に示されている。ネットワークコンフィギュレータ７４は、入力（例示的にはボックス）３２３，３２４及びフィールド３２５，３２６のユーザ選択に基づきパケット並び替え率（即ち、パケット通信に際してパケットが順序を変えて置かれる比率）を選択し修正する。パケット並び替え率は、入力３２３の選択及びフィールド３２５を介してエンターされた比率の値に基づき、ネットワーク１８を介したパケット通信に対して実装される。パケット並び替え率は、例示的にはパーセンテージとしてエンターされ、例えば０．１％はノード１６によって送られる１０００パケット毎に１パケットの並び替えをもたらす。パケット並び替え率のための相関は、入力３２４の選択及びフィールド３２６を介してエンターされた相関値（例示的にはパーセント値）に基づき実装される。
【０１１４】
図１６を参照すると、ネットワーク通信速度を実装することに関連する選択可能データがタブ２９２内に示されている。ネットワークコンフィギュレータ７４は、入力（例示的にはボックス）３２７〜３３０及びフィールド３３１〜３３８のユーザ選択に基づきパケット通信速度（即ち、ノード１６間でパケットが通信される速度）を選択し修正する。パケット通信速度は、入力３２７の選択及びフィールド３３１を介してエンターされた速度値に基づき通信ネットワーク１８に対して実装され、パケット通信速度に対する許容限度(ceiling)（最大値）は、入力３２８の選択及びフィールド３３２を介してエンターされた許容限度値に基づき実装される。パケットバーストは、入力３２９の選択及びフィールド３３３を介してエンターされたパケットバースト値に基づき実装され、パケットバーストに対する許容限度（最大値）は、入力３３０の選択及びフィールド３３４を介してエンターされた許容限度値に基づき実装される。フィールド３３５及び３３６は、速度単位（例示的にはキロバイト毎秒）を選択するためのドロップダウンメニューを提供し、フィールド３３７及び３３８は、バースト単位（例示的にはバイト）を選択するためのドロップダウンメニューを提供する。
【０１１５】
図１７を参照すると、ネットワーク通信速度を実装することに関連する選択可能データがタブ２９４内に示されている。ネットワークコンフィギュレータ７４は、入力（例示的にはボックス）３４０のユーザ選択及びフィールド３４２を介してエンターされたカスタムコマンドに基づき、通信ネットワーク１８上の１つ以上のノード１６に関連するネットワークパラメータを修正するためのカスタムコマンドを提供する。
【０１１６】
図１８を参照すると、ワークロードコンテナコンフィギュレーションモジュール２０８が選択されている。モジュール２０８へのユーザ入力（例えば、入力３５２，３６０，３６２等の選択可能ワークロードコンテナデータのユーザ選択）に基づき、ワークロードコンテナコンフィギュレータ７６は、ノードクラスタ１４上での動作のためのワークロードコンテナモジュールを選択しコンフィギュアするように動作する。モジュール２０８は、種々の利用可能ワークロードコンテナモジュールに対応する複数の選択可能タブ３５０を含む。各利用可能ワークロードコンテナモジュールは、実行されるときにノードクラスタ１４上でのワークロードの実行を開始し制御するように動作する選択可能コードモジュールを含む。図示された実施形態においてモジュール２０８を介して利用可能なワークロードコンテナモジュールは、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memchashed)、カサンドラ(Cassandra)及びダーウィンストリーミング(Darwin Streaming)等の幾つかのサードパーティに係る市販のワークロードコンテナモジュールを含む。カサンドラは、基本的データベース動作を提供するためのキー値ストアを提供するオープンソースの分散型データ管理システムである。ダーウィンストリーミングは、アップルインク(Apple, Inc.)によって提供されるクィックタイム(QuickTime)等の、種々の動画媒体をストリーミングするために利用される媒体ストリーミングアプリケーションのオープンソースの実装である。オープンソースのワークロードコンテナソフトウェアがモジュール２０８を介して例示的に提供されているが、クローズドソースのワークロードコンテナが選択のために提供されてもよい。例えば、クローズドソースのワークロードコンテナソフトウェアに関連するライセンス情報が、ユーザインタフェース２００を介して入力され又は購入されてよい。また、１つ以上のカスタムワークロードコンテナモジュールが、モジュール２０８の「カスタム」タブを介してロードされ選択されてもよい。他のワークロードコンテナモジュールが提供されてもよい。例えば先に使用されたカスタムワークロードコンテナモジュール等の選択のために利用可能な追加的なワークロードコンテナモジュールのライブラリへのアクセスを提供する「ライブラリ」タブも提供されている。
【０１１７】
図１８の「ハドゥープ」タブの下で、ワークロードコンテナコンフィギュレータ７６は、入力３５２のユーザ選択に基づきアパッチハドゥープワークロードコンテナモジュールを選択する。アパッチハドゥープのバージョン及びビルドバリアント(build variant)は、一般タブ３５４の下でそれぞれドロップダウンメニュー３６０，３６２を介して選択可能である。選択されたワークロードコンテナモジュールの動作パラメータは、拡張タブ３５６及びカスタムタブ３５８を介して提供されるユーザ入力に基づきワークロードコンテナコンフィギュレータ７６によって調節可能である。調節のために利用可能な動作パラメータは、例示的には、選択されたワークロードコンテナモジュールに依存する。例えば、アパッチハドゥープがワークロードコンテナモジュールとして選択されている場合、図１９に示される拡張タブ３５６は、ワークロードコンテナコンフィギュレータ７６によってコンフィギュア可能な、アパッチハドゥープワークロードコンテナモジュールの例示的な選択可能動作パラメータのテーブル３６６を表示する。ワークロードコンテナコンフィギュレータ７６は、対応する選択ボックス３６７のユーザ選択に基づき、コンフィギュレーションのための動作パラメータを選択する。テーブル３６６は、オーバーライドフィールド３７４、マスタ値フィールド３７８及びスレーブ値フィールド３８０を含むコンフィギュレーションデータを受信するために、ワークロードコンテナコンフィギュレータ７６のための幾つかのフィールドを提供する。オーバーライドフィールド３７４内でのユーザ選択に基づき、対応する動作パラメータでそのワークロードコンテナが調節されるべきノード１６が選択される。ノード１６は、対応するドロップダウンメニューにおけるユーザ選択に基づき又は入力３８４のユーザ選択に基づきオーバーライドフィールド３７４において選択される。例示的には、「非(never)」の選択は、全ノード１６で実装されている対応する動作パラメータのデフォルトコンフィギュレーションをもたらし、「マスタ」又は「スレーブ」の選択は、それぞれマスタノード１６又はスレーブノード１６でのパラメータ調節の実装をもたらし、「常に(always)」の選択は、ノードクラスタ１４の全ノード１６でのパラメータ調節の実装をもたらす。代替的には、ノードクラスタ１４の個々のノード１６が、調節された動作パラメータの実装のために選択されてよい。
【０１１８】
マスタ値フィールド３７８及びスレーブ値フィールド３８０においては、制約、データ値又は他のユーザ選択が、マスタノード１６又はスレーブノード１６のそれぞれにおけるワークロードコンテナの対応する動作パラメータのための調節値を提供する。プロパティ名フィールド３７６は、例示的には、選択されたワークロードコンテナモジュールのコードモジュールにおいて参照される関連動作パラメータの名前をリストする。記述フィールド３８２は、例示的には、関連動作パラメータのユーザに対して概要を表示する。入力３８６により、ユーザはテーブル３６６内にリストされた全動作パラメータを選択又は除外することができる。入力３８８により、ユーザは、先の選択又はパラメータ変更を逆にすること又は「取り消し(undo)」が可能であり、入力３９０により、ユーザは、フィールド３７４，３７８，３８０内に提供された値をデフォルト設定にリセットすることができる。
【０１１９】
テーブル３６６内でのユーザ選択に基づきワークロードコンテナコンフィギュレータ７６で調節可能な動作パラメータの例としては、ノード１６のリード／ライト（Ｉ／Ｏ）動作、ソーティング動作、ノード１６のネットワークソケット動作（例えばＴＣＰソケット接続）のコンフィギュレーション、及び、ワークロードコンテナのファイルシステム５５（例えばアパッチハドゥープのためのＨＤＦＳ）に関連する動作パラメータが挙げられる。リード／ライト動作に関連する動作パラメータは、例えば、ノード１６のメモリバッファサイズ及びリード／ライト動作に際して転送されるデータブロックのサイズを含む。例示的には、テーブル３６６の行３６８に示されるメモリバッファサイズは、ノード１６のリード／ライト（Ｉ／Ｏ）動作に際してどれくらいの量のデータがバッファされる（キャッシュ内に一時的に記憶される）のかに対応している。図示された実施形態では、メモリバッファサイズは、ノードハードウェアのメモリページ又はデータブロックサイズの倍数である。メモリページ又はデータブロックは、ここに述べられるように、メモリ割り振り及びメモリ転送のためのデータの最小単位である、ノード１６の固定長ブロック又は仮想メモリを参照する。図１９の行３６８においては、マスタノード及びスレーブノードの値は、例示的に４０９６ビットに設定されているが、これらの値は、８１９２ビット又はノードプロセッサ４０（図２）のデータブロックサイズの他の適切な倍数に調節されてよい。同様に、リード／ライト動作に際して転送されるデータブロックのサイズもまた、テーブル３６６へのユーザ入力に基づき調節される。
【０１２０】
ソーティング動作に関連する動作パラメータは、例えば、データをソーティングするときに同時にマージするデータストリームの数を含む。ワークロードコンテナのファイルシステム（例えば図２のファイルシステム５５）に関連する動作パラメータは、各ノード１６のメモリ４２に記憶されるファイルシステム記録又はファイルの数（例えば行３７０参照）及びファイルシステム５５に対する処理要求のために割り振られる各ノード１６の処理スレッドの数を含む。テーブル３６６の例示的な行３７０においては、図２のファイルシステム５５のためにメモリ４２内に記憶される記録の数は、マスター及びスレーブノード１６に対して両方とも１０００００記録であるが、他の適切な記録制限値がエンターされてもよい。一実施形態では、ファイルシステム記録の数を制限することは、ファイルシステム５５によるファイルの複製を制限するのに役立つ。
【０１２１】
ここで述べられるＴＣＰネットワークソケット等のネットワークソケットのコンフィギュレーション及び動作に関連する動作パラメータは、ワークロードコンテナとネットワークソケットの相互作用を伴う。例えば、ネットワークソケットの通信遅延又はレイテンシ及びネットワーク１８（図１）を介して送られるパケットの数が調節されてよい。例えば、ノード１６のＴＣＰソケット接続を介して送られるデータパケットのレイテンシ及び数を調節するために、テーブル３６６の行３７２が、アルゴリズム、例示的には当該技術分野において知られる「ネーグルアルゴリズム(Nagle's algorithm)」、のフィールド３７８，３８０を介してのアクティベーション／ディアクティベーションを可能にしている。ネットワークソケットの動作に関連する他の適切な動作パラメータが調節されてもよい。
【０１２２】
ワークロードコンテナコンフィギュレータ７６によって調節可能な他の例示的な動作パラメータは、ノード１６のプロセッサ４０により同時に実行されるソフトウェアタスクの数を含む。例えば、ユーザは、ワークロード実行に際して同時に実行される一定数のタスク（例えばＪＡＶＡ（登録商標）タスク）を、テーブル３６６への入力を介して指定してよく、これに伴いワークロードコンテナコンフィギュレータ７６はタスクの数を調節する。ワークロードコンテナに関連する他の適切な動作パラメータが調節されてよい。
【０１２３】
図２０のカスタムタブ３５８を参照すると、選択されたワークロードコンテナモジュールの更なるカスタム化を可能にするために、追加的なコンフィギュレーション調節が、選択されたワークロードコンテナモジュール、例示的にはハドゥープワークロードコンテナモジュール、のために実装されてよい。ワークロードコンテナコンフィギュレータ７６は、フィールド３９２，３９４，３９６へと入力されたコマンド文字列並びに対応する選択可能ボックス３９８のユーザ選択に基づき、選択されたワークロードコンテナモジュールのコンフィギュレーションを更に調節する。図示された実施形態では、これらのフィールド３９２，３９４，３９６は、それぞれ、ハドゥープマスタノードと、ハドゥープファイルシステムと、タスクトラッカ(task tracker)内のタスクの数、一時的データを何処に置くかのローカルディレクトリ及び他の適切なパラメータ等の、マップリデュース実行に関連するパラメータと、に適用されるコンフィギュレーションを指定する。
【０１２４】
他の利用可能ワークロードコンテナモジュール（例えばメムキャッシュディー、カサンドラ、ダーウィンストリーミング等）に関連する動作パラメータは、ハドゥープワークロードコンテナモジュールで説明したのと同様に調節される。モジュール２０８の入力３５２とタブ３５４，３５６，３５８を介して提供されたコンフィギュレーション情報とに基づき、ワークロードコンテナコンフィギュレータ７６は、ノードクラスタ１４のノード１６へとロードするためのワークロードコンテナイメージファイル９４（図３）を生成する。一実施形態では、ワークロードコンテナイメージファイル９４は、制御サーバ１２のメモリ９０内又はノード１６のメモリ４２内にセーブされ、ワークロードコンテナコンフィギュレータ７６は、イメージファイル９４をコンフィギュレーション情報で更新する。一実施形態では、ワークロードコンテナモジュールの複数のコンフィギュレーションがセーブされてよく、次いで、例えばワークロード及びシステム性能に対するワークロードコンテナコンフィギュレーション変更の影響を調査する等のために、順に実行されてよい。
【０１２５】
図２１を参照すると、ワークロードコンテナコンフィギュレータ７６は、モジュール２０８の「カスタム」タブの入力３５３，４０１のユーザ選択に基づき、ノード１６上での実行のためのユーザ定義のカスタムワークロードコンテナモジュールを選択する。図示された実施形態では、カスタムワークロードコンテナモジュールは、ここに述べられるように、ユーザによって提供され且つ商業的には利用可能でなくてよいワークロードコンテナモジュールを含む。ワークロードコンテナコンフィギュレータ７６は、例示的には、ワークロードコンテナコードモジュールを含む圧縮ジップ(zip)ファイルをロードする。具体的には、ジップファイルは、ノードクラスタ１４上でのワークロードの実行を連携させるためのユーザ定義のパラメータを含むコンフィギュレーションファイル又はスクリプトを含む。図２１に示されるように、テーブル４００は、制御サーバ１２（又はコンピュータ２０）に記憶され且つ選択可能な１つ以上の入力４０１を介してユーザ選択のために利用可能なロード済みのカスタムワークロードコンテナモジュールのリストを提供する。追加的なカスタムワークロードコンテナモジュールが、入力４０２，４０４のユーザ選択に基づきそれぞれアップロード又はダウンロードされテーブル４００内に表示され、カスタムワークロードコンテナモジュールは、入力４０３のユーザ選択に基づきテーブル４００から削除される。ユーザは、ジップフォルダパス及び／又はコンフィギュレーションスクリプトパスを、それぞれのフィールド４０６，４０８を介してエンターすることができる。一実施形態では、カスタムワークロードコンテナモジュールは、コンピュータ２０（図１）のメモリ３４上など、クラウドコンピューティングシステム１０から遠隔の場所に記憶されており、入力４０２のユーザ選択に基づき制御サーバ１２のメモリ９０（図３）へとアップロードされる。
【０１２６】
図２２を参照すると、ワークロードコンフィギュレーションモジュール２１０が選択されている。モジュール２１０へのユーザ入力に基づき、ワークロードコンフィギュレータ７８（図３）は、ノードクラスタ１４により選択されたワークロードコンテナモジュールでの実行のためのワークロードを選択しコンフィギュアするように動作する。また、ワークロードコンフィギュレータ７８は、選択されたワークロードコンテナモジュールでノード１６上で実行される合成テストワークロードを、ユーザ定義のワークロードパラメータに基づき生成するようにも動作する。モジュール２１０は幾つかの選択可能タブを含み、これらの選択可能タブは、ワークロードタブ４１０、合成カーネルタブ４１２、ＭＣブラスタ(MC-Blaster)タブ４１４、設定ライブラリタブ４１６及びクラウドスィート(CloudSuite)タブ４１７を含む。図２２のワークロードタブ４１０の下で、例示的には選択可能入力４１８，４２４，４２８を含む選択可能ワークロードデータのユーザ選択に基づき、実行されるべきワークロードがワークロードコンフィギュレータ７８によって選択される。例示的には、利用可能ワークロードは、例えば、ハドゥープワークロードコンテナ上での実行に適したワークロード（入力４１８）、メムキャッシュディーワークロードコンテナ上での実行に適したワークロード（入力４２４）、又は、カスタムワークロード（入力４２８）等の、選択されたワークロードコンテナのためにコンフィギュアされた任意の他の適切なワークロードを含む。
【０１２７】
図２２を参照すると、ハドゥープワークロードが、実際のワークロード及び合成テストワークロードから、対応する入力４１８の１つのユーザ選択に基づき選択されている。実際のワークロードは、ハドゥープワークロードコンテナのマップリデュース機能に適した予め定義されたコードモジュールを含み、フィールド４２２内の実際のワークロードの記憶ロケーションの識別に基づき制御サーバ１２へとロードされる。一実施形態では、実際のワークロードは、図１のメモリ３４等の、クラウドコンピューティングシステム１０から遠隔のメモリ上に記憶され、フィールド４２２を介して制御サーバ１２のメモリ９０へとアップロードされる。他の実施形態では、実際のワークロードは、ハドゥープワークロードコンテナモジュールと共に提供されるサンプルハドゥープワークロードであり、あるいは制御サーバ１２へ予めロードされた他のワークロードである。また、合成テストワークロードは、ハドゥープワークロードコンテナ上での実行のために、対応する入力４１８のユーザ選択に基づき選択可能である。入力記録の数、又は、合成テストワークロードと共に生成されるべき命令の数であって、合成テストワークロードの「マップ」段階において処理されるべき命令の数は、ここに述べられるように、フィールド４２０を介してエンターされてよく、また、ワークロードコンフィギュレータ７８のシンセサイザ７９（図３）への入力として提供されてよい。シンセサイザ７９による合成テストワークロードの生成のための他の入力パラメータは、ここに述べられるように、合成カーネルタブ４１２を介してコンフィギュアされる。ハドゥープワークロードコンテナでの実行のために合成テストワークロードが例示的に適用されているが、他の利用可能ワークロードコンテナのために合成テストワークロードが選択され生成されてもよい。
【０１２８】
カスタムスクリプトは、選択されたワークロードコンテナモジュールでの実行のための予め定義された実際のワークロードとして、フィールド４３０を介して且つ入力４２８のユーザ選択があった場合にロードされる。カスタムスクリプトは、選択されたワークロードコンテナモジュールでノードクラスタ１４によって実行される１つ以上の実行コマンドを含むユーザ提供のコードを備える。図示された実施形態では、カスタムスクリプトは、バッチプロセッサ８０でのシステムテストに際して実行されるワークロードとして用いられ、種々のネットワーク、ワークロードコンテナ及び／又は他のシステムコンフィギュレーションの変更が、ここに述べられるように、逐次的ワークロード実行に際してなされて、システム性能への影響がモニタされる。
【０１２９】
予め定義されたワークロードが、入力４２４のユーザ選択に基づき、メムキャッシュディーワークロードコンテナでの実行のためにロードされてもよい。一実施形態では、メムキャッシュディーワークロードは、「セット」コマンドを介してキー値ペアを記憶すると共に「ゲット」コマンドを介してキー値ペアをリトリーブするメモリ内加速構造を含む。１つのキー値ペアは、２つのリンクされたデータ項目のセットであり、これらデータ項目は、データのある項目のための識別子であるキーと、そのキーによって識別されたデータ又はそのデータのロケーションへのポインタのいずれかである値と、を含む。メムキャッシュディーワークロードは、例示的には、フィールド４２６への入力値に基づきそのランタイムが選択される選択可能ＭＣブラスタツールで動作する。ＭＣブラスタは、一定数のネットワーク（例えばＴＣＰ）ソケット接続上でメムキャッシュディーから記録をリード／ライトする要求を生成することによって、テスト中のシステムを刺激するためのツールである。各要求は、キー及び値を指定する。ＭＣブラスタツールは、図２４のＭＣブラスタタブ４１４を介してコンフィギュアされる。図２４を参照すると、フィールド４６０への入力は処理スレッド毎に利用するＴＣＰ接続の数を指定し、フィールド４６２への入力は動作させるキーの数を指定し、そしてフィールド４６４，４６６への入力は、１秒あたりに送られることを要求される「ゲット」コマンド及び「セット」コマンドをそれぞれ指定する。ユーザ指定の（カスタム）バッファサイズは、対応する入力４６９の選択及びフィールド４６８へエンターされた値に基づきワークロードコンフィギュレータ７８によって実装されてよく、ＴＣＰ要求は、入力４７０の「オン(on)」の選択に基づき遅延させられてよい。開始すべき一定数の処理スレッドが、対応する入力４７３のユーザ選択及びフィールド４７２にエンターされた値に基づき、ワークロードコンフィギュレータ７８によってカスタマイズされてよい。処理スレッドのデフォルト数は、ノード１６のアクティブな処理コアの数に等しい。ＵＤＰリプレイポートの数は、フィールド４７４への入力に基づき選択され、ワークロード実行の結果として記憶される（又は戻される）値のサイズ（バイト）は、フィールド４７６への入力に基づき選択される。
【０１３０】
図２３を参照すると、合成テストワークロードが、合成カーネルタブ４１２を介して提供されたユーザ入力に基づき、シンセサイザ７９によって生成される。具体的には、ワークロードコンフィギュレータ７８のシンセサイザ７９（図３）は、制御サーバ１２のメモリ９０へとロードされるコードモジュール、例示的にはトレース(trace)ファイル（例えばコンフィギュレーションファイル）、において提供されるユーザ定義のパラメータに基づき、合成テストワークロードを生成する。トレースファイルは、ここに述べられるように、合成テストワークロードの所望の計算上の(computational)特性を記述するデータを含む。図２３の「合成」入力４３４のユーザ選択があると、フィールド４３６又はフィールド４３８へのユーザ入力に基づき、記憶されているトレースファイルのロケーションが識別されてよい。フィールド４３６は、例示的には、トレースファイルを含むハードディスクロケーション（例えば図１のコンピュータ２０のメモリ３４）を識別し、フィールド４３８は、例示的には、トレースファイルをリトリーブするためのウェブアドレス又はＵＲＬを識別する。テーブル４４０は、トレースファイルと、ロード済みで選択のために利用可能な先に生成された合成テストワークロードと、を表示する。トレースファイルは、入力４４２のユーザ選択でロードされると共にテーブル４４０内に表示され、入力４４４のユーザ選択でテーブル４４０から削除され、そして入力４４６のユーザ選択に基づきダウンロードされる（即ちフィールド４３８において識別されたＵＲＬから）。トレースファイルは例示的にはＪＳＯＮファイルフォーマットであるが、他の適切なファイルタイプが提供されてもよい。合成テストワークロードにおいて生成されるべき命令の最大数はフィールド４４８において識別され、合成テストワークロードの繰り返しの最大数はフィールド４５０において識別される。代替的には、先に生成された合成テストワークロードが、ライブラリ入力４３２のユーザ選択、フィールド４３６又は４３８での合成テストワークロードの記憶ロケーション（ローカルハードドライブ、ウェブサイト等）の識別、及び、テーブル４４０に表示された所望の先に生成された合成テストワークロードに対応する入力４４１のユーザ選択に基づき、ワークロードコンフィギュレータ７８によってロードされる。先に生成された合成テストワークロードの命令及び繰り返しの最大数は、フィールド４４８，４５０で調節可能である。
【０１３１】
トレースファイルは、ワークロード特性と、合成テストワークロードを生成するためにシンセサイザ７９による入力として用いられるユーザ定義のパラメータと、を識別する修正可能データ構造、例示的には修正可能フィールドを有するテーブル、を含む。このテーブルは、テーブルのフィールドがテーブルへのユーザ入力及びユーザ選択に基づき修正され得るように、ユーザインタフェース２００又はユーザコンピュータ２０のユーザインタフェースを伴う等してユーザインタフェース上に表示される。例えば、ここに述べられる図３２のテーブル１５０を参照されたい。トレースファイルは、更に、シンセサイザ７９による入力として用いられる対象となる命令セットアーキテクチャ（ＩＳＡ）の少なくとも一部を識別する。トレースファイルは、更に、合成テストワークロードの命令に関連する他の特性を識別し、これら他の特性は、命令間依存関係（例えば第１の命令は第１の命令を実行する前の第２の命令の完了に依存する）、メモリレジスタ割り振り制約（例えば命令が特定のレジスタからの値をとるように制約する）、及び、アーキテクチャ上の実行制約（例えば制限された数の論理ユニットが特定のタイプの命令を実行するために利用可能である）を含む。従って、コンフィギュレータ２２は、トレースファイルで指定された実行特性に基づきワークロード命令がどれくらい長く実行されるべきであるかを予測するように動作する。
【０１３２】
トレースファイル内に記述されたユーザ定義のワークロードパラメータの例としては、生成されるべき命令の総数や、例えば浮動小数点命令、整数命令及び分岐命令を含め生成されるべき命令のタイプや、例えば実行フローの分岐の蓋然性（即ち命令実行に際して分岐が行われやすいかどうか又は実行が当該実行フローパスに沿って進行して分岐へはジャンプしないかどうか）等の命令実行の挙動（例えば実行フロー）や、命令間でのデータ依存性の分布や、実行及び／又は転送される基本ブロックの平均サイズや、命令実行に関連するレイテンシ（即ち特定の命令又は命令タイプの実行にどれくらいのサイクルが必要であるか等、１つの命令又は命令タイプを実行するのに要する時間の長さ）が挙げられる。一実施形態では、ユーザ定義のワークロードパラメータは、整数命令又は浮動小数点命令として特定のどの命令を用いるのかを指定する。一実施形態では、ユーザ定義のワークロードパラメータは、各命令タイプ（例えば整数、浮動小数点、分岐）の平均数及び統計的分布を指定する。一実施形態では、各命令は１つ以上の入力及び出力引数を含む。
【０１３３】
図示された実施形態では、トレースファイル内に記述されたワークロードパラメータ及び命令セットアーキテクチャは、テーブル駆動で再対象化可能な方法において(in a table-driven, retargetable manner)提供される。テーブルのコンテンツに対する変更に基づき、コンフィギュレータ２２は、種々のマイクロアーキテクチャ及びシステム並びにノード１６の種々の命令セットアーキテクチャを対象とするように動作する。例示的なテーブル１５０が図３２に示されており、テーブル１５０は、コードシンセサイザ７９へ入力されるべきユーザ定義のワークロードパラメータのセットを表すデータを含む。図３２を参照すると、テーブル１５は、生成された合成テストワークロードに対する命令の集まりを記述する命令部１５２と、合成テストワークロードと共に用いられるべきアドレシングモードを記述するアドレシングモード部１５４と、を含む。図示されたもの以外の命令及びアドレシングモードがテーブル１５０内に提供されてもよい。テーブル１５０の命令部１５２は、幾つかの修正可能フィールド１５８，１６０，１６２，１６４を含む。フィールド１５８は生成されるべき命令を識別するデータを含み、フィールド１６０は命令に関連する計算タイプを識別するデータを含み、フィールド１６２はシンセサイザ７９によるコード生成を支援するために割り当てられたニーモニック(mnemonic)を識別するデータを含む。フィールド１６４は、種々のアドレシングモード（即ち命令の引数がメモリから得られるウェイ(way)）を識別するデータを含む。
【０１３４】
図示された実施形態では、入力コマンド１５６（「gen_ops.initialize()」）は、生成されるべき命令を記述するテーブル１５０の命令部１５２が開始していることを示している。行１６６は、１つ以上の命令を生成するためのユーザ定義のワークロードパラメータの一例を示す。行１６６を参照すると、フィールド１５８にエンターされた「D(IntShortLatencyArith)」は、短いレイテンシを有する整数演算命令を指定し、フィールド１６０，１６２にエンターされた「op_add」及び「addq」は、その命令が加算、即ち「add」命令であることを示している。一実施形態では、短いレイテンシは、プロセッサ（例えばノードプロセッサ４０）が命令を実行するのに１サイクル又は数サイクル要することを示している。フィールド１６４の「addr_regOrw_reg1r」は、第１のレジスタ０引数が「rw」（リード及びライト）であり第２のレジスタ１引数が「r」（リード）であることを示している。同様に、フィールド１６４の「addr_reg0rw_imm」は、命令の他の変数を記述し、ここでは、第１の引数（レジスタ０引数）は「rw」（リード及びライト）であり、第２の引数は「imm」（「即時的(immediate)」）値（例えば１２３のような数字）である。
【０１３５】
テーブル１５０のアドレシングモード部１５４を参照すると、例示的な行１７０は、レジスタ上でのみ動作する命令のクラスを識別するフィールド１７２の「addr_regOw_reg1r」を含む。第１のレジスタ引数（即ちレジスタ０）は宛先「w」（ライト）であり、第２のレジスタ引数（即ちレジスタ１）は入力「r」（リード）である。フィールド１７４，１７６におけるエントリは、引数を識別すると共に、リード引数に対しては「src」を、ライト引数に対しては「dst」を、又は、リード・修正・ライト引数に対しては「rmw」を示している。ｘ８６アーキテクチャにおいては、例えば、第１のレジスタ引数は「rmw」であってよく（引数はリードされ、そこで動作し、次いで結果と共にライトされる）、あるいは他の適切な引数であってよい。追加的な又は異なるユーザ定義のワークロードパラメータがテーブル１５０を介して指定されてよい。
【０１３６】
一実施形態では、テーブル１５０（例えばトレースファイル）は、例えばユーザコンピュータ２０による等、オフラインで生成されて、コンフィギュレータ２２へとロードされる。一実施形態では、テーブル１５０は、制御サーバ１２に記憶され又は制御サーバ１２へとロードされ、そしてユーザインタフェース２００によって表示された選択可能且つ修正可能なデータを介してユーザがユーザ定義のワークロードパラメータを修正することができるように、ユーザインタフェース２００で表示される。
【０１３７】
図３３を参照すると、合成テストワークロードを生成して実行するための例示的な処理フローが示されている。合成テストワークロードを生成すると共にコンフィギュレーションファイル２８及び合成ワークロードイメージ９６を各ノード１６へと出力するコードシンセサイザ７９が示されており、各ノード１６の合成ワークロードエンジン５８は、ここに述べられるように合成テストワークロードを実行する。図３３のブロック６０，６２，６４は、シンセサイザ７９へと入力されるトレースファイル内に提供されるコンテンツの抽象的表現を提供する。ブロック６０は、命令セットの実行フローを表現する一般的タスクグラフである。ブロック６２は実行されるタスク機能を表現しており、これらのタスク機能は、入力命令、出力命令、開始命令及び終了命令を含む。ブロック６４はワークロード挙動パラメータを表現しており、これらのパラメータは、データブロックサイズ、実行の継続時間とレイテンシ、メッセージ伝搬、及び、ここに述べられる他のユーザ定義のパラメータを含む。
【０１３８】
シンセサイザ７９は、例示的には、コードジェネレータ６６及びコードエミッタ６８を含み、これらの各々は、ここに述べられる種々の機能を行うために１つ以上のプロセッサ２２によってアクセス可能なメモリ（例えばメモリ９０）に記憶されたソフトウェアコード又はファームウェアコードを実行する制御サーバ１２の１つ以上のプロセッサ２２を備える。コードジェネレータ６６は、ユーザ定義のワークロードパラメータ及び対象となる命令セットアーキテクチャを記述するトレースファイルのデータ構造（例えばテーブル）上で動作し、指定された実行プロパティを有する抽象化(abstracted)合成コードを生成する。コードエミッタ６８は、抽象化合成コード（例えば実行ハーネスにおいてリンクされるべきアセンブリコード、バイナリコード、又は、シミュレーション基盤とリンクされるべき位置無依存(position-independent)コード、等）から、実行環境に適したフォーマットで実行可能合成コード（即ち合成テストワークロード）を作成する。一実施形態では、実行可能コードの所望のフォーマットは、シンセサイザ７９においてハードコード化される。他の実施形態では、実行可能コードの所望のフォーマットは、ユーザインタフェース２００の選択可能データを介して選択可能である。一実施形態では、フルサイズのワークロードを実行するようには構成されていないサイクル・アキュレート(cycle-accurate)シミュレータを介して実行可能コードが実行され得るように、実行可能コードはコンパクトなサイズである。シンセサイザ７９の他の適切なコンフィギュレーションが提供されてもよい。一実施形態では、シンセサイザ７９は、ノードクラスタ１４のノード１６のコンピュータアーキテクチャデータへのアクセスを有する。従って、シンセサイザ７９は、ノードクラスタ１４の既知のコンピュータアーキテクチャデータに基づき、特定のマイクロアーキテクチャ及び命令セットアーキテクチャを対象とする合成テストワークロードを生成する。従って、合成テストワークロードは、例えば、アーキテクチャ上の特性の所望のセットをエクササイズするために対象とされてよい。
【０１３９】
シンセサイザ７９によって生成された合成テストワークロードは、選択されたワークロードコンテナモジュールと共にノード１６上で実行可能なコードモジュールを含む。合成テストワークロードが実行のために生成され選択されると、その合成テストワークロードは、図３のワークロードイメージファイル９６として制御サーバ１２のメモリ９０内に記憶される。コンフィギュレータ２２は、次いでそのワークロードイメージファイル９６を実行のために各ノード１６へとロードし、あるいはノード１６がそのワークロードイメージファイル９６をリトリーブする。一実施形態では、ハドゥープワークロードコンテナモジュールが選択されると、合成テストワークロードは、マップリデュースの「マップ」段階として実行される。
【０１４０】
図示された実施形態では、合成テストワークロードは、ここに述べられるように、テスト及び性能解析に対してコンピューティングシステム１０のハードウェアをエクササイズするために実行される。シンセサイザ７９は、トレースファイルを介して所望のワークロード挙動を入力として受信し、この入力に従って挙動する合成テストワークロードを生成する。具体的には、ここに述べられるように、実行されるべき命令の数及び命令のタイプの統計的分布等の、所望のワークロード挙動の統計的プロパティが、シンセサイザ７９への入力である。例えば、ロードされたトレースファイルは、１０００個の命令を含むプログラムループを要求するユーザ定義のパラメータを含んでいてよく、そのトレースファイルは、命令の３０％が整数命令であり、１０％が特定の分岐構造を有する分岐命令であり、４０％が浮動小数点命令である、等を指定してよい。トレースファイル（又は図２３のフィールド４５０）は、そのループが１００回実行されるべきであることを指定してよい。シンセサイザ７９は、次いで、要求されたパラメータを含むプログラムループを合成テストワークロードとして生成する。
【０１４１】
一実施形態では、生成された合成テストワークロードは、特定のプロプリエタリ(proprietary)コード又は既知のアプリケーション若しくはプログラムの複合(complex)コード等の実際のワークロードの挙動をエミュレートする役割を果たす。例えば、何らかのプロプリエタリコードは、ユーザにとってアクセス可能でなく利用可能でない命令を含む。同様に、何らかの複合コードは、複雑且つ多数の命令を含む。場合によっては、そのようなプロプリエタリコード又は複合コードに基づきワークロードを作成することは、好ましくはなく又は困難であるかもしれない。従って、プロプリエタリコード又は複合コードの全命令を含むワークロードコードモジュールを作成するのではなく、プロプリエタリコード又は複合コードがプロプリエタリコード又は複合コードの実行に際してどのようにサーバハードウェア（ノード１６又は他のサーバハードウェア）をエクササイズするのかをモニタするために、モニタリングツール（例えばコンフィギュレータ２２からはオフラインである）が用いられるのである。プロプリエタリコードの実行に際してモニタリングツールによって集められた統計的データは、プロプリエタリコード又は複合コードの所望の実行特性を表すパラメータを識別するために用いられる。パラメータの集まりはトレースファイル内に提供される。トレースファイルは次いでシンセサイザ７９への入力としてロードされ、シンセサイザ７９は、統計的入力及び他の所望のパラメータに基づき、プロプリエタリコードと同様に挙動する合成コードを生成する。従って、特定のコードの複合命令又はプロプリエタリ命令は、そのコードのクラウドコンピューティングシステム１０上での挙動をモデル化する上で必要とされない。
【０１４２】
一実施形態では、シンセサイザ７９は、バッチプロセッサ８０と協働して、種々のトレースファイルからシンセサイザ７９によって生成された複数の合成テストワークロードを実行する。一実施形態では、ノード１６の異なる対象プロセッサ、即ちＣＰＵ及びＧＰＵｓの両者、をテストする修正されたユーザ定義のワークロードパラメータのテーブル（例えば図３２のテーブル１５０）に基づき、複数の合成テストワークロードが生成される。
【０１４３】
図３４は、選択されたワークロードでクラウドコンピューティングシステム１０をコンフィギュアするために図１及び図３の制御サーバ１２のコンフィギュレータ２２によって行われる例示的な動作のフローダイアグラム６００を示している。図３４の説明全体に対して図１及び図３が参照される。図示された実施形態では、コンフィギュレータ２２は、ユーザインタフェース２００を介して受信した複数のユーザ選択に基づき、図３４のフローダイアグラム６００に従って図１のノードクラスタ１４をコンフィギュアする。ブロック６０２では、ユーザインタフェース２００を介して受信したユーザ選択（例えば入力４１８の選択）に基づき、ワークロードコンフィギュレータ７８は、クラウドコンピューティングシステム１０の複数ノードのクラスタ１４上での実行のためのワークロードを選択する。ワークロードは、ブロック６０２で、実際のワークロード及び合成テストワークロードを含む複数の利用可能ワークロードから選択される。実際のワークロードは、ここに述べられるように、制御サーバ１２によってアクセス可能なメモリ（例えばメモリ９０又はメモリ３４）内に記憶されたコードモジュールを備えている。ブロック６０４では、ここに述べられるように、選択されたワークロードの処理が複数ノードのクラスタ１４に分散されるように、選択されたワークロードを実行するために、コンフィギュレータ２２は、クラウドコンピューティングシステム１０の複数ノードのクラスタ１４をコンフィギュアする。
【０１４４】
一実施形態では、コンフィギュレータ２２は、選択可能な実際のワークロードデータと選択可能な合成テストワークロードデータとを備えるユーザインタフェース２００を提供し、ワークロードの選択は、選択可能な実際のワークロードデータ及び選択可能な合成テストワークロードデータの少なくとも一方に基づく。例示的な選択可能な実際のワークロードデータは、「実際のワークロード」に対応する図２２の選択可能入力４１８と、図２２の選択可能入力４２４，４２８と、を含み、例示的な選択可能合成テストワークロードデータは、「合成ワークロード」に対応する図２２の選択可能入力４１８と、図２３の選択可能入力４３４，４３６，４４１と、を含む。一実施形態では、ワークロードコンフィギュレータ７８は、予め生成された合成テストワークロード、及び、選択可能合成テストワークロードデータのユーザ選択に基づくユーザ定義のワークロードパラメータのセット、の少なくとも一方を選択する。予め生成された合成テストワークロードは、制御サーバ１２によってアクセス可能なメモリ（例えばメモリ９０又はメモリ３４）内に記憶されたコードモジュール（例えばライブラリ入力４３２を介してロードされる）を備える。シンセサイザ７９は、例示的にはここに述べられるトレースファイルを介して提供されたユーザ定義のワークロードパラメータのセットの選択に基づき、合成テストワークロードを生成するように動作する。トレースファイルのユーザ定義のワークロードパラメータは、ここに述べられるように、合成テストワークロードの実行特性を識別する。
【０１４５】
ここに述べられるように、例示的なユーザ定義のワークロードパラメータは、合成テストワークロードの命令の数、合成テストワークロードの命令のタイプ、合成テストワークロードの少なくとも１つの命令の実行に関連するレイテンシ、及び、合成テストワークロードの実行繰り返しの最大数の少なくとも１つを含み、命令のタイプは、整数命令、浮動小数点命令、及び、分岐命令の少なくとも１つを含む。一実施形態では、複数ノードのクラスタ１４による合成テストワークロードの実行は、ここに述べられるように、複数ノードのクラスタ１４による複合ワークロード又はプロプリエタリワークロード等の実際のワークロードの実行に関連する実行特性をシミュレートするように動作する。
【０１４６】
図３５は、合成テストワークロードでクラウドコンピューティングシステム１０をコンフィギュアするために図１及び図３の制御サーバ１２のコンフィギュレータ２２によって行われる例示的な動作のフロー図６１０を示している。図３５の説明全体に対して図１及び３が参照される。図示された実施形態では、コンフィギュレータ２２は、ユーザインタフェース２００を介して受信した複数のユーザ選択に基づき、図３５のフロー図６１０に従って図１のノードクラスタ１４をコンフィギュアする。ブロック６１２では、ユーザインタフェース２００を介して提供されたユーザ定義のワークロードパラメータのセットに基づき、ワークロードコンフィギュレータ７８のコードシンセサイザ７９は、複数ノードのクラスタ１４上での実行のための合成テストワークロードを生成する。ユーザ定義のワークロードパラメータのセット（例えばトレースファイルで提供される）は、ここに述べられるように、合成テストワークロードの実行特性を識別する。ブロック６１４では、ここに述べられるように、合成テストワークロードの処理が複数ノードのクラスタに分散されるように合成テストワークロードを実行するために、コンフィギュレータ２２は、複数ノードのクラスタ１４を合成テストワークロードでコンフィギュアする。
【０１４７】
一実施形態では、合成テストワークロードの生成は、複数ノードのクラスタ１４に関連する命令セットアーキテクチャ及びマイクロアーキテクチャの少なくとも一方を識別するコンピュータアーキテクチャデータに更に基づく。ここに述べられるように、一実施形態では、コンフィギュレータ２２は、複数ノードのクラスタ１４の各ノード１６の命令セットアーキテクチャ及びマイクロアーキテクチャをコンフィギュレータ２２が識別することができるように、コンピュータアーキテクチャデータをメモリ（例えばメモリ９０）内に記憶している。従って、メモリ内に記憶されたコンピュータアーキテクチャデータに基づき合成テストワークロードがノードクラスタ１４のノード１６の特定のコンピュータアーキテクチャでの実行のためにコンフィギュアされるように、コンフィギュレータ２２は、合成テストワークロードを生成する。一実施形態では、コードシンセサイザ７９は、複数ノードのクラスタ１４のノード１６に関連する異なるコンピュータアーキテクチャに各々が基づく複数の合成テストワークロードを生成し、各コンピュータアーキテクチャは、命令セットアーキテクチャ及びマイクロアーキテクチャの少なくとも一方を含む。一実施形態では、コンフィギュレータ２２は、選択可能合成テストワークロードデータを備えるユーザインタフェース２００を提供し、ワークロードコンフィギュレータ７８は、選択可能合成テストワークロードデータのユーザ選択に基づき、合成テストワークロードの生成のためのユーザ定義のワークロードパラメータのセットを選択する。例示的な選択可能合成テストワークロードデータは、「合成ワークロード」に対応する図２２の選択可能入力４１８と、図２３の選択可能入力４３４，４３６，４４１と、を含む。一実施形態では、ユーザ定義のワークロードパラメータのセットは、ユーザインタフェース（例えばユーザインタフェース２００又はコンピュータ２０のディスプレイ２１上に表示されたユーザインタフェース）上に表示されたデータ構造（例えば図３２のテーブル１５０）において識別され、このデータ構造は、図３２のテーブル１５０に関してここに述べられるように、少なくとも１つのユーザ定義のワークロードパラメータを各々が識別する複数の修正可能入力フィールドを含む。一実施形態では、コンフィギュレータ２２は、ユーザインタフェース２００を介して受信したユーザ選択（例えば入力２６９〜２７６でのブート時間パラメータの選択）に基づき、ノードクラスタ１４の少なくとも１つのノード１６の修正されたハードウェアコンフィギュレーションを選択する。この実施形態では、コンフィギュレータ２２は、修正されたハードウェアコンフィギュレーションを有する複数ノードのクラスタ１４上で合成テストワークロードを実行するために、複数ノードのクラスタ１４を合成テストワークロードでコンフィギュアし、修正されたハードウェアコンフィギュレーションは、ここに述べられるように、当該少なくとも１つのノード１６においてコンピューティング能力の低下及びメモリ容量の低減の少なくとも一方を結果としてもたらす。
【０１４８】
再び図２３を参照すると、先にセーブされたワークロードが設定ライブラリタブ４１６を介してローカルメモリ（例えば図３のメモリ９０）からロードされてよい。設定ライブラリタブ４１６を介してロードされたワークロードは、実際のワークロード、合成テストワークロード、カスタムスクリプト、又は、選択されたワークロードコンテナモジュールでの実行に適した任意の他のワークロードを含んでいてよい。ロードされたワークロードコンフィギュレーションは、ユーザインタフェース２００のモジュール２１０へのユーザ入力に基づき修正されてよい。現在のワークロードコンフィギュレーションもまた、設定ライブラリタブ４１６を介してメモリ９０にセーブされてよい。
【０１４９】
図示された実施形態では、タブ４１７を介してクラウドスイートワークロードの集まりがロードされコンフィギュアされてもよい。クラウドスイートは、クラウドシステムを特徴付けるために利用される典型的なクラウドワークロードを備えるワークロードの集まりである。
【０１５０】
図２５を参照すると、バッチ処理モジュール２１２が選択されている。モジュール２１２へのユーザ入力に基づき、バッチプロセッサ８０（図３）は、複数のワークロードのバッチ処理を開始するように動作する。また、バッチプロセッサ８０は、ここに述べられるように、種々のネットワークコンフィギュレーション、種々のワークロードコンテナコンフィギュレーション、種々の合成ワークロードコンフィギュレーション、及び／又は、種々のノードコンフィギュレーション（例えばブート時間コンフィギュレーションなど）等の複数の異なるコンフィギュレーションを有する１つ以上のワークロードの実行を開始するようにも動作する。ユーザ入力に基づき、バッチプロセッサ８０は、全てのワークロードの実行が完了するために手動の介入が必要のないように、各ワークロード及び／又はコンフィギュレーションの実行を順にノードクラスタ１４上で開始する。更に、バッチプロセッサ８０は、ユーザインタフェース２００のモジュール２１２を介して受信したユーザ設定に基づき、１つ以上のワークロードが複数回実行され得るようにこれらをコンフィギュアしてよい。バッチプロセッサ８０は、実際のワークロード及び／又は合成テストワークロードをバッチとして実行するように動作する。図示された実施形態では、例えば図４７及び図４８に関してここに述べられるように、自動的なシステムチューニングを可能にするために、複数のワークロードのバッチ処理から性能データがモニタされ集約される。
【０１５１】
ワークロード及び／又はコンフィギュレーションのバッチのための実行の回数は、繰り返しカウントフィールド４８０を介して指定される。フィールド４８０へのユーザ入力に基づき、バッチプロセッサ８０は、１つ以上のワークロードを指定された繰り返し回数だけ実行する。バッチシーケンステーブル４８２は、ノードクラスタ１４によって実行されるべきバッチジョブをリストするディスプレイデータを備える。１つのバッチジョブは、指定された回数（フィールド４８０への入力に基づき指定される）の実行に適した１つ以上のワークロードを含む。一実施形態では、１つのバッチジョブは、１つ以上のワークロードでの指定された回数の実行に適した１つ以上のクラウドシステムコンフィギュレーションを含む。テーブル４８２には１つのバッチジョブのみがリストされているが、複数のバッチジョブがテーブル４８２に加えられてもよい。バッチプロセッサ８０は、リストされた１つ以上のバッチジョブに対応する１つ以上の入力４８３のユーザ選択に基づき、リストされた１つ以上のバッチジョブを実行のために選択する。一実施形態では、選択された複数のバッチジョブは、それらがテーブル４８２内にリストされている順序で順に実行される。バッチジョブは例示的にはＪＳＯＮファイルフォーマットの形態にあるが、他の適切なフォーマットが用いられてもよい。テーブル４８２内にリストされたバッチジョブは、入力４８４，４８６，４８８のユーザ選択に基づきそれぞれ編集され、加えられ、削除される。バッチシーケンスの順序は、選択したバッチジョブをテーブル４８２内に表示されたシーケンスにおいて異なる位置に移動させるための入力４９０，４９２のユーザ選択に基づき調節可能である。バッチシーケンス及びバッチジョブの実行に関連する他の設定は、選択可能入力４９４を介してメモリ（例えばメモリ３４又はメモリ９０）からロードされてよく、現在コンフィギュアされているバッチシーケンスは、選択可能入力４９６を介してメモリ（例えばメモリ３４又はメモリ９０）にセーブされてよい。入力４８４〜４９６は例示的には選択可能ボタンである。
【０１５２】
図２６を参照すると、モニタリングモジュール２１４が選択されている。モジュール２１４へのユーザ入力に基づき、データモニタコンフィギュレータ８２（図３）は、ノードクラスタ１４上でのワークロードの実行に際して性能データをモニタし収集するために用いられる１つ以上のデータモニタリングツールをコンフィギュアするように動作する。データモニタコンフィギュレータ８２は、ノード１６の性能、ワークロード、ワークロードコンテナ、及び／又は、ネットワーク１８に関係するデータをモニタするモニタリングツールをコンフィギュアするように動作する。一実施形態では、データモニタコンフィギュレータ８２によってコンフィギュアされるモニタリングツールは、市販のモニタリングツール及びユーザによって提供されるカスタムモニタリングツールの両方を含む。モニタリングツールは、クラウドコンピューティングシステム１０内の複数のソース及び他の利用可能ノード１６からのデータを収集する。例えば、モニタリングツールは、各ノード１６でデータを収集するカーネルモード測定エージェント４６及びユーザモード測定エージェント５０（図２）を含む。また、制御サーバ１２も、ノードクラスタ１４上でのネットワーク及びコンピューティング性能をモニタするように動作する１つ以上のモニタリングツールを含む。一実施形態では、ユーザ入力（例えば図２７のフィールド５３０，５３２への入力）に基づき、データモニタコンフィギュレータ８２は、１つ以上のモニタリングツールがノード１６からのデータをモニタするサンプリングレートを指定する。データモニタコンフィギュレータ８２は、複数のデータモニタリングツールの動作をコンフィギュアし開始するように動作し、これらのモニタリングツールは、各ノード１６上で提供されるアパッチハドゥープモニタリングツール（タブ５００）、制御サーバ１２上で提供されるガングリアツール（タブ５０２）、各ノード１６上で提供されるシステムタップツール（タブ５０４）、及び、１つ以上のノード１６上で提供される仮想メモリ統計やＩ／Ｏ統計のためのモニタリングツール（タブ５０６）を含む。
【０１５３】
ハドゥープモニタリングツールは、ハドゥープワークロードコンテナモジュールがノード１６上での実行のために選択されているときのワークロードコンテナレベルでノード１６の性能をモニタする。ハドゥープモニタリングツールは、図２６で識別されたモニタリングコンフィギュレーションに基づきハドゥープワークロードコンテナモジュールの性能に関連するデータをモニタするために、コンフィギュレータ２２によって、ハドゥープワークロードコンテナモジュールと共に各ノード１６へとロードされる。図２６に示されるように、ハドゥープモニタリングツールに関連する種々のモニタリングパラメータが、幾つかの修正可能フィールド及びドロップダウンメニューへのユーザ入力に基づき、データモニタコンフィギュレータ８２によってコンフィギュアされる。修正可能モニタリングパラメータは、デフォルトログレベル（ドロップダウンメニュー５０８への入力に基づき選択される）、収集されるデータの最大ファイルサイズ（フィールド５１０への入力に基づき選択される）、収集されるデータの全ファイルの合計サイズ（フィールド５１２への入力に基づき選択される）、ハドゥープワークロードコンテナのジョブトラッカ(JobTracker)ツールのログレベル（ドロップダウンメニュー５１４への入力に基づき選択される）、ハドゥープワークロードコンテナのタスクトラッカ(TaskTracker)ツールのログレベル（ドロップダウンメニュー５１６への入力に基づき選択される）、及び、ハドゥープワークロードコンテナのエフエスネームシステム(FSNamesystem)ツールのログレベル（ドロップダウンメニュー５１８への入力に基づき選択される）を含む。ログレベルは、情報（「INFO」）、警告(warning)、エラー等の、ハドゥープモニタリングツールを介して収集するデータのタイプを識別する。ハドゥープワークロードコンテナのジョブトラッカツール、タスクトラッカツール及びエフエスネームシステムツールは、データモニタコンフィギュレータ８２によって追跡される種々の処理及びデータを含み、これらは、例えば、マスタノード１６でのワークロードの開始と終了、ファイルシステム５５（図２）に関連するメタデータ、及び、ワーカノード１６でのマップリデュースタスクの開始を含む。他の適切なデータがハドゥープモニタリングツールで収集されてよい。
【０１５４】
図２７を参照すると、ガングリアモニタリングツールはまた、データモニタコンフィギュレータ８２によって実装されたモニタリングコンフィギュレーションに基づき、クラウドコンピューティングシステム１０の性能データをモニタし収集するように動作する。ガングリアは、システム性能の遠隔ライブヴューイング（例えば制御サーバ１２を介して）並びに履歴統計を示すグラフ及びチャートを提供する既知のシステムモニタリングツールである。図示された実施形態では、ガングリアモニタリングツールは、データモニタコンフィギュレータ８２で提供されたコンフィギュレーションデータに基づき制御サーバ１２上で実行される。ガングリアでモニタされるデータの例としては、ワークロード実行に際してのノードプロセッサ４０（ＣＰＵｓ）の処理ロード平均、ワークロード実行に際してのノードプロセッサ４０とネットワーク１８の利用（例えば停止又は非アクティブな時間(stall or inactive time)、処理に費やした時間のパーセンテージ、待ちに費やした時間のパーセンテージ等）、及び、他の適切なデータが挙げられる。ガングリアモニタリングツールは、選択可能入力５２０のユーザ選択に基づきデータモニタコンフィギュレータ８２によって有効及び無効にされ、ユニキャスト又はマルチキャストの通信モードが、選択可能入力５２２のユーザ選択に基づきデータモニタコンフィギュレータ８２によって選択される。ガングリアに関連する他のコンフィギュア可能モニタリングパラメータは、収集されたデータから生成されたグラフのデータリフレッシュ間隔（フィールド５２４への入力に基づき選択される）、クリーンナップスレッショルド(cleanup threshold)（フィールド５２６への入力に基づき選択される）、及び、メタデータを送信するための間隔（フィールド５２８への入力に基づき選択される）を含む。フィールド５２４，５２６，５２８へ入力されるデータは、例示的には秒の単位である。データモニタコンフィギュレータ８２は、ノードプロセッサ４０（ＣＰＵ）に関連するワークロード実行に際してデータを収集するためにそれぞれのフィールド５３０，５３２にエンターされる値（例示的には単位は秒）に基づく収集（即ちサンプリング）間隔及び送信間隔と、ノード１６上での処理ロード（例えば実行されているワークロードに関連する）と、ノードメモリ４２の使用量と、通信ネットワーク１８上でのノード１６のネットワーク性能と、各ノード１６のハードディスク使用量と、を調節するように動作する。
【０１５５】
システムタップツールは、クラウドコンピューティングシステム１０のノード１６に関連するデータを抽出し、フィルタし、そしてまとめるように動作するシステムタップモニタリングソフトウェアを含むカーネルモード測定エージェント４６（図２）である。一実施形態では、システムタップツールは、各ノード１６上で実行される。システムタップは、リナックス（登録商標）(Linux（登録商標）)ベースのオペレーティングシステムで実装される。システムタップは、カスタマイズされたモニタリングスクリプトが、例えばサンプリングレート並びにヒストグラムの生成及び表示を含むカスタマイズされたモニタリングコンフィギュレーションで各ノード１６へとロードされることを可能にする。図２８に示されるように、「スクリプト(Script)」タブが選択されているときに、システムタップは、入力５３６のユーザ選択に基づきデータモニタコンフィギュレータ８２によって有効又は無効にされる。システムタップスクリプトファイルは、それぞれの入力（ボタン）５４０のユーザ選択に基づき、データモニタコンフィギュレータ８２によって、制御サーバ１２へダウンロードされ、テーブル５３８内での表示のために追加され、または、テーブル５３８内での表示から除去／削除される。テーブル５３８は、対応する１つ以上の入力５３９のユーザ選択に基づく選択のために利用可能なスクリプトファイルを表示するディスプレイデータを備えている。データモニタコンフィギュレータ８２は、コンフィギュレータ２２によるクラウドコンフィギュレーションの展開があった場合に、テーブル５３８の選択されたスクリプトファイルを各ノード１６へとロードする。システムタップモニタリングツールのために、タブ５３４を介したユーザ入力及びユーザ選択に基づく他の適切なコンフィギュレーションオプション(Options)が利用可能であり、これらは、例えば、ディスクＩ／Ｏ(Disk I/O)、ネットワークＩ／Ｏ(Network I/O)及び診断(Diagnostics)のコンフィギュレーションを含む。
【０１５６】
図２９を参照すると、Ｉ／Ｏ時間タブ５０６が、追加的なモニタリングツールをコンフィギュアするためのユーザアクセスを提供しており、これらのツールは、１つ以上のノード１６へとロードされる仮想メモリ統計(virtual memory statistics (VMStat))及び入力／出力統計(input/output statistics (IOStat))を含む。VMStatは、例えば、オペレーティングシステムで制御されるシステムメモリ及びブロックＩ／Ｏの利用可能性並びに利用、処理の性能、割り込み、ページング等に関連するデータを収集する。例えば、VMStatは、システムメモリ及び／又はメモリ制御器がリード／ライト動作を実行するためにビジーである時間又は待機している時間の長さ又はパーセンテージ等のシステムメモリの利用に関連するデータを収集する。IOStatは、例えば、オペレーティングシステムで制御されるストレージＩ／Ｏの統計（例えば利用、利用可能性等）に関連するデータを収集する。例えば、IOStatは、対応するノード１６のプロセッサ４０の処理コアが命令を実行するためにビジーである時間、又は、命令を実行するのに待機している時間のパーセンテージに関連するデータを収集する。VMStat及びIOStatは、それぞれの入力５４６，５４８の対応するユーザ選択に基づきデータモニタコンフィギュレータ８２によって有効／無効にされ、サンプリングレート（即ちリフレッシュ間隔）は、フィールド５５０，５５２へとエンターされた値（例示的には単位は秒）に基づきデータモニタコンフィギュレータ８２によって選択される。対応する「有効」にされた入力５４６，５４８のユーザ選択及びタブ５０６のフィールド５５０，５５２に入力された値に基づき、データモニタコンフィギュレータ８２は、VMStatモニタリングツール及びIOStatモニタリングツールをコンフィギュアし、コンフィギュレータ２２は、対応する「有効」にされた入力５４６，５４８のユーザ選択があった場合に、各ノード１６へとツールをロードする。
【０１５７】
データモニタコンフィギュレータ８２でコンフィギュアされたこれらのモニタリングツールは、システム性能をモニタするために協働してクラウドコンピューティングシステム１０のための動的計装(dynamic instrumentation)を提供する。コンフィギュアされたモニタリングツールを介して収集されたデータに基づき、コンフィギュレータ２２は、例えばここに述べられるように、システムボトルネックを診断すると共に最適なシステムコンフィギュレーション（例えばハードウエア及びネットワークのコンフィギュレーション）を決定するように動作する。更に、データモニタコンフィギュレータ８２は、各モニタリングツールをコンフィギュアするのに用いられるユーザ入力を受信すること及び各ツールからのモニタされたデータを表示することのために、ユーザインタフェース２００上にモニタリングモジュール２１４を表示することによって、共通ユーザインタフェースを提供する。
【０１５８】
図３０を参照すると、選択可能データを備える制御及び状態モジュール２１６が選択されている。モジュール２１６へのユーザ入力に基づき、コンフィギュレータ２２は、各ノード１６へとロードされる複数のコンフィギュレーションファイル２８を生成することによって、システムコンフィギュレーションをノードクラスタ１４へとローンチする（即ち展開する）ように動作する。コンフィギュレータ２２は、選択可能入力５６０のユーザ選択に基づき現在のシステムコンフィギュレーション（即ちモジュール２０２〜２１６で現在識別されているシステムコンフィギュレーション）の展開を開始する。コンフィギュレータ２２のバッチプロセッサ８０は、選択可能入力５６２のユーザ選択に基づき、１つ以上のワークロード及び／又はコンフィギュレーションのバッチ処理、即ち図２５のテーブル４８２において識別されたバッチシーケンス、を開始する。コンフィギュレータ２２のワークロードコンフィギュレータ７８は、選択可能入力５６４のユーザ選択に基づき、図２２のフィールド４３０において識別されたカスタムワークロード等のカスタムワークロードの実行を開始する。入力５６０，５６２，５６４のユーザ選択に基づくシステムコンフィギュレーションの展開があった場合、コンフィギュレータ２２は、選択されたノード及びワットワークの設定、ワークロード、ワークロードコンテナモジュール、データモニタリングツール等で各選択されたノード１６を自動的にコンフィギュアし、選択されたワークロード及び／又はバッチジョブをシステムコンフィギュレーション情報に基づき実行開始する旨をノードクラスタ１４に指示する。コンフィギュレータ２２は、それぞれ選択可能入力５６６，５６８のユーザ選択に基づき、ワークロード実行をその完了前に終了し又は一時停止する。コンフィギュレータ２２は、選択可能入力５７０のユーザ選択に基づき、ノードクラスタ１４上の現在実行途上にあるワークロードを再開する。コンフィギュレータ２２は、選択可能入力５７２のユーザ選択に基づき、例えばノード１６がバッチの次のワークロードの実行へと進むように、ノードクラスタ１４上の現在実行途上にあるワークロードをスキップする。選択可能入力５７６の選択に基づき、コンフィギュレータ２２のデータモニタコンフィギュレータ８２は、モジュール２１４を介して識別されたデータモニタリングツール、設定及びコンフィギュレーションを実装する。一実施形態では、ノード１６上にデータモニタリング設定を実装することは、各ノード１６に提供される対応するコンフィギュレーションファイル２８（図３）を生成することを含む。１つ以上のワークロード実行の完了に続き、即ちノードクラスタ１４からのワークロード実行の結果及び全要求データの集まりの受信に続き、コンフィギュレータ２２は、入力５７４のユーザ選択に基づき、ノードクラスタ１４を終了させ又はシャットダウンする。入力５６０〜５７２及び入力５８２〜５９５は例示的にはボタンである。
【０１５９】
ワークロード実行に際してシステム状態がディスプレイ５７８，５８０を介して提供される。ディスプレイ５７８，５８０は、ノードクラスタ１４の各アクティブノード１６に関連するワークロード実行の進行及び状態情報を示す。システム状態の表示は、ボタン５９５のユーザ選択に基づき有効又は無効にされる。
【０１６０】
図示された実施形態では、ノードコンフィギュレータ７２、ネットワークコンフィギュレータ７４、ワークロードコンテナコンフィギュレータ７６、ワークロードコンフィギュレータ７８、バッチプロセッサ８０、及び、データモニタコンフィギュレータ８２（図３）の各々は、それらのそれぞれのコンフィギュレーション機能を実装するための入力５６０，５６２，５６４を介しての展開開始に続き、少なくとも１つの対応するコンフィギュレーションファイル２８を自動的に生成する。コンフィギュレーションファイル２８は、ここに述べられるように、ノードクラスタ１４の各ノード１６をコンフィギュアするための対応するコンフィギュレーションデータ及び命令を含む。一実施形態では、コンフィギュレータ２２は、コンフィギュレーションファイル２８の生成に続き、各ファイル２８をノードクラスタ１４の各ノード１６へと自動的にロードする。代替的には、コンフィギュレータ２２の各コンポーネント７０〜８４からのコンフィギュレーションデータ及び命令を含む単一のコンフィギュレーションファイル２８が生成され、コンフィギュレータ２２は、そのコンフィギュレーションファイル２８の生成に続き、単一のコンフィギュレーションファイル２８をノードクラスタ１４の各ノード１６へと自動的にロードする。入力５６０，５６２，５６４でコンフィギュレーション展開をローンチする際には、オペレーティングシステム、ワークロードコンテナモジュール及びワークロードにそれぞれ対応するイメージファイル９２，９４，９６の各々も、各ノードへとロードされる。代替的には、コンフィギュレータ２２による１つ以上のコンフィギュレーションファイル２８及びイメージファイル９２，９４，９６の生成に続いて、ノード１６は、コンフィギュレーションファイル２８及び／又はイメージファイル９２，９４，９６をリトリーブ又は要求してよい。
【０１６１】
ノード１６に展開されたコンフィギュレーションファイル２８、及び、図７の入力２４０を介してセーブされたシステムコンフィギュレーションファイルは、モジュール２０２〜２１６へのユーザ入力及びモジュール２０２〜２１６のデフォルト設定に基づき選択及びロードされた全てのコンフィギュレーションデータ及び情報を含む。例えば、ノードコンフィギュレータ７２によって生成されたコンフィギュレーションファイル２８は、ここに述べられるように、ノードクラスタ１４に対して割り振り及び／又は使用するノード１６の数、並びに、各ノード１６のハードウェア要求及びブート時間を含む。ハードウェア要求は、例えば、ＲＡＭサイズ、ＣＰＵコアの数、及び、利用可能なディスクスペースを含む。ネットワークコンフィギュレータ７４によって生成されたコンフィギュレーションファイル２８は、例えば、全ノード１６に適用されるグローバルデフォルト設定や、ノードクラスタ１４の所与のグループにどのノード１６が属するのかと、ノードグループ内のネットワークトラフィックのための設定と、ノードクラスタ１４の他のノードグループに対するネットワークトラフィックのための設定と、を含むグループ設定や、任意のノード１６間でのネットワークトラフィックのためのカスタム設定を含むノード固有設定や、図１１〜１７に関してここに述べられるような、レイテンシ、帯域、破損及び脱落したパケットの比率、破損及び脱落したパケットの相関及び分布、並びに、並び替えられたパケットの比率を含むネットワークパラメータや、他の適切なネットワークパラメータ及びネットワークトポロジコンフィギュレーションデータを含む。ワークロードコンテナコンフィギュレータ７６によって生成されたコンフィギュレーションファイル２８は、例えば、ワークロードを実行するために用いられる主たるワークロードコンテナソフトウェアのためのコンフィギュレーション設定を含む。ワークロードコンフィギュレータ７８によって生成されたコンフィギュレーションファイル２８は、例えば、ノード１６上で実行されるように選択された、予め定義された即ち合成のワークロードコンテナのためのコンフィギュレーション設定を含む。コンフィギュレーション設定は、例えば、合成テストワークロードイメージファイル、最大命令カウント、最大繰り返しカウント、及び、Ｉ／Ｏ動作の速度、を含む合成テストワークロードコンフィギュレーションデータを含む。
【０１６２】
入力５６０（又は入力５６２，５６４）を介した展開の開始に際して、コンフィギュレータ２２は自動的に幾つかの動作を行う。一実施形態では、コンフィギュレータ２２は、複数ノードのクラスタ１４を選択するために所望のノード１６を割り振って起動する。コンフィギュレータ２２は、次いで、制御サーバ１２のアドレス（例えばＩＰアドレス）を各ノード１６に渡し、識別子及び／又はアドレスを各ノード１６に割り当てたり渡したりする。一実施形態では、各ノード１６は、制御サーバ１２アドレスの受信に続き、制御サーバ１２と自動的にコンタクトすると共にジョブ及び他のコンフィギュレーション情報を記述している１つ以上のコンフィギュレーションファイル２８を要求するようにコンフィギュアされる。各ノード１６は、任意の適切なメカニズムを用いて制御サーバ１２と通信し、そのようなメカニズムは、例えば、制御サーバ１２と直接通信するために指定されたＲＭＩメカニズム（例えばウェブベースのインタフェース）や、アパッチＨＴＴＰサーバ又はトムキャットサーバを介して制御サーバ１２とやりとりするためのＨＴＴＰ要求や、遠隔シェルメカニズムを含む。
【０１６３】
一実施形態では、コンフィギュレータ２２は、ノードクラスタ１４の各ノード１６からの要求を受信するまで待機する。一実施形態では、あるノード１６が起動しない場合、即ちそのノード１６からの要求又は受信確認がないことに基づいて、コンフィギュレータ２２はそのノード１６を再起動するよう試みる。そのノード１６が継続して起動しない場合には、コンフィギュレータ２２は、その起動しないノード１６の代わりに、ノードクラスタ１４内に元々は含まれていなかった他の利用可能ノード１６を識別し要求する。代替ノード１６は、起動しないノード１６と同一又は類似のハードウェア仕様及び処理能力を有する。一実施形態では、コンフィギュレータ２２は、ワークロード実行の間ずっとノード１６をモニタし続け、応答を停止したノード１６（及びワークロード）を再起動する。コンフィギュレータ２２は、データモニタリングの失敗や他の通信上の失敗に基づき、ワークロード実行に際して非応答のノード１６を検出してもよい。
【０１６４】
コンフィギュレータ２２がノードクラスタ１４の各ノード１６からの要求を受信すると、コンフィギュレータ２２は、各ノード１６が次へ進む準備ができていると判断する。一実施形態では、コンフィギュレータ２２は、次いで要求データを各ノード１６に提供し、要求データは、１つ以上のコンフィギュレーションファイル２８と、ノードクラスタ１４における他のノード１６のアドレス及びアイディー(IDs)と、イメージファイル９２，９４，９６と、を含む。要求データを制御サーバ１２から受信すると、ノードクラスタ１４内の各ノード１６の役割が決定される。一実施形態では、役割決定は、制御サーバ１２によってなされ（例えば自動的に又はユーザ入力に基づいて）、ノード１６へ伝えられる。代替的には、役割決定はノードクラスタ１４が分散型アービトレーション(arbitration)メカニズムを用いることによってなされる。一実施形態では、役割決定はワークロードに依存する。例えば、ハドゥープワークロードコンテナで動作するノードクラスタ１４に対しては、第１のノード１６がマスタノード１６（「ネームノード(namenode)」）として指定されてよく、残りのノード１６がスレーブ／ワーカノード１６（「データノード(datanodes)」）として指定されてよい。一実施形態では、ノード１６の役割決定は、そのノード１６のハードウェアプロパティに更に依存する。例えば、より低速なノードプロセッサ４０を伴うノード１６のグループがデータ記憶のためのデータベースサーバとして指定されてよく、より高速なノードプロセッサ４０を伴うノード１６の他のグループがワークロードを処理するための計算ノードとして指定されてよい。一実施形態では、役割決定は、コンフィギュレーションファイル２８を介して提供されたユーザ入力に基づく。例えば、ユーザは、１つ以上の第１のノード１６が第１のタスクを行い、１つ以上の第２のノード１６が第２のタスクを行い、１つ以上の第３のノード１６が第３のタスクを行う等、割り当てしてよい。
【０１６５】
各ノード１６は、１つ以上のコンフィギュレーションファイル２８を介して受信したネットワークコンフィギュレーションデータに基づき、その仮想ネットワーク設定をコンフィギュアし始める。このことは、例えばここに述べられるように、ネットワーク遅延及び／又はパケット損失エミュレータを用いることを含む。各ノード１６は、更に、ユーザ要求に係るソフトウェアアプリケーションをインストール及び／又はコンフィギュアすることを開始し、これらのアプリケーションは、ワークロードコンテナイメージファイル９４を介して受信したワークロードコンテナコードモジュールを含む。一実施形態では、複数のワークロードコンテナモジュール（例えば複数のバージョン／製造業者）が各ノード１６でプリインストールされており、選択されたワークロードコンテナモジュールのロケーションへのソフトリンクがコンフィギュレーションファイル２８に基づき作成される。合成テストワークロードが制御サーバ１２で生成され選択される場合には、各ノード１６は、ワークロードイメージファイル９６に基づき合成テストワークロードをアクティベートし始める。各ノード１６は、更に、コンフィギュレーション情報に基づき診断ツール及びモニタリングツール（例えばガングリア、システムタップ、ヴィエムスタット(VMStat)、アイオースタット(IOStat)等）の実行を開始する。最後に、各ノード１６は選択されたワークロードの実行を開始する。
【０１６６】
図示された実施形態では、展開ローンチに続きコンフィギュレータ２２及びノード１６によって行われる各ステップは、ノードクラスタ１４のノード１６間で同期している。一実施形態では、制御サーバ１２のコンフィギュレータ２２が複数ノード１６を連携させるが、代替的には、ノードクラスタ１４の１つ以上のノード１６が同期を管理してもよい。一実施形態では、ノード動作を連携させるために用いられる同期メカニズムにより、各ノード１６は、制御サーバ１２への状態フィードバックを定期的に提供する。従って、指定された時間内に報告のないノード１６は、クラッシュしたものとみなされ、コンフィギュレータ２２によって再起動される。また、コンフィギュレータ２２は、ジョブの進行を示すために、図３０のディスプレイ５７８，５８０を介する等してユーザに状態を提供してもよい。
【０１６７】
ジョブが完了すると、データアグリゲータ８４（図３）が各ノード１６からのデータを収集するように動作する。具体的には、各ノード１６のモニタリングツールによって収集されたデータ（例えばジョブ出力、性能統計、アプリケーションログ等、モジュール２１４参照）が、制御サーバ１２（例えば図３のメモリ９０）によってアクセスされる。一実施形態では、データアグリゲータ８４が各ノード１６からデータをリトリーブする。他の実施形態では、各ノード１６がデータアグリゲータ８４にデータを転送する。図示された実施形態では、図３１（図３も参照）に示されるように、データは、ログファイル９８の形態で各ノード１６から制御サーバ１２へ通信される。各ログファイル９８は、各ノード１６の種々のモニタリングツールの１つ以上によって収集されたデータを含む。ここに述べられるように、データアグリゲータ８４は、ログファイル９８からの収集データを操作し解析すると共に集約されたデータをグラフ、ヒストグラム、チャート等の形態でユーザに対して表示する（例えば図１のディスプレイ２１を介して）ように動作する。また、データアグリゲータ８４は、図２７に記載のガングリアモニタリングツール等の、制御サーバ１２上に提供されたモニタリングツールからのデータを集約する。
【０１６８】
図３０を再び参照すると、データアグリゲータ８４は、各ノード１６からの性能データを収集及び集約すると共にモジュール２１６の対応する入力５８２〜５９４のユーザ選択に基づきログ、統計、グラフ及びデータの他の表現を生成するように動作する。データアグリゲータ８４は、入力５８６のユーザ選択に基づき、ログファイル９８内に提供される統計上の生データ及び他のモニタリングツールで提供される統計上の生データを集める。データアグリゲータ８４は、入力５８８のユーザ選択に基づき、全てのログファイル９８をノード１６からローカルファイルシステムへとダウンロードし、これらのログファイル９８は更にそこで解析されてよく、あるいは履歴トレンド解析のために記憶されてよい。データアグリゲータ８４は、入力５９０のユーザ選択に基づき、システムタップモニタリングツールに関連するログファイルのみをリトリーブする。データアグリゲータ８４は、入力５８２のユーザ選択に基づき、ノード１６によって提供されたログファイル９８の１つ以上をユーザインタフェース２００上に表示する。データアグリゲータ８４は、入力５８４のユーザ選択に基づき、統計的データをグラフ及びチャートの形態でユーザインタフェース２００上に表示する。統計的データは、例えば、ネットワーク１８の性能、ノード１６によるネットワーク通信の性能、ノード１６の種々のハードウェアコンポーネントの性能、ワークロード実行、及び、ノードクラスタ１４全体の性能に関連する性能データを含む。データアグリゲータ８４は、入力５９２のユーザ選択に基づき、ノード１６及び他のモニタリングツールから収集された種々のデータを示す１つ以上のグラフをユーザインタフェース２００上での表示のために生成する。
【０１６９】
一実施形態では、データアグリゲータ８４は、モニタリングモジュール２１４においてコンフィギュアされたモニタリングツールでのモニタリングのために選択されたデータに基づき、表示するデータを選択する。他の実施形態では、データアグリゲータ８４は、制御及び状態モジュール２１６へのユーザ入力に基づき、集約され表示されるデータを選択する。例えば、ユーザは、それぞれ入力５８２，５８４，５９２を選択することで、ログファイル９８、統計的データ及びグラフの何れを表示するのかを選択する。一実施形態では、データアグリゲータ８４は、ユーザインタフェース２００へのユーザ入力に基づき、どのデータをグラフで表示するのかを選択し、またそのデータをどのように表示するのか（例えば線グラフ、棒グラフ、ヒストグラム等）を選択する。入力５９２の選択に基づき表示されるグラフィカルデータの例としては、プロセッサ速度対ネットワーク遅延追加、ワークロード実行速度対プロセッサコア数、ワークロード実行速度対コア当たり処理スレッド数、特定のノード１６によって送信又は受信されたデータパケットの数の時間変化、通信された所定サイズのデータパケットの数の時間変化、ネットワークスタック内でデータパケットによって消費された時間、等が挙げられる。
【０１７０】
（クラウドコンピューティングシステムのノードのブート時間パラメータをコンフィギュアすること）
図３６は、クラウドコンピューティングシステム１０のブート時間コンフィギュレーションをコンフィギュアするために図１及び図３のコンフィギュレータ２２によって行われる例示的な動作のフロー図６２０を示している。図３６の説明全体に対して図１及び図３が参照される。図示された実施形態では、コンフィギュレータ２２は、ユーザインタフェース２００を介して受信した複数のユーザ選択に基づき、図３６のフロー図６２０に従って図１のノードクラスタ１４をコンフィギュアする。ブロック６２２では、コンフィギュレータ２２は、選択可能ブート時間コンフィギュレーションデータを備えるユーザインタフェース２００を提供する。例示的な選択可能ブート時間コンフィギュレーションデータは、図１０の表示画面の選択可能入力２６９，２７１及びフィールド２６８，２７０，２７２，２７４，２７６を含む。ブロック６２４では、コンフィギュレータ２２のノードコンフィギュレータ７２は、選択可能なブート時間コンフィギュレーションデータの少なくとも１つのユーザ選択に基づき、クラウドコンピューティングシステム１０の複数ノードのクラスタ１４の少なくとも１つのノード１６のためのブート時間コンフィギュレーションを選択する。
【０１７１】
ブロック６２６では、コンフィギュレータ２２は、選択されたブート時間コンフィギュレーションで複数ノードのクラスタ１４の少なくとも１つのノード１６をコンフィギュアして、それら少なくとも１つのノード１６の少なくとも１つのブート時間パラメータを修正する。例えば、当該少なくとも１つのブート時間パラメータは、ワークロードの実行に際して有効にされている当該少なくとも１つのノード１６の処理コアの数（フィールド２６８への入力に基づく）、及び／又は、当該少なくとも１つのノード１６のオペレーティングシステム４４（図２）によってアクセス可能なシステムメモリの量（フィールド２７０，２７２への入力に基づく）を含む。更に、修正されたブート時間パラメータは、フィールド２７４へ入力された命令の数及び対応するカスタム入力２７１の選択に基づき、当該少なくとも１つのノード１６によって実行されるべきワークロードの複数の命令のサブセットを識別してよい。従って、ワークロードは、当該少なくとも１つのノード１６の当該少なくとも１つのブート時間パラメータの修正に基づき、複数ノードのクラスタ１４で実行される。一実施形態では、コンフィギュレータ２２がワークロードの実行を開始し、複数ノードのクラスタ１４は、当該少なくとも１つのブート時間パラメータの修正に基づき低下したコンピューティング能力及び低減されたメモリ容量の少なくとも一方の下でワークロードを実行する。具体的には、フィールド２６８及び対応する入力２７１の選択に伴う処理コア数の修正は、コンピューティング能力を低下させることに役立ち、フィールド２７０，２７２及び対応する入力２７１の選択に伴うシステムメモリ数の修正は、メモリ容量を低減することに役立つ。
【０１７２】
一実施形態では、ノードコンフィギュレータ７２は、選択可能ブート時間コンフィギュレーションデータの少なくとも１つのユーザ選択に基づき、複数ノードのクラスタ１４の第１のノード１６のための第１のブート時間コンフィギュレーションと、複数ノードのクラスタ１４の第２のノード１６のための第２のブート時間コンフィギュレーションと、を選択する。この実施形態では、第１のブート時間コンフィギュレーションは、第１のノード１６の少なくとも１つのブート時間パラメータの第１の修正を含み、第２のブート時間コンフィギュレーションは、第２のノード１６の少なくとも１つのブート時間パラメータの第２の修正を含み、第１の修正は第２の修正とは異なる。一例では、第１のブート時間コンフィギュレーションは、第１のノード１６の２つの処理コアを有効にすることを含み、第２のブート時間コンフィギュレーションは、第２のノード１６の３つの処理コアを有効にすることを含む。各ノード１６のブート時間パラメータの他の適切な修正が、上述したように提供されてよい。
【０１７３】
図３７は、ノード１６のブート時間コンフィギュレーションをコンフィギュアするために図１の複数ノードのクラスタ１４の１つのノード１６によって行われる例示的な動作のフロー図６３０を示している。図３７の説明全体に対して図１及び図３が参照される。ブロック６３２では、複数ノードのクラスタ１４の１つのノード１６は、クラウドコンフィギュレーションサーバ１２によって提供されたブート時間コンフィギュレーション調節要求に基づき、そのノード１６の少なくとも１つのブート時間パラメータを修正する。図示された実施形態では、ブート時間コンフィギュレーション調節要求は、コンフィギュレーションファイル２８（図３）内に提供され、ここに述べられるように、図１０の入力２７０，２７１及びフィールド２６８，２７０，２７２，２７４，２７６を介してなされたユーザ選択に基づき、ノード１６の１つ以上のブート時間パラメータに対して要求された修正を識別する。図示された実施形態では、ノード１６は、当該少なくとも１つのブート時間パラメータを修正する前の初期ブート時間コンフィギュレーションと、当該少なくとも１つのブート時間パラメータを修正することに続く修正されたブート時間コンフィギュレーションと、を有する。修正されたブート時間コンフィギュレーションは、ここに述べられるように、ノード１６のコンピューティング能力の低下及びメモリ容量の低減の少なくとも一方を提供する。
【０１７４】
ブロック６３４では、ブート時間コンフィギュレーション調節要求に従って少なくとも１つのブート時間パラメータが既に修正されていることを、ノード１６のリブートに続いてそのノード１６が決定すると、そのノード１６は、そのノード１６によるそのノード１６のリブートに続き、ワークロードの少なくとも一部を実行する。一実施形態では、ノード１６は、ワークロードの当該少なくとも一部をクラウドコンフィギュレーションサーバ１２から取得し、当該少なくとも１つのブート時間パラメータへの修正に基づきワークロードを実行する。一実施形態では、ノード１６による決定は、当該少なくとも１つのブート時間パラメータへの修正の後で且つノード１６のリブートより前にセットされたフラグ（例えば１ビット又は２ビット以上）に基づく。セットされたフラグは、当該少なくとも１つのブート時間パラメータが既に修正されていることを、ノード１６の再起動に続いてノード１６に示すので、ノード１６は、当該少なくとも１つのブート時間パラメータを修正し再度リブートすることを試みない。一実施形態では、決定は、ノード１６のブート時間コンフィギュレーションと、ブート時間コンフィギュレーション調節要求で識別された要求ブート時間コンフィギュレーションとの比較に基づく。例えば、ノード１６は、ノード１６の現在のブート時間パラメータをブート時間コンフィギュレーション調節要求で識別された要求ブート時間パラメータと比較し、これらのパラメータが同じである場合には、当該少なくとも１つのブート時間パラメータを修正することと再度リブートすることとを試みない。一実施形態では、新たなブート時間コンフィギュレーション調節要求を含む新たなコンフィギュレーションファイルをノード１６が受信すると、ノード１６は、新たなブート時間コンフィギュレーション調節要求に従うブート時間パラメータの修正を実装する前に、フラグをクリアする。
【０１７５】
図３８は、ノードクラスタ１４の１つ以上のノード１６のブート時間コンフィギュレーションをコンフィギュアするためにクラウドコンピューティングシステム１０によって行われる例示的な詳細動作のフロー図６５０を示している。図３８の説明全体に対して図１及び図３が参照される。図示された実施形態では、コンフィギュレータ２２は図３８のブロック６５２〜６５６を行い、各コンフィギュアされたノード１６は図３８のブロック６５８〜６６４を行う。ブロック６５２では、コンフィギュレータ２２は、ここに述べられるように、ユーザインタフェース２００（図１０）を介してエンターされたユーザ定義のブート時間パラメータに基づき、対応するノード１６のための１つ以上のブート時間コンフィギュレーションファイル２８を作成する。一実施形態では、ブート時間コンフィギュレーションファイル２８は、ノード１６の１つ以上のコンフィギュレーションファイルのパッチであり、あるいはタスク固有ファイル／データフォーマットの形態にある。ブロック６５４では、コンフィギュレータ２２は、複数ノードのクラスタ１４を起動する（例えばここに述べられるように図３０の入力５６０又は入力５６２，５６４のユーザ選択があった場合）。ブロック６５６では、コンフィギュレータ２２は、１つ以上のブート時間コンフィギュレーションファイルを複数ノードのクラスタ１４の適切なノード１６に分散させる。一実施形態では、各ノード１６がブート時間コンフィギュレーションファイルを受信し、各ファイルは、それぞれのノード１６に対して固有のブート時間パラメータを識別してよい。一実施形態では、コンフィギュレーションファイル２８は、セキュアシェル(secure shell)（ＳＳＨ）ファイル転送を介して、ｆｐｔクライアントを介して、アマゾンＡＷＳにおけるユーザデータストリングを介して、又は、他の適切なファイル転送メカニズムを介して、ノードへと転送される。他の実施形態では、ブート時間コンフィギュレーション情報に対して、ノード１６が各々制御サーバ１２又はマスタノード１６にクエリする(query)（例えばＨＴＴＰ要求を介して）。ブロック６５８では、ノード１６は、受信したブート時間コンフィギュレーションファイル２８において指定された所望のブート時間パラメータ変更を適用する。一例では、ノード１６は、ノード１６のブートファイルに対してパッチを適用し、あるいはノード１６は、ユーティリティを用いて、受信したブート時間コンフィギュレーションファイル２８において指定されたブート時間パラメータに基づきノード１６のためのブートファイルの新たなセットを生成する。一実施形態では、ブロック６５８で所望のブート時間変更を適用する間または適用する場合、ノード１６は、ここに述べられるように、ブート時間コンフィギュレーションが既に更新されている旨を示す状態フラグをセットする。ブロック６６０では、ノード１６は、ブート時間コンフィギュレーション変更の適用に続き、リブートを強制する。リブートに際して、ノード１６は、受信したブート時間コンフィギュレーションファイル２８において指定されたブート時間パラメータ変更でノード１６のブート時間コンフィギュレーションが既に更新されていることをブロック６６２で決定する。一実施形態では、ノード１６は、ここに述べられるように、ブロック６５８でセットされた状態フラグに基づき、又は、ノード１６の現在のブート時間コンフィギュレーションとブート時間コンフィギュレーションファイル２８との比較に基づき、ブート時間コンフィギュレーションが更新されていることをブロック６６２で決定する。従って、ノード１６は、ブート時間コンフィギュレーション変更を何度も適用する可能性を低減する。ブロック６６４では、ノード１６は、ワークロード又は制御サーバ１２から受信したワークロードの一部の実行を含め、他のタスクの実行を開始する。
【０１７６】
（ネットワークコンフィギュレーションを修正及び／又はエミュレートすること）
図３９は、クラウドコンピューティングシステム１０において割り振られた複数ノードのクラスタ１４のネットワークコンフィギュレーションを修正するために図１及び図３のコンフィギュレータ２２によって行われる例示的な動作のフロー図７００を示している。図３９の説明全体に対して図１及び図３並びに図１１〜１７が参照される。ブロック７０２では、ネットワークコンフィギュレータ７４は、ユーザインタフェース２００を介して受信したユーザ選択に基づき、クラウドコンピューティングシステム１０の複数ノードのクラスタ１４の少なくとも１つのノード１６のネットワークコンフィギュレーションを修正する。ブロック７０２で当該少なくとも１つのノード１６のネットワークコンフィギュレーションを修正することは、当該少なくとも１つのノード１６の通信ネットワーク１８（図１）上でのネットワーク性能を修正することを含む。ネットワーク性能は、ここに述べられるように、パケット通信速度、脱落又は破損したパケット、並び替えられたパケット等のネットワークパラメータを修正することによって修正される。図示された実施形態では、ネットワークコンフィギュレータ７４は、図１１〜１７に関してここに述べられるように、ユーザインタフェース２００のモジュール２８０を介して提供されたユーザ選択又はユーザ入力に基づきネットワークコンフィギュレーションファイル２８（図３）を生成することによって、及び、ネットワークコンフィギュレーションファイル２８をノード１６に提供することによって（又はノード１６がファイル２８をフェッチすることによって）、ノード１６のネットワークコンフィギュレーションを修正する。ノード１６は、次いで、アクセスされたネットワークコンフィギュレーションファイル２８において指定されたノード１６のネットワークコンフィギュレーションへの変更を実装する。図示された実施形態では、当該少なくとも１つのノード１６は、修正前の初期ネットワークコンフィギュレーションと、修正後の修正されたネットワークコンフィギュレーションと、を有する。一実施形態では、修正されたネットワークコンフィギュレーションは、選択されたワークロードの実行に際して通信ネットワーク１８上での当該少なくとも１つのノード１６のネットワーク性能を低下させる。代替的には、修正されたネットワークコンフィギュレーションは、例えば図１１のフィールド３０２を介して指定された通信遅延値を減少させること等によって、当該少なくとも１つのノード１６のネットワーク性能を高める。
【０１７７】
一実施形態では、ネットワークコンフィギュレータ７４は、当該少なくとも１つのノード１６の少なくとも１つのネットワークパラメータを変更してワークロードの実行に際しての通信ネットワーク１８上での当該少なくとも１つのノード１６のネットワーク性能を制限することによって、当該少なくとも１つのノード１６のネットワークコンフィギュレーションを修正する。一実施形態では、変更される当該少なくとも１つのネットワークパラメータは、パケット通信遅延、パケット損失率、パケット重複率、パケット破損率、パケット並び替え率、及び、パケット通信速度の少なくとも１つを備え、これらはここに述べられるようにタブ２８２〜２９４を介してユーザによって選択可能である。従って、ネットワークコンフィギュレータ７４は、ネットワークパラメータへの修正（例えば増大されたノード１６間の通信遅延、増大されたパケット損失又はパケット破損率等）を識別するコンフィギュレーションファイル２８へのノード１６アクセスを生成し提供することによって、当該少なくとも１つのノード１６のネットワーク性能を制限する。
【０１７８】
図示された実施形態では、コンフィギュレータ２２は、選択可能ネットワークコンフィギュレーションデータを備えるユーザインタフェース２００を提供し、ネットワークコンフィギュレータ７４は、ここに述べられるように、選択可能ネットワークコンフィギュレーションデータの少なくとも１つのユーザ選択に基づき、当該少なくとも１つのノード１６のネットワークコンフィギュレーションを修正する。選択可能ネットワークコンフィギュレーションデータの例としては、図１１の入力２９８〜３０１及び対応するフィールド３０２〜３１２、図１２の入力３１３，３１４及び対応するフィールド３１５，３１６、図１３の入力３１７，３１８及び対応するフィールド３１９，３２０、図１４の入力３２１及び対応するフィールド３２２、図１５の入力３２３，３２４及び対応するするフィールド３２５，３２６、図１６の入力３２７〜３３０，３３５〜３３８及び対応するフィールド３３１〜３３４、並びに、図１７の入力３４０及び対応するフィールド３４２が挙げられる。一実施形態では、ネットワークコンフィギュレータ７４は、選択可能ネットワークコンフィギュレーションデータの少なくとも１つのユーザ選択に基づき、複数ノードのクラスタ１４の第１のノード１６の第１のネットワークパラメータを変更して（即ちネットワークコンフィギュレーションファイル２８を介して）ワークロードの実行に際しての通信ネットワーク１８上での第１のノード１６のネットワーク性能を制限することによって、及び、複数ノードのクラスタ１４の第２のノード１６の第２のネットワークパラメータを変更してワークロードの実行に際しての通信ネットワーク１８上での第２のノード１６のネットワーク性能を制限することによって、ネットワーク性能を修正する。一実施形態では、第１のネットワークパラメータは第２のネットワークパラメータとは異なる。従って、ネットワークコンフィギュレータ７４は、複数ノードのクラスタ１４の異なるノード１６の異なるネットワークパラメータを修正してワークロード実行に際して複数ノードのクラスタ１４の所望のネットワーク特性を達成するように動作する。
【０１７９】
図示された実施形態では、図４０〜４２に関してここに述べられるように、コンフィギュレータ２２は、更に、エミュレートされたノードクラスタのネットワークコンフィギュレーションと実質的に一致するネットワークコンフィギュレーションを有するクラウドコンピューティングシステム１０のための複数ノードのクラスタ１４を選択するように動作する。ここで参照されるとき、エミュレートされたノードクラスタとは、制御サーバ１２によって選択されたノードクラスタ１４によりエミュレートされることになる既知のネットワークコンフィギュレーションを有するネットワークノードの任意のグループを含むものである。エミュレートされたノードクラスタの各ノードは、１つ以上の処理デバイスと、これら処理デバイスによってアクセス可能なメモリと、を含む。一実施形態では、エミュレートされたノードクラスタは、コンフィギュレータ２２によって選択可能な利用可能ノード１６を含まない。例えば、エミュレートされたノードクラスタは、ユーザによって提供されるノード等の、１つ以上のデータセンタ内に収容された利用可能ノード１６からは離れており且つコンフィギュレータ２２によってアクセス可能なノードを含む。代替的には、エミュレートされたノードクラスタは、利用可能ノード１６のグループを含んでいてもよい。エミュレートされたノードクラスタのネットワークトポロジ及びネットワーク性能特性は、以下に述べられるように、１つ以上のネットワーク性能テストを用いて得られる。図４０を参照すると、エミュレートされたノードクラスタのネットワーク特性と実質的に一致するネットワーク特性を有する複数ノードのクラスタ１４を選択するために図１及び図３のコンフィギュレータ２２によって行われる例示的な動作のフロー図７１０が示されている。図４０の説明全体に対して図１及び図３が参照される。図示された実施形態では、コンフィギュレータ２２は、ここに述べられるように、ユーザインタフェース２００を介して受信したユーザ選択に基づき、図４０のフロー図７１０に従い図１のノードクラスタ１４を選択しコンフィギュアする。ブロック７１２では、ノードコンフィギュレータ７２は、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーションと、複数の利用可能ノード１６の実際の通信ネットワークコンフィギュレーションと、を比較する。ブロック７１４では、ノードコンフィギュレータ７２は、ブロック７１２の比較に基づき、通信ネットワーク１８に結合された複数の利用可能ノード１６からクラウドコンピューティングシステム１０のための複数ノードのクラスタ１４を選択する。選択された複数ノードのクラスタ１４は、複数の利用可能ノード１６のサブセットを含む。ブロック７１６では、ノードコンフィギュレータ７２は、ここに述べられるように、複数ノードのクラスタ１４の各ノード１６が複数ノードのクラスタ１４の他のノード１６とワークロードの処理を共有するよう動作するようにワークロードを実行するために、選択された複数ノードのクラスタ１４をコンフィギュアする。一実施形態では、ここに述べられるように、ブロック７１２〜７１６は、図３０のモジュール２１６へのユーザ入力に基づくクラウドコンフィギュレーションの展開があった場合に開始される。
【０１８０】
図示された実施形態では、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーション及び複数の利用可能ノード１６の実際の通信ネットワークコンフィギュレーションは、各々、対応するノードに関連する通信ネットワーク特性を含む。ノードコンフィギュレータ７２は、エミュレートされたノードクラスタの通信ネットワーク特性と、複数の利用可能ノード１６の通信ネットワーク特性と、の間での類似性に基づき、複数ノードのクラスタ１４を選択する。例示的な通信ネットワーク特性はネットワークトポロジ及びネットワークパラメータを含む。例示的なネットワークパラメータは、ノード間での通信速度及びレイテンシ、ノード間でのネットワーク帯域、並びに、パケットエラー率を含む。ネットワークトポロジは、ノードの物理的及び論理的な接続性、ノードクラスタのどのノード及びノードのグループが物理的に近くに位置しているのかあるいは互いに離れているのかの識別、ノード間の接続のタイプ（光ファイバリンク、衛星接続等）、並びに、他の適切な特性を含む。パケットエラー率は、脱落又は失われたパケット、破損したパケット、並び替えられたパケット、重複したパケット等を含む。一実施形態では、ノードコンフィギュレータ７２は、図４１に関してここに述べられるように、エミュレートされたノードクラスタの通信ネットワーク特性を優先させ、優先させた通信ネットワーク特性に基づき複数ノードのクラスタ１４を選択する。
【０１８１】
図示された実施形態では、ノードコンフィギュレータ７２は、利用可能ノード１６上でのネットワーク性能テストを開始して、利用可能ノード１６の実際の通信ネットワークコンフィギュレーションを識別する。任意の適切なネットワーク性能テストが用いられてよい。例えば、ノードコンフィギュレータ７２は、利用可能ノード１６間でのネットワーク性能に関してテストしデータを収集するために、パケットインターネットグロウパ(Packet Internet Groper)（「ピング(Ping)」）等のコンピュータネットワーク管理(administration)ユーティリティを実行するように要求を各利用可能ノード１６へ送ってよい。各ノード１６によって提供されたピングテストの結果に基づき、ノードコンフィギュレータ７２は、利用可能ノード１６の実際の通信ネットワークコンフィギュレーションを決定する。一実施形態では、ピングは、実際の通信ネットワークコンフィギュレーションを得るために他のネットワーク性能テストと共に用いられる。コンフィギュレータ２２は、ノード１６から受信したネットワーク性能テスト結果を集約して、利用可能ノード１６の実際の通信ネットワークコンフィギュレーションを識別するネットワーク記述子(descriptor)データファイル又はオブジェクト（例えば図４２のデータファイル７５０を参照）を作成する。一実施形態では、コンフィギュレータ２２は、ユーザインタフェース２００へのユーザ入力に基づき、ネットワーク性能テストを開始し結果を集約する。例えば、図３０のボタン５８６のユーザ選択又は他の適切な入力により、コンフィギュレータ２２がテストを開始して結果を集約してよい。
【０１８２】
図示された実施形態では、ノードコンフィギュレータ７２はまた、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーションを識別する１つ以上のデータファイル（例えば図４２のデータファイル７５０）にアクセスする。一実施形態では、これら１つ以上のデータファイルは、エミュレートされた複数ノードのクラスタに１つ以上のネットワーク性能テスト（例えばピングテスト等）を実装することによって、制御サーバ１２のオフラインで得られる。一実施形態では、コンフィギュレータ２２は、エミュレートされたノードクラスタに関連するデータファイルをアクセス可能メモリ（例えば図３のメモリ９０）へとロードする。例えば、コンフィギュレータ２２は、図７のテーブル２２６への入力を介して等のようにユーザインタフェース２００を介してユーザがデータファイルのロケーションを識別することに基づきデータファイルをロードしてよい。従って、コンフィギュレータ２２は、利用可能ノード１６に関連して生成されたデータファイルにおいて識別された通信ネットワーク特性と、エミュレートされたノードクラスタに関連してアクセスされたデータファイルと、を比較することによって、図４０のブロック７１２で比較を行う。
【０１８３】
図４２に例示的なデータファイル７５０が示されている。データファイル７５０は、制御サーバ１２によってアクセス可能な利用可能ノード１６又はエミュレートされたノードクラスタのノード等の任意の適切なネットワークノードのネットワークコンフィギュレーションを識別する。図示されるように、データファイル７５０は、例示的にはグループＡ，Ｂ，…，Ｍを含むノードの幾つかのグループ(groups)を識別する。各グループＡ，Ｂ，Ｍは、データセンタの同じ物理的ラック上のノード等の物理的に互いに近くにある複数のノードを含む。行６〜１１はグループＡのノードによるネットワーク通信に関連するネットワークパラメータを識別し、行１５〜２２はグループＢのノードによるネットワーク通信に関連するネットワークパラメータを識別し、行２７〜３４はグループＭのノードによるネットワーク通信に関連するネットワークパラメータを識別する。例えば、行６及び行７は、グループＡのノード間での通信に関連するレイテンシ(latency)、帯域(bandwidth)及びエラー率(error rate)を識別する。行８及び行９は、グループＡノードとグループＢノードとの間での通信に関連するレイテンシ、帯域及びエラー率を識別する。同様に、行１０及び行１１は、グループＡノードとグループＭノードとの間での通信に関連するレイテンシ、帯域及びエラー率を識別する。グループＢ及びグループＭのノードによる通信に関連するネットワークパラメータも同様にデータファイル７５０内で識別される。データファイル７５０は、ここに述べられるように、ネットワークトポロジデータ及び他のネットワークパラメータ等の追加的なネットワークコンフィギュレーションデータを識別してもよい。
【０１８４】
図４１を参照すると、エミュレートされたノードクラスタのネットワーク特性と実質的に一致するネットワーク特性を有する複数ノードのクラスタ１４を選択するために、図１及び図３のコンフィギュレータ２２を含む１つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図７２０が示されている。図４１の説明全体に対して図１及び図３が参照される。ブロック７２２では、ネットワークコンフィギュレーションが、エミュレートされたノードクラスタの各ノードから要求される。例えば、ここに述べられるように、ネットワーク性能テストは各ノードで開始され、テスト結果がコンピューティングデバイスによって受信される。ブロック７２４では、エミュレートされたノードクラスタのノードから受信した、性能テストの結果としてのネットワークコンフィギュレーションデータに基づき、ネットワークコンフィギュレーションデータファイル（例えばデータファイル７５０）が作成される。ここに述べられるように、ブロック７２２，７２４は、例えば図１のコンピュータ２０による等して、クラウドコンピューティングシステム１０から離れたコンピューティングシステムによってオフラインで実行されてよい。
【０１８５】
ブロック７２６では、コンフィギュレータ２２は、各利用可能ノード１６から又はデータセンタの利用可能ノード１６のグループからネットワークコンフィギュレーションを要求する。例えば、コンフィギュレータ２２は、ここに述べられるように、利用可能ノード１６上でネットワーク性能テストを開始し、コンフィギュレータ２２は、ネットワーク性能テストからもたらされるコンフィギュレーションデータを集約する。ブロック７２８では、コンフィギュレータ２２は、利用可能ノード１６から受信したネットワークコンフィギュレーションデータに基づき、ネットワークコンフィギュレーションデータファイル（例えばデータファイル７５０）を作成する。従って、コンフィギュレータ２２は、エミュレートされたノードクラスタを記述しているデータファイルと、利用可能ノード１６を記述しているデータファイルと、を含む２つのコンフィギュレーションデータファイルへのアクセスを有する。コンフィギュレータ２２は、ブロック７３０に示されるように、２つのデータファイル内で識別されたネットワークプロパティの比較に基づき、エミュレートされたノードクラスタと類似したネットワーク特性を有する適切なノード１６を利用可能ノード１６から選択する。一実施形態では、コンフィギュレータ２２は、ここに述べられるように、エミュレートされたノードクラスタ及び利用可能ノード１６のノードハードウェア特性（例えば処理能力、メモリ容量等）の比較に基づき、ブロック７３０で適切なノードを更に選択する。
【０１８６】
ブロック７３２では、コンフィギュレータ２２は、エミュレートされたノードクラスタに関連するデータファイル内で識別された所望のネットワークコンフィギュレーションパラメータに基づき、選択されたノード１６をチューニングする(tunes)。例えば、選択されたノード１６のネットワーク特性は、エミュレートされたノードクラスタのネットワーク特性に厳密には一致していなくてよく、更なるネットワークチューニングが必要になり又は所望されることもある。従って、オペレーティングシステム４４、ネットワークトポロジドライバ４８及び／又は他のネットワークコンポーネント並びに各ノード１６のネットワークパラメータがチューニングされて、エミュレートされたノードクラスタの所望のネットワーク性能が更に達成される。一実施形態では、コンフィギュレータ２２は、データファイル内で識別されたネットワーク特性に基づき、選択されたノード１６を自動的にチューニングする。一実施形態では、ネットワークパラメータは、例えば図１１〜１７に関してここに述べられるように、ユーザインタフェース２００のモジュール２０６を介して提供されたユーザ入力に基づき更にチューニングされる。
【０１８７】
例示的な一実施形態では、コンフィギュレータ２２は、ブロック７３０で以下の「ベストマッチング(best matching)」技術を用いて適切なノード１６を選択するが、他の適切な方法又はアルゴリズムが提供されてもよい。コンフィギュレータ２２は、データファイルのネットワークコンフィギュレーションデータ（例えばレイテンシ−ｐ０、帯域−ｐ１、エラー率−ｐＺ）を比較するときにＺ個のネットワークプロパティ(Z network properties)（即ち特性）を考慮し、ノードＸ１，Ｘ２，…，ＸＱはエミュレートされたノードクラスタのノードである。コンフィギュレータ２２は、ネットワークプロパティｐ１，ｐ２，…，ｐＸに関してノードＸ１，Ｘ２，…，ＸＱに最も類似している利用可能ノード１６のサブセット（例えばノードＹ１，Ｙ２，…，ＹＱ）を選択する。この選択を行うために他のアルゴリズムが用いられてもよいが、利用可能ノード１６の適切なサブセットを発見可能なようにコンフィギュレータ２２によって実装される例示的アルゴリズムは、ネットワークプロパティに優先順位を付けることを含む。例示的な優先順位付けにおいては、プロパティｐ０はプロパティｐ１よりも高い優先順位を有しており、プロパティｐｋはプロパティｐｋ＋１よりも高い優先順位を有する。従って、図示された例では、ノード選択に際してレイテンシは帯域よりも高い優先順位を与えられ、帯域は、ノード選択に際してエラー率よりも高い優先順位を与えられる。ネットワークノードＸ及びＹの間でネットワークプロパティＮの値をリターンするために、入力Ｎ（ネットワークプロパティ）、Ｘ（ノード）及びＹ（ノード）をパラメータとする関数Ｐ（Ｎ，Ｘ，Ｙ）がコンフィギュアされてよい。そのような関数は、ブロック７２４，７２８で作成されたネットワーク記述データファイル／オブジェクト（例えばデータファイル７５０）を用いて実装されてよい。ノードＬ＝｛Ｙ１，Ｙ２，Ｙ３，…｝の初期リストは、全ての利用可能ノード１６を含む。１≦ｇ≦Ｒ（ＲはＬ内のノードの総数、Ｒ≧Ｑ）とするときに、各ノードＹｇに対して次の等式（１）を適用する。
Ｓｘ（ｇ）＝Σ１≦Ｎ≦Ｚ，１≦ｈ≦Ｒ，ｇ≠ｈＰ（Ｎ，Ｙｇ，Ｙｈ）    …（１）
【０１８８】
１≦ｉ≦Ｑ（Ｑはエミュレートされたノードクラスタ内のノードの数）とするときに、エミュレートされたノードクラスタ内の各ノードＸｉに対して次の等式（２）を適用する。
Ｓｙ（ｉ）＝Σ１≦Ｎ≦Ｚ，１≦ｊ≦Ｒ，ｉ≠ｊＰ（Ｎ，Ｙｉ，Ｙｊ）    …（２）
【０１８９】
アルゴリズムは、Ｓｙ（ｗ）−Ｓｘ（ｉ）＝ｍｉｎｖ，ｆ（Ｓｙ（ｖ）−Ｓｘ（ｆ））となるような、クラウドコンピューティングシステム１０のための利用可能ノードＹＷを探し始める。従って、ノードＹＷはオリジナルノードＸｉをシミュレートするために用いられ、ノードＹＷはリストＬから除かれる。アルゴリズムは、利用可能ノード１６のフルセットが選択されるまで続く。ブロック７３０でノード１６を選択するための他の適切な方法及びアルゴリズムが提供されてもよい。
【０１９０】
例示的な一実施形態では、コンフィギュレータ２２は、以下の方法を用いて、選択されたノード１６をブロック７３２でチューニングするが、他の方法又はアルゴリズムが提供されてもよい。この方法では、コンフィギュレータは、各ノード１６上で適切なネットワークシミュレーションレイヤを自動的に作成するコンフィギュレーションアプリケーションを実行する。ネットエム(Netem)ネットワーク遅延及び損失エミュレータを用いる場合には、以下のアルゴリズムがコンフィギュレータ２２によって実装される。エミュレートされたノードクラスタの各ノードに対して、Ｇｓはエミュレートされたそのノードが属するノードグループである（即ち各ノードグループは例えば同じラック内にあるような互いに物理的に近いノードを備える）。各グループＧｉに対してコンフィギュレータ２２によって以下が行われ、ここで、１≦ｉ≦Ｅであり、Ｅはエミュレートされたノードクラスタに関連するデータファイルにおいて定義されるグループの総数である。コンフィギュレータ２２は、ノードＧｓからノードＧｉに出てゆくトラフィックに対して所望のネットワークプロパティｐ０，…，ｐＮを調べる。コンフィギュレータ２２は、例えばコマンド「tc class add dev」を用いる等してサービスの新たなクラスを作成する。コンフィギュレータ２２は、例えばコマンド「tc qdisc add dev」を用いる等して新たな待ち行列規律(queuing discipline)を作成する。コンフィギュレータ２２は、そのクラス又はその待ち行列規律「qdisc」に対して所望のネットワークプロパティをセットする。そのクラスで帯域及びバーストネットワークプロパティが指定され、その待ち行列規律で他のプロパティ（レイテンシ、エラー率等）が指定される。各ノードＹｎに対して、ＧｙｎはそのノードＹｎが属するグループである。コンフィギュレータ２２は、宛先(destination)ＩＰアドレス（ノードＹｎのアドレス）に基づきフィルタをコンフィギュアし、それをクラスＧｙｎに割り当てる。このことは、例えば、コマンド「tc filter add dev」を用いてなされ得る。
【０１９１】
結果として、ネットエムエミュレータが起動されると、選択されたノードクラスタは、少なくとも以下のネットワークプロパティに関して、エミュレートされたノードクラスタと同等のネットワーク性能を有することになり、即ちこれらのネットワークプロパティは、最小レイテンシ、最大帯域、最大バースト率、最小パケット破損率、最小パケット損失率、及び、最小パケット並び替え率である。ブロック７３２でノード１６をチューニングするための他の適切な方法及びアルゴリズムが提供されてもよい。
【０１９２】
一実施形態では、図４１のブロック７２６〜７３２は、エミュレートされたノードクラスタに対応する複数ノードからなる全クラスタ１４が選択されるまで、利用可能ノード１６の異なるグループで繰り返される。一実施形態では、エミュレートされたノードクラスタは、物理的なノード１６が存在してもしなくてもよいという点で理論上のものであるが、所望のネットワークコンフィギュレーションは既知であり、それがノード選択を行うためのコンフィギュレータ２２への入力として提供される。一実施形態では、エミュレートされたノードクラスタに基づき複数ノードのクラスタ１４が選択されると、コンフィギュレータ２２は、ここに述べられるバッチプロセッサ８０を用いる等して、所望のネットワークコンフィギュレーションを有する複数ノードからなる選択されたクラスタ１４で種々のワークロードをテストするように動作する。
【０１９３】
（ハードウェア特性に基づき複数ノードのクラスタを割り振ること）
図４３は、クラウドコンピューティングシステム１０に対して複数ノードのクラスタ１４を割り振るために図１及び図３のコンフィギュレータ２２によって行われる例示的な動作のフロー図７６０を示している。図４３の説明全体に対して図１〜３が参照される。ブロック７６２では、コンフィギュレータ２２（例えばデータモニタコンフィギュレータ８２）は、１つ以上のデータセンタの利用可能ノード１６のグループについてハードウェア性能アセスメントテストを開始して、利用可能ノード１６のグループの実際のハードウェア性能特性を得る。ブロック７６４では、ノードコンフィギュレータ７２は、利用可能ノード１６のグループの実際のハードウェア性能特性と、ユーザインタフェース２００を介してのユーザ選択に基づき識別された所望のハードウェア性能特性と、を比較する。ブロック７６６では、ノードコンフィギュレータ７２は、ブロック７６４での比較に基づき、利用可能ノード１６のグループからクラウドコンピューティングシステム１０のためのノード１６のサブセットを選択する。ノードクラスタ１４又はノードクラスタ１４のノード１６のグループ等のノード１６のサブセットは、ここに述べられるように、ワークロードの処理を共有するように動作する。ノード１６のサブセット内のノード１６の数は、ここに述べられるように、ノードクラスタ１４に対してユーザによって要求されたノード１６の数に等しいかそれよりも少ない。
【０１９４】
一実施形態では、ノードコンフィギュレータ７２は、所望のハードウェア性能特性を有する、クラウドコンピューティングシステム１０のための複数ノードのクラスタを要求するユーザ要求を、ユーザインタフェース２００を介して受信する。ユーザ要求は、例えば、図８の選択ボックス２５９、入力２６２及びフィールド２５６並びに図９の選択可能入力２６５等の選択可能ハードウェアコンフィギュレーションデータの選択に基づき、所望のハードウェア性能特性を識別する。一実施形態では、図９のテーブル２６４のフィールドは、所望のハードウェア性能特性を更に識別するために選択可能／修正可能である。ノードコンフィギュレータ７２は、ユーザインタフェース２００の他の適切な選択可能入力及びフィールドに基づき所望のハードウェア性能特性を識別してもよい。ノードコンフィギュレータ７２は、複数ノードのクラスタのユーザ要求及びその要求において識別された所望のハードウェア性能特性に基づき（例えば利用可能ノード１６と要求された複数ノードのクラスタとの間でのハードウェア類似性に基づき）、ハードウェア性能アセスメントテストでテストするための利用可能ノード１６のグループを選択する。図示された実施形態では、利用可能ノード１６のグループのノード１６の数は、ユーザ要求で要求された複数ノードのクラスタのノード１６の数よりも多い。
【０１９５】
例示的なハードウェア性能特性は、ネイティブな３２ビット及び／又は６４ビット動作を要求するワークロードをサポートするためにノード１６が６４ビットプロセッサアーキテクチャを有しているのかあるいは３２ビットプロセッサアーキテクチャを有しているのか等のノード１６のコンピュータアーキテクチャを含む。他の例示的なハードウェア性能特性は、ノード１６の１つ以上のプロセッサ４０の製造業者（エーエムディー(AMD)、インテル(Intel)、エヌビディア(Nvidia)等）、ノード１６の１つ以上のプロセッサ４０の動作周波数、及び、ノード１６のリード／ライト性能を含む。更に他の例示的なハードウェア性能特性は、システムメモリ容量及びディスクスペース（記憶容量）、ノード１６のプロセッサ４０の数及びサイズ、ノード１６のキャッシュサイズ、ノード１６の利用可能命令セット、ノード１６のディスクＩ／Ｏ性能及びハードドライブ速度、エミュレーティングソフトウェアをサポートするノード１６の能力、チップセット、ノード１６のメモリのタイプ、ノード１６間でのネットワーク通信レイテンシ／帯域、並びに、他の適切なハードウェア性能特性を含む。図示された実施形態では、これらのハードウェア性能特性の各々は、ユーザインタフェース２００を介して提供されたユーザ要求に基づきユーザによって所望に応じて指定されてよい。更に、１つ以上のハードウェア性能アセスメントテストが、各選択された利用可能ノード１６のこれら実際のハードウェア性能特性を決定するように動作する。
【０１９６】
一実施形態では、ノードコンフィギュレータ７２は、ブロック７６２で、ノード１６のハードウェア性能特性を識別し又は決定すると共にこれらの特性を表すハードウェアコンフィギュレーションデータを生成するように動作する１つ以上のハードウェア性能アセスメントツールを各ノード１６に展開することによって、ハードウェア性能アセスメントテストを開始する。次いでデータアグリゲータ８４は、集約されたデータに基づきノードコンフィギュレータ７２が各ノード１６の実際のハードウェア性能特性を決定することができるように、ハードウェア性能アセスメントツールによって提供されたハードウェア性能データを集約するように動作する。例示的なアセスメントツールは、ノード１６の１つ以上のプロセッサのタイプと、プロセッサの種々の特性／特徴（例えば製造業者、プロセッサの速度及び能力、利用可能なメモリ及びディスクスペース等）とを識別するための実行可能動作コードを含むＣＰＵ識別ツール（「ＣＰＵＩＤ」）を含み、このようなツールは当該技術分野で既知である。他の例示的なモニタリングツールは、ノード１６によって実行されるときに、ノード１６に適合し且つ／又は１つ以上のプロセッサの製造業者に適合する命令セットを決定するために命令セット拡張又は命令種類をテストするように動作するソフトウェアコードモジュールを含む。他の例示的なモニタリングツールは、ノード１６によって実行されるときに、ノード１６が６４ビットアーキテクチャを有しているのかあるいは３２ビットアーキテクチャを有しているのかをテストするように動作するソフトウェアコードモジュールを含む。例えば、そのようなテストは、コマンド又は処理要求を発行することと、プロセッサが要求を完了するのにどれくらいの時間かかるのかを測定することと、を伴う。他の適切なアセスメントツールが提供されてもよい。
【０１９７】
一実施形態では、ブロック７６６で選択されるノード１６のサブセットのノード１６の数は、ユーザ要求において識別されるノード１６の数より少ない。従って、コンフィギュレータ２２は、選択されたノード１６の数がユーザ要求で要求されたノード１６の数に等しくなるまでステップ７６２〜７６６を繰り返して、ノード１６の追加的なサブセットを得る。一実施形態では、ブロック７６６でノード１６の第１のサブセットを選択した後、ノードコンフィギュレータ７２は、ブロック７６２で最初にテストされた利用可能ノード１６の第１のグループとは異なる利用可能ノード１６の第２のグループを選択する。データモニタコンフィギュレータ８２は、利用可能ノード１６の第２のグループの実際のハードウェア性能特性を得るために利用可能ノード１６の第２のグループについてハードウェア性能アセスメントテストを開始し、ノードコンフィギュレータ７２は、利用可能ノードの第２のグループの実際のハードウェア性能特性と所望のハードウェア性能特性とのノードコンフィギュレータ７２による比較に基づき、利用可能ノード１６の第２のグループからクラウドコンピューティングシステム１０のためのノード１６の第２のサブセットを選択する。一実施形態では、ノード１６の選択された複数のサブセットのノードの合計数がユーザ要求で要求されたノード１６の数に等しくなると、ノードコンフィギュレータ７２は、ノード１６の当該選択された複数のサブセットをクラウドコンピューティングシステム１０の複数ノードのクラスタ１４としてコンフィギュアする（即ち、ノードクラスタ１４をユーザ指定のコンフィギュレーションパラメータでコンフィギュアし、ノードクラスタ１４上でワークロードを実行する等）。
【０１９８】
図４４を参照すると、ユーザによって指定された所望のハードウェア性能特性に実質的に一致するハードウェア特性を有する複数ノードのクラスタ１４を選択するために、図１及び図３のコンフィギュレータ２２を含む１つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図７７０が示されている。図４４の説明全体に対して図１〜３が参照される。ブロック７７２では、ノードコンフィギュレータ７２は、所望のハードウェア性能特性を有するＮ個のノード１６に対するユーザ要求を受信し、ここでＮは所望のノード１６の任意の適切な数である。一実施形態では、ユーザ要求は、図４３に関してここに述べられるように、選択可能ハードウェアコンフィギュレーションデータ（例えば図８及び図９）のユーザ選択に基づく。ブロック７７４では、ノードコンフィギュレータ７２は、アクセスした１つ以上のデータセンタ又はクラウドの利用可能ノード１６からＮ＋Ｍのノード１６を要求し又は予約する。Ｍは予約した利用可能ノード１６の数（Ｎ＋Ｍ）が要求したノード１６の数Ｎを超えるような任意の適切な数である。例えば、ＭはＮに等しくてよく、あるいはＮの倍に等しくてよい。代替的には、ノードコンフィギュレータ７２は、ブロック７７４でＮ個の利用可能ノード１６を要求してよい。一実施形態では、（Ｎ＋Ｍ）個のノード１６は、アプリケーション特有ＡＰＩ（例えばアマゾンＡＷＳ  ＡＰＩ、オープンスタックＡＰＩ、カスタムＡＰＩ等）を用いて割り振られ又は予約される。ノードコンフィギュレータ７２は、所望の複数ノードのクラスタと類似したハードウェア特性を有する利用可能ノード１６に基づき、ブロック７７４（及びブロック７８８）で利用可能ノード１６を要求する。例えば、ノードコンフィギュレータ７２は、同じノードタイプ（例えばここに述べられるように、小型、中型、大型、ｘ−大型）の利用可能ノード１６を予約してよい。
【０１９９】
ブロック７７６では、図４３に関してここに述べられるように、データモニタコンフィギュレータ８２は、１つ以上のハードウェア性能アセスメントツールを展開することによって、各予約されたノード１６についてハードウェア性能アセスメントテストを開始し、データアグリゲータ８４は、各ノード１６で開始されたハードウェア性能アセスメントテストからもたらされるハードウェア性能データを集約する（例えば収集し記憶する）。一実施形態では、ハードウェア性能アセスメントツールは、ノード１６に予めインストールされているソフトウェアコードモジュールであり、あるいはＳＳＨ、ＨＴＴＰ又は何らかの他の適切なプロトコル／メカニズムを用いてノード１６にインストールされるソフトウェアコードモジュールである。
【０２００】
ブロック７８０では、ノードコンフィギュレータ７２は、ユーザ要求の所望のハードウェア性能特性（ブロック７７２）をハードウェア性能アセスメントテストからもたらされた実際のハードウェア性能特性と比較する。実際の及び所望のハードウェア性能特性における類似性に基づき、ノードコンフィギュレータ７２は、ブロック７８２で、所望のハードウェア特性にベストマッチのＸ個のノード１６を（Ｎ＋Ｍ）個の予約されたノード１６から選択し、ここでＸは要求されたノード１６の数Ｎに等しいかそれよりも少ない任意の数である。ハードウェア特性を比較しベストマッチングノード１６を選択するために、図４１に関してここに述べられているハードウェア特性に基づく「ベストマッチング」技術等の任意の適切なアルゴリズムが用いられてよい。ブロック７８４では、ノードコンフィギュレータ７２は、選択されなかった残りの利用可能ノード１６（例えば（Ｎ＋Ｍ）−Ｘ）を、それらが他のクラウドコンピューティングシステムでの使用のために利用可能になるように、例えばアプリケーション特有ＡＰＩを用いる等によって、１つ以上のデータセンタ又はクラウドへと解放する。ブロック７８６で、選択されたノード１６の数Ｘが要求されたノード１６の数Ｎよりも少ない場合には、ノードコンフィギュレータ７２は、ブロック７８８で、１つ以上のデータセンタ／クラウドから追加のノード１６を要求し又は予約する。次いでコンフィギュレータ２２は、選択されたノード１６の総数（即ち選択方法の全繰り返しからもたらされるノード１６の合計数）が要求されたノード１６の数Ｎに等しくなるまで、ステップ７７６〜７８６を繰り返す。選択されたノード１６は次いで、ユーザによって割り当てられたクラウドコンピューティングタスクを実行するための複数ノードのクラスタ１４としてコンフィギュアされる。
【０２０１】
一実施形態では、図４４の方法は、所望のハードウェア特性及びネットワーク特性を有する複数ノードのクラスタ１４を選択するために、図４１の方法と共に動作する。一実施形態では、図４４の方法は、ネットワーク特性上の近接性に更に基づきノード１６を選択する。一実施形態では、ブロック７７２でユーザ要求で識別されたハードウェア特性が、ノードクラスタ１４のためのノード１６を選択するのに先立ち優先付けられる。一実施形態では、図４４（及び図４３）の方法は、実際の選択された複数ノードのクラスタ１４とユーザによって指定された所望の複数ノードのクラスタとの適切な一致性を見出すために、コンフィギュレータ２２によって自動的に実行される。代替的には、例えばユーザインタフェース２００の選択可能入力に基づき図４３及び図４４の動作を開始するためのオプションがコンフィギュレータ２２によってユーザに与えられてもよい。
【０２０２】
（クラウドコンピューティングシステムのハードウェアコンフィギュレーションを選択及び／又は修正すること）
図４５は、クラウドコンピューティングシステム１０の複数ノードのクラスタ１４のハードウェアコンフィギュレーションを選択するために図１及び図３のコンフィギュレータ２２によって行われる例示的な動作のフロー図８００を示している。図４５の説明全体に対して図１及び図３が参照される。ブロック８０２では、ノードコンフィギュレータ７２は、クラウドコンピューティングシステム１０の複数ノードのクラスタ１４によって共有されたワークロードの実行に基づき、複数ノードのクラスタ１４の少なくとも１つのノード１６が、ワークロードの共有された実行に際してスレッショルド動作能力未満で動作したことを決定する。スレッショルド動作能力は、例示的には、当該少なくとも１つのノード１６によるハードウェア利用、例えばワークロード実行に際してのプロセッサ４０及び／又はメモリ４２の利用、に基づく。スレッショルド動作能力は、例えば最大動作能力（１００％）又は９０％動作能力等の任意の適切なスレッショルドであってよい。ブロック８０４では、ノードコンフィギュレータ７２は、修正されたハードウェアコンフィギュレーションを伴う複数ノードのクラスタ１４が低下したコンピューティング能力及び低減された記憶容量の少なくとも一方を有するように、ブロック８０２での決定に基づき複数ノードのクラスタ１４の修正されたハードウェアコンフィギュレーションを選択する。
【０２０３】
一実施形態では、ノードコンフィギュレータ７２は、データセンタの複数の利用可能ノード１６から少なくとも１つの異なるノード１６を選択すると共に複数ノードのクラスタ１４の当該少なくとも１つのノード１６を当該少なくとも１つの異なるノード１６と交換することによって、修正されたハードウェアコンフィギュレーションを選択する。その異なるノード１６は、複数ノードのクラスタ１４の交換対象となったノード１６と比べて低下したコンピューティング能力及び低減された記憶容量の少なくとも一方を有する。例えば、ノードコンフィギュレータ７２は、交換対象となったノード１６と比べてより低速なプロセッサ４０を有し、より少ない処理コアを有し、より少ないメモリ容量を有し、又は、任意の他の適切な低下したハードウェア特性を有する異なるノード１６を利用可能ノード１６から選択する。例えば、交換対象となったノード１６は、交換対象となったノード１６のハードウェアの一部がワークロード実行に際して利用されないような、ワークロードを処理するのに必要とされるよりも高いコンピューティング能力又はメモリ容量を有する。図示された実施形態では、その異なるノード１６は、１つ以上の交換対象となったノード１６と同等の性能（例えば同等の実行速度等）で、しかしその異なるノード１６の低下したコンピューティング能力及び／又は記憶容量に起因してより効率的にワークロードを処理するよう動作するように選択される。従って、その異なるノード１６で修正された複数ノードのクラスタ１４は、全体的な性能損失を全く呈することなくあるいは殆ど呈することなく、その異なるノード１６の低下したコンピューティング能力及び／又は記憶容量に起因してより効率的にワークロードを実行する。例えば、ノードクラスタ１４は、交換対象となったノード１６を伴う場合と実質的に同等の速度で、その異なるノード１６を伴ってワークロードを実行する。
【０２０４】
一実施形態では、ノードコンフィギュレータ７２は、交換対象となったノード１６を異なるノード１６と交換することなしに、１つ以上のノード１６を選択し複数ノードのクラスタ１４から除くことによって、ブロック８０４の修正されたハードウェアコンフィギュレーションを選択し実装する。例えば、ノードコンフィギュレータ７２は、ノードクラスタ１４の１つ以上のノード１６がノードクラスタ１４の残りのノード１６にとって同様の実行性能でワークロードを実行するのに必要のないことを決定する。従ってノードコンフィギュレータ７２は、これら１つ以上のノード１６をノードクラスタ１４から除き、これら１つ以上のノード１６をデータセンタへと解放する。一実施形態では、ノードコンフィギュレータ７２は、ノードクラスタ１４の１つ以上のノード１６のコンピューティング能力及びメモリ容量の少なくとも一方を低下させることによって、ブロック８０４の修正されたハードウェアコンフィギュレーションを選択し実装する。
【０２０５】
図示された実施形態では、コンフィギュレータ２２は、種々のハードウエアリソース（例えばノード１６）をノードクラスタ１４のために使用することに関連するハードウェア使用コストを識別するハードウェア使用コストデータへのアクセスを有する。例えば、クラウドコンピューティングサービス（例えばアマゾン、オープンスタック等）は、ノードクラスタ１４の各選択された１６のコンピューティング能力及びメモリ容量等のハードウェアに基づき使用コストをチャージする。そこで、一実施形態では、ノードコンフィギュレータ７２は、複数ノードのクラスタ１４における当該少なくとも１つの異なるノード１６を使用することに関連する使用コストデータと、複数ノードのクラスタ１４における当該少なくとも１つの交換対象となったノード１６を使用することに関連する使用コストデータと、のノードコンフィギュレータ７２による比較に更に基づき、ノードクラスタ１４の１つ以上のノード１６と交換する当該少なくとも１つの異なるノード１６を選択する。一実施形態では、ノードコンフィギュレータ７２は、当該少なくとも１つの異なるノード１６の使用コストが、交換対象となったノード１６の使用コストよりも低いことを条件として、当該少なくとも１つの異なるノード１６を選択する。例えば、ノードコンフィギュレータ７２は、複数ノードのクラスタ１４において使用されたハードウェアリソース（例えばノード１６）のコストを計算し、複数ノードのクラスタ１４の可能なハードウェアコンフィギュレーション変更に関連するコスト便益を決定する。例えば、ノードコンフィギュレータ７２は、ノードクラスタ１４に割り振られたハードウェアリソースの、より低い使用コスト及び最小の性能損失でのより効率的な使用をもたらすであろう１つ以上の異なるノード１６を選択する。一実施形態では、コンフィギュレータ２２は、同様のコスト分析に基づきネットワークコンフィギュレーション又は他のコンフィギュレーションをコンフィギュアする。
【０２０６】
図示された実施形態では、コンフィギュレータ２２は、１つ以上のハードウェア利用モニタリングツールを複数ノードのクラスタ１４の各ノード１６に展開することによって、各ノード１６のハードウェア利用をモニタする。各ノード１６によるハードウェア利用モニタリングツールの実行によって、各ノード１６の少なくとも１つのプロセッサ４０は、ワークロードの実行に際してコンピュータハードウェア（例えばプロセッサ４０、メモリ４２、メモリ制御器等）の利用又は使用量をモニタする。次いでモニタリングツールにより、ノード１６は、ワークロードの実行に際しての各ノード１６のハードウェア利用に関連する、コンフィギュレータ２２によってアクセス可能なハードウェア利用データを提供する。コンフィギュレータ２２のデータアグリゲータ８４は、集約されたハードウェア利用データに基づきコンフィギュレータ２２が各ノード１６のハードウェア利用を決定し得るように、各ノード１６によって提供されたハードウェア利用データを集約するように動作する。例示的なハードウェアモニタリングツールは、図２６〜２９のモニタリングモジュール２１４に関してここに述べられている。例えば、IOStatツール及びVMStatツールは、ワークロード実行に際してプロセッサ４０、仮想メモリ及び／又はメモリ制御器が命令を実行し又はＩ／Ｏ動作を行うのにビジーである時間のパーセンテージ、ワークロード実行に際してこれらのコンポーネントが待機／停止している時間のパーセンテージ、並びに、他の適切な利用パラメータをモニタするために、ノードプロセッサ４０によって実行可能なコードモジュールを含む。ノード１６の決定されたハードウェア利用に基づき、ノードコンフィギュレータ７２は、そのノード１６にとって、最初に要求され割り振られたよりも少ないメモリ又は低いコンピューティング能力が必要とされていることを決定してよく、また、ここに述べられるように、そのノード１６を交換し又はクラスタ１４から除いてよい。
【０２０７】
一実施形態では、ノードコンフィギュレータ７２は、ブロック８０４で選択された修正されたハードウェアコンフィギュレーションを表す選択可能ハードウェアコンフィギュレーションデータをユーザインタフェース２００上に表示する。選択可能ハードウェアコンフィギュレーションデータのユーザ選択に基づき、ノードコンフィギュレータ７２は、複数ノードのクラスタ１４のハードウェアコンフィギュレーションを修正し、例えばノードクラスタ１４のノード１６を交換し又は除く。例示的な選択可能ハードウェアコンフィギュレーションデータは、図８のテーブル２５８内に、選択可能入力２５９，２６２と共に示されている。例えば、ノードコンフィギュレータ７２は、１つ以上の異なるノード１６又は除かれたノード１６を含むノードクラスタ１４の推奨ノード１６をリストすることによって、ノードクラスタ１４の推奨される修正されたハードウェアコンフィギュレーションをテーブル２５８内に表示してよい。ユーザは、リストされたノード１６に対応する入力２５９を選択してハードウェア変更を承認し、ノードコンフィギュレータ７２は、ここに述べられるように、ワークロード展開の開始の場合に、承認された変更に基づき、修正されたノードクラスタ１４をコンフィギュアする。一実施形態では、ハードウェア使用コストもユーザインタフェース２００で表示されて、ノードクラスタ１４の１つ以上の推奨ハードウェアコンフィギュレーションにより、関連する使用コストに基づきユーザが実装のためのコンフィギュレーションを選択することを可能にしている。複数ノードのクラスタ１４の修正されたハードウェアコンフィギュレーションを表示するために、他の適切なインタフェースが提供されてよい。一実施形態では、ノードコンフィギュレータ７２は、ユーザによる入力又は確認なしに、ブロック８０４で選択された修正されたハードウェアコンフィギュレーションで複数ノードのクラスタ１４を自動的にコンフィギュアし、更に、修正されたノードクラスタ１４でワークロードの実行を開始する。
【０２０８】
図４６を参照すると、クラウドコンピューティングシステム１０の複数ノードのクラスタ１４のハードウェアコンフィギュレーションを選択するために、図１及び図３のコンフィギュレータ２２を含む１つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図８１０が示されている。図４６の説明全体に対して図１〜３が参照される。ブロック８１２では、コンフィギュレータ２２は、ここに述べられるように、所望のハードウェアコンフィギュレーションを伴う所望の複数ノードのクラスタ１４のブロック８１４でのユーザ選択を可能にするために、選択可能ノードデータを含むユーザインタフェース２００を提供する。ブロック８１６では、コンフィギュレータ２２は、ここに述べられるように、複数ノードのクラスタ１４を選択しコンフィギュアし、ワークロードを複数ノードのクラスタ１４に展開する。ブロック８１８では、コンフィギュレータ２２は、ノードクラスタ１４の各ノード１６上でハードウェア利用モニタリングツールをインストール及び／又はコンフィギュアする。一実施形態では、モニタリングツールは、図２６〜２９のモニタリングモジュール２１４を介してユーザによって選択される。代替的には、コンフィギュレータ２２は、図４６の方法の開始に基づき、IOStatツール及びVMStatツール等の１つ以上のモニタリングツールを自動的に展開してよい。ブロック８２０では、ワークロードコンフィギュレータ７８は、複数ノードのクラスタ１４上でのワークロードの実行を開始し、ブロック８２２では、その実行に続いて又はその実行の間、データアグリゲータ８４は、各ノード１６のモニタリングツールによって提供されるハードウェア利用データを収集し記憶する。
【０２０９】
ノードクラスタ１４によるワークロード実行が完了すると、ノードコンフィギュレータ７２は、ブロック８２４で表されるように、ハードウェア利用データに基づき各ノード１６のハードウェア利用を決定する。ブロック８２６では、ノードコンフィギュレータ７２は、各ノード１６のハードウェア利用が利用スレッショルド（例えば１００％利用、９０％利用又は任意の他の適切な利用スレッショルド）以上になったかどうかを判定する。一実施形態では、ノードコンフィギュレータ７２は、ブロック８２６で、プロセッサ利用、メモリ利用、メモリ制御器利用等の複数の利用測定値を１つ以上の利用スレッショルドと比較する。ブロック８２６で肯定(yes)の場合には、ノードクラスタ１４は更なるワークロード実行に適しているものと決定され、即ちコンフィギュレータ２２によって何らノードクラスタ１４のハードウェアコンフィギュレーションに対する調節はなされない。ブロック８２６で利用スレッショルド未満の各ノード１６に対しては、ノードコンフィギュレータ７２は、図４５に関してここに述べられるように、交換用の異なるノード１６であって、ワークロードの実行に適したハードウェアを有する（即ち交換対象となった１つ以上のノード１６と同等の性能を有する）一方で交換対象となったノード１６より低いコンピューティング能力又は記憶容量を有する交換用の異なるノード１６を、データセンタの利用可能ノード１６から識別する。ブロック８３０では、ノードコンフィギュレータ７２は、図４５に関してここに述べられるように、複数ノードのクラスタ１４の推奨ハードウェアコンフィギュレーションをユーザインタフェース２００上に表示することによって、ブロック８２８で識別された任意の推奨ハードウェアコンフィギュレーション変更のユーザへのフィードバックを提供する。ブロック８３２では、ノードコンフィギュレータ７２は、オリジナルノードクラスタ１４のノード１６を除くこと及び／又は当該ノード１６をブロック８２８で識別された異なるノード１６と交換することによって、ワークロードの将来の実行のために推奨ハードウェアコンフィギュレーション変更を適用する。
【０２１０】
一実施形態では、ユーザインタフェース２００の選択可能入力でのユーザによる選択によって、ノードコンフィギュレータ７２は、図４５及び図４６で述べたハードウェアコンフィギュレーション方法を実施して、ワークロードを実行するのに適したノードクラスタ１４のコンフィギュレーションを見出す。代替的には、コンフィギュレータ２２は、例えばバッチ処理ジョブの開始に際して等、図４５及び図４６の方法を自動的に実装して、ワークロード性能を著しくは制限しない、複数ノードのクラスタ１４の適切な代替的コンフィギュレーションを見出す。
【０２１１】
（クラウドコンピューティングシステムをチューニングすること）
図４７は、複数の利用可能なコンフィギュレーションからクラウドコンピューティングシステム１０の複数ノードのクラスタ１４の適切なコンフィギュレーションを選択するために図１及び図３のコンフィギュレータ２２によって行われる例示的な動作のフロー図８５０を示している。図４７の説明全体に対して図１及び図３が参照される。ブロック８５２では、コンフィギュレータ２２（バッチプロセッサ８０）は、複数ノードのクラスタ１４のためのコンフィギュレーションパラメータの複数の異なるセットに基づき、複数ノードのクラスタ１４上でのワークロードの複数の実行を開始する。コンフィギュレータ２２によってノード１６への入力として提供（例えばここに述べられるように１つ以上のコンフィギュレーションファイル２８を介して）されたコンフィギュレーションパラメータは、コンフィギュレーションパラメータの当該異なるセットを提供するために、コンフィギュレータ２２によって調節可能であり、ワークロードは、コンフィギュレーションパラメータの各異なるセットで、複数ノードのクラスタ１４によって実行される。一実施形態では、コンフィギュレータ２２は、ここに述べられるように、ユーザインタフェース２００を介して提供されたユーザ入力に基づき、各ワークロード実行のためのコンフィギュレーションパラメータを調節する。一実施形態では、これらコンフィギュレーションパラメータは、少なくとも１つのノード１６のワークロードコンテナの動作パラメータ、少なくとも１つのノード１６のブート時間パラメータ、及び、少なくとも１つのノード１６のハードウェアコンフィギュレーションパラメータの少なくとも１つを含む。
【０２１２】
ブロック８５４では、ノードコンフィギュレータ７２は、コンフィギュレーションパラメータの当該複数の異なるセットから、複数ノードのクラスタ１４のためのコンフィギュレーションパラメータのセットを選択する。ブロック８５６では、ワークロードコンフィギュレータ７８は、その選択されたコンフィギュレーションパラメータのセットでコンフィギュアされた複数ノードのクラスタ１４による実行のために、ワークロードを複数ノードのクラスタ１４に提供する（展開する）。従って、ワークロードの将来の実行は、その選択されたコンフィギュレーションパラメータのセットに基づくコンフィギュレーションを有する複数ノードのクラスタ１４によって行われる。
【０２１３】
ブロック８５４でのコンフィギュレーションパラメータのセットの選択は、ワークロードの各実行に際してモニタされた（例えばモニタリングツールで）複数ノードのクラスタ１４の少なくとも１つの性能特性と、複数ノードのクラスタ１４の少なくとも１つの所望の性能特性と、のノードコンフィギュレータ７２による比較に基づく。例えば一実施形態では、ノードコンフィギュレータ７２は、ワークロード実行に際して、ユーザによって指定された所望の性能特性にベストマッチのノードクラスタ１４の性能特性をもたらすコンフィギュレーションパラメータのセットを選択する。図示された実施形態では、所望の性能特性は、ユーザインタフェース２００を介して提供されたユーザ入力に基づき、ノードコンフィギュレータ７２によって識別される。例えば、ユーザインタフェース２００は、選択されたワークロードを実行するときにユーザが複数ノードのクラスタ１４の所望の性能特性を選択することを可能にする選択可能入力又は空きを埋めることが可能な(fillable)フィールド等の選択可能性能データを含む。例えば、図１０の埋めることが可能なフィールド２７６又は所望の性能特性を識別するためのユーザ入力を受け取るように構成されたユーザインタフェース２００の任意の他の適切な選択可能入力若しくはフィールドを参照されたい。他の例では、ノードコンフィギュレータ７２は、例えば図７の入力２３８，２２８，２３０，２３２のユーザ選択及び／又は図２５のバッチ処理モジュール２１２のボタン４９４に基づく等して、所望の性能特性を識別するデータを含むユーザ提供のファイルをロードしてもよい。
【０２１４】
ワークロード実行に際してユーザによって指定されると共にモニタされる例示的な性能特性は、ワークロード実行時間、ノード１６によるプロセッサ利用、ノード１６によるメモリ利用、ノード１６による電力消費、ノード１６によるハードディスク入力／出力（Ｉ／Ｏ）利用、及び、ノード１６によるネットワーク利用を含む。図２６〜２９に関してここに述べられるモニタリングツールでモニタされた性能特性等の他の適切な性能特性がモニタされ且つ／又はユーザによって指定されてよい。
【０２１５】
一実施形態では、ブロック８５４でのコンフィギュレーションパラメータのセットの選択は、ワークロードの実行に際してモニタされた１つ以上の性能特性に関連する値が、１つ以上の対応する所望の性能特性に関連する許容値の範囲に含まれる旨のノードコンフィギュレータ７２による決定に更に基づく。例えば、対応する所望の性能特性に関連する許容値の範囲（例えばユーザによって入力され又はノードコンフィギュレータ７２によってセットされる）は、プロセッサ利用についての８５％〜１００％及びメモリ利用についての８５％〜１００％を含んでいてよい。これに伴い、ノードコンフィギュレータ７２は、９５％のプロセッサ利用及び９０％のメモリ利用をもたらすコンフィギュレーションパラメータのセットを選択するが、８０％のプロセッサ利用及び７５％のメモリ利用をもたらすコンフィギュレーションパラメータのセットを拒絶する。値の許容範囲を満足する性能特性をコンフィギュレーションパラメータの複数のセットがもたらす場合には、ノードコンフィギュレータ７２は、最高性能値、最低使用コスト、性能特性の優先順位、又は、他の適切なファクタ等の追加的ファクタに基づき、コンフィギュレーションパラメータのセットを選択する。許容範囲に含まれる性能特性をもたらすコンフィギュレーションパラメータのセットが無い場合には、ノードコンフィギュレータ７２は、ベストマッチの性能特性をもたらすセットを選択し、適切なセットが見つかるまでコンフィギュレーションパラメータを自動的に更に調節し、及び／又は、許容範囲内のコンフィギュレーションパラメータのセットが見つからなかった旨をユーザに通知する。
【０２１６】
一実施形態では、ノードコンフィギュレータ７２は、所望の性能特性に対するモニタされた性能特性の類似性に基づき、コンフィギュレーションパラメータの各異なるセットにスコア値を割り当てる。従って、ブロック８５４でのコンフィギュレーションパラメータのセットの選択は、選択されたコンフィギュレーションパラメータのセットに割り当てられたスコア値に更に基づく。例えば、ノードコンフィギュレータ７２は、最も高いスコア値をもたらすコンフィギュレーションパラメータのセットを選択する。スコア値は、ノードクラスタ１４の性能特性が所望の性能特性にどれほどマッチしているのかに基づき、コンフィギュレーションパラメータのセットをランク付けする。
【０２１７】
一実施形態では、ブロック８５４でのコンフィギュレーションパラメータのセットの選択は、異なる利用可能ノード１６を使用すること又は複数ノードのクラスタ１４での異なるネットワークコンフィギュレーションを使用することに関連する使用コストデータの比較に更に基づく。例えば、ノードコンフィギュレータ７２は、スレッショルド利用レベルよりも多いプロセッサ利用及びメモリ利用、並びに、スレッショルドコストレベルよりも低い使用コストをもたらすコンフィギュレーションパラメータのセットを選択してよい。使用コストに関する任意の他の適切な考慮がブロック８５４での選択に適用されてもよい。
【０２１８】
一実施形態では、コンフィギュレータ２２は、ユーザによって提供された（例えばユーザインタフェース２００を介して）コンフィギュレーションパラメータの初期セットに基づき、ノードクラスタ１４上でのワークロードの第１の実行を開始する。この実施形態では、所望の性能特性をもたらすコンフィギュレーションパラメータのセットを見出すために、ノードコンフィギュレータ７２は、自動的に初期セットの少なくとも１つのコンフィギュレーションパラメータを調節すると共にこの修正された初期セットに基づきワークロードの追加的な実行を開始することによって、コンフィギュレーションパラメータの種々のセットを網羅する。このようなコンフィギュレーションパラメータの種々のセットを探索するために、任意の適切な設計スペース探索方法又はアルゴリズムが用いられてよい。
【０２１９】
一実施形態では、データモニタコンフィギュレータ８２は、１つ以上のノード及びネットワーク性能モニタリングツール（例えば図２６〜２９で述べられている）を複数ノードのクラスタ１４の各ノード１６に展開する。モニタリングツールは、各ノード１６によって（又は制御サーバ１２によって）実行されるときに、ここに述べられるように、ワークロードの各実行に際して各ノード１６の性能特性をモニタするように動作する。実行されたモニタリングツールは、コンフィギュレータ２２によってアクセス可能な、対応するノード１６の性能特性を表す性能データを生成する。データアグリゲータ８４は、各ノード１６の性能モニタリングツールによって提供された性能データを集約し、ノードコンフィギュレータ７２は、集約された性能データに基づきブロック８５４でコンフィギュレーションパラメータのセットを選択する。
【０２２０】
ここに述べられるように、複数ノードのクラスタ１４のコンフィギュレーションパラメータの種々のセットは、ワークロードコンテナの動作パラメータ、ブート時間パラメータ、及び、ハードウェアコンフィギュレーションパラメータの少なくとも１つを含む。ワークロードコンテナの例示的な動作パラメータは、図４〜６，１９及び図２０に関してここに述べられており、例えば、リード／ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも１つに関連する動作パラメータを含む。動作パラメータは、図１９及び図２０に示されここに述べられている選択可能データ（例えば入力及びフィールド）のユーザ選択に基づき、ワークロードコンテナコンフィギュレータ７６によって修正される。リード／ライト動作に関連する例示的な動作パラメータは、リード／ライト動作のためのメモリバッファサイズ及びリード／ライト動作に際して転送されるデータブロックのサイズを含む。ファイルシステム動作に関連する例示的な動作パラメータは、各ノード１６のメモリ内に記憶されるファイルシステム記録の数、及び、ファイルシステムのための要求を処理するために割り振られる各ノード１６の処理スレッドの数の少なくとも一方を備える。ソーティング動作に関連する例示的な動作パラメータは、ソーティング動作を行うときにマージするデータストリームの数を含む。ワークロードコンテナの他の適切な動作パラメータが提供されてもよい。
【０２２１】
例示的なブート時間パラメータは、図１０及び図３６〜３８に関してここに述べられており、例えば、ワークロードの実行に際して有効にされるノード１６の処理コアの数、及び、ノード１６のオペレーティングシステム４４によってアクセス可能なノード１６のシステムメモリの量を含む。ブート時間パラメータは、図１０に示されここに述べられている選択可能データ（例えば入力及びフィールド）のユーザ選択に基づき、ノードコンフィギュレータ７２によって選択され修正される。他の適切なブート時間パラメータが提供されてもよい。例示的なハードウェアコンフィギュレーションパラメータは、図８，９及び図４３〜４６に関してここに述べられており、例えば、ノード１６のプロセッサ４０の数、ノード１６のシステムメモリの量、及び、ノード１６のハードディスクスペースの量の少なくとも１つを含む。ハードウェアコンフィギュレーションパラメータは、図８及び図９に示されここに述べられている選択可能データ（例えば入力及びフィールド）のユーザ選択に基づき、ノードコンフィギュレータ７２によって選択され修正される。他の適切なハードウェアコンフィギュレーションパラメータが提供されてもよい。
【０２２２】
図４８を参照すると、複数の利用可能なコンフィギュレーションからクラウドコンピューティングシステム１０の複数ノードのクラスタ１４の適切なコンフィギュレーションを選択するために、図１及び図３のコンフィギュレータ２２を含む１つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図８６０が示されている。図４８の説明全体に対して図１〜３が参照される。図４８に図示された実施形態では、コンフィギュレータ２２は、ノードクラスタ１４の実際の性能が所望の性能以上の場合に、コンフィギュレーションパラメータの適切なセットのサーチを中止する。他の実施形態では、コンフィギュレータ２２は、所望の性能特性及び／又は他の適切なファクタ（例えば使用コスト）に基づきベストマッチであるコンフィギュレーションパラメータのセットを選択する前に、識別されたコンフィギュレーションパラメータの各セットを試行する。
【０２２３】
ブロック８６２では、コンフィギュレータ２２は、ここに述べられるように、ユーザインタフェース２００を介して受信したユーザ入力に基づくワークロード実行に関連するコンフィギュレーションパラメータの１つ以上のセット及び所望の性能特性を受信する。ブロック８６４では、コンフィギュレータ２２は、複数ノードのクラスタ１４を割り振り、ブロック８６２で受信したコンフィギュレーションパラメータのセットで複数ノードのクラスタ１４をコンフィギュアする。一実施形態では、コンフィギュレータ２２は、ここに述べられるように、ブロック８６４でコンフィギュレーションパラメータを識別する１つ以上のネットワークコンフィギュレーションファイル２８をノード１６に展開する。コンフィギュレータ２２は、ブロック８６６で１つ以上のモニタリングツール（例えばモジュール２１４を介してユーザによって選択される）を各ノード１６上でインストール及び／又はコンフィギュアし、ブロック８６８で複数ノードのクラスタ１４によるワークロードの実行を開始する。ワークロードの実行の場合又はワークロードの実行の間、コンフィギュレータ２２は、ブロック８７０で、各ノード１６の１つ以上のモニタリングツールによって生成された性能データを集約する。ここに述べられるように、ブロック８７２では、集約された性能データに基づき、コンフィギュレータ２２は、ブロック８６２で識別された所望の性能特性を、集約された性能データで識別されたクラスタ１４の実際の性能特性と比較する。ブロック８７４では、コンフィギュレータ２２は、ここに述べられるように、性能特性が所望の性能特性と比べて適切なものであるかどうか（例えば許容範囲内にあるかどうか、適切なスコア値を有しているかどうか等）を判定する。ブロック８７４で肯定(yes)である場合には、コンフィギュレータは、ブロック８６４で最後に実装された現在のコンフィギュレーションパラメータをワークロードの将来の実行のために保存する。ブロック８７４で性能特性が所望のものでなく且つブロック８７６でコンフィギュレーションパラメータの利用可能な種々のセットが使い尽くされていない場合には、コンフィギュレータ２２は、ブロック８７８でコンフィギュレーションパラメータの異なるセットを選択し、ブロック８６４〜８７６の機能を繰り返す。例えば、コンフィギュレータ２２は、ここに述べられるように、ブロック８６２で識別されたコンフィギュレーションパラメータの異なるセットを実装してよく、あるいはコンフィギュレータ２２によって提供されるパラメータの増加的に調節されたセットを実装してよい。プロセスは、コンフィギュレータ２２がブロック８７４でコンフィギュレーションパラメータの適切なセットを見出すまで又はコンフィギュレーションパラメータオプションがブロック８７６で使い尽くされるまで繰り返される。コンフィギュレーションオプションがブロック８７６で使い尽くされた場合には、コンフィギュレータ２２は、最良の性能特性及び他の識別された特性（例えば使用コスト）を提供したコンフィギュレーションパラメータのセットをブロック８８０で選択する。
【０２２４】
数ある利益のなかでも、この方法及びシステムは、ユーザインタフェースを介しての、複数ノードのクラスタ、ワークロード、ワークロードコンテナ及びネットワークコンフィギュレーションの選択、コンフィギュレーション及び展開を可能にし得る。加えて、この方法及びシステムは、クラウドコンフィギュレーションパラメータの制御及び調節を可能にするので、これにより、ノード、ネットワーク、ワークロードコンテナ及び／又はワークロードの変化しつつある特性下でのクラウドコンピューティングシステムの性能解析が可能になる。他の利益は当業者によって認識されるはずである。
【０２２５】
好ましい設計を有しているものとして本発明が述べられてきたが、本発明は、本開示の精神及び範囲内で更に修正され得る。従って、本出願は、本発明の一般的原理を用いる本発明の任意の改変、使用又は適応を網羅することを意図されている。更に、本出願は、本開示が属する技術の分野において既知の又は慣習となっている慣例に含まれるような本開示からの逸脱であって添付の特許請求の範囲の限定に包含される本開示からの逸脱を網羅することが意図されている。
【図１】
0005926864.tif 000002
【図２】
0005926864.tif 000003
【図３】
0005926864.tif 000004
【図４】
0005926864.tif 000005
【図５】
0005926864.tif 000006
【図６】
0005926864.tif 000007
【図７】
0005926864.tif 000008
【図８】
0005926864.tif 000009
【図９】
0005926864.tif 000010
【図１０】
0005926864.tif 000011
【図１１】
0005926864.tif 000012
【図１２】
0005926864.tif 000013
【図１３】
0005926864.tif 000014
【図１４】
0005926864.tif 000015
【図１５】
0005926864.tif 000016
【図１６】
0005926864.tif 000017
【図１７】
0005926864.tif 000018
【図１８】
0005926864.tif 000019
【図１９】
0005926864.tif 000020
【図２０】
0005926864.tif 000021
【図２１】
0005926864.tif 000022
【図２２】
0005926864.tif 000023
【図２３】
0005926864.tif 000024
【図２４】
0005926864.tif 000025
【図２５】
0005926864.tif 000026
【図２６】
0005926864.tif 000027
【図２７】
0005926864.tif 000028
【図２８】
0005926864.tif 000029
【図２９】
0005926864.tif 000030
【図３０】
0005926864.tif 000031
【図３１】
0005926864.tif 000032
【図３２】
0005926864.tif 000033
【図３３】
0005926864.tif 000034
【図３４】
0005926864.tif 000035
【図３５】
0005926864.tif 000036
【図３６】
0005926864.tif 000037
【図３７】
0005926864.tif 000038
【図３８】
0005926864.tif 000039
【図３９】
0005926864.tif 000040
【図４０】
0005926864.tif 000041
【図４１】
0005926864.tif 000042
【図４２】
0005926864.tif 000043
【図４３】
0005926864.tif 000044
【図４４】
0005926864.tif 000045
【図４５】
0005926864.tif 000046
【図４６】
0005926864.tif 000047
【図４７】
0005926864.tif 000048
【図４８】
0005926864.tif 000049