JP5926864B2 - クラウドコンピューティングシステムをコンフィギュアするためのシステム及び方法 - Google Patents

クラウドコンピューティングシステムをコンフィギュアするためのシステム及び方法 Download PDF

Info

Publication number
JP5926864B2
JP5926864B2 JP2015526576A JP2015526576A JP5926864B2 JP 5926864 B2 JP5926864 B2 JP 5926864B2 JP 2015526576 A JP2015526576 A JP 2015526576A JP 2015526576 A JP2015526576 A JP 2015526576A JP 5926864 B2 JP5926864 B2 JP 5926864B2
Authority
JP
Japan
Prior art keywords
node
workload
configurator
cluster
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015526576A
Other languages
English (en)
Other versions
JP2015524596A (ja
Inventor
ブレーターニッツ マウリシオ
ブレーターニッツ マウリシオ
エイ. ロウリー キース
エイ. ロウリー キース
カミンスキー パトリック
カミンスキー パトリック
チェルノフ アントン
チェルノフ アントン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2015524596A publication Critical patent/JP2015524596A/ja
Application granted granted Critical
Publication of JP5926864B2 publication Critical patent/JP5926864B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Description

本開示は、概してコンピューティングシステムの分野に関し、より特定的にはクラウドコンピューティングシステムをコンフィギュアするための方法及びシステム、並びに、そのクラウドコンピューティングシステムの性能を解析するための方法及びシステムに関する。
クラウドコンピューティングは、例えば、インターネット等のネットワークを介してのホストサービスの受け渡し(delivery)に関与する。クラウドコンピューティングシステムは、エンドユーザへのサービスとしてコンピューティング能力及び記憶容量の受け渡しを提供する。クラウドコンピューティングシステムは、分散型通信ネットワーク上で動作する複数のサーバ、即ち複数の「ノード」を含み、各ノードはローカル処理能力及びメモリを含む。例えば、クラウドコンピューティングシステムの各ノードは、コンピューティング能力を提供するための少なくとも1つの処理デバイスと、記憶容量を提供するためのメモリと、を含む。ユーザは、アプリケーションをローカル的に実行し又はデータをローカル的に記憶するよりもむしろ、クラウド上、即ち複数ノードの「クラスタ」上でアプリケーションを遠隔的に実行し又はデータを遠隔的に記憶することができる。エンドユーザは、例えばローカルコンピュータ上のウェブブラウザその他の何らかのソフトウェアアプリケーションを介してクラウドベースのアプリケーションにアクセスすることができる一方で、そのソフトウェアアプリケーション及び/又はそのソフトウェアアプリケーションに関連するデータは、遠隔位置にあるクラウドノード上で記憶され且つ/又は実行される。クラウドコンピューティングリソースは、典型的には、要求に応じてエンドユーザに割り振られ(allocated)、これには、エンドユーザによって利用されたリソースの実際の量に対応するクラウドコンピューティングシステムコストが伴う。
コンピューティングタスクは、ワークロードの形態で、クラウドコンピューティングシステムの複数のノードに分散される。ノードは、ワークロードの処理を共有するように動作する。ワークロード(「カーネル」とも称する)は、複数ノードのクラウド上で行われ実行されるコンピューティングジョブ又はタスクを含む。ワークロードは、ソフトウェアコード又はファームウェアコードの集まり及び任意の必要なデータを備えており、任意のアプリケーション若しくはプログラム又は複数ノードのクラスタ上で実行されるアプリケーション若しくはプログラムの一部を含む。例えば、1つの例示的なワークロードは、1つ以上のアルゴリズムを実装するアプリケーションである。例示的なアルゴリズムは、例えば、データセットをクラスタ化し、ソーティングし、分類し又はフィルタリングすることを含む。他の例示的なワークロードは、コンピューティングサービスをエンドユーザに提供するために実行されるサービス指向型アプリケーションを含む。幾つかの形態では、ワークロードは、複製されて複数のノード上で一斉に実行される単一のアプリケーションを含む。ロードバランサは、ワークロードに関連付けられた処理ロードを複数ノードが共有するように、ワークロードと共に実行されるべき要求を複数ノードのクラスタに分散させる。複数ノードのクラスタは、ワークロードの実行の結果について協働して最終結果を生成する。
ワークロードコンテナは、ワークロードコンテナモジュール(例えばソフトウェアコード又はファームウェアコード)を実行しているノードの1つ以上のプロセッサを備えており、各ノード上で動作する。ワークロードコンテナは、複数ノードのクラスタ上でのワークロードの実行を開始し且つ指揮するソフトウェア環境を提供する、ワークロードのための実行フレームワークである。ワークロードコンテナは、典型的には、複数ノードのクラスタ上の特定のクラスのワークロードのための実行フレームワークを提供する。ワークロードコンテナは、関連ノードが、クラウドのあるノードとして、そのノードがワークロードを実行し、ワークロード実行の結果をクラウドの他のノードと共有し、且つ、クラウドの他のノードと協働及び通信するように動作するように、関連ノードをコンフィギュアする。1つの形態では、ワークロードコンテナは、他のノードとインタフェースすると共に関連ノードの他のアプリケーション及びハードウェアともインタフェースするためのアプリケーションプログラムインタフェース(APIs)又はXMLベースのインタフェースを含む。
1つの例示的なワークロードコンテナは、マップリデュース(map-reduce)ワークロードのためのマップリデュースフレームワーク及び分散型ファイルシステム(HDFS)を提供するJAVA(登録商標)ベースのアパッチハドゥープ(Apache Hadoop)である。ハドゥープワークロードコンテナを伴って動作する複数ノードのクラスタは、典型的には、マスタノードと、複数のワーカノードと、を含む。ハドゥープワークロードコンテナは、各ノードへのマスタ状態又はワーカ状態の割り当て(assignment)を連携させると共に、各ノードにそれがクラウド上で動作していることを通知する。マスタノードは、ジョブ(即ちワークロード)の開始及び完了並びにファイルシステムメタデータを追跡する。マップリデュースフレームワークの「マップ」段階においては、1つのタスク、即ち1つのワークロードは、複数の部分(即ち、1つ以上の処理スレッドの複数のグループ)へと区分化され、そのワークロードの複数部分は、それら処理スレッド及び関連入力データを処理する複数のワーカノードへと分散させられる。「リデュース」段階においては、各ワーカノードからの出力が収集されて結合され、最終的な結果又は回答が生成される。ハドゥープの分散型ファイルシステム(HDFS)は、データを記憶し、複数のワーカノード間でデータを通信するために利用される。HDFSファイルシステムは、データ複製をサポートして、データ及びファイルのコピーを複数記憶することによってデータ信頼性の尤度を高める。
従来のクラウドコンピューティングプラットフォームにおいて複数ノードのクラスタをセットアップし又はコンフィギュアすることは、険しい学習曲線を必要とする複雑な処理である。クラウドソフトウェア及びワークロードは、各ノードに個別に展開される必要があり、また、いかなるコンフィギュレーション変化であっても各ノードに個別に展開される必要がある。複数ノードのクラスタの性能を解析しクラウドセットアップを最適化することは、複数の独立変数を伴い、多くの場合に時間のかかるものであり、特定のアプリケーションをモニタし且つ解析するのに適したその場その場での(ad-hoc)インタフェースを必要とする。特に、クラウドのオペレータ又はエンジニアは、ワークロードがどのように実行されているかについてのデータを獲得し、ワークロードの実際の結果を獲得するために、コマンドを作成する必要がある。加えて、そのようなデータは、目下のシステムコンフィギュレーションに特有なフォーマットの形態にあり、当該データは、クラウドのオペレータ又はエンジニアによって、性能解析に適した形態に統一される必要もある。クラウドのオペレータ又はエンジニアにとっては、クラウドメカニズム、任意のネットワーキング問題、システム管理関連のタスク、並びに、利用可能な性能解析ツールの展開及びデータフォーマットの具体的詳細について学習することが要求される。更に、ワークロードの性能を複数ノードのクラスタ上でモニタし解析することは、複雑であり、時間もかかり、特定のクラウドコンフィギュレーションに依存する。クラウドのオペレータ又はエンジニアは、特定のクラウドシステムのためのコンフィギュレーション及びハードウェア情報の全ての内情に通じているとは限らず、このことが正確な性能解析を困難にしている。
今日では、例えばアマゾンウェブサービス(Amazon Web Services)(AWS)及びオープンスタック(OpenStack)を含め、いくつかのクラウドコンピューティングプラットフォームが利用可能である。アマゾンのAWSは、エラスティックコンピュートクラウド(Elastic Compute Cloud)(EC2)を含み、クラウドコンピューティングシステムとしての使用のために、複数ノード(サーバ)のクラスタをエンドユーザに貸し出す。AWSは、ユーザが複数ノードのクラスタを割り振ること及び複数ノードのそのクラスタ上でワークロードを実行することを許可している。AWSは、特定のハードウェアコンフィギュレーション及びソフトウェアコンフィギュレーションを要求する等の種々の制約で、ユーザがアマゾン提供のサーバハードウェア上でのみワークロードを実行するように制限している。オープンスタックは、ユーザがユーザ提供のハードウェア上で複数ノードのクラスタを構築し管理することを許可している。AWS及びオープンスタックには、ワークロード及びワークロードコンテナソフトウェアを迅速にコンフィギュアして各ノードに展開し、ネットワークパラメータを修正し、またクラスタの全ノードからの性能データを集約するためのメカニズムが欠けている。
特定のローカルプロセッサの性能をテストする既知の方法は、そのローカルプロセッサによって実行可能なユーザ指定のパラメータに基づく合成バイナリコードを作成することを含む。しかし、バイナリ合成コードの作成には、ユーザがユーザ指定のパラメータをハードコード化することが必要であり、かなりの展開時間を要し、対象となるプロセッサのアーキテクチャに関する予備知識も必要である。そのようなハードコード化された合成コードは、対象となるプロセッサの特定の命令セットアーキテクチャ(instruction set architecture)(ISA)(例えばx86)や特定のマイクロアーキテクチャを対象として書かれていなければならない。命令セットアーキテクチャとは、データのタイプ/フォーマット、命令、データブロックサイズ、処理レジスタ、メモリアドレッシングモード、メモリアーキテクチャ、割り込み及び例外の扱い、I/O等を識別するコンピュータアーキテクチャのコンポーネントのことである。マイクロアーキテクチャとは、データパス、データ処理要素(例えば論理ゲート、演算論理ユニット(ALUs)等)、データ記憶要素(例えばレジスタ、キャッシュ等)などを識別し、また、プロセッサがどのように命令セットアーキテクチャを実装するのかを識別するコンピュータアーキテクチャのコンポーネントのことである。従って、合成コードは、他の1つ以上のプロセッサの種々の命令セットアーキテクチャや異なるマイクロアーキテクチャを実行するためには、修正された又は新たなハードコード化パラメータ及び命令で再設計される必要がある。このため、そのようなハードコード化された合成コードは、クラウドコンピューティングシステムの複数のノードをテストするのには適していない。
ローカルプロセッサの性能をテストする他の方法は、標準性能評価法人(Standard Performance Evaluation Corporation)(SPEC)によって提供されるワークロード等の業界標準のワークロード又はトレースを実行して、プロセッサの性能を性能ベンチマークと比較するものである。しかし、業界標準のワークロードを完全に実行するためには、多くの場合に多大なシミュレーション時間が必要である。関連するより小さなトレースをプロセッサによる実行のためにワークロードから抽出する場合には、シミュレーション時間が短縮されるかもしれないが、関連するトレースを識別し抽出するための余分な技術的努力が必要とされる。更に、業界標準のワークロードの選択又はワークロードからのより小さなトレースの抽出は、1つ以上のプロセッサの異なるアーキテクチュラルコンフィギュレーションに対して繰り返されなければならない。
コンピューティング能力及び記憶容量をエンドユーザへのサービスとして受け渡す現行のクラウドシステムには、クラウドシステムの複数ノードのクラスタの各ノードのブート時間コンフィギュレーションを変更するメカニズムが欠けている。例えば、ブート時間コンフィギュレーション変更は、複数ノードのブート時間パラメータを修正するためにエンジニア又はプログラマによってクラウドの各ノード上へハードコード化される必要があり、多大な時間がかかり、また煩雑なものである。更に、エンジニアは、コンフィギュレーションコードを書くにあたり、複数ノードのクラスタのハードウェア及びコンピュータアーキテクチャに関する詳細な知識を有している必要がある。
コンピューティング能力及び記憶容量をエンドユーザへのサービスとして受け渡す典型的なクラウドシステムには、ユーザが複数ノードからなる割り振られたクラスタのネットワークコンフィギュレーションを特定すること及び修正することを可能にするメカニズムが欠けている。多くのクラウドシステムでは、ユーザは、汎用タイプのノードを要求することができるだけであり、ネットワークトポロジ、つまりノードの物理的及び論理的なネットワーク接続性に関する直接制御や要求したノードのネットワーク性能特性に関する直接制御を行うことが不可能であり、可能であったとしてもごく僅かである。例えば、アマゾンAWSは、ユーザが国内又は世界のある同じ地域(例えば米国東部又は西部、欧州、等)に物理的に位置しているノードを選択することを可能にしているが、それらノードのネットワーク接続性やそれらノードのネットワーク性能特性を選択することができないし、修正することもできない。更に、選択されたノードの幾つかは、国内の同じ地域あるいはましてや同じデータセンタ内にあるにもかかわらず、他の選択されたノードから物理的に遠く離れている場合がある。例えば、クラウドシステムによって割り振られたノードは、分散型データセンタ内で物理的に遠く離れた別のラック上にあることがあり、結果としてノード間のネットワーク性能が低下したり一貫性がなくなったりしてしまう。
同様に、典型的なクラウドシステムでは、ノードクラスタの実際のハードウェアリソースに対するエンドユーザによる制御が制限されており、あるいは不可能である。例えば、ノードを割り振る場合、ユーザは、汎用タイプのノードを要求することができるだけである。各利用可能なノードのタイプは、ノードのCPUの数、利用可能なメモリ、利用可能なディスクスペース、及び、ノードが位置する国内又は世界の地域によって分類されることがある。しかし、割り振られたノードは、選択されたノードタイプとして的確なハードウェア特性を有していないかもしれない。選択可能なノードタイプは粗い分類である。例えば、ノードタイプは、システムメモリ及びディスクスペースの量並びにノードの処理コアの数に応じて、小型、中型、大型及び超大型であるものを含み得る。しかし、同じ汎用タイプとして選択されたノードであっても、システムにより割り振られたノードのコンピューティング能力及び記憶容量が変化することがある。例えば、利用可能なメモリ及びディスクスペース並びに動作周波数や他の特性がばらつき得るし、即ちそれらの値のある一定の範囲内に収まることになろう。例えば、「中型」ノードは、1500MB〜5000MBのシステムメモリ及び200GB〜400GBの記憶容量を有する任意のノードを含み得る。従って、ユーザは、割り振られたノードの実際のハードウェアコンフィギュレーションに通じているとは限らない。更に、同数のプロセッサ及び同じメモリ/ディスクスペースを有するノード間でさえも、これらのノードの他のハードウェア特性が変化することがある。例えば、同様のノードであっても、ノードの動作周波数、キャッシュのサイズ、32ビットアーキテクチャであるのか64ビットアーキテクチャであるのか、ノードの製造業者、命令セットアーキテクチャ等に基づいてばらつきが生じ、ユーザは、選択されたノードのこれらの特性について制御することができない。
多くの場合、ユーザは、ユーザのアプリケーション又はワークロードに必要な具体的なハードウェアリソースについて明確に理解していない。ノードクラスタをセットアップしてワークロードを実行することが難しい結果、ユーザが異なるハードウェアコンフィギュレーションを試す機会は限られている。このことは、割り振られたノードの実際のハードウェアリソースに関するユーザの知識が欠如していることと相まって、しばしば結果として、利用下にあるハードウェアリソースに対する不必要な費用をユーザにもたらす。CPU、メモリ及びディスク並びに単一の物理的処理マシンのネットワーク利用に関する測定が可能な種々のモニタリングツールが利用可能である。しかし、現行のクラウドシステムは、ユーザがこれらのモニタリングツールをクラスタの複数ノードに展開してハードウェア使用量をモニタすることを可能にするメカニズムを提供していない。従って、ユーザは、ワークロード実行に際しての実際のハードウェア利用を知ることができない。最も一般的なクラウドサービスは、ユーザによって要求され使用されたハードウェアリソースの、ワークロードを実行している間の費用に関する基本情報を提供することができる会計メカニズムを用意している。しかし、そのようなメカニズムは、要求されたハードウェアリソースのコストに関する基本情報を提供するだけであるから、ワークロード実行に際して使用された実際のハードウェアリソースを識別しない。
多くのクラウドシステムでは、ユーザがノードクラスタのコンフィギュレーションを調節し改善するために、限定された数のコンフィギュレーションパラメータしか利用できない。例えば、ユーザは、クラウドコンフィギュレーションを変更するために、異なる汎用ノードタイプの幾つかのノードを選択することができるだけであろう。更に、各コンフィギュレーション変更は、ユーザが、ノードクラスタのための幾つかのノードを選択すると共にこれらのノードでワークロードを開始することによって手動で実装されなければならない。コンフィギュレーション変更を適用し結果をテストするためのそのような手動労力は、費用がかかり、また時間を浪費する。更に、ノード性能をテストするのに利用可能な種々の性能モニタリングツールは、典型的には単一の物理的処理マシンに適しており、現行のクラウドシステムには、ユーザがこれらのモニタリングツールをクラスタの複数ノードに展開してノードクラスタの性能を異なるコンフィギュレーションでテストすることを可能にするメカニズムが欠けている。
そこで、任意サイズのノードクラスタ上でのワークロードの作成、展開、提供、実行及びデータ集約を自動化するための方法及びシステムが求められている。また、ワークロード及びワークロードコンテナソフトウェアを迅速にコンフィギュアして各ノードに展開すると共にクラスタの全ノードからのワークロード性能データを集約し解析する方法及びシステムが求められている。また、クラウドコンピューティングシステムの複数のノードの性能をテストすると共にモニタされた性能に基づくクラウドコンピューティングシステムの自動化されたコンフィギュレーションチューニングを提供する方法及びシステムが求められている。また、種々のコンピュータアーキテクチャを有するノードプロセッサをテストするためのクラウドコンピューティングシステム上での実行に対する再対象化可能な(retargetable)合成テストワークロードを作成する方法及びシステムが求められている。また、クラウドコンピューティングシステムの複数ノードのブート時間コンフィギュレーションの修正を提供する方法及びシステムが求められている。また、クラウドシステムの複数ノードのクラスタのネットワークコンフィギュレーションの修正を容易にする方法及びシステムが求められている。また、クラウドシステムの所望のネットワークトポロジ、所望のネットワーク性能及び/又は所望のハードウェア性能に基づく、複数ノードのクラスタのために適したノードの自動化された選択を可能にする方法及びシステムが求められている。また、ワークロード実行に際してのノードクラスタのハードウェアリソースの使用量を測定すると共にハードウェア使用量フィードバックをユーザに提供し及び/又はハードウェアリソースのモニタされた使用量に基づきノードクラスタコンフィギュレーションを自動的に修正する方法及びシステムが求められている。
本開示の例示的な実施形態では、1つ以上のコンピューティングデバイスによって実施されるコンピューティングコンフィギュレーション方法が提供される。この方法は、ユーザインタフェースを介して受信した複数のユーザ選択に基づき、コンピューティングシステムのための複数ノードのクラスタを、ワークロードの処理が複数ノードのクラスタに分散されるようにコンフィギュアすることを含む。コンフィギュアすることは、コンピューティングシステムのための複数ノードのクラスタを複数の利用可能ノードから選択することと、各ノードによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを備えるワークロードコンテナモジュールを、複数ノードのクラスタの各ノード上での動作のために選択することと、複数ノードのクラスタ上でのワークロードコンテナモジュールでの実行のためのワークロードを選択することと、を含む。
数ある利益のなかでも、幾つかの実施形態は、ユーザインタフェースを介しての、複数ノードのクラスタ、ワークロード、ワークロードコンテナ及びネットワークコンフィギュレーションの選択、コンフィギュレーション及び展開を可能にし得る。加えて、幾つかの実施形態は、コンフィギュレーションパラメータの制御及び調節を可能にし得るので、これにより、ノード、ネットワーク、ワークロードコンテナ及び/又はワークロードの変化しつつある特性下でのコンピューティングシステムの性能解析が可能になる。他の利益は当業者によって認識されるはずである。
本開示の他の例示的な実施形態では、複数ノードのクラスタをコンピューティングシステムのための複数の利用可能ノードから選択するように動作するノードコンフィギュレータを含むコンピューティングコンフィギュレーションシステムが提供される。複数ノードのクラスタは、ワークロードの処理を共有するように動作する。このシステムは、ワークロードコンテナモジュールを複数ノードのクラスタの各ノード上での動作のために選択するように動作するワークロードコンテナコンフィギュレータを更に含む。ワークロードコンテナモジュールは、各ノードによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。このシステムは、複数ノードのクラスタ上での選択されたワークロードコンテナモジュールでの実行のためのワークロードを選択するように動作するワークロードコンフィギュレータを更に含む。
本開示の更に他の例示的な実施形態においては、1つ以上のコンピューティングデバイスによって実施されるコンピューティングシステムをコンフィギュアする方法が提供される。この方法は、ユーザインタフェースを介して受信したユーザ選択に基づき、コンピューティングシステムの複数ノードのクラスタの各ノード上での動作のための複数の利用可能ワークロードコンテナモジュールからワークロードコンテナモジュールを選択することを含む。選択されたワークロードコンテナモジュールは、各ノードによって実行されるときに複数ノードのクラスタ上でのワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。この方法は、ワークロードの処理が複数ノードのクラスタに分散されるようにワークロードを実行するために複数ノードのクラスタの各ノードを選択されたワークロードコンテナモジュールでコンフィギュアすることを更に含む。
本開示の更なる他の例示的な実施形態においては、ユーザ入力を受信すると共にユーザ入力に基づき複数の利用可能ワークロードコンテナモジュールからワークロードコンテナモジュールを選択するように動作するワークロードコンテナモジュールを含むコンピューティングコンフィギュレーションシステムが提供される。選択されたワークロードコンテナモジュールは、コンピューティングシステムの複数ノードのクラスタによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。このシステムは、ワークロードの処理が複数ノードのクラスタに分散されるようにワークロードを実行するためにコンピューティングシステムの複数ノードのクラスタの各ノードを選択されたワークロードコンテナモジュールでコンフィギュアするように動作するノードコンフィギュレータを更に含む。
本開示の別の例示的な実施形態においては、1つ以上のコンピューティングデバイスによって実施されるコンピューティングシステムをコンフィギュアする方法が提供される。この方法は、コンピューティングシステムのための複数の利用可能ノードからワークロードの処理を共有するように動作する複数ノードのクラスタを選択することを含む。この方法は、ユーザインタフェースを介して受信したユーザ入力に基づき複数ノードのクラスタの各ノードの同じワークロードコンテナモジュールの動作パラメータを修正することを更に含む。ワークロードコンテナモジュールは、複数ノードのクラスタの各ノードによって実行されるときに動作パラメータに基づきワークロードの実行を複数ノードのクラスタで連携させるように動作するコードモジュールを含む。動作パラメータは、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている。
本開示の更に別の例示的な実施形態においては、コンピューティングシステムのための複数の利用可能ノードから複数ノードのクラスタを選択するように動作するノードコンフィギュレータを含むコンピューティングコンフィギュレーションシステムが提供される。複数ノードのクラスタはワークロードの処理を共有するように動作する。このシステムは、ユーザインタフェースを介して受信したユーザ入力に基づき複数ノードのクラスタの各ノードの同じワークロードコンテナモジュールの動作パラメータを修正するように動作するワークロードコンテナコンフィギュレータを更に含む。ワークロードコンテナモジュールは、複数ノードのクラスタの各ノードによって実行されるときに動作パラメータに基づきワークロードの実行を複数ノードのクラスタで連携させるように動作するコードモジュールを含む。動作パラメータは、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている。
本発明は、以下の図面と共に下記の説明を考慮してより容易に理解されるはずである。図面において同様の参照番号は同様の要素を示す。
図1は、通信ネットワーク上で動作する複数ノードのクラスタ、複数ノードのクラスタと通信する制御サーバ、及び、制御サーバのコンフィギュレータと、を含む実施形態によるクラウドコンピューティングシステムのブロック図である。
図2は、少なくとも1つのプロセッサ及びメモリを含む図1の複数ノードのクラスタの例示的なノードのブロック図である。
図3は、図1のクラウドコンピューティングシステムをコンフィギュアするように動作するコンフィギュレータを含む図1のクラウドコンピューティングシステムの例示的な制御サーバのブロック図である。
図4は、クラウドコンピューティングシステムをコンフィギュアするための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図5は、クラウドコンピューティングシステムをコンフィギュアするための図3のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
図6は、クラウドコンピューティングシステムをコンフィギュアするための図3のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
図7は、ユーザアクセス認証を容易にするための認証及び設定ライブラリモジュールを含む、図3のコンフィギュレータによって提供される例示的なユーザインタフェースを示す図である。
図8は、図1の複数ノードのクラスタの選択を容易にするためのインスタンスタブを含む図7の例示的なユーザインタフェースのインスタンスモジュールを示す図である。
図9は、図1の複数ノードのクラスタのノードのためのノードタイプの選択を容易にするための図8のインスタンスモジュールのインスタンスタイプタブを示す図である。
図10は、図1の複数ノードのクラスタの1つ以上のノードのブート時間パラメータのコンフィギュレーションを容易にするための図8のインスタンスモジュールの他のインスタンス設定タブを示す図である。
図11は、図1の通信ネットワーク上でのネットワーク遅延の実装を容易にするための遅延タブを含む図7の例示的なユーザインタフェースのネットワークコンフィギュレーションモジュールのネットワーク設定ウィザードを示す図である。
図12は、図1の通信ネットワーク上でのパケット損失率の調節を容易にするための図11のネットワークコンフィギュレーションモジュールのパケット損失タブを示す図である。
図13は、図1の通信ネットワーク上でのパケット重複率の調節を容易にするための図11のネットワークコンフィギュレーションモジュールのパケット重複タブを示す図である。
図14は、図1の通信ネットワーク上でのパケット破損率の調節を容易にするための図11のネットワークコンフィギュレーションモジュールのパケット破損タブを示す図である。
図15は、図1の通信ネットワーク上でのパケット並べ替え率の調節を容易にするための図11のネットワークコンフィギュレーションモジュールのパケット並び替えタブを示す図である。
図16は、図1の通信ネットワーク上での通信速度の調節を容易にするための図11のネットワークコンフィギュレーションモジュールの速度制御タブを示す図である。
図17は、カスタムコマンドストリングに基づく図1の通信ネットワーク上でのネットワークパラメータの調節を容易にするための図11のネットワークコンフィギュレーションモジュールのカスタムコマンドタブを示す図である。
図18は、ハドゥープワークロードコンテナの選択を容易にするためのハドゥープタブを含む図7の例示的なユーザインタフェースのワークロードコンテナコンフィギュレーションモジュールを示す図である。
図19は、ハドゥープワークロードコンテナの動作パラメータのコンフィギュレーションを容易にするための拡張タブを含む図18のワークロードコンテナコンフィギュレーションモジュールのハドゥープタブを示す図である。
図20は、カスタムコマンドストリングに基づくハドゥープワークロードコンテナの動作パラメータのコンフィギュレーションを容易にするためのカスタムタブを含む図18のワークロードコンテナコンフィギュレーションモジュールのハドゥープタブを示す図である。
図21は、カスタムワークロードコンテナの選択を容易にするための図18のワークロードコンテナコンフィギュレーションモジュールのカスタムタブを示す図である。
図22は、図1の複数ノードのクラスタ上での実行のためのワークロードの選択を容易にするためのワークロードタブを含む図7の例示的なユーザインタフェースのワークロードコンフィギュレーションモジュールを示す図である。
図23は、合成テストワークロードのコンフィギュレーションを容易にするための図22のワークロードコンフィギュレーションモジュールの合成カーネルタブを示す図である。
図24は、メムキャッシュディーワークロードのコンフィギュレーションを容易にするための図22のワークロードコンフィギュレーションモジュールのMCブラスタタブを示す図である。
図25は、図1の複数ノードのクラスタ上での実行のためのバッチシーケンスの選択及びコンフィギュレーションを容易にするための図7の例示的なユーザインタフェースのバッチ処理モジュールを示す図である。
図26は、ハドゥープデータモニタリングツールのコンフィギュレーションを容易にするためのハドゥープタブを含む図7の例示的なユーザインタフェースのモニタリングモジュールを示す図である。
図27は、ガングリアデータモニタリングツールのコンフィギュレーションを容易にするための図26のモニタリングモジュールのガングリアタブを示す図である。
図28は、システムタップデータモニタリングツールのコンフィギュレーションを容易にするための図26のモニタリングモジュールのシステムタップタブを示す図である。
図29は、仮想メモリ統計(VMStat)及び入力/出力統計(IOStat)のコンフィギュレーションを容易にするための図26のモニタリングモジュールのI/O時間タブを示す図である。
図30は、図1の複数ノードのクラスタのシステムコンフィギュレーションの展開を容易にし図26〜29のモニタリングツールによってモニタされたデータの集約を容易にするための図7の例示的なユーザインタフェースの制御及び状態モジュールを示す図である。
図31は、図1のコンフィギュレータのウェブベースのデータアグリゲータを示す図1のクラウドコンピューティングシステムの他のブロック図である。
図32は、合成テストワークロードを生成するための複数のユーザ定義のワークロードパラメータを示す例示的なテーブルを示す図である。
図33は、合成テストワークロードを生成するように動作するシンセサイザと、合成テストワークロードの少なくとも一部をアクティベートして実行するように動作するノードの合成ワークロードエンジンと、を含む例示的な合成テストワークロードシステムのブロック図である。
図34は、実際のワークロード及び合成テストワークロードの少なくとも一方でクラウドコンピューティングシステムをコンフィギュアするための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図35は、合成テストワークロードでクラウドコンピューティングシステムをコンフィギュアするための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図36は、図1の複数ノードのクラスタの少なくとも1つのノードのブート時間コンフィギュレーションを選択するための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図37は、ノードの少なくとも1つのブート時間パラメータを修正するための図1の複数ノードのクラスタのノードの動作の例示的な方法のフローチャートである。
図38は、図1の複数ノードのクラスタの1つ以上のノードのブート時間コンフィギュレーションを修正するための図1のクラウドコンピューティングシステムの動作の例示的な方法のフローチャートである。
図39は、図1の複数ノードのクラスタの少なくとも1つのノードの通信ネットワークコンフィギュレーションを修正するための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図40は、エミュレートされたノードクラスタのネットワークコンフィギュレーションに基づきクラウドコンピューティングシステムに対して複数ノードのクラスタを選択するための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図41は、エミュレートされたノードクラスタのネットワークコンフィギュレーションに基づきクラウドコンピューティングシステムに対して複数ノードのクラスタを選択しコンフィギュアするための図3のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
図42は、ノードクラスタの複数の通信ネットワーク特性を識別する例示的なデータファイルを示す図である。
図43は、図1の複数ノードのクラスタを選択するための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図44は、図1の複数ノードのクラスタを選択するための図3のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
図45は、図1の複数ノードのクラスタのハードウェアコンフィギュレーションを選択するための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図46は、図1の複数ノードのクラスタのハードウェアコンフィギュレーションを選択するための図3のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
図47は、複数ノードのクラスタのモニタされた性能特性に基づき図1の複数ノードのクラスタに対してコンフィギュレーションパラメータを選択するための図3のコンフィギュレータの動作の例示的な方法のフローチャートである。
図48は、複数ノードのクラスタのモニタされた性能特性に基づき図1の複数ノードのクラスタに対してコンフィギュレーションパラメータを選択するための図3のコンフィギュレータの動作の他の例示的な方法のフローチャートである。
ここに開示される実施形態は、クラウドコンピューティングシステムに関して説明されるが、本開示の方法及びシステムは、ワークロードを協働して実行する複数のノードを含む任意の適切なコンピューティングシステムに実装されてよい。
ここで参照されるとき、コンピューティングシステムのノードとは、少なくとも1つの処理デバイスと、その少なくとも1つの処理デバイスによってアクセス可能なメモリと、を含むものである。ノードは、例えば、サーバ、仮想サーバ、仮想マシン、インスタンス(instance)又は処理ノードとも称されることがある。
図1は、コンピューティング能力及び記憶容量をエンドユーザへのサービスとして受け渡すように構成される、種々の実施形態による例示的なクラウドコンピューティングシステム10を示す図である。クラウドコンピューティングシステム10は、複数ノードのクラスタ14に動作可能に結合された制御サーバ12を含む。複数ノードのクラスタ14は、分散型通信ネットワーク18に接続されており、各ノード16は、ローカル処理能力及びメモリを含む。具体的には、各ノード16は、少なくとも1つのプロセッサ40(図2)と、プロセッサ40によってアクセス可能な少なくとも1つのメモリ42(図2)と、を含む。通信ネットワーク18は、例えば、伝送制御プロトコル/インターネットプロトコル(Transmission Control Protocol/Internet Protocol)(TCP/IP)若しくはユーザデータグラムプロトコル(User Datagram Protocol)(UDP)を含むインターネットプロトコル(IP)フォーマット、イーサネット(登録商標)(Ethernet(登録商標))ネットワーク、シリアルネットワーク、又は、他のローカルエリア若しくはワイドエリアのネットワーク(LAN若しくはWAN)等の任意の適切なコンピュータネットワークプロトコルを含む。
ここに述べられるように、ノード16は、制御サーバ12によって、通信ネットワーク18に接続された複数の利用可能ノード16のクラウドから、複数ノードのクラスタ14を指定するために選択される。利用可能ノード16は、例えばデータセンタ内の1つ以上のサーバストレージラック上に設けられており、種々のハードウェアコンフィギュレーションを含む。一実施形態では、複数のデータセンタ及び/又は他のハードウェアプロバイダからの利用可能ノード16が、クラウドコンピューティングシステム10のための複数ノードのクラスタ14としての選択及びコンフィギュレーションのために、制御サーバ12によってアクセス可能である。例えば、1つ以上のサードパーティに係るデータセンタ(例えばアマゾンウェブサービス等)及び/又はユーザ提供のハードウェアが、制御サーバ12によってクラウドコンピューティングのためにコンフィギュアされてよい。一例においては、数千のノード16が、制御サーバ12による選択及びコンフィギュレーションのために利用可能であってよいが、任意の数のノード16が利用可能であってよい。図1では5つのノード16が示されているが、任意の適切な数のノード16がクラウドコンピューティングシステム10のために選択されてよい。制御サーバ12は、各々が1つ以上のプロセッサを含む1つ以上のコンピューティングデバイス(例示的にはサーバコンピュータ)を含む。図示された実施形態では、制御サーバ12は、ノードクラスタ14から物理的に離れている専用の制御サーバ12である。一実施形態では、制御サーバ12は、利用可能ノード16を収容しているデータセンタから物理的に遠隔のものであってよい。代替的には、制御サーバ12は、複数ノードからなる選択されたクラスタ14の1つ以上のノード16であってよい。制御サーバ12は、ここに述べられるように、複数ノード16を割り振ると共にコンフィギュアすること、ノード16上でワークロードを開始すること、性能データを収集すると共に報告すること等のために動作するクラウドコンピューティングコンフィギュレーションシステムとして機能する。
制御サーバ12は、例示的には、コンフィギュレータ22と、ロードジェネレータ24と、ロードバランサ26と、を含む。コンフィギュレータ22、ロードジェネレータ24及びロードバランサ26は、ここで参照されるとき、1つ以上のプロセッサによってアクセス可能な内部メモリ又は外部メモリ内に記憶されたソフトウェアコード又はファームウェアコードを実行する当該1つ以上のプロセッサを備えるものである。ソフトウェア/ファームウェアコードは、コンフィギュレータ22、ロードジェネレータ24及びロードバランサ26に対応する命令を含み、これらの命令は、当該1つ以上のプロセッサによって実行されるときに、ここに述べられる種々の機能を当該1つ以上のプロセッサに実行させる。コンフィギュレータ22、ロードジェネレータ24及び/又はロードバランサ26は、代替的には、特定用途向け集積回路(ASICs)、フィールドプログラマブルゲートアレイ(FPGAs)、デジタル信号プロセッサ(DSPs)、ハードウェア論理素子又はこれらの組み合わせを含んでいてよい。コンフィギュレータ22は、ここに述べられるように、複数ノードのクラスタ14に含ませる1つ以上のノード16を選択しコンフィギュアすること、通信ネットワーク18のパラメータをコンフィギュアすること、複数ノードのクラスタ14上での実行のためにワークロードコンテナモジュール及びワークロードを選択し、コンフィギュアし及び展開すること、並びに、ワークロードの実行に関連付けられた性能データを収集し解析することのために動作可能である。コンフィギュレータ22は、ノード16上でソフトウェアをコンフィギュアするためにノード16に提供され且つノード16で処理されるコンフィギュレーションファイル28と、ワークロード要求パラメータをロードジェネレータ24に提供するためにロードジェネレータ24に提供される少なくとも1つのコンフィギュレーションファイル30と、を生成するように動作する。
ロードジェネレータ24は、ワークロード実行のためにノードクラスタ14によって使用される入力としての役割を果たす要求を生成するように動作する。つまり、ノードクラスタ14は、要求、並びに、要求に付随して提供された入力パラメータ及びデータに基づき、ワークロードを実行する。一実施形態では、ロードジェネレータ24からの要求はユーザによって開始される。例えば、ユーザ又は顧客は、指定された検索ターム又はデータセットに対する検索動作又はソート動作をそれぞれ要求してよく(例えばユーザインタフェース200を介して)、ロードジェネレータ24は、対応する検索要求又はソート要求を生成する。一実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信したユーザ要求を記述するコンフィギュレーションファイル30を生成する。ノード16は、検索されるべき識別されたターム又はソートされるべきデータセットを用いてワークロードを実行する。ロードジェネレータ24は、実行されるべきワークロードのタイプに応じて他の適切な要求を生成してよい。ロードバランサ26は、ロードジェネレータ24によって提供された要求を複数ノード16間で分散させて、どのノード16がどの要求を実行するのかを指示するように動作する。また、ロードバランサ26は、ロードジェネレータ24からの要求を複数部分に分割すると共に複数のノード16がその要求を並列動作で実行するよう動作するように、それら複数部分を複数ノード16に分散させるようにも動作する。
コンフィギュレータ22は、例示的には、ユーザがインターネットを介してコンフィギュレータ22にアクセスすることのできるようなウェブベースのものであるが、コンフィギュレータ22は、任意の適切なネットワーク又は通信リンクを介してアクセスされてよい。図1に示される例示的なユーザコンピュータ20は、ディスプレイ21と、プロセッサ32(例えば中央処理ユニット(CPU))と、プロセッサ32によってアクセス可能なメモリ34と、を含む。コンピュータ20は、デスクトップコンピュータ、ラップトップ、モバイルデバイス、スマートフォン等の任意の適切なコンピューティングデバイスを含み得る。ユーザコンピュータ20上では、ソフトウェアコード又はファームウェアコードを含むウェブブラウザ36が実行されており、ウェブブラウザ36は、コンフィギュレータ22によって提供されたグラフィカルユーザインタフェースにアクセスするために用いられ、またグラフィカルユーザインタフェースをディスプレイ21上に表示するためにも用いられる。例えば図7〜30に図示されるグラフィカルユーザインタフェース200を参照されたい。
図示されるものに代替可能な、コンポーネントの種々の他の配置及びそれに対応するクラウドコンピューティングシステム10の接続性が利用可能であり、そのようなコンポーネントの配置及び対応する接続性は、ここに開示される実施形態に従うものとする。
図2を参照すると、コンフィギュレータ22によってコンフィギュアされる図1のノードクラスタ14の例示的なノード16が、一実施形態に従って図示されている。ノード16は、メモリ42内に記憶されたソフトウェア又はファームウェアを実行するように動作する少なくとも1つのプロセッサ40を含む。メモリ42は、1つ以上の物理的メモリロケーションを含み、プロセッサ40の内部にあってもよいし、外部にあってもよい。
図2は、各ノード16上へとロードされたソフトウェア(又はファームウェア)コードを示しており、このコードは、オペレーティングシステム44と、カーネルモード測定エージェント46と、ネットワークトポロジドライバ48と、ユーザモード測定エージェント50と、ウェブアプリケーションサーバ52と、ワークロードコンテナモジュール54と、サービス志向アーキテクチャランタイムエージェント56と、合成ワークロードエンジン58と、を含む。図示された実施形態では、カーネルモード測定エージェント46及びネットワークトポロジドライバ48は、例えばノード16の入力/出力(I/O)デバイスからのデータ等の特定のデータにアクセスするために、オペレーティングシステム44からの特権(privilege)を要求する。一方、ユーザモード測定エージェント50、ウェブアプリケーションサーバ52、ワークロードコンテナモジュール54、サービス志向アーキテクチャランタイムエージェント56及び合成ワークロードエンジン58は、例示的には、データにアクセスするため又はそれらのそれぞれの機能を行うためには、オペレーティングシステム44からの特権を要求しない。
オペレーティングシステム44は、例えば、アプリケーション、特権及びハードウェアリソースを管理すること、並びに、プロセッサ時間及びメモリ使用量を割り振ることを含む、ノード16の全体動作を管理する。ネットワークトポロジドライバ48は、通信ネットワーク18(図1)上でのノード16のネットワーク特性及びネットワークパラメータを制御するように動作する。一実施形態では、ネットワークトポロジドライバ48は、コンフィギュレータ22(図1)から受信したコンフィギュレーションファイル28(図1)に基づき、ノード16に関連付けられたネットワーク特性を変更するように動作する。
また、ネットワークソフトウェアスタック(図示せず)が各ノード16で記憶され実行される。ネットワークソフトウェアスタックは、図1のネットワーク18上での通信を容易にするためのネットワークソケットを含む。ここに述べられる実施形態においては、ネットワークソケットは、ネットワーク通信のためのアドレスと、1つ以上のポート番号と、が割り当てれらたTCPソケットを含む。一実施形態では、ネットワークソフトウェアスタックは、オペレーティングシステム44のネットワークドライバを利用する。
カーネルモード測定エージェント46及びユーザモード測定エージェント50の各々は、ノード16での動作及びワークロード性能をモニタするためのデータを収集し解析するように動作する。カーネルモード測定エージェント46は、例えば、プロセッサ命令の数、プロセッサ利用、各I/O動作のために送信され及び受信されたバイト数、並びに他の適切なデータ、又は、これらの組み合わせをモニタする。例示的なカーネルモード測定エージェント46は、システムタップ(SystemTap)ソフトウェアを含む。ユーザモード測定エージェント50は、データへのアクセスのためにオペレーティングシステム44からシステム特権を要求する必要のない性能データを収集する。この性能データの例としては、個々のサブタスクの開始時間と完了時間とを表示するアプリケーション特有ログ、そのようなタスクが実行される速度、システムによって利用された仮想メモリの量、あるタスクのために処理された入力記録の量、等が挙げられる。一実施形態では、エージェント46,50及び/又は他のモニタリングツールは、各ノード16に予めインストールされており、コンフィギュレーションファイル28(図1)に基づき各ノード16でコンフィギュレータ22によってコンフィギュアされる。代替的には、コンフィギュアされたエージェント46,50及び/又は他のモニタリングツールを、コンフィギュレータ22が、ワークロード展開に際してノード16へとロードする。
ウェブアプリケーションサーバ52は、ノード16と、図1の制御サーバ12及びノードクラスタ14の他のノード16の両者と、の間での通信を制御するアプリケーションである。ウェブアプリケーションサーバ52は、ノード16間でのファイル転送、及び、制御サーバ12とノードとの間でのファイル転送をもたらす。例示的なウェブアプリケーションサーバ52は、アパッチトムキャット(Apache Tomcat)である。
また、ワークロードコンテナモジュール54も、各ノード16のメモリ42内に記憶されている。ここに述べられるように、制御サーバ12は、ユーザ選択と、ワークロードコンテナモジュール54のコンフィギュレーションとに基づき、ワークロードコンテナモジュール54をノード16に提供する。ワークロードコンテナモジュール54の例としては、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memcached)、アパッチカサンドラ(Apache Cassandra)、又は、市販されていないユーザによって提供されたカスタムワークロードコンテナモジュールが挙げられる。一実施形態では、ワークロードコンテナモジュール54は、プロセッサによって実行されるときにメモリ42内でのデータ記憶とノード16間データ通信とを管理するコードモジュールを備えるファイルシステム55を含む。例示的なファイルシステム55は、アパッチハドゥープワークロードコンテナの分散型ファイルシステム(HDFS)である。ファイルシステム55は、データ及びファイルのコピーをノードメモリ42内に複数記憶することによって、データ複製をサポートする。
随意的なサービス志向アーキテクチャ(SOA)ランタイムエージェント56及び随意的な合成ワークロードエンジン58等の他の適切なワークロードコンテナモジュールが設けられていてもよい。SOAランタイムエージェント56は、プロセッサによって実行されるときにワークロードの実行を連携させるように動作する他のタイプのワークロードコンテナモジュールである。SOAランタイムエージェント56は、例えば、ワークロード動作を迅速化するために、頻繁に使用されるファイル(例えばイメージ等)をキャッシュしたりサーブするサービス機能を行う。SOAランタイムエージェント56の例としては、グーグルプロトコルバッファ(Google Protocol Buffers)が挙げられる。合成ワークロードエンジン58は、ここに述べられるように、プロセッサによって実行されるときに、コンフィギュレータ22(図1)を介して受信した合成テストワークロードをアクティベートして実行するように動作するワークロードコンテナモジュールを含む。図示された実施形態では、合成ワークロードエンジン58は、実際の非テストワークロードにではなく合成テストワークロードでの実行に合わせられている。
図3を参照すると、一実施形態による制御サーバ12のコンフィギュレータ22が示されている。コンフィギュレータ22は、例示的には、オーセンティケータ(authenticator)70と、ノードコンフィギュレータ72と、ネットワークコンフィギュレータ74と、ワークロードコンテナコンフィギュレータ76と、ワークロードコンフィギュレータ78と、バッチプロセッサ80と、データモニタコンフィギュレータ82と、データアグリゲータ84と、を含み、これらの各々は、ここに述べられる種々の機能を行うために制御サーバ12の1つ以上のプロセッサ22によってアクセス可能なメモリ(例えばメモリ90)内に記憶されたそれぞれのソフトウェアコードモジュール又はファームウェアコードモジュールを実行する制御サーバ12の1つ以上のプロセッサ22を備えている。オーセンティケータ70は、認証コードモジュールを実行する1つ以上のプロセッサ22を含み、図7に関してここに述べられるように、コンフィギュレータ22へのユーザアクセスを認証するように動作する。ノードコンフィギュレータ72は、ノードコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図8〜10に関してここに述べられるように、指定されたハードウェア及び動作のコンフィギュレーションを有する複数ノードのクラスタ14を識別するために、ノード16を選択してコンフィギュアするように動作する。ネットワークコンフィギュレータ74は、ネットワークコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図11〜17に関してここに述べられるように、テストや性能解析及び/又はシステム電力消費を調節すること等のために、図1の通信ネットワーク18のネットワークパラメータを調節するように動作する。ワークロードコンテナコンフィギュレータ76は、ワークロードコンテナコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図18〜21に関してここに述べられるように、ノード16上での動作のためにワークロードコンテナモジュールを選択してコンフィギュアするように動作する。ワークロードコンフィギュレータ78は、ワークロードコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、ノード16によって選択されたワークロードコンテナでの実行のためにワークロードを選択してコンフィギュアするように動作する。ワークロードコンフィギュレータ78は、例示的には、合成テストワークロード生成コードモジュールを実行する1つ以上のプロセッサ22を含むコードシンセサイザ79を含み、コードシンセサイザ79は、図23及び図32〜35に関してここに述べられるように、ユーザ定義のワークロードパラメータに基づき合成テストワークロードを生成するように動作する。バッチプロセッサ80は、バッチプロセッサコードモジュールを実行する1つ以上のプロセッサ22を含み、図25に関してここに述べられるように、複数のワークロードのバッチ処理を開始するように動作し、複数のワークロードはノードクラスタ14上のシーケンス内で実行される。データモニタコンフィギュレータ82は、データモニタリングコンフィギュレーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図26〜29に関してここで述べられるように、ワークロードの実行に際して性能データをリアルタイムでモニタすると共にデータを収集するモニタリングツールをコンフィギュアするように動作する。データアグリゲータ84は、データアグリゲーションコードモジュールを実行する1つ以上のプロセッサ22を含み、図30及び31に関してここに述べられるように、各ノード16からの性能データを収集及び集約する(collect and aggregate)と共にログ、統計、グラフ、及び、データの他の表現を生成するように動作する。
コンフィギュレータ22からの出力は、例示的には、制御サーバ12のメモリ90内に記憶される。メモリ90は、制御サーバ12の1つ以上のプロセッサの内部にあってもよいし、外部にあってもよく、1つ以上の物理的メモリロケーションを含む。メモリ90は、例示的には、コンフィギュレータ22によって生成された図1のコンフィギュレーションファイル28,30を記憶する。また、メモリ90は、ワークロードの実行に続いてノード16によって生成され制御サーバ12へ伝えられたログファイル98を記憶する。図示されるように、オペレーティングシステムのイメージファイル92と、ワークロードコンテナコンフィギュレータ76で選択されたワークロードコンテナのイメージファイル94と、ワークロードコンフィギュレータ78で選択又は生成されたワークロードのイメージファイル96とは、メモリ90内に記憶される。一実施形態では、複数のオペレーティングシステムイメージファイル92がメモリ90内に記憶されており、ユーザは、各ノード16にインストールされるべきオペレーティングシステムを、コンフィギュレータ22を介して選択することができる。一実施形態では、ユーザは、ノード16にインストールされるべきオペレーティングシステムイメージファイル92を遠隔メモリ(例えば図1のコンピュータ20のメモリ34)から制御サーバ12へアップロードすることができる。ワークロードコンテナイメージファイル94は、複数の利用可能ワークロードコンテナモジュールからのユーザによるワークロードコンテナモジュールの選択及びコンフィギュレーションに基づき、ワークロードコンテナコンフィギュレータ76で生成される。ここに述べられる実施形態では、ワークロードコンテナコンフィギュレータ76は、図7〜30のユーザインタフェース200を介して受信したユーザ入力に基づき、対応するワークロードコンテナイメージファイル94をコンフィギュアする。同様に、ワークロードコンフィギュレータ78は、制御サーバ12のユーザインタフェース200を介しての、1つ以上の利用可能ワークロードからのワークロードのユーザ選択に基づき、ワークロードイメージファイル96を生成してコンフィギュアする。ワークロードイメージファイル96は、ユーザ入力に基づきワークロードコンフィギュレータ78によって選択された予め定義された実際のワークロード、又はユーザ入力に基づきワークロードコンフィギュレータ78によって生成された合成テストワークロードを含む。
一実施形態では、メモリ90は、ノードクラスタ14の各ノード16によってアクセス可能であり、制御サーバ12は、各イメージファイル92,94,96のメモリ90内のロケーションを識別するポインタ又は他の識別子をノードクラスタ14の各ノード16へ送る。ノード16は、ポインタに基づきそれぞれのイメージファイル92,94,96をメモリ90からリトリーブする(retrieve)。代替的には、制御サーバ12は、イメージファイル92,94,96及び適切なコンフィギュレーションファイル28を各ノード16へロードし、又は、任意の他の適切なメカニズムによりイメージファイル92,94,96及びコンフィギュレーションファイル28をノード16へ提供する。
ここに述べられるように、コンフィギュレータ22は、ユーザ選択及びユーザ入力に基づき自動的に以下の作用をするように動作する。即ち、所望のリソース(例えばノード16)を割り振り、ノード16を予めコンフィギュアし(例えばネットワークトポロジ、メモリ特性)、ワークロードコンテナソフトウェアを各ノード16にインストールし、ユーザ提供のワークロードソフトウェア及びデータをノード16に展開し、モニタリングツール(例えばガングリア(Ganglia)、システムタップ(SystemTap))を起動して各ノード16から性能データを収集し始め、ワークロード実行に際してライブ状態更新をユーザに提供し、ワークロードの結果及びモニタリングツールによって集められた情報を含めユーザによって要求された全データを収集し、ユーザによって要求された性能データを処理し、まとめ、表示し、そして他の適切な機能を行う。更に、ユーザは、ここに述べられるように、コンフィギュレータ22を用いて、順次又は並列で実行されるワークロードのシーケンスを作成して展開してよい。ユーザは、実行に際して又は実行の合間にコンフィギュレーション又は入力パラメータの随意的な調節をしながら、任意のワークロード又は全てのワークロードを繰り返し実行してもよい。また、コンフィギュレータ22は、ユーザによる要求に基づき、ノードクラスタ14の指定されたデータベースノード16上でデータを記憶するようにも動作する。
図4は、クラウドコンピューティングシステムをコンフィギュアするために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図100である。図4の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は、図7〜30に示されるユーザインタフェース200等のユーザインタフェースを介して受信した複数のユーザ選択に基づき、図4のフロー図100に従って図1のノードクラスタ14をコンフィギュアする。ブロック102では、コンフィギュレータ22のノードコンフィギュレータ72は、複数の利用可能ノード16から複数ノードのクラスタ14を選択する。複数ノードのクラスタ14の各ノード16は、少なくとも1つの処理デバイス40及びメモリ42(図2)を含み、ここに述べられるように、ワークロードの処理をクラスタ14の他のノード16と共有するように動作する。図示された実施形態では、複数のノード16がコンフィギュレータ22による選択のために利用可能であり、コンフィギュレータ22は、利用可能ノード16のサブセットをノードクラスタ14として選択する。一実施形態では、コンフィギュレータ22は、ユーザインタフェースを介して受信したユーザ選択に基づき、複数ノードのクラスタ14の各ノード16から収集されるべき少なくとも1種類のデータを選択し、コンフィギュレータ22のデータアグリゲータ84は、図26〜30に関してここに述べられるように、複数ノードのクラスタ14の各ノード16からの当該少なくとも1種類のデータを収集及び集約する。
ブロック104では、コンフィギュレータ22のワークロードコンテナコンフィギュレータ76は、複数ノードからなる選択されたクラスタ14の各ノード16上での動作のためのワークロードコンテナモジュールを選択する。ワークロードコンテナモジュールは、ノード16によって実行されるときにワークロードの実行を開始し連携させるように動作する選択可能コードモジュールを含む。一実施形態では、ワークロードコンテナモジュールは、図18に関してここに述べられるように、複数の利用可能ワークロードコンテナモジュールから選択される。一実施形態では、コンフィギュレータ22は、ユーザインタフェースを介して受信したユーザ入力に基づき、各ノード16上のワークロードコンテナモジュールの少なくとも1つの動作パラメータを修正する。この少なくとも1つの動作パラメータは、ここに述べられるように、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている。
一実施形態では、選択されたワークロードコンテナモジュールは、クラウドコンピューティングシステム10からは遠隔のメモリ(例えば図1のメモリ34)上に記憶されたカスタムワークロードコンテナモジュールであり、コンフィギュレータ22は、遠隔メモリ上に記憶されたカスタムワークロードコンテナモジュールを複数ノードのクラスタ14の各ノード16へとロードする。例えば、カスタムワークロードコンテナモジュールは、ユーザによって提供される市販されていないワークロードコンテナモジュールを含む。一実施形態では、カスタムワークロードコンテナモジュールは、ワークロードを実行するためのユーザ定義の命令及びパラメータを含むコンフィギュレーションファイルを含む。命令の例としては、典型的なワークロードではあまり見られないワークロードパラメータであって及び/又は特定のワークロードに固有のワークロードパラメータをテストするための命令が挙げられる。カスタムワークロードコンテナモジュールの命令の他の例としては、実行の出力又はログファイルを更なる解析のために異なるロケーションにリダイレクトするための命令が挙げられる。代替的には、ワークロードコンテナモジュールは、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memchashed)、アパッチカサンドラ(Apache Cassandra)等の、コンピューティングシステム10に記憶され(例えば図3のメモリ90)且つコンフィギュレータ22による選択及び展開のために利用可能な市販のサードパーティに係るワークロードコンテナモジュールを含む。
ブロック106では、コンフィギュレータ22のワークロードコンフィギュレータ78は、複数ノードのクラスタ14上でのワークロードコンテナモジュールでの実行のためのワークロードを選択する。選択されたワークロードの処理は、ここに述べられるように、複数ノードのクラスタ14に分散される。一実施形態では、ワークロードは、実際のワークロード及び合成テストワークロードの少なくとも一方から選択される。1つ以上の実際の予めコンパイルされたワークロードが、制御サーバ12のプロセッサによってアクセス可能なメモリ(例えば図1のメモリ34)内に記憶され、コンフィギュレータ22は、選択された実際のワークロードをノード16へとロードする。合成テストワークロードは、図23及び図32〜35に関してここに述べられるように、ユーザインタフェース200を介して受信したユーザ定義のワークロードパラメータに基づきコンフィギュレータ22によって生成され、各ノード16へとロードされる。一実施形態では、コンフィギュレータ22は、図11〜17に関してここに述べられるように、ユーザインタフェース200を介して受信したユーザ入力に基づき、少なくとも1つの通信ネットワークパラメータを調節して、選択されたワークロードの実行に際しての通信ネットワーク18の性能を修正し又は制限する。
図示された実施形態では、コンフィギュレータ22は、選択可能ノードデータ(例えば図8のテーブル258)と、選択可能ワークロードコンテナデータ(例えば図18の選択可能入力352)と、選択可能ワークロードデータ(例えば図22の選択可能入力418)と、を含むユーザインタフェース200(図7〜30)を提供する。複数ノードのクラスタ14は、選択可能ノードデータのユーザ選択に基づき選択され、ワークロードコンテナモジュールは、選択可能ワークロードコンテナデータのユーザ選択に基づき選択され、ワークロードは、選択可能ワークロードデータのユーザ選択に基づき選択される。
図5は、クラウドコンピューティングシステム10をコンフィギュアするために図1及び図3のコンフィギュレータ22によって行われる他の例示的な動作のフロー図120である。図5の説明全体に対して図1及び図3が参照される。ブロック122では、ワークロードコンテナコンフィギュレータ76は、ユーザインタフェース(例えばユーザインタフェース200)を介して受信したユーザ選択に基づき、クラウドコンピューティングシステム10の複数ノードのクラスタ14の各ノード16上での動作のためのワークロードコンテナモジュールを複数の利用可能ワークロードコンテナモジュールから選択する。図示された実施形態では、ワークロードコンテナモジュールは、例えば、図18の入力352,360,362及び図21の入力353,401等の選択可能ワークロードコンテナデータに基づき選択される。選択されたワークロードコンテナモジュールは、ワークロードの実行を連携させるように動作する選択可能コードモジュール(例えば図18の入力360,362及び図21の入力401で選択可能)を含む。一実施形態では、複数の利用可能ワークロードコンテナモジュールは、ここに述べられるように、カスタムワークロードコンテナモジュールを含む。ブロック124では、ノードコンフィギュレータ72は、ワークロードの処理が複数ノードのクラスタに分散されるようにワークロードを実行するために、複数ノードのクラスタ14の各ノード16を選択されたワークロードコンテナモジュールでコンフィギュアする。ここに述べられるように、各ノード16は、処理デバイス40及びメモリ42を含み、ワークロードの動作を複数ノードのクラスタ14の他のノード16と共有するように動作する。コンフィギュレータ22は、選択されたワークロードコンテナモジュールを複数ノードのクラスタ14の各ノード16にインストールし、複数ノードのクラスタ14上での選択されたワークロードコンテナモジュールでのワークロードの実行を開始する。
図6は、クラウドコンピューティングシステム10をコンフィギュアするために図1及び図3のコンフィギュレータ22によって行われる他の例示的な動作のフロー図140である。図6の説明全体に対して図1及び図3が参照される。ブロック142では、コンフィギュレータ22のノードコンフィギュレータ72は、ワークロードの処理を共有するように動作する複数ノードのクラスタ14をクラウドコンピューティングシステム10のための複数の利用可能ノード16から選択する。図示された実施形態では、複数ノードのクラスタ14は、ここに述べられるように、選択可能ノードデータに基づき選択される。
ブロック144では、ワークロードコンテナコンフィギュレータ76は、ユーザインタフェースを介して受信したユーザ入力(例えば図19のユーザインタフェース200の選択可能入力367及びフィールド374,378,380)に基づき、各ノード16の同じワークロードコンテナモジュールの動作パラメータを修正する。この同じワークロードコンテナモジュールは、ノード16によって実行されるときに動作パラメータに基づきワークロードの実行を連携させるように動作する選択可能コードモジュールを含む。動作パラメータは、図19及び図20に関してここに述べられるように、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている。コンフィギュレータ22は、ワークロードコンテナモジュールを各ノード16へと展開するのに先立ち、又は、コンフィギュレーションを更新する場合には各ノード16へのワークロードコンテナモジュールの展開の後に、1つ以上の動作パラメータを修正する。ワークロードコンテナモジュールは、各ノード16によって実行されるときに、修正された動作パラメータに基づき複数ノードのクラスタ14上でのワークロードの実行を連携させるように動作する。一実施形態では、動作パラメータは、リード/ライト動作のためのメモリバッファサイズ、リード/ライト動作に際して転送されるデータブロックのサイズ、各ノード16のメモリ42内に記憶されるデータブロックの数、ファイルシステム55に対する要求を処理するために割り振られる各ノード16の処理スレッドの数、及び/又は、データをソーティングするときにマージする(merge)データストリームの数を含む。図19及び図20に関して述べられるように、他の適切な動作パラメータが修正されてもよい。
図3の制御サーバ12へのユーザアクセスを提供する例示的なユーザインタフェース200が図7〜30に示されている。ユーザインタフェース200は、例示的には、コンピュータ20(図1)のディスプレイ21等のディスプレイ上への表示のためにコンフィギュアされた複数の選択可能画面を含むウェブベースのグラフィカルユーザインタフェース200である。ネイティブユーザインタフェースアプリケーション、コマンドライン駆動インタフェース、プログラム可能API、他の種類のもの、又は、複数のインタフェースの組み合わせ等の他の適切なインタフェースが提供されてもよい。ユーザインタフェース200は、選択可能な入力、フィールド、モジュール、タブ、ドロップ・ダウンメニュー、ボックス及び他の適切な選択可能データ等の、コンフィギュレータ22のコンポーネント70〜84にリンクされると共にそれらへの入力を提供する選択可能データを含む。一実施形態では、ユーザインタフェース200の選択可能データは、それが個別に選択可能になるような方法で描画される。例えば、選択可能データは、マウスポインタによって、ユーザインタフェース200のタッチ画面に触れることによって、キーボードのキーを押下することによって、又は、任意の他の適切な選択メカニズムによって、ユーザにより選択される。データが選択された結果、そのデータが例えばハイライトされ又はチェックされてよく、何らかの選択可能データ(例えばモジュール、ドロップ・ダウンメニュー等)の選択に基づき、新たな画面、メニュー又はポップ・アップウィンドウが現れてよい。
ユーザインタフェース200の説明全体に対して図1〜3が参照される。図7に示されるように、ユーザインタフェース200は、選択されたときにコンフィギュレータ22へのアクセスを提供することによりユーザ選択を可能にすると共にコンフィギュレータ22への他のユーザ入力を可能にする幾つかの選択可能モジュールを含む。具体的には、認証及び設定ライブラリモジュール202は、コンフィギュレータ22のオーセンティケータ70を表し且つこれにリンクされたデータを備える。インスタンスモジュール204は、コンフィギュレータ22のノードコンフィギュレータ72を表し且つこれにリンクされたデータを備える。ネットワークコンフィギュレーションモジュール206は、コンフィギュレータ22のネットワークコンフィギュレータ74を表し且つこれにリンクされたデータを備える。ワークロードコンテナコンフィギュレーションモジュール208は、コンフィギュレータ22のワークロードコンテナコンフィギュレータ76を表し且つこれにリンクされたデータを備える。ワークロードコンフィギュレーションモジュール210は、コンフィギュレータ22のワークロードコンフィギュレータ78を表し且つこれにリンクされたデータを備える。バッチ処理モジュール212は、コンフィギュレータ22のバッチプロセッサ80を表し且つこれにリンクされたデータを備える。モニタリングモジュール214は、コンフィギュレータ22のデータモニタコンフィギュレータ82を表し且つこれにリンクされたデータを備える。制御及び状態モジュール216は、コンフィギュレータ22のデータアグリゲータ84を表し且つこれにリンクされたデータを備える。コンフィギュレータ22のコンポーネント70〜84は、それらのそれぞれの機能を、ユーザ選択、データ及びユーザインタフェース200のモジュール202〜216を介して提供された他のユーザ入力に基づき実装する。
図7を参照すると、認証及び設定ライブラリモジュール202が選択されている。モジュール202へのユーザ入力に基づき、オーセンティケータ70は、コンフィギュレータ22へのユーザアクセスを認証すると共に、先にセーブされたシステムコンフィギュレーションをロードする。オーセンティケータ70は、それぞれのフィールド220,222,224内のアクセスキー、秘密キー、及び/又は、EC2キーペアの形態にある信用証明データを確認することによって、コンフィギュレータ22へのユーザアクセスを許可する。図示された実施形態では、フィールド224のEC2キーペアは、モジュール202を用いてアマゾンウェブサービスクラウドプラットフォームにアクセスするときに、新たに選択されたノード16へのルート又は初期アクセスを提供する。オーセンティケータ70は、入力238のユーザ選択に基づき、先にセーブされたシステムコンフィギュレーションをシステムコンフィギュレーションファイル(例えば図1のユーザコンピュータ20又は制御サーバ12に記憶されている)からロードする。システムコンフィギュレーションファイルは、ワークロード及びワークロードコンテナのコンフィギュレーション、ノード16及びネットワークの設定情報、クラウドコンピューティングシステム10のためのデータモニタリング/収集の設定、並びに、コンフィギュレータ22で先にセーブされたシステムコンフィギュレーションに関連付けられている全ての他のコンフィギュレーション情報を含む。先にセーブされたシステムコンフィギュレーションファイルをロードすることにより、システムコンフィギュレーションファイルからのコンフィギュレーション情報でコンフィギュレータ22が更新される。システムコンフィギュレーションファイルは、例示的には、JSONファイルフォーマットを含むが、他の適切なフォーマットが提供されてもよい。システムコンフィギュレーションファイルをロードした後に、ロードされたシステムコンフィギュレーションは、ユーザインタフェース200のモジュールを介して修正されてよい。入力240が選択されると、オーセンティケータ70は、コンフィギュレータ22の現在のシステムコンフィギュレーションをファイルにセーブする。認証データは、選択ボックス242の選択に基づきセーブされたシステムコンフィギュレーションファイル内に含まれていてよい。
システムコンフィギュレーションファイルは、ウェブベースのユーザインタフェース200を介して識別され制御サーバ12へとロードされるが、システムコンフィギュレーションファイルを得るために、他の適切な遠隔メソッド呼び出し(remote method invocation)(RMI)メカニズムが用いられてもよい。例えば、アパッチハイパーテキスト転送プロトコル(Apache Hypertext Transfer Protocol)(HTTP)サーバ、アパッチトムキャット(Apache Tomcat)サーバ、RMIメカニズムを用いてシステムコンフィギュレーションファイルを渡すトムキャットサーブレット(Tomcat survlet)、又は、RMIメカニズムを用いてシステムコンフィギュレーションファイルを直接的に制御サーバ12へ渡すカスタムアプリケーション(例えばコマンドラインユーティリティ)である。
設定ライブラリ226は、選択入力227を介して選択及び実行のために利用可能な先に作成されたシステムコンフィギュレーションファイルのテーブル又はリストを提供する。入力228の選択があると、オーセンティケータ70は、ライブラリ226内で選択されたシステムコンフィギュレーションファイルからのコンフィギュレーション情報でモジュール202〜216を更新する。現在のシステムコンフィギュレーション(例えばモジュール202〜216を介してコンフィギュアされている)は、入力230の選択に基づきファイルにセーブされると共にライブラリ226に追加され、システムコンフィギュレーションファイルは、入力234の選択に基づきライブラリ226から削除される。入力232があると、オーセンティケータ70は、システムコンフィギュレーションファイルをローカルコンピュータ(例えば図1のコンピュータ20)からライブラリ226へアップロードし、あるいは入力236があると、オーセンティケータ70は、システムコンフィギュレーションファイルを遠隔コンピュータからライブラリ226へダウンロードする(例えばインターネットを介して)。ライブラリ226は、1つ以上の先に用いられたシステムコンフィギュレーションが迅速にロードされ実行されることを可能にする。ライブラリ226のシステムコンフィギュレーションファイルは、クラウドコンピューティングシステム10上で別個に、並列に又は順次的に選択及び実行されてよい。例えば、バッチシーケンスにおける実行のために複数のシステムコンフィギュレーションファイルがライブラリ226内に提供されてよく、この場合、コンフィギュレータ22は、各選択されたシステムコンフィギュレーションを自動的に順次展開して、各システムコンフィギュレーションで1つ以上のワークロードを実行する。図示された実施形態では、ここに述べられるように、システムコンフィギュレーションは、図30の制御及び状態モジュール216を介してノード16に展開される。システムコンフィギュレーションの展開は、図30を参照してここに述べられるように、システムコンフィギュレーションファイルに関連付けられた設定、ソフトウェア及びワークロード情報でコンフィギュレータ22がクラウドコンピューティングシステム10をコンフィギュアすることを伴う。ここに述べられるように、コンフィギュレータ22は、例示的には、それぞれのノード16をコンフィギュアするために各ノード16にルート付けられた1つ以上のコンフィギュレーションファイル28を生成する。ノード16に展開されたコンフィギュレーションファイル28は、モジュール202を介してロードされたシステムコンフィギュレーションファイルに含まれる全てのコンフィギュレーション情報に加えて、システムコンフィギュレーションファイルをロードした後にモジュール202〜216を介してなされた任意の追加的なコンフィギュレーション変更を含む。
図8を参照すると、ノード16の数及び特性をコンフィギュアするためのインスタンスモジュール204が選択されている。モジュール204へのユーザ入力に基づき、ノードコンフィギュレータ72は、指定されたハードウェア及び動作のコンフィギュレーションを有する複数ノードのクラスタ14を識別し選択する。インスタンスモジュール204は、インスタンスタブ250と、インスタンスタイプタブ252と、他のインスタンス設定タブ254と、を含む。図8でインスタンスタブ250が選択されている状態で、ノードクラスタ14に含ませるための所望のノード16の数がフィールド256へとエンターされる。ノードコンフィギュレータ72は、フィールド256でユーザが選択したノード16の所望の数の下で、特定のハードウェアコンフィギュレーションを各々が有する当該数のノード16のデフォルトリストをテーブル258内に生成する。テーブル258は、図1の複数ノードのクラスタ14のリスト及びコンフィギュレーション記述を提供する。テーブル258は、各ノード16のための幾つかの記述的フィールドを含み、これらのフィールドは、ノードの番号及び名前、インスタンス(ノード)タイプ、メモリ容量、コアプロセッサ(例えばCPU)の数、記憶容量、割り当て量(quota)、受信/送信割り当て量、及び、受信/送信上限(cap)を含む。インスタンスタイプは、一般的にはノードの相対サイズ及び演算能力を記述し、例示的には、微小(micro)、小(small)、中(medium)、大(large)、x−大(x-large)、2x−大(2x-large)、4x−大(4x-large)等(図9)から選択される。図8の例示的なテーブル258において、各ノード16は、7680メガバイト(MB)のメモリ容量と、850ギガバイト(GB)の記憶容量と、4コアプロセッサと、を伴う大タイプである。ノードコンフィギュレータ72は、選択可能ノードデータ、例示的には選択ボックス259及び選択可能入力262、のユーザ選択に基づきノード16を選択する。各ノード16のタイプは、テーブル258のノード16の選択(例えば入力262を用いた選択又は対応する選択ボックス259をチェックすることによる選択)及びインスタンスタイプ編集入力260を選択することに基づき変更可能であり、インスタンスタイプ編集入力260は選択されたノード16のためのインスタンスタイプタブ252を表示させる。図9を参照すると、テーブル264は、ノードクラスタ14における使用に対する選択のために利用可能であるノード16のタイプ(即ち利用可能なサーバハードウェア)のリストを備えている。テーブル264の1つ以上のノード16が、図8のテーブル258において選択されたノード16と差し替えるために、選択可能入力265で選択される。一実施形態では、テーブル264のフィールド(例えばメモリ、VCPUs、記憶容量等)は、選択されたノード16の所望のハードウェア性能特性を更に識別するために、ユーザによって修正可能である。利用可能なサーバハードウェアに応じて、より少ない又は追加的なノード16のタイプがテーブル264における選択のために利用可能であってよい。図示された実施形態では、ノードクラスタ14に追加するために、テーブル264にリストされている各ノードタイプに対して複数のノード16が利用可能である。
図10を参照すると、ノードコンフィギュレータ72は、ユーザインタフェース200のインスタンス設定タブ254において提供されたユーザ入力に基づき、各ノード16のブート時間コンフィギュレーションを調節する。ブート時間コンフィギュレーションは、個々のノード16、ノード16のグループ又はノードクラスタ14全体に適用される1つ以上のブート時間パラメータを含む。各ノード16の演算能力、システムメモリ容量及び/又は記憶容量等のブート時間パラメータは、それぞれのノード16が最大能力未満で動作するように、フィールド268,270,272,274へのユーザ入力に基づき制限又は制約される。デフォルトのブート時間パラメータは、入力269のユーザ選択に基づき選択され、カスタマイズされたブート時間パラメータは、入力271のユーザ選択に基づき選択される。図示された実施形態では、各調節可能パラメータの最大設定がデフォルトであるが、ユーザは、入力271で「カスタム」オプションを選択してコンフィギュレーション設定をそれぞれのフィールド268,270,272,274にエンターすれば、各パラメータを調節することができる。
図示された実施形態では、ノード16の処理コアの数はフィールド268で調節可能である。例えば、インスタンスタブ250(図8)のテーブル258において選択されたノード16が4つの処理コアを有している場合、ワークロード実行に際して有効にされる処理コアの数は、フィールド268を介して0,1,2又は3に減らすことができ、それにより、選択されたノード16の1つ以上の処理コアをワークロード実行に際してオペレーティングシステム44(図2)から「隠す」こと(hiding)ができる。可視(visible)システムメモリサイズ、即ちオペレーティングシステム44(図2)によってアクセス可能なシステムメモリのサイズは、フィールド270,272への入力に基づき調節可能である。例えば、インスタンスタブ250(図8)のテーブル258において選択されたノード16が2048MBのメモリ容量を有している場合、ワークロード実行に際して有効にされる「可視」メモリ(例えばランダムアクセスメモリ)は、2048MB未満に減らされてよく、それにより、ワークロード実行に際してそのメモリの一部をオペレーティングシステム44(図2)から「隠す」ことができる。追加的なブート時間パラメータを調節するために、追加的なワークロード引数(arguments)又は命令がフィールド274で適用される。ワークロードの引数の数は、フィールド274にエンターされた数に基づき増大又は減少させられてよい。例えば、ワークロードの命令のサブセットが実行のためにフィールド274で選択可能であり、それにより、残りの命令をオペレーティングシステム44(図2)から隠すことができる。更に、64ビットアーキテクチャを有するノード16は、32ビットだけがオペレーティングシステム44に可視である場合に32ビットモードで動作するように、フィールド274への入力に基づきコンフィギュア可能である。追加的なブート時間パラメータがフィールド276にエンターされてよい。一実施形態では、追加的なクラウドコンフィギュレーション設定を提供するために、命令又はコードがユーザによって手動でフィールド276にエンターされてよい。例えば、ブートに際して特定のノード16がマスタとして動作するように、マップリデュースワークロードのためのマスタノード16がフィールド276を介して指定されてよい。一実施形態では、ここに述べられるように、1つ以上のノード16の動作をノードコンフィギュレータ72で制限することは、クラウドコンピューティングシステム10の性能をテストするために用いられる。図示された実施形態では、図10において指定されたブート時間コンフィギュレーション設定は、図36〜38に関してここに述べられるように、それぞれのノード16のブート時間コンフィギュレーションを調節するためにノードコンフィギュレータ72から各ノード16に提供されるブート時間コンフィギュレーションファイル28(図3)内で提供される。
コンフィギュレータ22は、図7のネットワークコンフィギュレーションモジュール206のユーザ選択に基づき、図11〜17に示される例示的なネットワーク設定ウィザードウィンドウ280を生成する。図11を参照すると、ネットワーク設定ウィザード280は、1つ以上のノード16のネットワークパラメータを調節するための選択可能データを各々が含む複数のグローバルネットワーク設定を提供する。調節可能なネットワークパラメータは、タブ282を介してのネットワーク遅延、タブ284を介してのパケット損失、タブ286を介してのパケット重複、タブ288を介してのパケット破損、タブ290を介してのパケット並び替え、タブ292を介してのパケット速度制御、及び、タブ294を介しての他のカスタムコマンドを含む。ユーザインタフェース200のネットワーク設定ウィザード280を介したユーザ選択及びユーザ入力に基づき、図3のネットワークコンフィギュレータ74は、ここに述べられるように、図1の通信ネットワーク18のノード16のネットワークパラメータを調節するように動作する。一実施形態では、ネットワークパラメータの修正は、ネットワークテスト及び性能解析のために用いられ且つ/又はシステム電力消費を調節するために用いられる。図示された実施形態では、ネットワークコンフィギュレータ74は、ネットワーク設定ウィザード280へのユーザ入力に基づきネットワークのトラフィック及び挙動を人為的に形成し、それにより種々のタイプのネットワークトポロジをモデル化する。例えば、異なる通信ネットワークは、ネットワークコンフィギュレーションに応じて異なるレイテンシ(latencies)、帯域、性能等を有する。そこで、ネットワークコンフィギュレータ74は、異なるコンフィギュレーションを有するネットワークに、選択されたワークロードでそれら異なるネットワークの性能をテストし解析するためのワークロード実行が実装されることを可能にする。一実施形態では、テスト及び解析は、異なるネットワークコンフィギュレーションでのワークロード実行をバッチプロセッサ80が開始することに連動して行われる。例えば、選択されたハードウェア(ノード16)コンフィギュレーションでの特定のワークロードの実行のために、最適ネットワークトポロジが決定されてよい。一実施形態では、ネットワークコンフィギュレータ74は、ノードクラスタ14のノード16の特定のグループ又はサブセットにネットワーク設定を適用するように動作する。
引き続き図11を参照すると、通信ネットワーク遅延を実装することに関連する選択可能データは、タブ282内に示される。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)298〜301及びフィールド302,304,306,308,310,312のユーザ選択に基づきネットワーク遅延を選択し修正する。通信ネットワーク18(図1)を介しての各パケット通信(即ち、パケットはノード16間又はあるノード16と制御サーバ12との間でデータ又は情報を搬送する)に対する通信遅延は、入力298の選択及びフィールド302を介してエンターされた遅延値に基づき実装される。指定された通信遅延の変動は、入力299の選択及びフィールド304を介してエンターされた変動値(例えば例示的にはプラスマイナス10ミリ秒の変動)に基づき実装される。フィールド310,312は、フィールド302,304のそれぞれの値に関連する時間の単位(例えばミリ秒、マイクロ秒等)を選択するためのドロップダウンメニューを含む。指定された通信遅延間の相関は、入力300の選択及びフィールド306を介してエンターされた相関値、例示的にはパーセンテージ相関値、に基づき実装される。指定された通信遅延の分布は、ドロップダウンメニュー301の選択に基づき実装される。分布は、正規分布又は他の適切な分布タイプを含む。
図12を参照すると、ネットワークパケット損失率を実装することに関連する選択可能データがタブ284内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)313,314及びフィールド315,316のユーザ選択に基づきパケット損失率(即ちパケットが人為的に失われる比率)を選択し修正する。パケット損失率は、入力313の選択及びフィールド315を介してエンターされた比率の値に基づき、ネットワーク18を介したパケット通信に対して実装される。パケット損失率は例示的にはパーセンテージとしてエンターされ、例えば0.1%はノード16によって送られる1000パケット毎に1パケットの損失をもたらす。パケット損失率のための相関は、入力314の選択及びフィールド316を介してエンターされた相関値(例示的にはパーセント値)に基づき実装される。
図13を参照すると、ネットワークパケット重複率を実装することに関連する選択可能データがタブ286内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)317,318及びフィールド319,320のユーザ選択に基づきパケット重複率(即ち、パケットが人為的に重複させられる比率)を選択し修正する。パケット重複率は、入力317の選択及びフィールド319を介してエンターされた比率の値に基づき、ネットワーク18を介したパケット通信に対して実装される。パケット重複率は例示的にはパーセンテージとしてエンターされ、例えば0.1%はノード16によって送られる1000パケット毎に1パケットの重複をもたらす。パケット重複率のための相関は、入力318の選択及びフィールド320を介してエンターされた相関値(例示的にはパーセント値)に基づき実装される。
図14を参照すると、ネットワークパケット破損率を実装することに関連する選択可能データがタブ288内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)321及びフィールド322のユーザ選択に基づきパケット破損率(即ち、パケットが人為的に破損させられる比率)を選択し修正する。パケット破損率は、入力321の選択及びフィールド322を介してエンターされた比率の値に基づき、ネットワーク18を介したパケット通信に対して実装される。パケット破損率は、例示的にはパーセンテージとしてエンターされ、例えば0.1%はノード16によって送られる1000パケット毎に1パケットの破損をもたらす。一実施形態では、パケット破損率のための相関が選択され実装されてもよい。
図15を参照すると、ネットワークパケット並び替え率を実装することに関連する選択可能データがタブ290内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)323,324及びフィールド325,326のユーザ選択に基づきパケット並び替え率(即ち、パケット通信に際してパケットが順序を変えて置かれる比率)を選択し修正する。パケット並び替え率は、入力323の選択及びフィールド325を介してエンターされた比率の値に基づき、ネットワーク18を介したパケット通信に対して実装される。パケット並び替え率は、例示的にはパーセンテージとしてエンターされ、例えば0.1%はノード16によって送られる1000パケット毎に1パケットの並び替えをもたらす。パケット並び替え率のための相関は、入力324の選択及びフィールド326を介してエンターされた相関値(例示的にはパーセント値)に基づき実装される。
図16を参照すると、ネットワーク通信速度を実装することに関連する選択可能データがタブ292内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)327〜330及びフィールド331〜338のユーザ選択に基づきパケット通信速度(即ち、ノード16間でパケットが通信される速度)を選択し修正する。パケット通信速度は、入力327の選択及びフィールド331を介してエンターされた速度値に基づき通信ネットワーク18に対して実装され、パケット通信速度に対する許容限度(ceiling)(最大値)は、入力328の選択及びフィールド332を介してエンターされた許容限度値に基づき実装される。パケットバーストは、入力329の選択及びフィールド333を介してエンターされたパケットバースト値に基づき実装され、パケットバーストに対する許容限度(最大値)は、入力330の選択及びフィールド334を介してエンターされた許容限度値に基づき実装される。フィールド335及び336は、速度単位(例示的にはキロバイト毎秒)を選択するためのドロップダウンメニューを提供し、フィールド337及び338は、バースト単位(例示的にはバイト)を選択するためのドロップダウンメニューを提供する。
図17を参照すると、ネットワーク通信速度を実装することに関連する選択可能データがタブ294内に示されている。ネットワークコンフィギュレータ74は、入力(例示的にはボックス)340のユーザ選択及びフィールド342を介してエンターされたカスタムコマンドに基づき、通信ネットワーク18上の1つ以上のノード16に関連するネットワークパラメータを修正するためのカスタムコマンドを提供する。
図18を参照すると、ワークロードコンテナコンフィギュレーションモジュール208が選択されている。モジュール208へのユーザ入力(例えば、入力352,360,362等の選択可能ワークロードコンテナデータのユーザ選択)に基づき、ワークロードコンテナコンフィギュレータ76は、ノードクラスタ14上での動作のためのワークロードコンテナモジュールを選択しコンフィギュアするように動作する。モジュール208は、種々の利用可能ワークロードコンテナモジュールに対応する複数の選択可能タブ350を含む。各利用可能ワークロードコンテナモジュールは、実行されるときにノードクラスタ14上でのワークロードの実行を開始し制御するように動作する選択可能コードモジュールを含む。図示された実施形態においてモジュール208を介して利用可能なワークロードコンテナモジュールは、アパッチハドゥープ(Apache Hadoop)、メムキャッシュディー(Memchashed)、カサンドラ(Cassandra)及びダーウィンストリーミング(Darwin Streaming)等の幾つかのサードパーティに係る市販のワークロードコンテナモジュールを含む。カサンドラは、基本的データベース動作を提供するためのキー値ストアを提供するオープンソースの分散型データ管理システムである。ダーウィンストリーミングは、アップルインク(Apple, Inc.)によって提供されるクィックタイム(QuickTime)等の、種々の動画媒体をストリーミングするために利用される媒体ストリーミングアプリケーションのオープンソースの実装である。オープンソースのワークロードコンテナソフトウェアがモジュール208を介して例示的に提供されているが、クローズドソースのワークロードコンテナが選択のために提供されてもよい。例えば、クローズドソースのワークロードコンテナソフトウェアに関連するライセンス情報が、ユーザインタフェース200を介して入力され又は購入されてよい。また、1つ以上のカスタムワークロードコンテナモジュールが、モジュール208の「カスタム」タブを介してロードされ選択されてもよい。他のワークロードコンテナモジュールが提供されてもよい。例えば先に使用されたカスタムワークロードコンテナモジュール等の選択のために利用可能な追加的なワークロードコンテナモジュールのライブラリへのアクセスを提供する「ライブラリ」タブも提供されている。
図18の「ハドゥープ」タブの下で、ワークロードコンテナコンフィギュレータ76は、入力352のユーザ選択に基づきアパッチハドゥープワークロードコンテナモジュールを選択する。アパッチハドゥープのバージョン及びビルドバリアント(build variant)は、一般タブ354の下でそれぞれドロップダウンメニュー360,362を介して選択可能である。選択されたワークロードコンテナモジュールの動作パラメータは、拡張タブ356及びカスタムタブ358を介して提供されるユーザ入力に基づきワークロードコンテナコンフィギュレータ76によって調節可能である。調節のために利用可能な動作パラメータは、例示的には、選択されたワークロードコンテナモジュールに依存する。例えば、アパッチハドゥープがワークロードコンテナモジュールとして選択されている場合、図19に示される拡張タブ356は、ワークロードコンテナコンフィギュレータ76によってコンフィギュア可能な、アパッチハドゥープワークロードコンテナモジュールの例示的な選択可能動作パラメータのテーブル366を表示する。ワークロードコンテナコンフィギュレータ76は、対応する選択ボックス367のユーザ選択に基づき、コンフィギュレーションのための動作パラメータを選択する。テーブル366は、オーバーライドフィールド374、マスタ値フィールド378及びスレーブ値フィールド380を含むコンフィギュレーションデータを受信するために、ワークロードコンテナコンフィギュレータ76のための幾つかのフィールドを提供する。オーバーライドフィールド374内でのユーザ選択に基づき、対応する動作パラメータでそのワークロードコンテナが調節されるべきノード16が選択される。ノード16は、対応するドロップダウンメニューにおけるユーザ選択に基づき又は入力384のユーザ選択に基づきオーバーライドフィールド374において選択される。例示的には、「非(never)」の選択は、全ノード16で実装されている対応する動作パラメータのデフォルトコンフィギュレーションをもたらし、「マスタ」又は「スレーブ」の選択は、それぞれマスタノード16又はスレーブノード16でのパラメータ調節の実装をもたらし、「常に(always)」の選択は、ノードクラスタ14の全ノード16でのパラメータ調節の実装をもたらす。代替的には、ノードクラスタ14の個々のノード16が、調節された動作パラメータの実装のために選択されてよい。
マスタ値フィールド378及びスレーブ値フィールド380においては、制約、データ値又は他のユーザ選択が、マスタノード16又はスレーブノード16のそれぞれにおけるワークロードコンテナの対応する動作パラメータのための調節値を提供する。プロパティ名フィールド376は、例示的には、選択されたワークロードコンテナモジュールのコードモジュールにおいて参照される関連動作パラメータの名前をリストする。記述フィールド382は、例示的には、関連動作パラメータのユーザに対して概要を表示する。入力386により、ユーザはテーブル366内にリストされた全動作パラメータを選択又は除外することができる。入力388により、ユーザは、先の選択又はパラメータ変更を逆にすること又は「取り消し(undo)」が可能であり、入力390により、ユーザは、フィールド374,378,380内に提供された値をデフォルト設定にリセットすることができる。
テーブル366内でのユーザ選択に基づきワークロードコンテナコンフィギュレータ76で調節可能な動作パラメータの例としては、ノード16のリード/ライト(I/O)動作、ソーティング動作、ノード16のネットワークソケット動作(例えばTCPソケット接続)のコンフィギュレーション、及び、ワークロードコンテナのファイルシステム55(例えばアパッチハドゥープのためのHDFS)に関連する動作パラメータが挙げられる。リード/ライト動作に関連する動作パラメータは、例えば、ノード16のメモリバッファサイズ及びリード/ライト動作に際して転送されるデータブロックのサイズを含む。例示的には、テーブル366の行368に示されるメモリバッファサイズは、ノード16のリード/ライト(I/O)動作に際してどれくらいの量のデータがバッファされる(キャッシュ内に一時的に記憶される)のかに対応している。図示された実施形態では、メモリバッファサイズは、ノードハードウェアのメモリページ又はデータブロックサイズの倍数である。メモリページ又はデータブロックは、ここに述べられるように、メモリ割り振り及びメモリ転送のためのデータの最小単位である、ノード16の固定長ブロック又は仮想メモリを参照する。図19の行368においては、マスタノード及びスレーブノードの値は、例示的に4096ビットに設定されているが、これらの値は、8192ビット又はノードプロセッサ40(図2)のデータブロックサイズの他の適切な倍数に調節されてよい。同様に、リード/ライト動作に際して転送されるデータブロックのサイズもまた、テーブル366へのユーザ入力に基づき調節される。
ソーティング動作に関連する動作パラメータは、例えば、データをソーティングするときに同時にマージするデータストリームの数を含む。ワークロードコンテナのファイルシステム(例えば図2のファイルシステム55)に関連する動作パラメータは、各ノード16のメモリ42に記憶されるファイルシステム記録又はファイルの数(例えば行370参照)及びファイルシステム55に対する処理要求のために割り振られる各ノード16の処理スレッドの数を含む。テーブル366の例示的な行370においては、図2のファイルシステム55のためにメモリ42内に記憶される記録の数は、マスター及びスレーブノード16に対して両方とも100000記録であるが、他の適切な記録制限値がエンターされてもよい。一実施形態では、ファイルシステム記録の数を制限することは、ファイルシステム55によるファイルの複製を制限するのに役立つ。
ここで述べられるTCPネットワークソケット等のネットワークソケットのコンフィギュレーション及び動作に関連する動作パラメータは、ワークロードコンテナとネットワークソケットの相互作用を伴う。例えば、ネットワークソケットの通信遅延又はレイテンシ及びネットワーク18(図1)を介して送られるパケットの数が調節されてよい。例えば、ノード16のTCPソケット接続を介して送られるデータパケットのレイテンシ及び数を調節するために、テーブル366の行372が、アルゴリズム、例示的には当該技術分野において知られる「ネーグルアルゴリズム(Nagle's algorithm)」、のフィールド378,380を介してのアクティベーション/ディアクティベーションを可能にしている。ネットワークソケットの動作に関連する他の適切な動作パラメータが調節されてもよい。
ワークロードコンテナコンフィギュレータ76によって調節可能な他の例示的な動作パラメータは、ノード16のプロセッサ40により同時に実行されるソフトウェアタスクの数を含む。例えば、ユーザは、ワークロード実行に際して同時に実行される一定数のタスク(例えばJAVA(登録商標)タスク)を、テーブル366への入力を介して指定してよく、これに伴いワークロードコンテナコンフィギュレータ76はタスクの数を調節する。ワークロードコンテナに関連する他の適切な動作パラメータが調節されてよい。
図20のカスタムタブ358を参照すると、選択されたワークロードコンテナモジュールの更なるカスタム化を可能にするために、追加的なコンフィギュレーション調節が、選択されたワークロードコンテナモジュール、例示的にはハドゥープワークロードコンテナモジュール、のために実装されてよい。ワークロードコンテナコンフィギュレータ76は、フィールド392,394,396へと入力されたコマンド文字列並びに対応する選択可能ボックス398のユーザ選択に基づき、選択されたワークロードコンテナモジュールのコンフィギュレーションを更に調節する。図示された実施形態では、これらのフィールド392,394,396は、それぞれ、ハドゥープマスタノードと、ハドゥープファイルシステムと、タスクトラッカ(task tracker)内のタスクの数、一時的データを何処に置くかのローカルディレクトリ及び他の適切なパラメータ等の、マップリデュース実行に関連するパラメータと、に適用されるコンフィギュレーションを指定する。
他の利用可能ワークロードコンテナモジュール(例えばメムキャッシュディー、カサンドラ、ダーウィンストリーミング等)に関連する動作パラメータは、ハドゥープワークロードコンテナモジュールで説明したのと同様に調節される。モジュール208の入力352とタブ354,356,358を介して提供されたコンフィギュレーション情報とに基づき、ワークロードコンテナコンフィギュレータ76は、ノードクラスタ14のノード16へとロードするためのワークロードコンテナイメージファイル94(図3)を生成する。一実施形態では、ワークロードコンテナイメージファイル94は、制御サーバ12のメモリ90内又はノード16のメモリ42内にセーブされ、ワークロードコンテナコンフィギュレータ76は、イメージファイル94をコンフィギュレーション情報で更新する。一実施形態では、ワークロードコンテナモジュールの複数のコンフィギュレーションがセーブされてよく、次いで、例えばワークロード及びシステム性能に対するワークロードコンテナコンフィギュレーション変更の影響を調査する等のために、順に実行されてよい。
図21を参照すると、ワークロードコンテナコンフィギュレータ76は、モジュール208の「カスタム」タブの入力353,401のユーザ選択に基づき、ノード16上での実行のためのユーザ定義のカスタムワークロードコンテナモジュールを選択する。図示された実施形態では、カスタムワークロードコンテナモジュールは、ここに述べられるように、ユーザによって提供され且つ商業的には利用可能でなくてよいワークロードコンテナモジュールを含む。ワークロードコンテナコンフィギュレータ76は、例示的には、ワークロードコンテナコードモジュールを含む圧縮ジップ(zip)ファイルをロードする。具体的には、ジップファイルは、ノードクラスタ14上でのワークロードの実行を連携させるためのユーザ定義のパラメータを含むコンフィギュレーションファイル又はスクリプトを含む。図21に示されるように、テーブル400は、制御サーバ12(又はコンピュータ20)に記憶され且つ選択可能な1つ以上の入力401を介してユーザ選択のために利用可能なロード済みのカスタムワークロードコンテナモジュールのリストを提供する。追加的なカスタムワークロードコンテナモジュールが、入力402,404のユーザ選択に基づきそれぞれアップロード又はダウンロードされテーブル400内に表示され、カスタムワークロードコンテナモジュールは、入力403のユーザ選択に基づきテーブル400から削除される。ユーザは、ジップフォルダパス及び/又はコンフィギュレーションスクリプトパスを、それぞれのフィールド406,408を介してエンターすることができる。一実施形態では、カスタムワークロードコンテナモジュールは、コンピュータ20(図1)のメモリ34上など、クラウドコンピューティングシステム10から遠隔の場所に記憶されており、入力402のユーザ選択に基づき制御サーバ12のメモリ90(図3)へとアップロードされる。
図22を参照すると、ワークロードコンフィギュレーションモジュール210が選択されている。モジュール210へのユーザ入力に基づき、ワークロードコンフィギュレータ78(図3)は、ノードクラスタ14により選択されたワークロードコンテナモジュールでの実行のためのワークロードを選択しコンフィギュアするように動作する。また、ワークロードコンフィギュレータ78は、選択されたワークロードコンテナモジュールでノード16上で実行される合成テストワークロードを、ユーザ定義のワークロードパラメータに基づき生成するようにも動作する。モジュール210は幾つかの選択可能タブを含み、これらの選択可能タブは、ワークロードタブ410、合成カーネルタブ412、MCブラスタ(MC-Blaster)タブ414、設定ライブラリタブ416及びクラウドスィート(CloudSuite)タブ417を含む。図22のワークロードタブ410の下で、例示的には選択可能入力418,424,428を含む選択可能ワークロードデータのユーザ選択に基づき、実行されるべきワークロードがワークロードコンフィギュレータ78によって選択される。例示的には、利用可能ワークロードは、例えば、ハドゥープワークロードコンテナ上での実行に適したワークロード(入力418)、メムキャッシュディーワークロードコンテナ上での実行に適したワークロード(入力424)、又は、カスタムワークロード(入力428)等の、選択されたワークロードコンテナのためにコンフィギュアされた任意の他の適切なワークロードを含む。
図22を参照すると、ハドゥープワークロードが、実際のワークロード及び合成テストワークロードから、対応する入力418の1つのユーザ選択に基づき選択されている。実際のワークロードは、ハドゥープワークロードコンテナのマップリデュース機能に適した予め定義されたコードモジュールを含み、フィールド422内の実際のワークロードの記憶ロケーションの識別に基づき制御サーバ12へとロードされる。一実施形態では、実際のワークロードは、図1のメモリ34等の、クラウドコンピューティングシステム10から遠隔のメモリ上に記憶され、フィールド422を介して制御サーバ12のメモリ90へとアップロードされる。他の実施形態では、実際のワークロードは、ハドゥープワークロードコンテナモジュールと共に提供されるサンプルハドゥープワークロードであり、あるいは制御サーバ12へ予めロードされた他のワークロードである。また、合成テストワークロードは、ハドゥープワークロードコンテナ上での実行のために、対応する入力418のユーザ選択に基づき選択可能である。入力記録の数、又は、合成テストワークロードと共に生成されるべき命令の数であって、合成テストワークロードの「マップ」段階において処理されるべき命令の数は、ここに述べられるように、フィールド420を介してエンターされてよく、また、ワークロードコンフィギュレータ78のシンセサイザ79(図3)への入力として提供されてよい。シンセサイザ79による合成テストワークロードの生成のための他の入力パラメータは、ここに述べられるように、合成カーネルタブ412を介してコンフィギュアされる。ハドゥープワークロードコンテナでの実行のために合成テストワークロードが例示的に適用されているが、他の利用可能ワークロードコンテナのために合成テストワークロードが選択され生成されてもよい。
カスタムスクリプトは、選択されたワークロードコンテナモジュールでの実行のための予め定義された実際のワークロードとして、フィールド430を介して且つ入力428のユーザ選択があった場合にロードされる。カスタムスクリプトは、選択されたワークロードコンテナモジュールでノードクラスタ14によって実行される1つ以上の実行コマンドを含むユーザ提供のコードを備える。図示された実施形態では、カスタムスクリプトは、バッチプロセッサ80でのシステムテストに際して実行されるワークロードとして用いられ、種々のネットワーク、ワークロードコンテナ及び/又は他のシステムコンフィギュレーションの変更が、ここに述べられるように、逐次的ワークロード実行に際してなされて、システム性能への影響がモニタされる。
予め定義されたワークロードが、入力424のユーザ選択に基づき、メムキャッシュディーワークロードコンテナでの実行のためにロードされてもよい。一実施形態では、メムキャッシュディーワークロードは、「セット」コマンドを介してキー値ペアを記憶すると共に「ゲット」コマンドを介してキー値ペアをリトリーブするメモリ内加速構造を含む。1つのキー値ペアは、2つのリンクされたデータ項目のセットであり、これらデータ項目は、データのある項目のための識別子であるキーと、そのキーによって識別されたデータ又はそのデータのロケーションへのポインタのいずれかである値と、を含む。メムキャッシュディーワークロードは、例示的には、フィールド426への入力値に基づきそのランタイムが選択される選択可能MCブラスタツールで動作する。MCブラスタは、一定数のネットワーク(例えばTCP)ソケット接続上でメムキャッシュディーから記録をリード/ライトする要求を生成することによって、テスト中のシステムを刺激するためのツールである。各要求は、キー及び値を指定する。MCブラスタツールは、図24のMCブラスタタブ414を介してコンフィギュアされる。図24を参照すると、フィールド460への入力は処理スレッド毎に利用するTCP接続の数を指定し、フィールド462への入力は動作させるキーの数を指定し、そしてフィールド464,466への入力は、1秒あたりに送られることを要求される「ゲット」コマンド及び「セット」コマンドをそれぞれ指定する。ユーザ指定の(カスタム)バッファサイズは、対応する入力469の選択及びフィールド468へエンターされた値に基づきワークロードコンフィギュレータ78によって実装されてよく、TCP要求は、入力470の「オン(on)」の選択に基づき遅延させられてよい。開始すべき一定数の処理スレッドが、対応する入力473のユーザ選択及びフィールド472にエンターされた値に基づき、ワークロードコンフィギュレータ78によってカスタマイズされてよい。処理スレッドのデフォルト数は、ノード16のアクティブな処理コアの数に等しい。UDPリプレイポートの数は、フィールド474への入力に基づき選択され、ワークロード実行の結果として記憶される(又は戻される)値のサイズ(バイト)は、フィールド476への入力に基づき選択される。
図23を参照すると、合成テストワークロードが、合成カーネルタブ412を介して提供されたユーザ入力に基づき、シンセサイザ79によって生成される。具体的には、ワークロードコンフィギュレータ78のシンセサイザ79(図3)は、制御サーバ12のメモリ90へとロードされるコードモジュール、例示的にはトレース(trace)ファイル(例えばコンフィギュレーションファイル)、において提供されるユーザ定義のパラメータに基づき、合成テストワークロードを生成する。トレースファイルは、ここに述べられるように、合成テストワークロードの所望の計算上の(computational)特性を記述するデータを含む。図23の「合成」入力434のユーザ選択があると、フィールド436又はフィールド438へのユーザ入力に基づき、記憶されているトレースファイルのロケーションが識別されてよい。フィールド436は、例示的には、トレースファイルを含むハードディスクロケーション(例えば図1のコンピュータ20のメモリ34)を識別し、フィールド438は、例示的には、トレースファイルをリトリーブするためのウェブアドレス又はURLを識別する。テーブル440は、トレースファイルと、ロード済みで選択のために利用可能な先に生成された合成テストワークロードと、を表示する。トレースファイルは、入力442のユーザ選択でロードされると共にテーブル440内に表示され、入力444のユーザ選択でテーブル440から削除され、そして入力446のユーザ選択に基づきダウンロードされる(即ちフィールド438において識別されたURLから)。トレースファイルは例示的にはJSONファイルフォーマットであるが、他の適切なファイルタイプが提供されてもよい。合成テストワークロードにおいて生成されるべき命令の最大数はフィールド448において識別され、合成テストワークロードの繰り返しの最大数はフィールド450において識別される。代替的には、先に生成された合成テストワークロードが、ライブラリ入力432のユーザ選択、フィールド436又は438での合成テストワークロードの記憶ロケーション(ローカルハードドライブ、ウェブサイト等)の識別、及び、テーブル440に表示された所望の先に生成された合成テストワークロードに対応する入力441のユーザ選択に基づき、ワークロードコンフィギュレータ78によってロードされる。先に生成された合成テストワークロードの命令及び繰り返しの最大数は、フィールド448,450で調節可能である。
トレースファイルは、ワークロード特性と、合成テストワークロードを生成するためにシンセサイザ79による入力として用いられるユーザ定義のパラメータと、を識別する修正可能データ構造、例示的には修正可能フィールドを有するテーブル、を含む。このテーブルは、テーブルのフィールドがテーブルへのユーザ入力及びユーザ選択に基づき修正され得るように、ユーザインタフェース200又はユーザコンピュータ20のユーザインタフェースを伴う等してユーザインタフェース上に表示される。例えば、ここに述べられる図32のテーブル150を参照されたい。トレースファイルは、更に、シンセサイザ79による入力として用いられる対象となる命令セットアーキテクチャ(ISA)の少なくとも一部を識別する。トレースファイルは、更に、合成テストワークロードの命令に関連する他の特性を識別し、これら他の特性は、命令間依存関係(例えば第1の命令は第1の命令を実行する前の第2の命令の完了に依存する)、メモリレジスタ割り振り制約(例えば命令が特定のレジスタからの値をとるように制約する)、及び、アーキテクチャ上の実行制約(例えば制限された数の論理ユニットが特定のタイプの命令を実行するために利用可能である)を含む。従って、コンフィギュレータ22は、トレースファイルで指定された実行特性に基づきワークロード命令がどれくらい長く実行されるべきであるかを予測するように動作する。
トレースファイル内に記述されたユーザ定義のワークロードパラメータの例としては、生成されるべき命令の総数や、例えば浮動小数点命令、整数命令及び分岐命令を含め生成されるべき命令のタイプや、例えば実行フローの分岐の蓋然性(即ち命令実行に際して分岐が行われやすいかどうか又は実行が当該実行フローパスに沿って進行して分岐へはジャンプしないかどうか)等の命令実行の挙動(例えば実行フロー)や、命令間でのデータ依存性の分布や、実行及び/又は転送される基本ブロックの平均サイズや、命令実行に関連するレイテンシ(即ち特定の命令又は命令タイプの実行にどれくらいのサイクルが必要であるか等、1つの命令又は命令タイプを実行するのに要する時間の長さ)が挙げられる。一実施形態では、ユーザ定義のワークロードパラメータは、整数命令又は浮動小数点命令として特定のどの命令を用いるのかを指定する。一実施形態では、ユーザ定義のワークロードパラメータは、各命令タイプ(例えば整数、浮動小数点、分岐)の平均数及び統計的分布を指定する。一実施形態では、各命令は1つ以上の入力及び出力引数を含む。
図示された実施形態では、トレースファイル内に記述されたワークロードパラメータ及び命令セットアーキテクチャは、テーブル駆動で再対象化可能な方法において(in a table-driven, retargetable manner)提供される。テーブルのコンテンツに対する変更に基づき、コンフィギュレータ22は、種々のマイクロアーキテクチャ及びシステム並びにノード16の種々の命令セットアーキテクチャを対象とするように動作する。例示的なテーブル150が図32に示されており、テーブル150は、コードシンセサイザ79へ入力されるべきユーザ定義のワークロードパラメータのセットを表すデータを含む。図32を参照すると、テーブル15は、生成された合成テストワークロードに対する命令の集まりを記述する命令部152と、合成テストワークロードと共に用いられるべきアドレシングモードを記述するアドレシングモード部154と、を含む。図示されたもの以外の命令及びアドレシングモードがテーブル150内に提供されてもよい。テーブル150の命令部152は、幾つかの修正可能フィールド158,160,162,164を含む。フィールド158は生成されるべき命令を識別するデータを含み、フィールド160は命令に関連する計算タイプを識別するデータを含み、フィールド162はシンセサイザ79によるコード生成を支援するために割り当てられたニーモニック(mnemonic)を識別するデータを含む。フィールド164は、種々のアドレシングモード(即ち命令の引数がメモリから得られるウェイ(way))を識別するデータを含む。
図示された実施形態では、入力コマンド156(「gen_ops.initialize()」)は、生成されるべき命令を記述するテーブル150の命令部152が開始していることを示している。行166は、1つ以上の命令を生成するためのユーザ定義のワークロードパラメータの一例を示す。行166を参照すると、フィールド158にエンターされた「D(IntShortLatencyArith)」は、短いレイテンシを有する整数演算命令を指定し、フィールド160,162にエンターされた「op_add」及び「addq」は、その命令が加算、即ち「add」命令であることを示している。一実施形態では、短いレイテンシは、プロセッサ(例えばノードプロセッサ40)が命令を実行するのに1サイクル又は数サイクル要することを示している。フィールド164の「addr_regOrw_reg1r」は、第1のレジスタ0引数が「rw」(リード及びライト)であり第2のレジスタ1引数が「r」(リード)であることを示している。同様に、フィールド164の「addr_reg0rw_imm」は、命令の他の変数を記述し、ここでは、第1の引数(レジスタ0引数)は「rw」(リード及びライト)であり、第2の引数は「imm」(「即時的(immediate)」)値(例えば123のような数字)である。
テーブル150のアドレシングモード部154を参照すると、例示的な行170は、レジスタ上でのみ動作する命令のクラスを識別するフィールド172の「addr_regOw_reg1r」を含む。第1のレジスタ引数(即ちレジスタ0)は宛先「w」(ライト)であり、第2のレジスタ引数(即ちレジスタ1)は入力「r」(リード)である。フィールド174,176におけるエントリは、引数を識別すると共に、リード引数に対しては「src」を、ライト引数に対しては「dst」を、又は、リード・修正・ライト引数に対しては「rmw」を示している。x86アーキテクチャにおいては、例えば、第1のレジスタ引数は「rmw」であってよく(引数はリードされ、そこで動作し、次いで結果と共にライトされる)、あるいは他の適切な引数であってよい。追加的な又は異なるユーザ定義のワークロードパラメータがテーブル150を介して指定されてよい。
一実施形態では、テーブル150(例えばトレースファイル)は、例えばユーザコンピュータ20による等、オフラインで生成されて、コンフィギュレータ22へとロードされる。一実施形態では、テーブル150は、制御サーバ12に記憶され又は制御サーバ12へとロードされ、そしてユーザインタフェース200によって表示された選択可能且つ修正可能なデータを介してユーザがユーザ定義のワークロードパラメータを修正することができるように、ユーザインタフェース200で表示される。
図33を参照すると、合成テストワークロードを生成して実行するための例示的な処理フローが示されている。合成テストワークロードを生成すると共にコンフィギュレーションファイル28及び合成ワークロードイメージ96を各ノード16へと出力するコードシンセサイザ79が示されており、各ノード16の合成ワークロードエンジン58は、ここに述べられるように合成テストワークロードを実行する。図33のブロック60,62,64は、シンセサイザ79へと入力されるトレースファイル内に提供されるコンテンツの抽象的表現を提供する。ブロック60は、命令セットの実行フローを表現する一般的タスクグラフである。ブロック62は実行されるタスク機能を表現しており、これらのタスク機能は、入力命令、出力命令、開始命令及び終了命令を含む。ブロック64はワークロード挙動パラメータを表現しており、これらのパラメータは、データブロックサイズ、実行の継続時間とレイテンシ、メッセージ伝搬、及び、ここに述べられる他のユーザ定義のパラメータを含む。
シンセサイザ79は、例示的には、コードジェネレータ66及びコードエミッタ68を含み、これらの各々は、ここに述べられる種々の機能を行うために1つ以上のプロセッサ22によってアクセス可能なメモリ(例えばメモリ90)に記憶されたソフトウェアコード又はファームウェアコードを実行する制御サーバ12の1つ以上のプロセッサ22を備える。コードジェネレータ66は、ユーザ定義のワークロードパラメータ及び対象となる命令セットアーキテクチャを記述するトレースファイルのデータ構造(例えばテーブル)上で動作し、指定された実行プロパティを有する抽象化(abstracted)合成コードを生成する。コードエミッタ68は、抽象化合成コード(例えば実行ハーネスにおいてリンクされるべきアセンブリコード、バイナリコード、又は、シミュレーション基盤とリンクされるべき位置無依存(position-independent)コード、等)から、実行環境に適したフォーマットで実行可能合成コード(即ち合成テストワークロード)を作成する。一実施形態では、実行可能コードの所望のフォーマットは、シンセサイザ79においてハードコード化される。他の実施形態では、実行可能コードの所望のフォーマットは、ユーザインタフェース200の選択可能データを介して選択可能である。一実施形態では、フルサイズのワークロードを実行するようには構成されていないサイクル・アキュレート(cycle-accurate)シミュレータを介して実行可能コードが実行され得るように、実行可能コードはコンパクトなサイズである。シンセサイザ79の他の適切なコンフィギュレーションが提供されてもよい。一実施形態では、シンセサイザ79は、ノードクラスタ14のノード16のコンピュータアーキテクチャデータへのアクセスを有する。従って、シンセサイザ79は、ノードクラスタ14の既知のコンピュータアーキテクチャデータに基づき、特定のマイクロアーキテクチャ及び命令セットアーキテクチャを対象とする合成テストワークロードを生成する。従って、合成テストワークロードは、例えば、アーキテクチャ上の特性の所望のセットをエクササイズするために対象とされてよい。
シンセサイザ79によって生成された合成テストワークロードは、選択されたワークロードコンテナモジュールと共にノード16上で実行可能なコードモジュールを含む。合成テストワークロードが実行のために生成され選択されると、その合成テストワークロードは、図3のワークロードイメージファイル96として制御サーバ12のメモリ90内に記憶される。コンフィギュレータ22は、次いでそのワークロードイメージファイル96を実行のために各ノード16へとロードし、あるいはノード16がそのワークロードイメージファイル96をリトリーブする。一実施形態では、ハドゥープワークロードコンテナモジュールが選択されると、合成テストワークロードは、マップリデュースの「マップ」段階として実行される。
図示された実施形態では、合成テストワークロードは、ここに述べられるように、テスト及び性能解析に対してコンピューティングシステム10のハードウェアをエクササイズするために実行される。シンセサイザ79は、トレースファイルを介して所望のワークロード挙動を入力として受信し、この入力に従って挙動する合成テストワークロードを生成する。具体的には、ここに述べられるように、実行されるべき命令の数及び命令のタイプの統計的分布等の、所望のワークロード挙動の統計的プロパティが、シンセサイザ79への入力である。例えば、ロードされたトレースファイルは、1000個の命令を含むプログラムループを要求するユーザ定義のパラメータを含んでいてよく、そのトレースファイルは、命令の30%が整数命令であり、10%が特定の分岐構造を有する分岐命令であり、40%が浮動小数点命令である、等を指定してよい。トレースファイル(又は図23のフィールド450)は、そのループが100回実行されるべきであることを指定してよい。シンセサイザ79は、次いで、要求されたパラメータを含むプログラムループを合成テストワークロードとして生成する。
一実施形態では、生成された合成テストワークロードは、特定のプロプリエタリ(proprietary)コード又は既知のアプリケーション若しくはプログラムの複合(complex)コード等の実際のワークロードの挙動をエミュレートする役割を果たす。例えば、何らかのプロプリエタリコードは、ユーザにとってアクセス可能でなく利用可能でない命令を含む。同様に、何らかの複合コードは、複雑且つ多数の命令を含む。場合によっては、そのようなプロプリエタリコード又は複合コードに基づきワークロードを作成することは、好ましくはなく又は困難であるかもしれない。従って、プロプリエタリコード又は複合コードの全命令を含むワークロードコードモジュールを作成するのではなく、プロプリエタリコード又は複合コードがプロプリエタリコード又は複合コードの実行に際してどのようにサーバハードウェア(ノード16又は他のサーバハードウェア)をエクササイズするのかをモニタするために、モニタリングツール(例えばコンフィギュレータ22からはオフラインである)が用いられるのである。プロプリエタリコードの実行に際してモニタリングツールによって集められた統計的データは、プロプリエタリコード又は複合コードの所望の実行特性を表すパラメータを識別するために用いられる。パラメータの集まりはトレースファイル内に提供される。トレースファイルは次いでシンセサイザ79への入力としてロードされ、シンセサイザ79は、統計的入力及び他の所望のパラメータに基づき、プロプリエタリコードと同様に挙動する合成コードを生成する。従って、特定のコードの複合命令又はプロプリエタリ命令は、そのコードのクラウドコンピューティングシステム10上での挙動をモデル化する上で必要とされない。
一実施形態では、シンセサイザ79は、バッチプロセッサ80と協働して、種々のトレースファイルからシンセサイザ79によって生成された複数の合成テストワークロードを実行する。一実施形態では、ノード16の異なる対象プロセッサ、即ちCPU及びGPUsの両者、をテストする修正されたユーザ定義のワークロードパラメータのテーブル(例えば図32のテーブル150)に基づき、複数の合成テストワークロードが生成される。
図34は、選択されたワークロードでクラウドコンピューティングシステム10をコンフィギュアするために図1及び図3の制御サーバ12のコンフィギュレータ22によって行われる例示的な動作のフローダイアグラム600を示している。図34の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信した複数のユーザ選択に基づき、図34のフローダイアグラム600に従って図1のノードクラスタ14をコンフィギュアする。ブロック602では、ユーザインタフェース200を介して受信したユーザ選択(例えば入力418の選択)に基づき、ワークロードコンフィギュレータ78は、クラウドコンピューティングシステム10の複数ノードのクラスタ14上での実行のためのワークロードを選択する。ワークロードは、ブロック602で、実際のワークロード及び合成テストワークロードを含む複数の利用可能ワークロードから選択される。実際のワークロードは、ここに述べられるように、制御サーバ12によってアクセス可能なメモリ(例えばメモリ90又はメモリ34)内に記憶されたコードモジュールを備えている。ブロック604では、ここに述べられるように、選択されたワークロードの処理が複数ノードのクラスタ14に分散されるように、選択されたワークロードを実行するために、コンフィギュレータ22は、クラウドコンピューティングシステム10の複数ノードのクラスタ14をコンフィギュアする。
一実施形態では、コンフィギュレータ22は、選択可能な実際のワークロードデータと選択可能な合成テストワークロードデータとを備えるユーザインタフェース200を提供し、ワークロードの選択は、選択可能な実際のワークロードデータ及び選択可能な合成テストワークロードデータの少なくとも一方に基づく。例示的な選択可能な実際のワークロードデータは、「実際のワークロード」に対応する図22の選択可能入力418と、図22の選択可能入力424,428と、を含み、例示的な選択可能合成テストワークロードデータは、「合成ワークロード」に対応する図22の選択可能入力418と、図23の選択可能入力434,436,441と、を含む。一実施形態では、ワークロードコンフィギュレータ78は、予め生成された合成テストワークロード、及び、選択可能合成テストワークロードデータのユーザ選択に基づくユーザ定義のワークロードパラメータのセット、の少なくとも一方を選択する。予め生成された合成テストワークロードは、制御サーバ12によってアクセス可能なメモリ(例えばメモリ90又はメモリ34)内に記憶されたコードモジュール(例えばライブラリ入力432を介してロードされる)を備える。シンセサイザ79は、例示的にはここに述べられるトレースファイルを介して提供されたユーザ定義のワークロードパラメータのセットの選択に基づき、合成テストワークロードを生成するように動作する。トレースファイルのユーザ定義のワークロードパラメータは、ここに述べられるように、合成テストワークロードの実行特性を識別する。
ここに述べられるように、例示的なユーザ定義のワークロードパラメータは、合成テストワークロードの命令の数、合成テストワークロードの命令のタイプ、合成テストワークロードの少なくとも1つの命令の実行に関連するレイテンシ、及び、合成テストワークロードの実行繰り返しの最大数の少なくとも1つを含み、命令のタイプは、整数命令、浮動小数点命令、及び、分岐命令の少なくとも1つを含む。一実施形態では、複数ノードのクラスタ14による合成テストワークロードの実行は、ここに述べられるように、複数ノードのクラスタ14による複合ワークロード又はプロプリエタリワークロード等の実際のワークロードの実行に関連する実行特性をシミュレートするように動作する。
図35は、合成テストワークロードでクラウドコンピューティングシステム10をコンフィギュアするために図1及び図3の制御サーバ12のコンフィギュレータ22によって行われる例示的な動作のフロー図610を示している。図35の説明全体に対して図1及び3が参照される。図示された実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信した複数のユーザ選択に基づき、図35のフロー図610に従って図1のノードクラスタ14をコンフィギュアする。ブロック612では、ユーザインタフェース200を介して提供されたユーザ定義のワークロードパラメータのセットに基づき、ワークロードコンフィギュレータ78のコードシンセサイザ79は、複数ノードのクラスタ14上での実行のための合成テストワークロードを生成する。ユーザ定義のワークロードパラメータのセット(例えばトレースファイルで提供される)は、ここに述べられるように、合成テストワークロードの実行特性を識別する。ブロック614では、ここに述べられるように、合成テストワークロードの処理が複数ノードのクラスタに分散されるように合成テストワークロードを実行するために、コンフィギュレータ22は、複数ノードのクラスタ14を合成テストワークロードでコンフィギュアする。
一実施形態では、合成テストワークロードの生成は、複数ノードのクラスタ14に関連する命令セットアーキテクチャ及びマイクロアーキテクチャの少なくとも一方を識別するコンピュータアーキテクチャデータに更に基づく。ここに述べられるように、一実施形態では、コンフィギュレータ22は、複数ノードのクラスタ14の各ノード16の命令セットアーキテクチャ及びマイクロアーキテクチャをコンフィギュレータ22が識別することができるように、コンピュータアーキテクチャデータをメモリ(例えばメモリ90)内に記憶している。従って、メモリ内に記憶されたコンピュータアーキテクチャデータに基づき合成テストワークロードがノードクラスタ14のノード16の特定のコンピュータアーキテクチャでの実行のためにコンフィギュアされるように、コンフィギュレータ22は、合成テストワークロードを生成する。一実施形態では、コードシンセサイザ79は、複数ノードのクラスタ14のノード16に関連する異なるコンピュータアーキテクチャに各々が基づく複数の合成テストワークロードを生成し、各コンピュータアーキテクチャは、命令セットアーキテクチャ及びマイクロアーキテクチャの少なくとも一方を含む。一実施形態では、コンフィギュレータ22は、選択可能合成テストワークロードデータを備えるユーザインタフェース200を提供し、ワークロードコンフィギュレータ78は、選択可能合成テストワークロードデータのユーザ選択に基づき、合成テストワークロードの生成のためのユーザ定義のワークロードパラメータのセットを選択する。例示的な選択可能合成テストワークロードデータは、「合成ワークロード」に対応する図22の選択可能入力418と、図23の選択可能入力434,436,441と、を含む。一実施形態では、ユーザ定義のワークロードパラメータのセットは、ユーザインタフェース(例えばユーザインタフェース200又はコンピュータ20のディスプレイ21上に表示されたユーザインタフェース)上に表示されたデータ構造(例えば図32のテーブル150)において識別され、このデータ構造は、図32のテーブル150に関してここに述べられるように、少なくとも1つのユーザ定義のワークロードパラメータを各々が識別する複数の修正可能入力フィールドを含む。一実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信したユーザ選択(例えば入力269〜276でのブート時間パラメータの選択)に基づき、ノードクラスタ14の少なくとも1つのノード16の修正されたハードウェアコンフィギュレーションを選択する。この実施形態では、コンフィギュレータ22は、修正されたハードウェアコンフィギュレーションを有する複数ノードのクラスタ14上で合成テストワークロードを実行するために、複数ノードのクラスタ14を合成テストワークロードでコンフィギュアし、修正されたハードウェアコンフィギュレーションは、ここに述べられるように、当該少なくとも1つのノード16においてコンピューティング能力の低下及びメモリ容量の低減の少なくとも一方を結果としてもたらす。
再び図23を参照すると、先にセーブされたワークロードが設定ライブラリタブ416を介してローカルメモリ(例えば図3のメモリ90)からロードされてよい。設定ライブラリタブ416を介してロードされたワークロードは、実際のワークロード、合成テストワークロード、カスタムスクリプト、又は、選択されたワークロードコンテナモジュールでの実行に適した任意の他のワークロードを含んでいてよい。ロードされたワークロードコンフィギュレーションは、ユーザインタフェース200のモジュール210へのユーザ入力に基づき修正されてよい。現在のワークロードコンフィギュレーションもまた、設定ライブラリタブ416を介してメモリ90にセーブされてよい。
図示された実施形態では、タブ417を介してクラウドスイートワークロードの集まりがロードされコンフィギュアされてもよい。クラウドスイートは、クラウドシステムを特徴付けるために利用される典型的なクラウドワークロードを備えるワークロードの集まりである。
図25を参照すると、バッチ処理モジュール212が選択されている。モジュール212へのユーザ入力に基づき、バッチプロセッサ80(図3)は、複数のワークロードのバッチ処理を開始するように動作する。また、バッチプロセッサ80は、ここに述べられるように、種々のネットワークコンフィギュレーション、種々のワークロードコンテナコンフィギュレーション、種々の合成ワークロードコンフィギュレーション、及び/又は、種々のノードコンフィギュレーション(例えばブート時間コンフィギュレーションなど)等の複数の異なるコンフィギュレーションを有する1つ以上のワークロードの実行を開始するようにも動作する。ユーザ入力に基づき、バッチプロセッサ80は、全てのワークロードの実行が完了するために手動の介入が必要のないように、各ワークロード及び/又はコンフィギュレーションの実行を順にノードクラスタ14上で開始する。更に、バッチプロセッサ80は、ユーザインタフェース200のモジュール212を介して受信したユーザ設定に基づき、1つ以上のワークロードが複数回実行され得るようにこれらをコンフィギュアしてよい。バッチプロセッサ80は、実際のワークロード及び/又は合成テストワークロードをバッチとして実行するように動作する。図示された実施形態では、例えば図47及び図48に関してここに述べられるように、自動的なシステムチューニングを可能にするために、複数のワークロードのバッチ処理から性能データがモニタされ集約される。
ワークロード及び/又はコンフィギュレーションのバッチのための実行の回数は、繰り返しカウントフィールド480を介して指定される。フィールド480へのユーザ入力に基づき、バッチプロセッサ80は、1つ以上のワークロードを指定された繰り返し回数だけ実行する。バッチシーケンステーブル482は、ノードクラスタ14によって実行されるべきバッチジョブをリストするディスプレイデータを備える。1つのバッチジョブは、指定された回数(フィールド480への入力に基づき指定される)の実行に適した1つ以上のワークロードを含む。一実施形態では、1つのバッチジョブは、1つ以上のワークロードでの指定された回数の実行に適した1つ以上のクラウドシステムコンフィギュレーションを含む。テーブル482には1つのバッチジョブのみがリストされているが、複数のバッチジョブがテーブル482に加えられてもよい。バッチプロセッサ80は、リストされた1つ以上のバッチジョブに対応する1つ以上の入力483のユーザ選択に基づき、リストされた1つ以上のバッチジョブを実行のために選択する。一実施形態では、選択された複数のバッチジョブは、それらがテーブル482内にリストされている順序で順に実行される。バッチジョブは例示的にはJSONファイルフォーマットの形態にあるが、他の適切なフォーマットが用いられてもよい。テーブル482内にリストされたバッチジョブは、入力484,486,488のユーザ選択に基づきそれぞれ編集され、加えられ、削除される。バッチシーケンスの順序は、選択したバッチジョブをテーブル482内に表示されたシーケンスにおいて異なる位置に移動させるための入力490,492のユーザ選択に基づき調節可能である。バッチシーケンス及びバッチジョブの実行に関連する他の設定は、選択可能入力494を介してメモリ(例えばメモリ34又はメモリ90)からロードされてよく、現在コンフィギュアされているバッチシーケンスは、選択可能入力496を介してメモリ(例えばメモリ34又はメモリ90)にセーブされてよい。入力484〜496は例示的には選択可能ボタンである。
図26を参照すると、モニタリングモジュール214が選択されている。モジュール214へのユーザ入力に基づき、データモニタコンフィギュレータ82(図3)は、ノードクラスタ14上でのワークロードの実行に際して性能データをモニタし収集するために用いられる1つ以上のデータモニタリングツールをコンフィギュアするように動作する。データモニタコンフィギュレータ82は、ノード16の性能、ワークロード、ワークロードコンテナ、及び/又は、ネットワーク18に関係するデータをモニタするモニタリングツールをコンフィギュアするように動作する。一実施形態では、データモニタコンフィギュレータ82によってコンフィギュアされるモニタリングツールは、市販のモニタリングツール及びユーザによって提供されるカスタムモニタリングツールの両方を含む。モニタリングツールは、クラウドコンピューティングシステム10内の複数のソース及び他の利用可能ノード16からのデータを収集する。例えば、モニタリングツールは、各ノード16でデータを収集するカーネルモード測定エージェント46及びユーザモード測定エージェント50(図2)を含む。また、制御サーバ12も、ノードクラスタ14上でのネットワーク及びコンピューティング性能をモニタするように動作する1つ以上のモニタリングツールを含む。一実施形態では、ユーザ入力(例えば図27のフィールド530,532への入力)に基づき、データモニタコンフィギュレータ82は、1つ以上のモニタリングツールがノード16からのデータをモニタするサンプリングレートを指定する。データモニタコンフィギュレータ82は、複数のデータモニタリングツールの動作をコンフィギュアし開始するように動作し、これらのモニタリングツールは、各ノード16上で提供されるアパッチハドゥープモニタリングツール(タブ500)、制御サーバ12上で提供されるガングリアツール(タブ502)、各ノード16上で提供されるシステムタップツール(タブ504)、及び、1つ以上のノード16上で提供される仮想メモリ統計やI/O統計のためのモニタリングツール(タブ506)を含む。
ハドゥープモニタリングツールは、ハドゥープワークロードコンテナモジュールがノード16上での実行のために選択されているときのワークロードコンテナレベルでノード16の性能をモニタする。ハドゥープモニタリングツールは、図26で識別されたモニタリングコンフィギュレーションに基づきハドゥープワークロードコンテナモジュールの性能に関連するデータをモニタするために、コンフィギュレータ22によって、ハドゥープワークロードコンテナモジュールと共に各ノード16へとロードされる。図26に示されるように、ハドゥープモニタリングツールに関連する種々のモニタリングパラメータが、幾つかの修正可能フィールド及びドロップダウンメニューへのユーザ入力に基づき、データモニタコンフィギュレータ82によってコンフィギュアされる。修正可能モニタリングパラメータは、デフォルトログレベル(ドロップダウンメニュー508への入力に基づき選択される)、収集されるデータの最大ファイルサイズ(フィールド510への入力に基づき選択される)、収集されるデータの全ファイルの合計サイズ(フィールド512への入力に基づき選択される)、ハドゥープワークロードコンテナのジョブトラッカ(JobTracker)ツールのログレベル(ドロップダウンメニュー514への入力に基づき選択される)、ハドゥープワークロードコンテナのタスクトラッカ(TaskTracker)ツールのログレベル(ドロップダウンメニュー516への入力に基づき選択される)、及び、ハドゥープワークロードコンテナのエフエスネームシステム(FSNamesystem)ツールのログレベル(ドロップダウンメニュー518への入力に基づき選択される)を含む。ログレベルは、情報(「INFO」)、警告(warning)、エラー等の、ハドゥープモニタリングツールを介して収集するデータのタイプを識別する。ハドゥープワークロードコンテナのジョブトラッカツール、タスクトラッカツール及びエフエスネームシステムツールは、データモニタコンフィギュレータ82によって追跡される種々の処理及びデータを含み、これらは、例えば、マスタノード16でのワークロードの開始と終了、ファイルシステム55(図2)に関連するメタデータ、及び、ワーカノード16でのマップリデュースタスクの開始を含む。他の適切なデータがハドゥープモニタリングツールで収集されてよい。
図27を参照すると、ガングリアモニタリングツールはまた、データモニタコンフィギュレータ82によって実装されたモニタリングコンフィギュレーションに基づき、クラウドコンピューティングシステム10の性能データをモニタし収集するように動作する。ガングリアは、システム性能の遠隔ライブヴューイング(例えば制御サーバ12を介して)並びに履歴統計を示すグラフ及びチャートを提供する既知のシステムモニタリングツールである。図示された実施形態では、ガングリアモニタリングツールは、データモニタコンフィギュレータ82で提供されたコンフィギュレーションデータに基づき制御サーバ12上で実行される。ガングリアでモニタされるデータの例としては、ワークロード実行に際してのノードプロセッサ40(CPUs)の処理ロード平均、ワークロード実行に際してのノードプロセッサ40とネットワーク18の利用(例えば停止又は非アクティブな時間(stall or inactive time)、処理に費やした時間のパーセンテージ、待ちに費やした時間のパーセンテージ等)、及び、他の適切なデータが挙げられる。ガングリアモニタリングツールは、選択可能入力520のユーザ選択に基づきデータモニタコンフィギュレータ82によって有効及び無効にされ、ユニキャスト又はマルチキャストの通信モードが、選択可能入力522のユーザ選択に基づきデータモニタコンフィギュレータ82によって選択される。ガングリアに関連する他のコンフィギュア可能モニタリングパラメータは、収集されたデータから生成されたグラフのデータリフレッシュ間隔(フィールド524への入力に基づき選択される)、クリーンナップスレッショルド(cleanup threshold)(フィールド526への入力に基づき選択される)、及び、メタデータを送信するための間隔(フィールド528への入力に基づき選択される)を含む。フィールド524,526,528へ入力されるデータは、例示的には秒の単位である。データモニタコンフィギュレータ82は、ノードプロセッサ40(CPU)に関連するワークロード実行に際してデータを収集するためにそれぞれのフィールド530,532にエンターされる値(例示的には単位は秒)に基づく収集(即ちサンプリング)間隔及び送信間隔と、ノード16上での処理ロード(例えば実行されているワークロードに関連する)と、ノードメモリ42の使用量と、通信ネットワーク18上でのノード16のネットワーク性能と、各ノード16のハードディスク使用量と、を調節するように動作する。
システムタップツールは、クラウドコンピューティングシステム10のノード16に関連するデータを抽出し、フィルタし、そしてまとめるように動作するシステムタップモニタリングソフトウェアを含むカーネルモード測定エージェント46(図2)である。一実施形態では、システムタップツールは、各ノード16上で実行される。システムタップは、リナックス(登録商標)(Linux(登録商標))ベースのオペレーティングシステムで実装される。システムタップは、カスタマイズされたモニタリングスクリプトが、例えばサンプリングレート並びにヒストグラムの生成及び表示を含むカスタマイズされたモニタリングコンフィギュレーションで各ノード16へとロードされることを可能にする。図28に示されるように、「スクリプト(Script)」タブが選択されているときに、システムタップは、入力536のユーザ選択に基づきデータモニタコンフィギュレータ82によって有効又は無効にされる。システムタップスクリプトファイルは、それぞれの入力(ボタン)540のユーザ選択に基づき、データモニタコンフィギュレータ82によって、制御サーバ12へダウンロードされ、テーブル538内での表示のために追加され、または、テーブル538内での表示から除去/削除される。テーブル538は、対応する1つ以上の入力539のユーザ選択に基づく選択のために利用可能なスクリプトファイルを表示するディスプレイデータを備えている。データモニタコンフィギュレータ82は、コンフィギュレータ22によるクラウドコンフィギュレーションの展開があった場合に、テーブル538の選択されたスクリプトファイルを各ノード16へとロードする。システムタップモニタリングツールのために、タブ534を介したユーザ入力及びユーザ選択に基づく他の適切なコンフィギュレーションオプション(Options)が利用可能であり、これらは、例えば、ディスクI/O(Disk I/O)、ネットワークI/O(Network I/O)及び診断(Diagnostics)のコンフィギュレーションを含む。
図29を参照すると、I/O時間タブ506が、追加的なモニタリングツールをコンフィギュアするためのユーザアクセスを提供しており、これらのツールは、1つ以上のノード16へとロードされる仮想メモリ統計(virtual memory statistics (VMStat))及び入力/出力統計(input/output statistics (IOStat))を含む。VMStatは、例えば、オペレーティングシステムで制御されるシステムメモリ及びブロックI/Oの利用可能性並びに利用、処理の性能、割り込み、ページング等に関連するデータを収集する。例えば、VMStatは、システムメモリ及び/又はメモリ制御器がリード/ライト動作を実行するためにビジーである時間又は待機している時間の長さ又はパーセンテージ等のシステムメモリの利用に関連するデータを収集する。IOStatは、例えば、オペレーティングシステムで制御されるストレージI/Oの統計(例えば利用、利用可能性等)に関連するデータを収集する。例えば、IOStatは、対応するノード16のプロセッサ40の処理コアが命令を実行するためにビジーである時間、又は、命令を実行するのに待機している時間のパーセンテージに関連するデータを収集する。VMStat及びIOStatは、それぞれの入力546,548の対応するユーザ選択に基づきデータモニタコンフィギュレータ82によって有効/無効にされ、サンプリングレート(即ちリフレッシュ間隔)は、フィールド550,552へとエンターされた値(例示的には単位は秒)に基づきデータモニタコンフィギュレータ82によって選択される。対応する「有効」にされた入力546,548のユーザ選択及びタブ506のフィールド550,552に入力された値に基づき、データモニタコンフィギュレータ82は、VMStatモニタリングツール及びIOStatモニタリングツールをコンフィギュアし、コンフィギュレータ22は、対応する「有効」にされた入力546,548のユーザ選択があった場合に、各ノード16へとツールをロードする。
データモニタコンフィギュレータ82でコンフィギュアされたこれらのモニタリングツールは、システム性能をモニタするために協働してクラウドコンピューティングシステム10のための動的計装(dynamic instrumentation)を提供する。コンフィギュアされたモニタリングツールを介して収集されたデータに基づき、コンフィギュレータ22は、例えばここに述べられるように、システムボトルネックを診断すると共に最適なシステムコンフィギュレーション(例えばハードウエア及びネットワークのコンフィギュレーション)を決定するように動作する。更に、データモニタコンフィギュレータ82は、各モニタリングツールをコンフィギュアするのに用いられるユーザ入力を受信すること及び各ツールからのモニタされたデータを表示することのために、ユーザインタフェース200上にモニタリングモジュール214を表示することによって、共通ユーザインタフェースを提供する。
図30を参照すると、選択可能データを備える制御及び状態モジュール216が選択されている。モジュール216へのユーザ入力に基づき、コンフィギュレータ22は、各ノード16へとロードされる複数のコンフィギュレーションファイル28を生成することによって、システムコンフィギュレーションをノードクラスタ14へとローンチする(即ち展開する)ように動作する。コンフィギュレータ22は、選択可能入力560のユーザ選択に基づき現在のシステムコンフィギュレーション(即ちモジュール202〜216で現在識別されているシステムコンフィギュレーション)の展開を開始する。コンフィギュレータ22のバッチプロセッサ80は、選択可能入力562のユーザ選択に基づき、1つ以上のワークロード及び/又はコンフィギュレーションのバッチ処理、即ち図25のテーブル482において識別されたバッチシーケンス、を開始する。コンフィギュレータ22のワークロードコンフィギュレータ78は、選択可能入力564のユーザ選択に基づき、図22のフィールド430において識別されたカスタムワークロード等のカスタムワークロードの実行を開始する。入力560,562,564のユーザ選択に基づくシステムコンフィギュレーションの展開があった場合、コンフィギュレータ22は、選択されたノード及びワットワークの設定、ワークロード、ワークロードコンテナモジュール、データモニタリングツール等で各選択されたノード16を自動的にコンフィギュアし、選択されたワークロード及び/又はバッチジョブをシステムコンフィギュレーション情報に基づき実行開始する旨をノードクラスタ14に指示する。コンフィギュレータ22は、それぞれ選択可能入力566,568のユーザ選択に基づき、ワークロード実行をその完了前に終了し又は一時停止する。コンフィギュレータ22は、選択可能入力570のユーザ選択に基づき、ノードクラスタ14上の現在実行途上にあるワークロードを再開する。コンフィギュレータ22は、選択可能入力572のユーザ選択に基づき、例えばノード16がバッチの次のワークロードの実行へと進むように、ノードクラスタ14上の現在実行途上にあるワークロードをスキップする。選択可能入力576の選択に基づき、コンフィギュレータ22のデータモニタコンフィギュレータ82は、モジュール214を介して識別されたデータモニタリングツール、設定及びコンフィギュレーションを実装する。一実施形態では、ノード16上にデータモニタリング設定を実装することは、各ノード16に提供される対応するコンフィギュレーションファイル28(図3)を生成することを含む。1つ以上のワークロード実行の完了に続き、即ちノードクラスタ14からのワークロード実行の結果及び全要求データの集まりの受信に続き、コンフィギュレータ22は、入力574のユーザ選択に基づき、ノードクラスタ14を終了させ又はシャットダウンする。入力560〜572及び入力582〜595は例示的にはボタンである。
ワークロード実行に際してシステム状態がディスプレイ578,580を介して提供される。ディスプレイ578,580は、ノードクラスタ14の各アクティブノード16に関連するワークロード実行の進行及び状態情報を示す。システム状態の表示は、ボタン595のユーザ選択に基づき有効又は無効にされる。
図示された実施形態では、ノードコンフィギュレータ72、ネットワークコンフィギュレータ74、ワークロードコンテナコンフィギュレータ76、ワークロードコンフィギュレータ78、バッチプロセッサ80、及び、データモニタコンフィギュレータ82(図3)の各々は、それらのそれぞれのコンフィギュレーション機能を実装するための入力560,562,564を介しての展開開始に続き、少なくとも1つの対応するコンフィギュレーションファイル28を自動的に生成する。コンフィギュレーションファイル28は、ここに述べられるように、ノードクラスタ14の各ノード16をコンフィギュアするための対応するコンフィギュレーションデータ及び命令を含む。一実施形態では、コンフィギュレータ22は、コンフィギュレーションファイル28の生成に続き、各ファイル28をノードクラスタ14の各ノード16へと自動的にロードする。代替的には、コンフィギュレータ22の各コンポーネント70〜84からのコンフィギュレーションデータ及び命令を含む単一のコンフィギュレーションファイル28が生成され、コンフィギュレータ22は、そのコンフィギュレーションファイル28の生成に続き、単一のコンフィギュレーションファイル28をノードクラスタ14の各ノード16へと自動的にロードする。入力560,562,564でコンフィギュレーション展開をローンチする際には、オペレーティングシステム、ワークロードコンテナモジュール及びワークロードにそれぞれ対応するイメージファイル92,94,96の各々も、各ノードへとロードされる。代替的には、コンフィギュレータ22による1つ以上のコンフィギュレーションファイル28及びイメージファイル92,94,96の生成に続いて、ノード16は、コンフィギュレーションファイル28及び/又はイメージファイル92,94,96をリトリーブ又は要求してよい。
ノード16に展開されたコンフィギュレーションファイル28、及び、図7の入力240を介してセーブされたシステムコンフィギュレーションファイルは、モジュール202〜216へのユーザ入力及びモジュール202〜216のデフォルト設定に基づき選択及びロードされた全てのコンフィギュレーションデータ及び情報を含む。例えば、ノードコンフィギュレータ72によって生成されたコンフィギュレーションファイル28は、ここに述べられるように、ノードクラスタ14に対して割り振り及び/又は使用するノード16の数、並びに、各ノード16のハードウェア要求及びブート時間を含む。ハードウェア要求は、例えば、RAMサイズ、CPUコアの数、及び、利用可能なディスクスペースを含む。ネットワークコンフィギュレータ74によって生成されたコンフィギュレーションファイル28は、例えば、全ノード16に適用されるグローバルデフォルト設定や、ノードクラスタ14の所与のグループにどのノード16が属するのかと、ノードグループ内のネットワークトラフィックのための設定と、ノードクラスタ14の他のノードグループに対するネットワークトラフィックのための設定と、を含むグループ設定や、任意のノード16間でのネットワークトラフィックのためのカスタム設定を含むノード固有設定や、図11〜17に関してここに述べられるような、レイテンシ、帯域、破損及び脱落したパケットの比率、破損及び脱落したパケットの相関及び分布、並びに、並び替えられたパケットの比率を含むネットワークパラメータや、他の適切なネットワークパラメータ及びネットワークトポロジコンフィギュレーションデータを含む。ワークロードコンテナコンフィギュレータ76によって生成されたコンフィギュレーションファイル28は、例えば、ワークロードを実行するために用いられる主たるワークロードコンテナソフトウェアのためのコンフィギュレーション設定を含む。ワークロードコンフィギュレータ78によって生成されたコンフィギュレーションファイル28は、例えば、ノード16上で実行されるように選択された、予め定義された即ち合成のワークロードコンテナのためのコンフィギュレーション設定を含む。コンフィギュレーション設定は、例えば、合成テストワークロードイメージファイル、最大命令カウント、最大繰り返しカウント、及び、I/O動作の速度、を含む合成テストワークロードコンフィギュレーションデータを含む。
入力560(又は入力562,564)を介した展開の開始に際して、コンフィギュレータ22は自動的に幾つかの動作を行う。一実施形態では、コンフィギュレータ22は、複数ノードのクラスタ14を選択するために所望のノード16を割り振って起動する。コンフィギュレータ22は、次いで、制御サーバ12のアドレス(例えばIPアドレス)を各ノード16に渡し、識別子及び/又はアドレスを各ノード16に割り当てたり渡したりする。一実施形態では、各ノード16は、制御サーバ12アドレスの受信に続き、制御サーバ12と自動的にコンタクトすると共にジョブ及び他のコンフィギュレーション情報を記述している1つ以上のコンフィギュレーションファイル28を要求するようにコンフィギュアされる。各ノード16は、任意の適切なメカニズムを用いて制御サーバ12と通信し、そのようなメカニズムは、例えば、制御サーバ12と直接通信するために指定されたRMIメカニズム(例えばウェブベースのインタフェース)や、アパッチHTTPサーバ又はトムキャットサーバを介して制御サーバ12とやりとりするためのHTTP要求や、遠隔シェルメカニズムを含む。
一実施形態では、コンフィギュレータ22は、ノードクラスタ14の各ノード16からの要求を受信するまで待機する。一実施形態では、あるノード16が起動しない場合、即ちそのノード16からの要求又は受信確認がないことに基づいて、コンフィギュレータ22はそのノード16を再起動するよう試みる。そのノード16が継続して起動しない場合には、コンフィギュレータ22は、その起動しないノード16の代わりに、ノードクラスタ14内に元々は含まれていなかった他の利用可能ノード16を識別し要求する。代替ノード16は、起動しないノード16と同一又は類似のハードウェア仕様及び処理能力を有する。一実施形態では、コンフィギュレータ22は、ワークロード実行の間ずっとノード16をモニタし続け、応答を停止したノード16(及びワークロード)を再起動する。コンフィギュレータ22は、データモニタリングの失敗や他の通信上の失敗に基づき、ワークロード実行に際して非応答のノード16を検出してもよい。
コンフィギュレータ22がノードクラスタ14の各ノード16からの要求を受信すると、コンフィギュレータ22は、各ノード16が次へ進む準備ができていると判断する。一実施形態では、コンフィギュレータ22は、次いで要求データを各ノード16に提供し、要求データは、1つ以上のコンフィギュレーションファイル28と、ノードクラスタ14における他のノード16のアドレス及びアイディー(IDs)と、イメージファイル92,94,96と、を含む。要求データを制御サーバ12から受信すると、ノードクラスタ14内の各ノード16の役割が決定される。一実施形態では、役割決定は、制御サーバ12によってなされ(例えば自動的に又はユーザ入力に基づいて)、ノード16へ伝えられる。代替的には、役割決定はノードクラスタ14が分散型アービトレーション(arbitration)メカニズムを用いることによってなされる。一実施形態では、役割決定はワークロードに依存する。例えば、ハドゥープワークロードコンテナで動作するノードクラスタ14に対しては、第1のノード16がマスタノード16(「ネームノード(namenode)」)として指定されてよく、残りのノード16がスレーブ/ワーカノード16(「データノード(datanodes)」)として指定されてよい。一実施形態では、ノード16の役割決定は、そのノード16のハードウェアプロパティに更に依存する。例えば、より低速なノードプロセッサ40を伴うノード16のグループがデータ記憶のためのデータベースサーバとして指定されてよく、より高速なノードプロセッサ40を伴うノード16の他のグループがワークロードを処理するための計算ノードとして指定されてよい。一実施形態では、役割決定は、コンフィギュレーションファイル28を介して提供されたユーザ入力に基づく。例えば、ユーザは、1つ以上の第1のノード16が第1のタスクを行い、1つ以上の第2のノード16が第2のタスクを行い、1つ以上の第3のノード16が第3のタスクを行う等、割り当てしてよい。
各ノード16は、1つ以上のコンフィギュレーションファイル28を介して受信したネットワークコンフィギュレーションデータに基づき、その仮想ネットワーク設定をコンフィギュアし始める。このことは、例えばここに述べられるように、ネットワーク遅延及び/又はパケット損失エミュレータを用いることを含む。各ノード16は、更に、ユーザ要求に係るソフトウェアアプリケーションをインストール及び/又はコンフィギュアすることを開始し、これらのアプリケーションは、ワークロードコンテナイメージファイル94を介して受信したワークロードコンテナコードモジュールを含む。一実施形態では、複数のワークロードコンテナモジュール(例えば複数のバージョン/製造業者)が各ノード16でプリインストールされており、選択されたワークロードコンテナモジュールのロケーションへのソフトリンクがコンフィギュレーションファイル28に基づき作成される。合成テストワークロードが制御サーバ12で生成され選択される場合には、各ノード16は、ワークロードイメージファイル96に基づき合成テストワークロードをアクティベートし始める。各ノード16は、更に、コンフィギュレーション情報に基づき診断ツール及びモニタリングツール(例えばガングリア、システムタップ、ヴィエムスタット(VMStat)、アイオースタット(IOStat)等)の実行を開始する。最後に、各ノード16は選択されたワークロードの実行を開始する。
図示された実施形態では、展開ローンチに続きコンフィギュレータ22及びノード16によって行われる各ステップは、ノードクラスタ14のノード16間で同期している。一実施形態では、制御サーバ12のコンフィギュレータ22が複数ノード16を連携させるが、代替的には、ノードクラスタ14の1つ以上のノード16が同期を管理してもよい。一実施形態では、ノード動作を連携させるために用いられる同期メカニズムにより、各ノード16は、制御サーバ12への状態フィードバックを定期的に提供する。従って、指定された時間内に報告のないノード16は、クラッシュしたものとみなされ、コンフィギュレータ22によって再起動される。また、コンフィギュレータ22は、ジョブの進行を示すために、図30のディスプレイ578,580を介する等してユーザに状態を提供してもよい。
ジョブが完了すると、データアグリゲータ84(図3)が各ノード16からのデータを収集するように動作する。具体的には、各ノード16のモニタリングツールによって収集されたデータ(例えばジョブ出力、性能統計、アプリケーションログ等、モジュール214参照)が、制御サーバ12(例えば図3のメモリ90)によってアクセスされる。一実施形態では、データアグリゲータ84が各ノード16からデータをリトリーブする。他の実施形態では、各ノード16がデータアグリゲータ84にデータを転送する。図示された実施形態では、図31(図3も参照)に示されるように、データは、ログファイル98の形態で各ノード16から制御サーバ12へ通信される。各ログファイル98は、各ノード16の種々のモニタリングツールの1つ以上によって収集されたデータを含む。ここに述べられるように、データアグリゲータ84は、ログファイル98からの収集データを操作し解析すると共に集約されたデータをグラフ、ヒストグラム、チャート等の形態でユーザに対して表示する(例えば図1のディスプレイ21を介して)ように動作する。また、データアグリゲータ84は、図27に記載のガングリアモニタリングツール等の、制御サーバ12上に提供されたモニタリングツールからのデータを集約する。
図30を再び参照すると、データアグリゲータ84は、各ノード16からの性能データを収集及び集約すると共にモジュール216の対応する入力582〜594のユーザ選択に基づきログ、統計、グラフ及びデータの他の表現を生成するように動作する。データアグリゲータ84は、入力586のユーザ選択に基づき、ログファイル98内に提供される統計上の生データ及び他のモニタリングツールで提供される統計上の生データを集める。データアグリゲータ84は、入力588のユーザ選択に基づき、全てのログファイル98をノード16からローカルファイルシステムへとダウンロードし、これらのログファイル98は更にそこで解析されてよく、あるいは履歴トレンド解析のために記憶されてよい。データアグリゲータ84は、入力590のユーザ選択に基づき、システムタップモニタリングツールに関連するログファイルのみをリトリーブする。データアグリゲータ84は、入力582のユーザ選択に基づき、ノード16によって提供されたログファイル98の1つ以上をユーザインタフェース200上に表示する。データアグリゲータ84は、入力584のユーザ選択に基づき、統計的データをグラフ及びチャートの形態でユーザインタフェース200上に表示する。統計的データは、例えば、ネットワーク18の性能、ノード16によるネットワーク通信の性能、ノード16の種々のハードウェアコンポーネントの性能、ワークロード実行、及び、ノードクラスタ14全体の性能に関連する性能データを含む。データアグリゲータ84は、入力592のユーザ選択に基づき、ノード16及び他のモニタリングツールから収集された種々のデータを示す1つ以上のグラフをユーザインタフェース200上での表示のために生成する。
一実施形態では、データアグリゲータ84は、モニタリングモジュール214においてコンフィギュアされたモニタリングツールでのモニタリングのために選択されたデータに基づき、表示するデータを選択する。他の実施形態では、データアグリゲータ84は、制御及び状態モジュール216へのユーザ入力に基づき、集約され表示されるデータを選択する。例えば、ユーザは、それぞれ入力582,584,592を選択することで、ログファイル98、統計的データ及びグラフの何れを表示するのかを選択する。一実施形態では、データアグリゲータ84は、ユーザインタフェース200へのユーザ入力に基づき、どのデータをグラフで表示するのかを選択し、またそのデータをどのように表示するのか(例えば線グラフ、棒グラフ、ヒストグラム等)を選択する。入力592の選択に基づき表示されるグラフィカルデータの例としては、プロセッサ速度対ネットワーク遅延追加、ワークロード実行速度対プロセッサコア数、ワークロード実行速度対コア当たり処理スレッド数、特定のノード16によって送信又は受信されたデータパケットの数の時間変化、通信された所定サイズのデータパケットの数の時間変化、ネットワークスタック内でデータパケットによって消費された時間、等が挙げられる。
(クラウドコンピューティングシステムのノードのブート時間パラメータをコンフィギュアすること)
図36は、クラウドコンピューティングシステム10のブート時間コンフィギュレーションをコンフィギュアするために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図620を示している。図36の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は、ユーザインタフェース200を介して受信した複数のユーザ選択に基づき、図36のフロー図620に従って図1のノードクラスタ14をコンフィギュアする。ブロック622では、コンフィギュレータ22は、選択可能ブート時間コンフィギュレーションデータを備えるユーザインタフェース200を提供する。例示的な選択可能ブート時間コンフィギュレーションデータは、図10の表示画面の選択可能入力269,271及びフィールド268,270,272,274,276を含む。ブロック624では、コンフィギュレータ22のノードコンフィギュレータ72は、選択可能なブート時間コンフィギュレーションデータの少なくとも1つのユーザ選択に基づき、クラウドコンピューティングシステム10の複数ノードのクラスタ14の少なくとも1つのノード16のためのブート時間コンフィギュレーションを選択する。
ブロック626では、コンフィギュレータ22は、選択されたブート時間コンフィギュレーションで複数ノードのクラスタ14の少なくとも1つのノード16をコンフィギュアして、それら少なくとも1つのノード16の少なくとも1つのブート時間パラメータを修正する。例えば、当該少なくとも1つのブート時間パラメータは、ワークロードの実行に際して有効にされている当該少なくとも1つのノード16の処理コアの数(フィールド268への入力に基づく)、及び/又は、当該少なくとも1つのノード16のオペレーティングシステム44(図2)によってアクセス可能なシステムメモリの量(フィールド270,272への入力に基づく)を含む。更に、修正されたブート時間パラメータは、フィールド274へ入力された命令の数及び対応するカスタム入力271の選択に基づき、当該少なくとも1つのノード16によって実行されるべきワークロードの複数の命令のサブセットを識別してよい。従って、ワークロードは、当該少なくとも1つのノード16の当該少なくとも1つのブート時間パラメータの修正に基づき、複数ノードのクラスタ14で実行される。一実施形態では、コンフィギュレータ22がワークロードの実行を開始し、複数ノードのクラスタ14は、当該少なくとも1つのブート時間パラメータの修正に基づき低下したコンピューティング能力及び低減されたメモリ容量の少なくとも一方の下でワークロードを実行する。具体的には、フィールド268及び対応する入力271の選択に伴う処理コア数の修正は、コンピューティング能力を低下させることに役立ち、フィールド270,272及び対応する入力271の選択に伴うシステムメモリ数の修正は、メモリ容量を低減することに役立つ。
一実施形態では、ノードコンフィギュレータ72は、選択可能ブート時間コンフィギュレーションデータの少なくとも1つのユーザ選択に基づき、複数ノードのクラスタ14の第1のノード16のための第1のブート時間コンフィギュレーションと、複数ノードのクラスタ14の第2のノード16のための第2のブート時間コンフィギュレーションと、を選択する。この実施形態では、第1のブート時間コンフィギュレーションは、第1のノード16の少なくとも1つのブート時間パラメータの第1の修正を含み、第2のブート時間コンフィギュレーションは、第2のノード16の少なくとも1つのブート時間パラメータの第2の修正を含み、第1の修正は第2の修正とは異なる。一例では、第1のブート時間コンフィギュレーションは、第1のノード16の2つの処理コアを有効にすることを含み、第2のブート時間コンフィギュレーションは、第2のノード16の3つの処理コアを有効にすることを含む。各ノード16のブート時間パラメータの他の適切な修正が、上述したように提供されてよい。
図37は、ノード16のブート時間コンフィギュレーションをコンフィギュアするために図1の複数ノードのクラスタ14の1つのノード16によって行われる例示的な動作のフロー図630を示している。図37の説明全体に対して図1及び図3が参照される。ブロック632では、複数ノードのクラスタ14の1つのノード16は、クラウドコンフィギュレーションサーバ12によって提供されたブート時間コンフィギュレーション調節要求に基づき、そのノード16の少なくとも1つのブート時間パラメータを修正する。図示された実施形態では、ブート時間コンフィギュレーション調節要求は、コンフィギュレーションファイル28(図3)内に提供され、ここに述べられるように、図10の入力270,271及びフィールド268,270,272,274,276を介してなされたユーザ選択に基づき、ノード16の1つ以上のブート時間パラメータに対して要求された修正を識別する。図示された実施形態では、ノード16は、当該少なくとも1つのブート時間パラメータを修正する前の初期ブート時間コンフィギュレーションと、当該少なくとも1つのブート時間パラメータを修正することに続く修正されたブート時間コンフィギュレーションと、を有する。修正されたブート時間コンフィギュレーションは、ここに述べられるように、ノード16のコンピューティング能力の低下及びメモリ容量の低減の少なくとも一方を提供する。
ブロック634では、ブート時間コンフィギュレーション調節要求に従って少なくとも1つのブート時間パラメータが既に修正されていることを、ノード16のリブートに続いてそのノード16が決定すると、そのノード16は、そのノード16によるそのノード16のリブートに続き、ワークロードの少なくとも一部を実行する。一実施形態では、ノード16は、ワークロードの当該少なくとも一部をクラウドコンフィギュレーションサーバ12から取得し、当該少なくとも1つのブート時間パラメータへの修正に基づきワークロードを実行する。一実施形態では、ノード16による決定は、当該少なくとも1つのブート時間パラメータへの修正の後で且つノード16のリブートより前にセットされたフラグ(例えば1ビット又は2ビット以上)に基づく。セットされたフラグは、当該少なくとも1つのブート時間パラメータが既に修正されていることを、ノード16の再起動に続いてノード16に示すので、ノード16は、当該少なくとも1つのブート時間パラメータを修正し再度リブートすることを試みない。一実施形態では、決定は、ノード16のブート時間コンフィギュレーションと、ブート時間コンフィギュレーション調節要求で識別された要求ブート時間コンフィギュレーションとの比較に基づく。例えば、ノード16は、ノード16の現在のブート時間パラメータをブート時間コンフィギュレーション調節要求で識別された要求ブート時間パラメータと比較し、これらのパラメータが同じである場合には、当該少なくとも1つのブート時間パラメータを修正することと再度リブートすることとを試みない。一実施形態では、新たなブート時間コンフィギュレーション調節要求を含む新たなコンフィギュレーションファイルをノード16が受信すると、ノード16は、新たなブート時間コンフィギュレーション調節要求に従うブート時間パラメータの修正を実装する前に、フラグをクリアする。
図38は、ノードクラスタ14の1つ以上のノード16のブート時間コンフィギュレーションをコンフィギュアするためにクラウドコンピューティングシステム10によって行われる例示的な詳細動作のフロー図650を示している。図38の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は図38のブロック652〜656を行い、各コンフィギュアされたノード16は図38のブロック658〜664を行う。ブロック652では、コンフィギュレータ22は、ここに述べられるように、ユーザインタフェース200(図10)を介してエンターされたユーザ定義のブート時間パラメータに基づき、対応するノード16のための1つ以上のブート時間コンフィギュレーションファイル28を作成する。一実施形態では、ブート時間コンフィギュレーションファイル28は、ノード16の1つ以上のコンフィギュレーションファイルのパッチであり、あるいはタスク固有ファイル/データフォーマットの形態にある。ブロック654では、コンフィギュレータ22は、複数ノードのクラスタ14を起動する(例えばここに述べられるように図30の入力560又は入力562,564のユーザ選択があった場合)。ブロック656では、コンフィギュレータ22は、1つ以上のブート時間コンフィギュレーションファイルを複数ノードのクラスタ14の適切なノード16に分散させる。一実施形態では、各ノード16がブート時間コンフィギュレーションファイルを受信し、各ファイルは、それぞれのノード16に対して固有のブート時間パラメータを識別してよい。一実施形態では、コンフィギュレーションファイル28は、セキュアシェル(secure shell)(SSH)ファイル転送を介して、fptクライアントを介して、アマゾンAWSにおけるユーザデータストリングを介して、又は、他の適切なファイル転送メカニズムを介して、ノードへと転送される。他の実施形態では、ブート時間コンフィギュレーション情報に対して、ノード16が各々制御サーバ12又はマスタノード16にクエリする(query)(例えばHTTP要求を介して)。ブロック658では、ノード16は、受信したブート時間コンフィギュレーションファイル28において指定された所望のブート時間パラメータ変更を適用する。一例では、ノード16は、ノード16のブートファイルに対してパッチを適用し、あるいはノード16は、ユーティリティを用いて、受信したブート時間コンフィギュレーションファイル28において指定されたブート時間パラメータに基づきノード16のためのブートファイルの新たなセットを生成する。一実施形態では、ブロック658で所望のブート時間変更を適用する間または適用する場合、ノード16は、ここに述べられるように、ブート時間コンフィギュレーションが既に更新されている旨を示す状態フラグをセットする。ブロック660では、ノード16は、ブート時間コンフィギュレーション変更の適用に続き、リブートを強制する。リブートに際して、ノード16は、受信したブート時間コンフィギュレーションファイル28において指定されたブート時間パラメータ変更でノード16のブート時間コンフィギュレーションが既に更新されていることをブロック662で決定する。一実施形態では、ノード16は、ここに述べられるように、ブロック658でセットされた状態フラグに基づき、又は、ノード16の現在のブート時間コンフィギュレーションとブート時間コンフィギュレーションファイル28との比較に基づき、ブート時間コンフィギュレーションが更新されていることをブロック662で決定する。従って、ノード16は、ブート時間コンフィギュレーション変更を何度も適用する可能性を低減する。ブロック664では、ノード16は、ワークロード又は制御サーバ12から受信したワークロードの一部の実行を含め、他のタスクの実行を開始する。
(ネットワークコンフィギュレーションを修正及び/又はエミュレートすること)
図39は、クラウドコンピューティングシステム10において割り振られた複数ノードのクラスタ14のネットワークコンフィギュレーションを修正するために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図700を示している。図39の説明全体に対して図1及び図3並びに図11〜17が参照される。ブロック702では、ネットワークコンフィギュレータ74は、ユーザインタフェース200を介して受信したユーザ選択に基づき、クラウドコンピューティングシステム10の複数ノードのクラスタ14の少なくとも1つのノード16のネットワークコンフィギュレーションを修正する。ブロック702で当該少なくとも1つのノード16のネットワークコンフィギュレーションを修正することは、当該少なくとも1つのノード16の通信ネットワーク18(図1)上でのネットワーク性能を修正することを含む。ネットワーク性能は、ここに述べられるように、パケット通信速度、脱落又は破損したパケット、並び替えられたパケット等のネットワークパラメータを修正することによって修正される。図示された実施形態では、ネットワークコンフィギュレータ74は、図11〜17に関してここに述べられるように、ユーザインタフェース200のモジュール280を介して提供されたユーザ選択又はユーザ入力に基づきネットワークコンフィギュレーションファイル28(図3)を生成することによって、及び、ネットワークコンフィギュレーションファイル28をノード16に提供することによって(又はノード16がファイル28をフェッチすることによって)、ノード16のネットワークコンフィギュレーションを修正する。ノード16は、次いで、アクセスされたネットワークコンフィギュレーションファイル28において指定されたノード16のネットワークコンフィギュレーションへの変更を実装する。図示された実施形態では、当該少なくとも1つのノード16は、修正前の初期ネットワークコンフィギュレーションと、修正後の修正されたネットワークコンフィギュレーションと、を有する。一実施形態では、修正されたネットワークコンフィギュレーションは、選択されたワークロードの実行に際して通信ネットワーク18上での当該少なくとも1つのノード16のネットワーク性能を低下させる。代替的には、修正されたネットワークコンフィギュレーションは、例えば図11のフィールド302を介して指定された通信遅延値を減少させること等によって、当該少なくとも1つのノード16のネットワーク性能を高める。
一実施形態では、ネットワークコンフィギュレータ74は、当該少なくとも1つのノード16の少なくとも1つのネットワークパラメータを変更してワークロードの実行に際しての通信ネットワーク18上での当該少なくとも1つのノード16のネットワーク性能を制限することによって、当該少なくとも1つのノード16のネットワークコンフィギュレーションを修正する。一実施形態では、変更される当該少なくとも1つのネットワークパラメータは、パケット通信遅延、パケット損失率、パケット重複率、パケット破損率、パケット並び替え率、及び、パケット通信速度の少なくとも1つを備え、これらはここに述べられるようにタブ282〜294を介してユーザによって選択可能である。従って、ネットワークコンフィギュレータ74は、ネットワークパラメータへの修正(例えば増大されたノード16間の通信遅延、増大されたパケット損失又はパケット破損率等)を識別するコンフィギュレーションファイル28へのノード16アクセスを生成し提供することによって、当該少なくとも1つのノード16のネットワーク性能を制限する。
図示された実施形態では、コンフィギュレータ22は、選択可能ネットワークコンフィギュレーションデータを備えるユーザインタフェース200を提供し、ネットワークコンフィギュレータ74は、ここに述べられるように、選択可能ネットワークコンフィギュレーションデータの少なくとも1つのユーザ選択に基づき、当該少なくとも1つのノード16のネットワークコンフィギュレーションを修正する。選択可能ネットワークコンフィギュレーションデータの例としては、図11の入力298〜301及び対応するフィールド302〜312、図12の入力313,314及び対応するフィールド315,316、図13の入力317,318及び対応するフィールド319,320、図14の入力321及び対応するフィールド322、図15の入力323,324及び対応するするフィールド325,326、図16の入力327〜330,335〜338及び対応するフィールド331〜334、並びに、図17の入力340及び対応するフィールド342が挙げられる。一実施形態では、ネットワークコンフィギュレータ74は、選択可能ネットワークコンフィギュレーションデータの少なくとも1つのユーザ選択に基づき、複数ノードのクラスタ14の第1のノード16の第1のネットワークパラメータを変更して(即ちネットワークコンフィギュレーションファイル28を介して)ワークロードの実行に際しての通信ネットワーク18上での第1のノード16のネットワーク性能を制限することによって、及び、複数ノードのクラスタ14の第2のノード16の第2のネットワークパラメータを変更してワークロードの実行に際しての通信ネットワーク18上での第2のノード16のネットワーク性能を制限することによって、ネットワーク性能を修正する。一実施形態では、第1のネットワークパラメータは第2のネットワークパラメータとは異なる。従って、ネットワークコンフィギュレータ74は、複数ノードのクラスタ14の異なるノード16の異なるネットワークパラメータを修正してワークロード実行に際して複数ノードのクラスタ14の所望のネットワーク特性を達成するように動作する。
図示された実施形態では、図40〜42に関してここに述べられるように、コンフィギュレータ22は、更に、エミュレートされたノードクラスタのネットワークコンフィギュレーションと実質的に一致するネットワークコンフィギュレーションを有するクラウドコンピューティングシステム10のための複数ノードのクラスタ14を選択するように動作する。ここで参照されるとき、エミュレートされたノードクラスタとは、制御サーバ12によって選択されたノードクラスタ14によりエミュレートされることになる既知のネットワークコンフィギュレーションを有するネットワークノードの任意のグループを含むものである。エミュレートされたノードクラスタの各ノードは、1つ以上の処理デバイスと、これら処理デバイスによってアクセス可能なメモリと、を含む。一実施形態では、エミュレートされたノードクラスタは、コンフィギュレータ22によって選択可能な利用可能ノード16を含まない。例えば、エミュレートされたノードクラスタは、ユーザによって提供されるノード等の、1つ以上のデータセンタ内に収容された利用可能ノード16からは離れており且つコンフィギュレータ22によってアクセス可能なノードを含む。代替的には、エミュレートされたノードクラスタは、利用可能ノード16のグループを含んでいてもよい。エミュレートされたノードクラスタのネットワークトポロジ及びネットワーク性能特性は、以下に述べられるように、1つ以上のネットワーク性能テストを用いて得られる。図40を参照すると、エミュレートされたノードクラスタのネットワーク特性と実質的に一致するネットワーク特性を有する複数ノードのクラスタ14を選択するために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図710が示されている。図40の説明全体に対して図1及び図3が参照される。図示された実施形態では、コンフィギュレータ22は、ここに述べられるように、ユーザインタフェース200を介して受信したユーザ選択に基づき、図40のフロー図710に従い図1のノードクラスタ14を選択しコンフィギュアする。ブロック712では、ノードコンフィギュレータ72は、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーションと、複数の利用可能ノード16の実際の通信ネットワークコンフィギュレーションと、を比較する。ブロック714では、ノードコンフィギュレータ72は、ブロック712の比較に基づき、通信ネットワーク18に結合された複数の利用可能ノード16からクラウドコンピューティングシステム10のための複数ノードのクラスタ14を選択する。選択された複数ノードのクラスタ14は、複数の利用可能ノード16のサブセットを含む。ブロック716では、ノードコンフィギュレータ72は、ここに述べられるように、複数ノードのクラスタ14の各ノード16が複数ノードのクラスタ14の他のノード16とワークロードの処理を共有するよう動作するようにワークロードを実行するために、選択された複数ノードのクラスタ14をコンフィギュアする。一実施形態では、ここに述べられるように、ブロック712〜716は、図30のモジュール216へのユーザ入力に基づくクラウドコンフィギュレーションの展開があった場合に開始される。
図示された実施形態では、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーション及び複数の利用可能ノード16の実際の通信ネットワークコンフィギュレーションは、各々、対応するノードに関連する通信ネットワーク特性を含む。ノードコンフィギュレータ72は、エミュレートされたノードクラスタの通信ネットワーク特性と、複数の利用可能ノード16の通信ネットワーク特性と、の間での類似性に基づき、複数ノードのクラスタ14を選択する。例示的な通信ネットワーク特性はネットワークトポロジ及びネットワークパラメータを含む。例示的なネットワークパラメータは、ノード間での通信速度及びレイテンシ、ノード間でのネットワーク帯域、並びに、パケットエラー率を含む。ネットワークトポロジは、ノードの物理的及び論理的な接続性、ノードクラスタのどのノード及びノードのグループが物理的に近くに位置しているのかあるいは互いに離れているのかの識別、ノード間の接続のタイプ(光ファイバリンク、衛星接続等)、並びに、他の適切な特性を含む。パケットエラー率は、脱落又は失われたパケット、破損したパケット、並び替えられたパケット、重複したパケット等を含む。一実施形態では、ノードコンフィギュレータ72は、図41に関してここに述べられるように、エミュレートされたノードクラスタの通信ネットワーク特性を優先させ、優先させた通信ネットワーク特性に基づき複数ノードのクラスタ14を選択する。
図示された実施形態では、ノードコンフィギュレータ72は、利用可能ノード16上でのネットワーク性能テストを開始して、利用可能ノード16の実際の通信ネットワークコンフィギュレーションを識別する。任意の適切なネットワーク性能テストが用いられてよい。例えば、ノードコンフィギュレータ72は、利用可能ノード16間でのネットワーク性能に関してテストしデータを収集するために、パケットインターネットグロウパ(Packet Internet Groper)(「ピング(Ping)」)等のコンピュータネットワーク管理(administration)ユーティリティを実行するように要求を各利用可能ノード16へ送ってよい。各ノード16によって提供されたピングテストの結果に基づき、ノードコンフィギュレータ72は、利用可能ノード16の実際の通信ネットワークコンフィギュレーションを決定する。一実施形態では、ピングは、実際の通信ネットワークコンフィギュレーションを得るために他のネットワーク性能テストと共に用いられる。コンフィギュレータ22は、ノード16から受信したネットワーク性能テスト結果を集約して、利用可能ノード16の実際の通信ネットワークコンフィギュレーションを識別するネットワーク記述子(descriptor)データファイル又はオブジェクト(例えば図42のデータファイル750を参照)を作成する。一実施形態では、コンフィギュレータ22は、ユーザインタフェース200へのユーザ入力に基づき、ネットワーク性能テストを開始し結果を集約する。例えば、図30のボタン586のユーザ選択又は他の適切な入力により、コンフィギュレータ22がテストを開始して結果を集約してよい。
図示された実施形態では、ノードコンフィギュレータ72はまた、エミュレートされたノードクラスタの通信ネットワークコンフィギュレーションを識別する1つ以上のデータファイル(例えば図42のデータファイル750)にアクセスする。一実施形態では、これら1つ以上のデータファイルは、エミュレートされた複数ノードのクラスタに1つ以上のネットワーク性能テスト(例えばピングテスト等)を実装することによって、制御サーバ12のオフラインで得られる。一実施形態では、コンフィギュレータ22は、エミュレートされたノードクラスタに関連するデータファイルをアクセス可能メモリ(例えば図3のメモリ90)へとロードする。例えば、コンフィギュレータ22は、図7のテーブル226への入力を介して等のようにユーザインタフェース200を介してユーザがデータファイルのロケーションを識別することに基づきデータファイルをロードしてよい。従って、コンフィギュレータ22は、利用可能ノード16に関連して生成されたデータファイルにおいて識別された通信ネットワーク特性と、エミュレートされたノードクラスタに関連してアクセスされたデータファイルと、を比較することによって、図40のブロック712で比較を行う。
図42に例示的なデータファイル750が示されている。データファイル750は、制御サーバ12によってアクセス可能な利用可能ノード16又はエミュレートされたノードクラスタのノード等の任意の適切なネットワークノードのネットワークコンフィギュレーションを識別する。図示されるように、データファイル750は、例示的にはグループA,B,…,Mを含むノードの幾つかのグループ(groups)を識別する。各グループA,B,Mは、データセンタの同じ物理的ラック上のノード等の物理的に互いに近くにある複数のノードを含む。行6〜11はグループAのノードによるネットワーク通信に関連するネットワークパラメータを識別し、行15〜22はグループBのノードによるネットワーク通信に関連するネットワークパラメータを識別し、行27〜34はグループMのノードによるネットワーク通信に関連するネットワークパラメータを識別する。例えば、行6及び行7は、グループAのノード間での通信に関連するレイテンシ(latency)、帯域(bandwidth)及びエラー率(error rate)を識別する。行8及び行9は、グループAノードとグループBノードとの間での通信に関連するレイテンシ、帯域及びエラー率を識別する。同様に、行10及び行11は、グループAノードとグループMノードとの間での通信に関連するレイテンシ、帯域及びエラー率を識別する。グループB及びグループMのノードによる通信に関連するネットワークパラメータも同様にデータファイル750内で識別される。データファイル750は、ここに述べられるように、ネットワークトポロジデータ及び他のネットワークパラメータ等の追加的なネットワークコンフィギュレーションデータを識別してもよい。
図41を参照すると、エミュレートされたノードクラスタのネットワーク特性と実質的に一致するネットワーク特性を有する複数ノードのクラスタ14を選択するために、図1及び図3のコンフィギュレータ22を含む1つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図720が示されている。図41の説明全体に対して図1及び図3が参照される。ブロック722では、ネットワークコンフィギュレーションが、エミュレートされたノードクラスタの各ノードから要求される。例えば、ここに述べられるように、ネットワーク性能テストは各ノードで開始され、テスト結果がコンピューティングデバイスによって受信される。ブロック724では、エミュレートされたノードクラスタのノードから受信した、性能テストの結果としてのネットワークコンフィギュレーションデータに基づき、ネットワークコンフィギュレーションデータファイル(例えばデータファイル750)が作成される。ここに述べられるように、ブロック722,724は、例えば図1のコンピュータ20による等して、クラウドコンピューティングシステム10から離れたコンピューティングシステムによってオフラインで実行されてよい。
ブロック726では、コンフィギュレータ22は、各利用可能ノード16から又はデータセンタの利用可能ノード16のグループからネットワークコンフィギュレーションを要求する。例えば、コンフィギュレータ22は、ここに述べられるように、利用可能ノード16上でネットワーク性能テストを開始し、コンフィギュレータ22は、ネットワーク性能テストからもたらされるコンフィギュレーションデータを集約する。ブロック728では、コンフィギュレータ22は、利用可能ノード16から受信したネットワークコンフィギュレーションデータに基づき、ネットワークコンフィギュレーションデータファイル(例えばデータファイル750)を作成する。従って、コンフィギュレータ22は、エミュレートされたノードクラスタを記述しているデータファイルと、利用可能ノード16を記述しているデータファイルと、を含む2つのコンフィギュレーションデータファイルへのアクセスを有する。コンフィギュレータ22は、ブロック730に示されるように、2つのデータファイル内で識別されたネットワークプロパティの比較に基づき、エミュレートされたノードクラスタと類似したネットワーク特性を有する適切なノード16を利用可能ノード16から選択する。一実施形態では、コンフィギュレータ22は、ここに述べられるように、エミュレートされたノードクラスタ及び利用可能ノード16のノードハードウェア特性(例えば処理能力、メモリ容量等)の比較に基づき、ブロック730で適切なノードを更に選択する。
ブロック732では、コンフィギュレータ22は、エミュレートされたノードクラスタに関連するデータファイル内で識別された所望のネットワークコンフィギュレーションパラメータに基づき、選択されたノード16をチューニングする(tunes)。例えば、選択されたノード16のネットワーク特性は、エミュレートされたノードクラスタのネットワーク特性に厳密には一致していなくてよく、更なるネットワークチューニングが必要になり又は所望されることもある。従って、オペレーティングシステム44、ネットワークトポロジドライバ48及び/又は他のネットワークコンポーネント並びに各ノード16のネットワークパラメータがチューニングされて、エミュレートされたノードクラスタの所望のネットワーク性能が更に達成される。一実施形態では、コンフィギュレータ22は、データファイル内で識別されたネットワーク特性に基づき、選択されたノード16を自動的にチューニングする。一実施形態では、ネットワークパラメータは、例えば図11〜17に関してここに述べられるように、ユーザインタフェース200のモジュール206を介して提供されたユーザ入力に基づき更にチューニングされる。
例示的な一実施形態では、コンフィギュレータ22は、ブロック730で以下の「ベストマッチング(best matching)」技術を用いて適切なノード16を選択するが、他の適切な方法又はアルゴリズムが提供されてもよい。コンフィギュレータ22は、データファイルのネットワークコンフィギュレーションデータ(例えばレイテンシ−p、帯域−p、エラー率−p)を比較するときにZ個のネットワークプロパティ(Z network properties)(即ち特性)を考慮し、ノードX,X,…,Xはエミュレートされたノードクラスタのノードである。コンフィギュレータ22は、ネットワークプロパティp,p,…,pに関してノードX,X,…,Xに最も類似している利用可能ノード16のサブセット(例えばノードY,Y,…,Y)を選択する。この選択を行うために他のアルゴリズムが用いられてもよいが、利用可能ノード16の適切なサブセットを発見可能なようにコンフィギュレータ22によって実装される例示的アルゴリズムは、ネットワークプロパティに優先順位を付けることを含む。例示的な優先順位付けにおいては、プロパティpはプロパティpよりも高い優先順位を有しており、プロパティpはプロパティpk+1よりも高い優先順位を有する。従って、図示された例では、ノード選択に際してレイテンシは帯域よりも高い優先順位を与えられ、帯域は、ノード選択に際してエラー率よりも高い優先順位を与えられる。ネットワークノードX及びYの間でネットワークプロパティNの値をリターンするために、入力N(ネットワークプロパティ)、X(ノード)及びY(ノード)をパラメータとする関数P(N,X,Y)がコンフィギュアされてよい。そのような関数は、ブロック724,728で作成されたネットワーク記述データファイル/オブジェクト(例えばデータファイル750)を用いて実装されてよい。ノードL={Y,Y,Y,…}の初期リストは、全ての利用可能ノード16を含む。1≦g≦R(RはL内のノードの総数、R≧Q)とするときに、各ノードYに対して次の等式(1)を適用する。
Sx(g)=Σ1≦N≦Z,1≦h≦R,g≠hP(N,Y,Y) …(1)
1≦i≦Q(Qはエミュレートされたノードクラスタ内のノードの数)とするときに、エミュレートされたノードクラスタ内の各ノードXに対して次の等式(2)を適用する。
Sy(i)=Σ1≦N≦Z,1≦j≦R,i≠jP(N,Y,Y) …(2)
アルゴリズムは、Sy(w)−Sx(i)=minv,f(Sy(v)−Sx(f))となるような、クラウドコンピューティングシステム10のための利用可能ノードYを探し始める。従って、ノードYはオリジナルノードXをシミュレートするために用いられ、ノードYはリストLから除かれる。アルゴリズムは、利用可能ノード16のフルセットが選択されるまで続く。ブロック730でノード16を選択するための他の適切な方法及びアルゴリズムが提供されてもよい。
例示的な一実施形態では、コンフィギュレータ22は、以下の方法を用いて、選択されたノード16をブロック732でチューニングするが、他の方法又はアルゴリズムが提供されてもよい。この方法では、コンフィギュレータは、各ノード16上で適切なネットワークシミュレーションレイヤを自動的に作成するコンフィギュレーションアプリケーションを実行する。ネットエム(Netem)ネットワーク遅延及び損失エミュレータを用いる場合には、以下のアルゴリズムがコンフィギュレータ22によって実装される。エミュレートされたノードクラスタの各ノードに対して、Gはエミュレートされたそのノードが属するノードグループである(即ち各ノードグループは例えば同じラック内にあるような互いに物理的に近いノードを備える)。各グループGに対してコンフィギュレータ22によって以下が行われ、ここで、1≦i≦Eであり、Eはエミュレートされたノードクラスタに関連するデータファイルにおいて定義されるグループの総数である。コンフィギュレータ22は、ノードGからノードGに出てゆくトラフィックに対して所望のネットワークプロパティp,…,pを調べる。コンフィギュレータ22は、例えばコマンド「tc class add dev」を用いる等してサービスの新たなクラスを作成する。コンフィギュレータ22は、例えばコマンド「tc qdisc add dev」を用いる等して新たな待ち行列規律(queuing discipline)を作成する。コンフィギュレータ22は、そのクラス又はその待ち行列規律「qdisc」に対して所望のネットワークプロパティをセットする。そのクラスで帯域及びバーストネットワークプロパティが指定され、その待ち行列規律で他のプロパティ(レイテンシ、エラー率等)が指定される。各ノードYに対して、GyはそのノードYが属するグループである。コンフィギュレータ22は、宛先(destination)IPアドレス(ノードYのアドレス)に基づきフィルタをコンフィギュアし、それをクラスGyに割り当てる。このことは、例えば、コマンド「tc filter add dev」を用いてなされ得る。
結果として、ネットエムエミュレータが起動されると、選択されたノードクラスタは、少なくとも以下のネットワークプロパティに関して、エミュレートされたノードクラスタと同等のネットワーク性能を有することになり、即ちこれらのネットワークプロパティは、最小レイテンシ、最大帯域、最大バースト率、最小パケット破損率、最小パケット損失率、及び、最小パケット並び替え率である。ブロック732でノード16をチューニングするための他の適切な方法及びアルゴリズムが提供されてもよい。
一実施形態では、図41のブロック726〜732は、エミュレートされたノードクラスタに対応する複数ノードからなる全クラスタ14が選択されるまで、利用可能ノード16の異なるグループで繰り返される。一実施形態では、エミュレートされたノードクラスタは、物理的なノード16が存在してもしなくてもよいという点で理論上のものであるが、所望のネットワークコンフィギュレーションは既知であり、それがノード選択を行うためのコンフィギュレータ22への入力として提供される。一実施形態では、エミュレートされたノードクラスタに基づき複数ノードのクラスタ14が選択されると、コンフィギュレータ22は、ここに述べられるバッチプロセッサ80を用いる等して、所望のネットワークコンフィギュレーションを有する複数ノードからなる選択されたクラスタ14で種々のワークロードをテストするように動作する。
(ハードウェア特性に基づき複数ノードのクラスタを割り振ること)
図43は、クラウドコンピューティングシステム10に対して複数ノードのクラスタ14を割り振るために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図760を示している。図43の説明全体に対して図1〜3が参照される。ブロック762では、コンフィギュレータ22(例えばデータモニタコンフィギュレータ82)は、1つ以上のデータセンタの利用可能ノード16のグループについてハードウェア性能アセスメントテストを開始して、利用可能ノード16のグループの実際のハードウェア性能特性を得る。ブロック764では、ノードコンフィギュレータ72は、利用可能ノード16のグループの実際のハードウェア性能特性と、ユーザインタフェース200を介してのユーザ選択に基づき識別された所望のハードウェア性能特性と、を比較する。ブロック766では、ノードコンフィギュレータ72は、ブロック764での比較に基づき、利用可能ノード16のグループからクラウドコンピューティングシステム10のためのノード16のサブセットを選択する。ノードクラスタ14又はノードクラスタ14のノード16のグループ等のノード16のサブセットは、ここに述べられるように、ワークロードの処理を共有するように動作する。ノード16のサブセット内のノード16の数は、ここに述べられるように、ノードクラスタ14に対してユーザによって要求されたノード16の数に等しいかそれよりも少ない。
一実施形態では、ノードコンフィギュレータ72は、所望のハードウェア性能特性を有する、クラウドコンピューティングシステム10のための複数ノードのクラスタを要求するユーザ要求を、ユーザインタフェース200を介して受信する。ユーザ要求は、例えば、図8の選択ボックス259、入力262及びフィールド256並びに図9の選択可能入力265等の選択可能ハードウェアコンフィギュレーションデータの選択に基づき、所望のハードウェア性能特性を識別する。一実施形態では、図9のテーブル264のフィールドは、所望のハードウェア性能特性を更に識別するために選択可能/修正可能である。ノードコンフィギュレータ72は、ユーザインタフェース200の他の適切な選択可能入力及びフィールドに基づき所望のハードウェア性能特性を識別してもよい。ノードコンフィギュレータ72は、複数ノードのクラスタのユーザ要求及びその要求において識別された所望のハードウェア性能特性に基づき(例えば利用可能ノード16と要求された複数ノードのクラスタとの間でのハードウェア類似性に基づき)、ハードウェア性能アセスメントテストでテストするための利用可能ノード16のグループを選択する。図示された実施形態では、利用可能ノード16のグループのノード16の数は、ユーザ要求で要求された複数ノードのクラスタのノード16の数よりも多い。
例示的なハードウェア性能特性は、ネイティブな32ビット及び/又は64ビット動作を要求するワークロードをサポートするためにノード16が64ビットプロセッサアーキテクチャを有しているのかあるいは32ビットプロセッサアーキテクチャを有しているのか等のノード16のコンピュータアーキテクチャを含む。他の例示的なハードウェア性能特性は、ノード16の1つ以上のプロセッサ40の製造業者(エーエムディー(AMD)、インテル(Intel)、エヌビディア(Nvidia)等)、ノード16の1つ以上のプロセッサ40の動作周波数、及び、ノード16のリード/ライト性能を含む。更に他の例示的なハードウェア性能特性は、システムメモリ容量及びディスクスペース(記憶容量)、ノード16のプロセッサ40の数及びサイズ、ノード16のキャッシュサイズ、ノード16の利用可能命令セット、ノード16のディスクI/O性能及びハードドライブ速度、エミュレーティングソフトウェアをサポートするノード16の能力、チップセット、ノード16のメモリのタイプ、ノード16間でのネットワーク通信レイテンシ/帯域、並びに、他の適切なハードウェア性能特性を含む。図示された実施形態では、これらのハードウェア性能特性の各々は、ユーザインタフェース200を介して提供されたユーザ要求に基づきユーザによって所望に応じて指定されてよい。更に、1つ以上のハードウェア性能アセスメントテストが、各選択された利用可能ノード16のこれら実際のハードウェア性能特性を決定するように動作する。
一実施形態では、ノードコンフィギュレータ72は、ブロック762で、ノード16のハードウェア性能特性を識別し又は決定すると共にこれらの特性を表すハードウェアコンフィギュレーションデータを生成するように動作する1つ以上のハードウェア性能アセスメントツールを各ノード16に展開することによって、ハードウェア性能アセスメントテストを開始する。次いでデータアグリゲータ84は、集約されたデータに基づきノードコンフィギュレータ72が各ノード16の実際のハードウェア性能特性を決定することができるように、ハードウェア性能アセスメントツールによって提供されたハードウェア性能データを集約するように動作する。例示的なアセスメントツールは、ノード16の1つ以上のプロセッサのタイプと、プロセッサの種々の特性/特徴(例えば製造業者、プロセッサの速度及び能力、利用可能なメモリ及びディスクスペース等)とを識別するための実行可能動作コードを含むCPU識別ツール(「CPUID」)を含み、このようなツールは当該技術分野で既知である。他の例示的なモニタリングツールは、ノード16によって実行されるときに、ノード16に適合し且つ/又は1つ以上のプロセッサの製造業者に適合する命令セットを決定するために命令セット拡張又は命令種類をテストするように動作するソフトウェアコードモジュールを含む。他の例示的なモニタリングツールは、ノード16によって実行されるときに、ノード16が64ビットアーキテクチャを有しているのかあるいは32ビットアーキテクチャを有しているのかをテストするように動作するソフトウェアコードモジュールを含む。例えば、そのようなテストは、コマンド又は処理要求を発行することと、プロセッサが要求を完了するのにどれくらいの時間かかるのかを測定することと、を伴う。他の適切なアセスメントツールが提供されてもよい。
一実施形態では、ブロック766で選択されるノード16のサブセットのノード16の数は、ユーザ要求において識別されるノード16の数より少ない。従って、コンフィギュレータ22は、選択されたノード16の数がユーザ要求で要求されたノード16の数に等しくなるまでステップ762〜766を繰り返して、ノード16の追加的なサブセットを得る。一実施形態では、ブロック766でノード16の第1のサブセットを選択した後、ノードコンフィギュレータ72は、ブロック762で最初にテストされた利用可能ノード16の第1のグループとは異なる利用可能ノード16の第2のグループを選択する。データモニタコンフィギュレータ82は、利用可能ノード16の第2のグループの実際のハードウェア性能特性を得るために利用可能ノード16の第2のグループについてハードウェア性能アセスメントテストを開始し、ノードコンフィギュレータ72は、利用可能ノードの第2のグループの実際のハードウェア性能特性と所望のハードウェア性能特性とのノードコンフィギュレータ72による比較に基づき、利用可能ノード16の第2のグループからクラウドコンピューティングシステム10のためのノード16の第2のサブセットを選択する。一実施形態では、ノード16の選択された複数のサブセットのノードの合計数がユーザ要求で要求されたノード16の数に等しくなると、ノードコンフィギュレータ72は、ノード16の当該選択された複数のサブセットをクラウドコンピューティングシステム10の複数ノードのクラスタ14としてコンフィギュアする(即ち、ノードクラスタ14をユーザ指定のコンフィギュレーションパラメータでコンフィギュアし、ノードクラスタ14上でワークロードを実行する等)。
図44を参照すると、ユーザによって指定された所望のハードウェア性能特性に実質的に一致するハードウェア特性を有する複数ノードのクラスタ14を選択するために、図1及び図3のコンフィギュレータ22を含む1つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図770が示されている。図44の説明全体に対して図1〜3が参照される。ブロック772では、ノードコンフィギュレータ72は、所望のハードウェア性能特性を有するN個のノード16に対するユーザ要求を受信し、ここでNは所望のノード16の任意の適切な数である。一実施形態では、ユーザ要求は、図43に関してここに述べられるように、選択可能ハードウェアコンフィギュレーションデータ(例えば図8及び図9)のユーザ選択に基づく。ブロック774では、ノードコンフィギュレータ72は、アクセスした1つ以上のデータセンタ又はクラウドの利用可能ノード16からN+Mのノード16を要求し又は予約する。Mは予約した利用可能ノード16の数(N+M)が要求したノード16の数Nを超えるような任意の適切な数である。例えば、MはNに等しくてよく、あるいはNの倍に等しくてよい。代替的には、ノードコンフィギュレータ72は、ブロック774でN個の利用可能ノード16を要求してよい。一実施形態では、(N+M)個のノード16は、アプリケーション特有API(例えばアマゾンAWS API、オープンスタックAPI、カスタムAPI等)を用いて割り振られ又は予約される。ノードコンフィギュレータ72は、所望の複数ノードのクラスタと類似したハードウェア特性を有する利用可能ノード16に基づき、ブロック774(及びブロック788)で利用可能ノード16を要求する。例えば、ノードコンフィギュレータ72は、同じノードタイプ(例えばここに述べられるように、小型、中型、大型、x−大型)の利用可能ノード16を予約してよい。
ブロック776では、図43に関してここに述べられるように、データモニタコンフィギュレータ82は、1つ以上のハードウェア性能アセスメントツールを展開することによって、各予約されたノード16についてハードウェア性能アセスメントテストを開始し、データアグリゲータ84は、各ノード16で開始されたハードウェア性能アセスメントテストからもたらされるハードウェア性能データを集約する(例えば収集し記憶する)。一実施形態では、ハードウェア性能アセスメントツールは、ノード16に予めインストールされているソフトウェアコードモジュールであり、あるいはSSH、HTTP又は何らかの他の適切なプロトコル/メカニズムを用いてノード16にインストールされるソフトウェアコードモジュールである。
ブロック780では、ノードコンフィギュレータ72は、ユーザ要求の所望のハードウェア性能特性(ブロック772)をハードウェア性能アセスメントテストからもたらされた実際のハードウェア性能特性と比較する。実際の及び所望のハードウェア性能特性における類似性に基づき、ノードコンフィギュレータ72は、ブロック782で、所望のハードウェア特性にベストマッチのX個のノード16を(N+M)個の予約されたノード16から選択し、ここでXは要求されたノード16の数Nに等しいかそれよりも少ない任意の数である。ハードウェア特性を比較しベストマッチングノード16を選択するために、図41に関してここに述べられているハードウェア特性に基づく「ベストマッチング」技術等の任意の適切なアルゴリズムが用いられてよい。ブロック784では、ノードコンフィギュレータ72は、選択されなかった残りの利用可能ノード16(例えば(N+M)−X)を、それらが他のクラウドコンピューティングシステムでの使用のために利用可能になるように、例えばアプリケーション特有APIを用いる等によって、1つ以上のデータセンタ又はクラウドへと解放する。ブロック786で、選択されたノード16の数Xが要求されたノード16の数Nよりも少ない場合には、ノードコンフィギュレータ72は、ブロック788で、1つ以上のデータセンタ/クラウドから追加のノード16を要求し又は予約する。次いでコンフィギュレータ22は、選択されたノード16の総数(即ち選択方法の全繰り返しからもたらされるノード16の合計数)が要求されたノード16の数Nに等しくなるまで、ステップ776〜786を繰り返す。選択されたノード16は次いで、ユーザによって割り当てられたクラウドコンピューティングタスクを実行するための複数ノードのクラスタ14としてコンフィギュアされる。
一実施形態では、図44の方法は、所望のハードウェア特性及びネットワーク特性を有する複数ノードのクラスタ14を選択するために、図41の方法と共に動作する。一実施形態では、図44の方法は、ネットワーク特性上の近接性に更に基づきノード16を選択する。一実施形態では、ブロック772でユーザ要求で識別されたハードウェア特性が、ノードクラスタ14のためのノード16を選択するのに先立ち優先付けられる。一実施形態では、図44(及び図43)の方法は、実際の選択された複数ノードのクラスタ14とユーザによって指定された所望の複数ノードのクラスタとの適切な一致性を見出すために、コンフィギュレータ22によって自動的に実行される。代替的には、例えばユーザインタフェース200の選択可能入力に基づき図43及び図44の動作を開始するためのオプションがコンフィギュレータ22によってユーザに与えられてもよい。
(クラウドコンピューティングシステムのハードウェアコンフィギュレーションを選択及び/又は修正すること)
図45は、クラウドコンピューティングシステム10の複数ノードのクラスタ14のハードウェアコンフィギュレーションを選択するために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図800を示している。図45の説明全体に対して図1及び図3が参照される。ブロック802では、ノードコンフィギュレータ72は、クラウドコンピューティングシステム10の複数ノードのクラスタ14によって共有されたワークロードの実行に基づき、複数ノードのクラスタ14の少なくとも1つのノード16が、ワークロードの共有された実行に際してスレッショルド動作能力未満で動作したことを決定する。スレッショルド動作能力は、例示的には、当該少なくとも1つのノード16によるハードウェア利用、例えばワークロード実行に際してのプロセッサ40及び/又はメモリ42の利用、に基づく。スレッショルド動作能力は、例えば最大動作能力(100%)又は90%動作能力等の任意の適切なスレッショルドであってよい。ブロック804では、ノードコンフィギュレータ72は、修正されたハードウェアコンフィギュレーションを伴う複数ノードのクラスタ14が低下したコンピューティング能力及び低減された記憶容量の少なくとも一方を有するように、ブロック802での決定に基づき複数ノードのクラスタ14の修正されたハードウェアコンフィギュレーションを選択する。
一実施形態では、ノードコンフィギュレータ72は、データセンタの複数の利用可能ノード16から少なくとも1つの異なるノード16を選択すると共に複数ノードのクラスタ14の当該少なくとも1つのノード16を当該少なくとも1つの異なるノード16と交換することによって、修正されたハードウェアコンフィギュレーションを選択する。その異なるノード16は、複数ノードのクラスタ14の交換対象となったノード16と比べて低下したコンピューティング能力及び低減された記憶容量の少なくとも一方を有する。例えば、ノードコンフィギュレータ72は、交換対象となったノード16と比べてより低速なプロセッサ40を有し、より少ない処理コアを有し、より少ないメモリ容量を有し、又は、任意の他の適切な低下したハードウェア特性を有する異なるノード16を利用可能ノード16から選択する。例えば、交換対象となったノード16は、交換対象となったノード16のハードウェアの一部がワークロード実行に際して利用されないような、ワークロードを処理するのに必要とされるよりも高いコンピューティング能力又はメモリ容量を有する。図示された実施形態では、その異なるノード16は、1つ以上の交換対象となったノード16と同等の性能(例えば同等の実行速度等)で、しかしその異なるノード16の低下したコンピューティング能力及び/又は記憶容量に起因してより効率的にワークロードを処理するよう動作するように選択される。従って、その異なるノード16で修正された複数ノードのクラスタ14は、全体的な性能損失を全く呈することなくあるいは殆ど呈することなく、その異なるノード16の低下したコンピューティング能力及び/又は記憶容量に起因してより効率的にワークロードを実行する。例えば、ノードクラスタ14は、交換対象となったノード16を伴う場合と実質的に同等の速度で、その異なるノード16を伴ってワークロードを実行する。
一実施形態では、ノードコンフィギュレータ72は、交換対象となったノード16を異なるノード16と交換することなしに、1つ以上のノード16を選択し複数ノードのクラスタ14から除くことによって、ブロック804の修正されたハードウェアコンフィギュレーションを選択し実装する。例えば、ノードコンフィギュレータ72は、ノードクラスタ14の1つ以上のノード16がノードクラスタ14の残りのノード16にとって同様の実行性能でワークロードを実行するのに必要のないことを決定する。従ってノードコンフィギュレータ72は、これら1つ以上のノード16をノードクラスタ14から除き、これら1つ以上のノード16をデータセンタへと解放する。一実施形態では、ノードコンフィギュレータ72は、ノードクラスタ14の1つ以上のノード16のコンピューティング能力及びメモリ容量の少なくとも一方を低下させることによって、ブロック804の修正されたハードウェアコンフィギュレーションを選択し実装する。
図示された実施形態では、コンフィギュレータ22は、種々のハードウエアリソース(例えばノード16)をノードクラスタ14のために使用することに関連するハードウェア使用コストを識別するハードウェア使用コストデータへのアクセスを有する。例えば、クラウドコンピューティングサービス(例えばアマゾン、オープンスタック等)は、ノードクラスタ14の各選択された16のコンピューティング能力及びメモリ容量等のハードウェアに基づき使用コストをチャージする。そこで、一実施形態では、ノードコンフィギュレータ72は、複数ノードのクラスタ14における当該少なくとも1つの異なるノード16を使用することに関連する使用コストデータと、複数ノードのクラスタ14における当該少なくとも1つの交換対象となったノード16を使用することに関連する使用コストデータと、のノードコンフィギュレータ72による比較に更に基づき、ノードクラスタ14の1つ以上のノード16と交換する当該少なくとも1つの異なるノード16を選択する。一実施形態では、ノードコンフィギュレータ72は、当該少なくとも1つの異なるノード16の使用コストが、交換対象となったノード16の使用コストよりも低いことを条件として、当該少なくとも1つの異なるノード16を選択する。例えば、ノードコンフィギュレータ72は、複数ノードのクラスタ14において使用されたハードウェアリソース(例えばノード16)のコストを計算し、複数ノードのクラスタ14の可能なハードウェアコンフィギュレーション変更に関連するコスト便益を決定する。例えば、ノードコンフィギュレータ72は、ノードクラスタ14に割り振られたハードウェアリソースの、より低い使用コスト及び最小の性能損失でのより効率的な使用をもたらすであろう1つ以上の異なるノード16を選択する。一実施形態では、コンフィギュレータ22は、同様のコスト分析に基づきネットワークコンフィギュレーション又は他のコンフィギュレーションをコンフィギュアする。
図示された実施形態では、コンフィギュレータ22は、1つ以上のハードウェア利用モニタリングツールを複数ノードのクラスタ14の各ノード16に展開することによって、各ノード16のハードウェア利用をモニタする。各ノード16によるハードウェア利用モニタリングツールの実行によって、各ノード16の少なくとも1つのプロセッサ40は、ワークロードの実行に際してコンピュータハードウェア(例えばプロセッサ40、メモリ42、メモリ制御器等)の利用又は使用量をモニタする。次いでモニタリングツールにより、ノード16は、ワークロードの実行に際しての各ノード16のハードウェア利用に関連する、コンフィギュレータ22によってアクセス可能なハードウェア利用データを提供する。コンフィギュレータ22のデータアグリゲータ84は、集約されたハードウェア利用データに基づきコンフィギュレータ22が各ノード16のハードウェア利用を決定し得るように、各ノード16によって提供されたハードウェア利用データを集約するように動作する。例示的なハードウェアモニタリングツールは、図26〜29のモニタリングモジュール214に関してここに述べられている。例えば、IOStatツール及びVMStatツールは、ワークロード実行に際してプロセッサ40、仮想メモリ及び/又はメモリ制御器が命令を実行し又はI/O動作を行うのにビジーである時間のパーセンテージ、ワークロード実行に際してこれらのコンポーネントが待機/停止している時間のパーセンテージ、並びに、他の適切な利用パラメータをモニタするために、ノードプロセッサ40によって実行可能なコードモジュールを含む。ノード16の決定されたハードウェア利用に基づき、ノードコンフィギュレータ72は、そのノード16にとって、最初に要求され割り振られたよりも少ないメモリ又は低いコンピューティング能力が必要とされていることを決定してよく、また、ここに述べられるように、そのノード16を交換し又はクラスタ14から除いてよい。
一実施形態では、ノードコンフィギュレータ72は、ブロック804で選択された修正されたハードウェアコンフィギュレーションを表す選択可能ハードウェアコンフィギュレーションデータをユーザインタフェース200上に表示する。選択可能ハードウェアコンフィギュレーションデータのユーザ選択に基づき、ノードコンフィギュレータ72は、複数ノードのクラスタ14のハードウェアコンフィギュレーションを修正し、例えばノードクラスタ14のノード16を交換し又は除く。例示的な選択可能ハードウェアコンフィギュレーションデータは、図8のテーブル258内に、選択可能入力259,262と共に示されている。例えば、ノードコンフィギュレータ72は、1つ以上の異なるノード16又は除かれたノード16を含むノードクラスタ14の推奨ノード16をリストすることによって、ノードクラスタ14の推奨される修正されたハードウェアコンフィギュレーションをテーブル258内に表示してよい。ユーザは、リストされたノード16に対応する入力259を選択してハードウェア変更を承認し、ノードコンフィギュレータ72は、ここに述べられるように、ワークロード展開の開始の場合に、承認された変更に基づき、修正されたノードクラスタ14をコンフィギュアする。一実施形態では、ハードウェア使用コストもユーザインタフェース200で表示されて、ノードクラスタ14の1つ以上の推奨ハードウェアコンフィギュレーションにより、関連する使用コストに基づきユーザが実装のためのコンフィギュレーションを選択することを可能にしている。複数ノードのクラスタ14の修正されたハードウェアコンフィギュレーションを表示するために、他の適切なインタフェースが提供されてよい。一実施形態では、ノードコンフィギュレータ72は、ユーザによる入力又は確認なしに、ブロック804で選択された修正されたハードウェアコンフィギュレーションで複数ノードのクラスタ14を自動的にコンフィギュアし、更に、修正されたノードクラスタ14でワークロードの実行を開始する。
図46を参照すると、クラウドコンピューティングシステム10の複数ノードのクラスタ14のハードウェアコンフィギュレーションを選択するために、図1及び図3のコンフィギュレータ22を含む1つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図810が示されている。図46の説明全体に対して図1〜3が参照される。ブロック812では、コンフィギュレータ22は、ここに述べられるように、所望のハードウェアコンフィギュレーションを伴う所望の複数ノードのクラスタ14のブロック814でのユーザ選択を可能にするために、選択可能ノードデータを含むユーザインタフェース200を提供する。ブロック816では、コンフィギュレータ22は、ここに述べられるように、複数ノードのクラスタ14を選択しコンフィギュアし、ワークロードを複数ノードのクラスタ14に展開する。ブロック818では、コンフィギュレータ22は、ノードクラスタ14の各ノード16上でハードウェア利用モニタリングツールをインストール及び/又はコンフィギュアする。一実施形態では、モニタリングツールは、図26〜29のモニタリングモジュール214を介してユーザによって選択される。代替的には、コンフィギュレータ22は、図46の方法の開始に基づき、IOStatツール及びVMStatツール等の1つ以上のモニタリングツールを自動的に展開してよい。ブロック820では、ワークロードコンフィギュレータ78は、複数ノードのクラスタ14上でのワークロードの実行を開始し、ブロック822では、その実行に続いて又はその実行の間、データアグリゲータ84は、各ノード16のモニタリングツールによって提供されるハードウェア利用データを収集し記憶する。
ノードクラスタ14によるワークロード実行が完了すると、ノードコンフィギュレータ72は、ブロック824で表されるように、ハードウェア利用データに基づき各ノード16のハードウェア利用を決定する。ブロック826では、ノードコンフィギュレータ72は、各ノード16のハードウェア利用が利用スレッショルド(例えば100%利用、90%利用又は任意の他の適切な利用スレッショルド)以上になったかどうかを判定する。一実施形態では、ノードコンフィギュレータ72は、ブロック826で、プロセッサ利用、メモリ利用、メモリ制御器利用等の複数の利用測定値を1つ以上の利用スレッショルドと比較する。ブロック826で肯定(yes)の場合には、ノードクラスタ14は更なるワークロード実行に適しているものと決定され、即ちコンフィギュレータ22によって何らノードクラスタ14のハードウェアコンフィギュレーションに対する調節はなされない。ブロック826で利用スレッショルド未満の各ノード16に対しては、ノードコンフィギュレータ72は、図45に関してここに述べられるように、交換用の異なるノード16であって、ワークロードの実行に適したハードウェアを有する(即ち交換対象となった1つ以上のノード16と同等の性能を有する)一方で交換対象となったノード16より低いコンピューティング能力又は記憶容量を有する交換用の異なるノード16を、データセンタの利用可能ノード16から識別する。ブロック830では、ノードコンフィギュレータ72は、図45に関してここに述べられるように、複数ノードのクラスタ14の推奨ハードウェアコンフィギュレーションをユーザインタフェース200上に表示することによって、ブロック828で識別された任意の推奨ハードウェアコンフィギュレーション変更のユーザへのフィードバックを提供する。ブロック832では、ノードコンフィギュレータ72は、オリジナルノードクラスタ14のノード16を除くこと及び/又は当該ノード16をブロック828で識別された異なるノード16と交換することによって、ワークロードの将来の実行のために推奨ハードウェアコンフィギュレーション変更を適用する。
一実施形態では、ユーザインタフェース200の選択可能入力でのユーザによる選択によって、ノードコンフィギュレータ72は、図45及び図46で述べたハードウェアコンフィギュレーション方法を実施して、ワークロードを実行するのに適したノードクラスタ14のコンフィギュレーションを見出す。代替的には、コンフィギュレータ22は、例えばバッチ処理ジョブの開始に際して等、図45及び図46の方法を自動的に実装して、ワークロード性能を著しくは制限しない、複数ノードのクラスタ14の適切な代替的コンフィギュレーションを見出す。
(クラウドコンピューティングシステムをチューニングすること)
図47は、複数の利用可能なコンフィギュレーションからクラウドコンピューティングシステム10の複数ノードのクラスタ14の適切なコンフィギュレーションを選択するために図1及び図3のコンフィギュレータ22によって行われる例示的な動作のフロー図850を示している。図47の説明全体に対して図1及び図3が参照される。ブロック852では、コンフィギュレータ22(バッチプロセッサ80)は、複数ノードのクラスタ14のためのコンフィギュレーションパラメータの複数の異なるセットに基づき、複数ノードのクラスタ14上でのワークロードの複数の実行を開始する。コンフィギュレータ22によってノード16への入力として提供(例えばここに述べられるように1つ以上のコンフィギュレーションファイル28を介して)されたコンフィギュレーションパラメータは、コンフィギュレーションパラメータの当該異なるセットを提供するために、コンフィギュレータ22によって調節可能であり、ワークロードは、コンフィギュレーションパラメータの各異なるセットで、複数ノードのクラスタ14によって実行される。一実施形態では、コンフィギュレータ22は、ここに述べられるように、ユーザインタフェース200を介して提供されたユーザ入力に基づき、各ワークロード実行のためのコンフィギュレーションパラメータを調節する。一実施形態では、これらコンフィギュレーションパラメータは、少なくとも1つのノード16のワークロードコンテナの動作パラメータ、少なくとも1つのノード16のブート時間パラメータ、及び、少なくとも1つのノード16のハードウェアコンフィギュレーションパラメータの少なくとも1つを含む。
ブロック854では、ノードコンフィギュレータ72は、コンフィギュレーションパラメータの当該複数の異なるセットから、複数ノードのクラスタ14のためのコンフィギュレーションパラメータのセットを選択する。ブロック856では、ワークロードコンフィギュレータ78は、その選択されたコンフィギュレーションパラメータのセットでコンフィギュアされた複数ノードのクラスタ14による実行のために、ワークロードを複数ノードのクラスタ14に提供する(展開する)。従って、ワークロードの将来の実行は、その選択されたコンフィギュレーションパラメータのセットに基づくコンフィギュレーションを有する複数ノードのクラスタ14によって行われる。
ブロック854でのコンフィギュレーションパラメータのセットの選択は、ワークロードの各実行に際してモニタされた(例えばモニタリングツールで)複数ノードのクラスタ14の少なくとも1つの性能特性と、複数ノードのクラスタ14の少なくとも1つの所望の性能特性と、のノードコンフィギュレータ72による比較に基づく。例えば一実施形態では、ノードコンフィギュレータ72は、ワークロード実行に際して、ユーザによって指定された所望の性能特性にベストマッチのノードクラスタ14の性能特性をもたらすコンフィギュレーションパラメータのセットを選択する。図示された実施形態では、所望の性能特性は、ユーザインタフェース200を介して提供されたユーザ入力に基づき、ノードコンフィギュレータ72によって識別される。例えば、ユーザインタフェース200は、選択されたワークロードを実行するときにユーザが複数ノードのクラスタ14の所望の性能特性を選択することを可能にする選択可能入力又は空きを埋めることが可能な(fillable)フィールド等の選択可能性能データを含む。例えば、図10の埋めることが可能なフィールド276又は所望の性能特性を識別するためのユーザ入力を受け取るように構成されたユーザインタフェース200の任意の他の適切な選択可能入力若しくはフィールドを参照されたい。他の例では、ノードコンフィギュレータ72は、例えば図7の入力238,228,230,232のユーザ選択及び/又は図25のバッチ処理モジュール212のボタン494に基づく等して、所望の性能特性を識別するデータを含むユーザ提供のファイルをロードしてもよい。
ワークロード実行に際してユーザによって指定されると共にモニタされる例示的な性能特性は、ワークロード実行時間、ノード16によるプロセッサ利用、ノード16によるメモリ利用、ノード16による電力消費、ノード16によるハードディスク入力/出力(I/O)利用、及び、ノード16によるネットワーク利用を含む。図26〜29に関してここに述べられるモニタリングツールでモニタされた性能特性等の他の適切な性能特性がモニタされ且つ/又はユーザによって指定されてよい。
一実施形態では、ブロック854でのコンフィギュレーションパラメータのセットの選択は、ワークロードの実行に際してモニタされた1つ以上の性能特性に関連する値が、1つ以上の対応する所望の性能特性に関連する許容値の範囲に含まれる旨のノードコンフィギュレータ72による決定に更に基づく。例えば、対応する所望の性能特性に関連する許容値の範囲(例えばユーザによって入力され又はノードコンフィギュレータ72によってセットされる)は、プロセッサ利用についての85%〜100%及びメモリ利用についての85%〜100%を含んでいてよい。これに伴い、ノードコンフィギュレータ72は、95%のプロセッサ利用及び90%のメモリ利用をもたらすコンフィギュレーションパラメータのセットを選択するが、80%のプロセッサ利用及び75%のメモリ利用をもたらすコンフィギュレーションパラメータのセットを拒絶する。値の許容範囲を満足する性能特性をコンフィギュレーションパラメータの複数のセットがもたらす場合には、ノードコンフィギュレータ72は、最高性能値、最低使用コスト、性能特性の優先順位、又は、他の適切なファクタ等の追加的ファクタに基づき、コンフィギュレーションパラメータのセットを選択する。許容範囲に含まれる性能特性をもたらすコンフィギュレーションパラメータのセットが無い場合には、ノードコンフィギュレータ72は、ベストマッチの性能特性をもたらすセットを選択し、適切なセットが見つかるまでコンフィギュレーションパラメータを自動的に更に調節し、及び/又は、許容範囲内のコンフィギュレーションパラメータのセットが見つからなかった旨をユーザに通知する。
一実施形態では、ノードコンフィギュレータ72は、所望の性能特性に対するモニタされた性能特性の類似性に基づき、コンフィギュレーションパラメータの各異なるセットにスコア値を割り当てる。従って、ブロック854でのコンフィギュレーションパラメータのセットの選択は、選択されたコンフィギュレーションパラメータのセットに割り当てられたスコア値に更に基づく。例えば、ノードコンフィギュレータ72は、最も高いスコア値をもたらすコンフィギュレーションパラメータのセットを選択する。スコア値は、ノードクラスタ14の性能特性が所望の性能特性にどれほどマッチしているのかに基づき、コンフィギュレーションパラメータのセットをランク付けする。
一実施形態では、ブロック854でのコンフィギュレーションパラメータのセットの選択は、異なる利用可能ノード16を使用すること又は複数ノードのクラスタ14での異なるネットワークコンフィギュレーションを使用することに関連する使用コストデータの比較に更に基づく。例えば、ノードコンフィギュレータ72は、スレッショルド利用レベルよりも多いプロセッサ利用及びメモリ利用、並びに、スレッショルドコストレベルよりも低い使用コストをもたらすコンフィギュレーションパラメータのセットを選択してよい。使用コストに関する任意の他の適切な考慮がブロック854での選択に適用されてもよい。
一実施形態では、コンフィギュレータ22は、ユーザによって提供された(例えばユーザインタフェース200を介して)コンフィギュレーションパラメータの初期セットに基づき、ノードクラスタ14上でのワークロードの第1の実行を開始する。この実施形態では、所望の性能特性をもたらすコンフィギュレーションパラメータのセットを見出すために、ノードコンフィギュレータ72は、自動的に初期セットの少なくとも1つのコンフィギュレーションパラメータを調節すると共にこの修正された初期セットに基づきワークロードの追加的な実行を開始することによって、コンフィギュレーションパラメータの種々のセットを網羅する。このようなコンフィギュレーションパラメータの種々のセットを探索するために、任意の適切な設計スペース探索方法又はアルゴリズムが用いられてよい。
一実施形態では、データモニタコンフィギュレータ82は、1つ以上のノード及びネットワーク性能モニタリングツール(例えば図26〜29で述べられている)を複数ノードのクラスタ14の各ノード16に展開する。モニタリングツールは、各ノード16によって(又は制御サーバ12によって)実行されるときに、ここに述べられるように、ワークロードの各実行に際して各ノード16の性能特性をモニタするように動作する。実行されたモニタリングツールは、コンフィギュレータ22によってアクセス可能な、対応するノード16の性能特性を表す性能データを生成する。データアグリゲータ84は、各ノード16の性能モニタリングツールによって提供された性能データを集約し、ノードコンフィギュレータ72は、集約された性能データに基づきブロック854でコンフィギュレーションパラメータのセットを選択する。
ここに述べられるように、複数ノードのクラスタ14のコンフィギュレーションパラメータの種々のセットは、ワークロードコンテナの動作パラメータ、ブート時間パラメータ、及び、ハードウェアコンフィギュレーションパラメータの少なくとも1つを含む。ワークロードコンテナの例示的な動作パラメータは、図4〜6,19及び図20に関してここに述べられており、例えば、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連する動作パラメータを含む。動作パラメータは、図19及び図20に示されここに述べられている選択可能データ(例えば入力及びフィールド)のユーザ選択に基づき、ワークロードコンテナコンフィギュレータ76によって修正される。リード/ライト動作に関連する例示的な動作パラメータは、リード/ライト動作のためのメモリバッファサイズ及びリード/ライト動作に際して転送されるデータブロックのサイズを含む。ファイルシステム動作に関連する例示的な動作パラメータは、各ノード16のメモリ内に記憶されるファイルシステム記録の数、及び、ファイルシステムのための要求を処理するために割り振られる各ノード16の処理スレッドの数の少なくとも一方を備える。ソーティング動作に関連する例示的な動作パラメータは、ソーティング動作を行うときにマージするデータストリームの数を含む。ワークロードコンテナの他の適切な動作パラメータが提供されてもよい。
例示的なブート時間パラメータは、図10及び図36〜38に関してここに述べられており、例えば、ワークロードの実行に際して有効にされるノード16の処理コアの数、及び、ノード16のオペレーティングシステム44によってアクセス可能なノード16のシステムメモリの量を含む。ブート時間パラメータは、図10に示されここに述べられている選択可能データ(例えば入力及びフィールド)のユーザ選択に基づき、ノードコンフィギュレータ72によって選択され修正される。他の適切なブート時間パラメータが提供されてもよい。例示的なハードウェアコンフィギュレーションパラメータは、図8,9及び図43〜46に関してここに述べられており、例えば、ノード16のプロセッサ40の数、ノード16のシステムメモリの量、及び、ノード16のハードディスクスペースの量の少なくとも1つを含む。ハードウェアコンフィギュレーションパラメータは、図8及び図9に示されここに述べられている選択可能データ(例えば入力及びフィールド)のユーザ選択に基づき、ノードコンフィギュレータ72によって選択され修正される。他の適切なハードウェアコンフィギュレーションパラメータが提供されてもよい。
図48を参照すると、複数の利用可能なコンフィギュレーションからクラウドコンピューティングシステム10の複数ノードのクラスタ14の適切なコンフィギュレーションを選択するために、図1及び図3のコンフィギュレータ22を含む1つ以上のコンピューティングデバイスによって行われる例示的な詳細動作のフロー図860が示されている。図48の説明全体に対して図1〜3が参照される。図48に図示された実施形態では、コンフィギュレータ22は、ノードクラスタ14の実際の性能が所望の性能以上の場合に、コンフィギュレーションパラメータの適切なセットのサーチを中止する。他の実施形態では、コンフィギュレータ22は、所望の性能特性及び/又は他の適切なファクタ(例えば使用コスト)に基づきベストマッチであるコンフィギュレーションパラメータのセットを選択する前に、識別されたコンフィギュレーションパラメータの各セットを試行する。
ブロック862では、コンフィギュレータ22は、ここに述べられるように、ユーザインタフェース200を介して受信したユーザ入力に基づくワークロード実行に関連するコンフィギュレーションパラメータの1つ以上のセット及び所望の性能特性を受信する。ブロック864では、コンフィギュレータ22は、複数ノードのクラスタ14を割り振り、ブロック862で受信したコンフィギュレーションパラメータのセットで複数ノードのクラスタ14をコンフィギュアする。一実施形態では、コンフィギュレータ22は、ここに述べられるように、ブロック864でコンフィギュレーションパラメータを識別する1つ以上のネットワークコンフィギュレーションファイル28をノード16に展開する。コンフィギュレータ22は、ブロック866で1つ以上のモニタリングツール(例えばモジュール214を介してユーザによって選択される)を各ノード16上でインストール及び/又はコンフィギュアし、ブロック868で複数ノードのクラスタ14によるワークロードの実行を開始する。ワークロードの実行の場合又はワークロードの実行の間、コンフィギュレータ22は、ブロック870で、各ノード16の1つ以上のモニタリングツールによって生成された性能データを集約する。ここに述べられるように、ブロック872では、集約された性能データに基づき、コンフィギュレータ22は、ブロック862で識別された所望の性能特性を、集約された性能データで識別されたクラスタ14の実際の性能特性と比較する。ブロック874では、コンフィギュレータ22は、ここに述べられるように、性能特性が所望の性能特性と比べて適切なものであるかどうか(例えば許容範囲内にあるかどうか、適切なスコア値を有しているかどうか等)を判定する。ブロック874で肯定(yes)である場合には、コンフィギュレータは、ブロック864で最後に実装された現在のコンフィギュレーションパラメータをワークロードの将来の実行のために保存する。ブロック874で性能特性が所望のものでなく且つブロック876でコンフィギュレーションパラメータの利用可能な種々のセットが使い尽くされていない場合には、コンフィギュレータ22は、ブロック878でコンフィギュレーションパラメータの異なるセットを選択し、ブロック864〜876の機能を繰り返す。例えば、コンフィギュレータ22は、ここに述べられるように、ブロック862で識別されたコンフィギュレーションパラメータの異なるセットを実装してよく、あるいはコンフィギュレータ22によって提供されるパラメータの増加的に調節されたセットを実装してよい。プロセスは、コンフィギュレータ22がブロック874でコンフィギュレーションパラメータの適切なセットを見出すまで又はコンフィギュレーションパラメータオプションがブロック876で使い尽くされるまで繰り返される。コンフィギュレーションオプションがブロック876で使い尽くされた場合には、コンフィギュレータ22は、最良の性能特性及び他の識別された特性(例えば使用コスト)を提供したコンフィギュレーションパラメータのセットをブロック880で選択する。
数ある利益のなかでも、この方法及びシステムは、ユーザインタフェースを介しての、複数ノードのクラスタ、ワークロード、ワークロードコンテナ及びネットワークコンフィギュレーションの選択、コンフィギュレーション及び展開を可能にし得る。加えて、この方法及びシステムは、クラウドコンフィギュレーションパラメータの制御及び調節を可能にするので、これにより、ノード、ネットワーク、ワークロードコンテナ及び/又はワークロードの変化しつつある特性下でのクラウドコンピューティングシステムの性能解析が可能になる。他の利益は当業者によって認識されるはずである。
好ましい設計を有しているものとして本発明が述べられてきたが、本発明は、本開示の精神及び範囲内で更に修正され得る。従って、本出願は、本発明の一般的原理を用いる本発明の任意の改変、使用又は適応を網羅することを意図されている。更に、本出願は、本開示が属する技術の分野において既知の又は慣習となっている慣例に含まれるような本開示からの逸脱であって添付の特許請求の範囲の限定に包含される本開示からの逸脱を網羅することが意図されている。

Claims (37)

  1. 1つ以上のコンピューティングデバイスによって実施されるコンピューティングコンフィギュレーション方法であって、
    ークロードの処理が前記複数ノードのクラスタに分散されるように、ユーザインタフェースを介して受信した複数のユーザ選択に基づいて、コンピューティングシステムのための複数ノードのクラスタをノードコンフィギュレータがコンフィギュアすることを備え、
    前記コンフィギュアすることは、
    前記コンピューティングシステムのための前記複数ノードのクラスタを複数の利用可能ノードから選択することと、
    各ノードによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを備えるワークロードコンテナモジュールを、前記複数ノードのクラスタの各ノード上での動作のために選択することと、
    前記複数ノードのクラスタ上での前記ワークロードコンテナモジュールでの実行のためのワークロードを選択することと、を含む、
    コンピューティングコンフィギュレーション方法。
  2. 前記ユーザインタフェースを介して受信したユーザ入力に基づき前記ワークロードコンテナモジュールの少なくとも1つの動作パラメータを修正することを更に備え、前記少なくとも1つの動作パラメータは、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている請求項1の方法。
  3. 前記ワークロードコンテナモジュールは複数の利用可能ワークロードコンテナモジュールから選択される請求項1の方法。
  4. 前記選択されたワークロードコンテナモジュールは、前記1つ以上のコンピューティングデバイスから離れた位置にあるメモリ上に記憶されたカスタムワークロードコンテナモジュールであり、前記カスタムワークロードコンテナモジュールは、前記ワークロードの実行を連携させるように動作する複数のユーザ定義の命令を含み、前記コンフィギュアすることは、前記カスタムワークロードコンテナモジュールを前記複数ノードのクラスタの各ノードへとロードすることを更に備える請求項1の方法。
  5. 前記ユーザインタフェースを提供することを更に備え、前記ユーザインタフェースは選択可能ノードデータ、選択可能ワークロードコンテナデータ及び選択可能ワークロードデータを提示し、前記複数ノードのクラスタを選択することは、前記選択可能ノードデータのユーザ選択に基づき、前記ワークロードコンテナモジュールを選択することは、前記選択可能ワークロードコンテナデータのユーザ選択に基づき、前記ワークロードを選択することは、前記選択可能ワークロードデータのユーザ選択に基づく請求項1の方法。
  6. 前記複数ノードのクラスタは通信ネットワークに接続されており、前記方法は、前記選択されたワークロードの実行に際して前記通信ネットワークの性能を制限するために、前記ユーザインタフェースを介して受信したユーザ入力に基づき少なくとも1つの通信ネットワークパラメータを調節することを更に備える請求項1の方法。
  7. 前記コンフィギュアすることは、前記ユーザインタフェースを介して受信したユーザ選択に基づき、前記複数ノードのクラスタの各ノードから収集されるべきデータの複数のタイプからデータの少なくとも1つのタイプを選択することを備え、前記方法は、前記複数ノードのクラスタの各ノードから前記少なくとも1つのタイプのデータを収集することを更に備える請求項1の方法。
  8. 少なくとも1つのプロセッサを備えるコンピューティングコンフィギュレーションシステムであって、
    前記少なくとも1つのプロセッサは、
    ワークロードの処理を共有するように動作する複数ノードのクラスタを、コンピューティングシステムのための複数の利用可能ノードから選択するように動作するノードコンフィギュレータと、
    各ノードによって実行されるときに前記ワークロードの実行を連携させるように動作する選択可能コードモジュールを備えるワークロードコンテナモジュールを、前記複数ノードのクラスタの各ノード上での動作のために選択するように動作するワークロードコンテナコンフィギュレータと、
    前記複数ノードのクラスタ上での前記選択されたワークロードコンテナモジュールでの実行のためのワークロードを選択するように動作するワークロードコンフィギュレータと、を備えるコンピューティングコンフィギュレーションシステム。
  9. 前記ワークロードコンテナコンフィギュレータは、ユーザインタフェースを介して受信したユーザ入力に基づき前記ワークロードコンテナモジュールの少なくとも1つの動作パラメータを修正するように更に動作し、前記少なくとも1つの動作パラメータは、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている請求項8のシステム。
  10. 前記ワークロードコンテナコンフィギュレータは、前記ワークロードコンテナモジュールを複数の利用可能ワークロードコンテナモジュールから選択する請求項8のシステム。
  11. 前記選択されたワークロードコンテナモジュールは、前記コンピューティングコンフィギュレーションシステムから離れた位置にあるメモリ上に記憶されたカスタムワークロードコンテナモジュールであり、前記カスタムワークロードコンテナモジュールは、前記ワークロードの実行を連携させるための複数のユーザ定義の命令を有するコンフィギュレーションファイルを備え、前記ワークロードコンテナコンフィギュレータは、前記遠隔のメモリに記憶された前記カスタムワークロードコンテナモジュールを前記複数ノードのクラスタの各ノードへとロードするように更に動作する請求項8のシステム。
  12. 前記複数ノードのクラスタは通信ネットワークを介して相互接続されており、前記システムは、前記選択されたワークロードの実行に際して前記通信ネットワークの性能を修正するために前記コンピューティングシステムの少なくとも1つの通信ネットワークパラメータを調節するように動作するネットワークコンフィギュレータを更に備える請求項8のシステム。
  13. 前記ワークロードコンフィギュレータは、実際のワークロード及び合成テストワークロードの少なくとも一方から前記ワークロードを選択し、前記実際のワークロードは、前記コンピューティングコンフィギュレーションシステムによってアクセス可能なメモリ内に記憶されており、前記合成テストワークロードは、ユーザ定義のワークロードパラメータに基づき前記コンピューティングコンフィギュレーションシステムによって生成される請求項8のシステム。
  14. 前記複数ノードのクラスタの各ノードから前記ワークロードの実行に関連する性能データを収集すると共に各ノードから収集された前記性能データを表す統計的グラフを生成するように動作するデータアグリゲータを更に備える請求項8のシステム。
  15. 前記少なくとも1つのプロセッサによって実行されるときにディスプレイ上にグラフィカルユーザインタフェースを提供することを前記少なくとも1つのプロセッサに実行させる実行可能命令を含むメモリを更に備え、前記グラフィカルユーザインタフェースは、前記ノードコンフィギュレータ、前記ワークロードコンテナコンフィギュレータ及び前記ワークロードコンフィギュレータを表すデータを提示する請求項8のシステム。
  16. 1つ以上のコンピューティングデバイスによって実施されるコンピューティングシステムをコンフィギュアする方法であって、
    前記方法は、ワークロードコンテナコンフィギュレータが、ユーザインタフェースを介して受信したユーザ選択に基づき、前記コンピューティングシステムの複数ノードのクラスタの各ノード上での動作のための複数の利用可能ワークロードコンテナモジュールからワークロードコンテナモジュールを選択することを備え、前記選択されたワークロードコンテナモジュールは、各ノードによって実行されるときに前記複数ノードのクラスタ上でのワークロードの実行を連携させるように動作する選択可能コードモジュールを備え、
    前記方法は、前記ワークロードの処理が前記複数ノードのクラスタに分散されるように前記ワークロードを実行するために前記複数ノードのクラスタの各ノードを前記選択されたワークロードコンテナモジュールを用いてコンフィギュアすることを更に備える方法。
  17. 前記1つ以上のコンピューティングデバイスは、前記コンピューティングシステムの制御サーバを備え、前記複数の利用可能ワークロードコンテナモジュールは、前記コンピューティングシステムから離れた位置にあるメモリ上に記憶されたカスタムワークロードコンテナモジュールを含み、前記カスタムワークロードコンテナモジュールは、前記ワークロードの実行を連携させるための複数のユーザ定義の命令を含む請求項16の方法。
  18. 前記ユーザインタフェースを提供することを更に備え、前記ユーザインタフェースは選択可能ワークロードコンテナデータを提示し、前記ワークロードコンテナモジュールを選択することは、前記選択可能ワークロードコンテナデータのユーザ選択に基づく請求項16の方法。
  19. 前記ユーザインタフェースを介して受信したユーザ入力に基づき各ノードのための前記選択されたワークロードコンテナモジュールの動作パラメータを修正することを更に備え、前記動作パラメータは、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている請求項16の方法。
  20. 前記コンフィギュアすることは、前記選択されたワークロードコンテナモジュールを前記複数ノードのクラスタの各ノードへとインストールすることと、前記複数ノードのクラスタの各ノードが前記ワークロードの少なくとも1つの処理スレッドを処理するように前記複数ノードのクラスタ上での前記選択されたワークロードコンテナモジュールでの前記ワークロードの実行を開始することと、を備える請求項16の方法。
  21. 少なくとも1つのプロセッサを備えるコンピューティングコンフィギュレーションシステムであって、
    前記少なくとも1つのプロセッサは、ワークロードコンテナコンフィギュレータと、ノードコンフィギュレータとを備え、
    前記ワークロードコンテナコンフィギュレータは、ユーザ入力を受信すると共に前記ユーザ入力に基づき複数の利用可能ワークロードコンテナモジュールからワークロードコンテナモジュールを選択するように動作し、前記選択されたワークロードコンテナモジュールは、コンピューティングシステムの複数ノードのクラスタによって実行されるときにワークロードの実行を連携させるように動作する選択可能コードモジュールを備え、
    前記ノードコンフィギュレータは、前記ワークロードの処理が前記複数ノードのクラスタに分散されるように前記ワークロードを実行するために前記コンピューティングシステムの前記複数ノードのクラスタの各ノードを前記選択されたワークロードコンテナモジュールを用いてコンフィギュアするように動作するコンピューティングコンフィギュレーションシステム。
  22. 前記複数の利用可能ワークロードコンテナモジュールは、前記コンピューティングコンフィギュレーションシステムから離れた位置にあるメモリ上に記憶されたカスタムワークロードコンテナモジュールを備え、前記カスタムワークロードコンテナモジュールは、前記ワークロードの実行を連携させるように動作する複数のユーザ定義の命令を含むコンフィギュレーションファイルを備える請求項21のシステム。
  23. 前記少なくとも1つのプロセッサによって実行されるときにディスプレイ上にグラフィカルユーザインタフェースを提供することを前記少なくとも1つのプロセッサに実行させる実行可能命令を含むメモリを更に備え、前記グラフィカルユーザインタフェースは、前記ワークロードコンテナコンフィギュレータ及び前記ノードコンフィギュレータを表すデータを提示する請求項21のシステム。
  24. 前記ワークロードコンテナコンフィギュレータは、ユーザインタフェースを介して受信したユーザ入力に基づき前記選択されたワークロードコンテナモジュールの動作パラメータを修正するように更に動作し、前記動作パラメータは、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている請求項21のシステム。
  25. 前記ノードコンフィギュレータは、前記選択されたワークロードコンテナモジュールを前記複数ノードのクラスタの各ノードへとインストールすると共に前記複数ノードのクラスタの各ノードが前記ワークロードの少なくとも1つの処理スレッドを処理するように前記複数ノードのクラスタ上での前記選択されたワークロードコンテナモジュールでの前記ワークロードの実行を開始するように更に動作する請求項21のシステム。
  26. 1つ以上のコンピューティングデバイスによって実施されるコンピューティングシステムをコンフィギュアする方法であって、
    ノードコンフィギュレータが、前記コンピューティングシステムのための複数の利用可能ノードからワークロードの処理を共有するように動作する複数ノードのクラスタを選択することと、
    ユーザインタフェースを介して受信したユーザ入力に基づき前記複数ノードのクラスタの各ノードの同じワークロードコンテナモジュールの動作パラメータを修正することと、を備え、前記ワークロードコンテナモジュールは、前記複数ノードのクラスタの各ノードによって実行されるときに前記動作パラメータに基づき前記ワークロードの実行を前記複数ノードのクラスタで連携させるように動作するコードモジュールを備え、前記動作パラメータは、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられている方法。
  27. 前記ユーザインタフェースを提供することを更に備え、前記ユーザインタフェースは選択可能ワークロードコンテナデータを提示し、前記ワークロードコンテナモジュールの前記動作パラメータを修正することは、前記選択可能ワークロードコンテナデータのユーザ選択に基づく請求項26の方法。
  28. 前記リード/ライト動作に関連する前記動作パラメータは、前記リード/ライト動作のためのメモリバッファサイズ及び前記リード/ライト動作に際して転送されるデータブロックのサイズの少なくとも一方を備える請求項26の方法。
  29. 前記ファイルシステム動作に関連する前記動作パラメータは、各ノードのメモリ内に記憶されるファイルシステム記録の数及びファイルシステムに対する要求を処理するために割り振られる各ノードの処理スレッドの数の少なくとも一方を備える請求項26の方法。
  30. 前記ソーティング動作に関連する前記動作パラメータは、前記ソーティング動作を行うときにマージするデータストリームの数を備える請求項26の方法。
  31. 前記複数ノードのクラスタは通信ネットワークに接続されており、前記方法は、前記ワークロードの実行に際して前記通信ネットワークの性能を制限するために、前記ユーザインタフェースを介して受信したユーザ入力に基づき少なくとも1つの通信ネットワークパラメータを調節することを更に備える請求項26の方法。
  32. 少なくとも1つのプロセッサを備えるコンピューティングコンフィギュレーションシステムであって、
    前記少なくとも1つのプロセッサは、ノードコンフィギュレータと、ワークロードコンテナコンフィギュレータとを備え、
    前記ノードコンフィギュレータは、コンピューティングシステムのための複数の利用可能ノードから複数ノードのクラスタを選択するように動作し、前記複数ノードのクラスタはワークロードの処理を共有するように動作し、
    前記ワークロードコンテナコンフィギュレータは、ユーザインタフェースを介して受信したユーザ入力に基づき前記複数ノードのクラスタの各ノードの同じワークロードコンテナモジュールの動作パラメータを修正するように動作し、前記ワークロードコンテナモジュールは、前記複数ノードのクラスタの各ノードによって実行されるときに前記動作パラメータに基づき前記ワークロードの実行を前記複数ノードのクラスタで連携させるように動作するコードモジュールを備え、前記動作パラメータは、リード/ライト動作、ファイルシステム動作、ネットワークソケット動作及びソーティング動作の少なくとも1つに関連付けられているコンピューティングコンフィギュレーションシステム。
  33. 前記リード/ライト動作に関連する前記動作パラメータは、前記リード/ライト動作のためのメモリバッファサイズ及び前記リード/ライト動作に際して転送されるデータブロックのサイズの少なくとも一方を備える請求項32のシステム。
  34. 前記ファイルシステム動作に関連する前記動作パラメータは、各ノードのメモリ内に記憶されるファイルシステム記録の数及びファイルシステムに対する要求を処理するために割り振られる各ノードの処理スレッドの数の少なくとも一方を備える請求項32のシステム。
  35. 前記ソーティング動作に関連する前記動作パラメータは、前記ソーティング動作を行うときにマージするデータストリームの数を備える請求項32のシステム。
  36. 前記複数ノードのクラスタは通信ネットワークに接続されており、前記システムは、前記ワークロードの実行に際して前記通信ネットワークの性能を制限するために、前記ユーザインタフェースを介して受信したユーザ入力に基づき少なくとも1つの通信ネットワークパラメータを調節するように動作するネットワークコンフィギュレータを更に備える請求項32のシステム。
  37. 前記ユーザインタフェースはグラフィカルユーザインタフェースを備え、前記システムは、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサによって実行されるときにディスプレイ上に前記グラフィカルユーザインタフェースを提供することを前記少なくとも1つのプロセッサに実行させる実行可能命令を含むメモリと、を更に備え、前記グラフィカルユーザインタフェースは、前記ノードコンフィギュレータ及び前記ワークロードコンテナコンフィギュレータを表すデータを提示する請求項32のシステム。
JP2015526576A 2012-08-07 2013-07-31 クラウドコンピューティングシステムをコンフィギュアするためのシステム及び方法 Active JP5926864B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/568,368 US8887056B2 (en) 2012-08-07 2012-08-07 System and method for configuring cloud computing systems
US13/568,368 2012-08-07
PCT/US2013/052996 WO2014025585A1 (en) 2012-08-07 2013-07-31 System and method for configuring cloud computing systems

Publications (2)

Publication Number Publication Date
JP2015524596A JP2015524596A (ja) 2015-08-24
JP5926864B2 true JP5926864B2 (ja) 2016-05-25

Family

ID=49001047

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015526576A Active JP5926864B2 (ja) 2012-08-07 2013-07-31 クラウドコンピューティングシステムをコンフィギュアするためのシステム及び方法

Country Status (6)

Country Link
US (1) US8887056B2 (ja)
EP (1) EP2883139A1 (ja)
JP (1) JP5926864B2 (ja)
KR (1) KR101614052B1 (ja)
CN (1) CN104520814B (ja)
WO (1) WO2014025585A1 (ja)

Families Citing this family (160)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304822B2 (en) * 2012-05-30 2016-04-05 International Business Machines Corporation Resource configuration for a network data processing system
US8887056B2 (en) * 2012-08-07 2014-11-11 Advanced Micro Devices, Inc. System and method for configuring cloud computing systems
US10963420B2 (en) * 2012-08-10 2021-03-30 Adobe Inc. Systems and methods for providing hot spare nodes
US20140181176A1 (en) * 2012-12-20 2014-06-26 Unisys Corporation Graphical user interface for hadoop system administration
US9118538B1 (en) * 2013-03-15 2015-08-25 Emc Corporation Method and system for configuring resources to enable resource monitoring
US9274918B2 (en) * 2013-07-25 2016-03-01 International Business Machines Corporation Prediction of impact of workload migration
US10360064B1 (en) * 2013-08-19 2019-07-23 Amazon Technologies, Inc. Task scheduling, execution and monitoring
US20150081880A1 (en) * 2013-09-17 2015-03-19 Stackdriver, Inc. System and method of monitoring and measuring performance relative to expected performance characteristics for applications and software architecture hosted by an iaas provider
US10635644B2 (en) * 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
US10250451B1 (en) * 2014-01-13 2019-04-02 Cazena, Inc. Intelligent analytic cloud provisioning
KR20150108230A (ko) * 2014-03-17 2015-09-25 한국전자통신연구원 클러스터 시스템 구축 방법 및 장치
US10332229B2 (en) 2014-05-12 2019-06-25 Palo Alto Research Center Incorporated System and method for high performance k-means clustering on GPU with smart kernels
US9558094B2 (en) * 2014-05-12 2017-01-31 Palo Alto Research Center Incorporated System and method for selecting useful smart kernels for general-purpose GPU computing
US9400672B2 (en) 2014-06-06 2016-07-26 International Business Machines Corporation Placement of virtual CPUS using a hardware multithreading parameter
US9304805B2 (en) 2014-06-06 2016-04-05 Interinational Business Machines Corporation Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US9384027B2 (en) 2014-06-06 2016-07-05 International Business Machines Corporation Selecting a host for a virtual machine using a hardware multithreading parameter
US10346188B1 (en) * 2014-06-13 2019-07-09 Veritas Technologies Llc Booting virtual machine instances in a distributed data processing architecture
US9471383B2 (en) 2014-07-11 2016-10-18 Tata Consultancy Services Limited Task allocation in a computing environment
CN104125288B (zh) * 2014-08-04 2018-02-06 上海斐讯数据通信技术有限公司 一种网络硬盘的满负载测试方法及系统
US9900391B2 (en) * 2014-08-05 2018-02-20 Microsoft Technology Licensing, Llc Automated orchestration of infrastructure service blocks in hosted services
WO2016041202A1 (zh) * 2014-09-19 2016-03-24 华为技术有限公司 一种基于云环境系统的部署方法和装置
CN104702663B (zh) * 2014-12-12 2018-08-28 用友网络科技股份有限公司 云处理装置和方法
CN104504143B (zh) * 2015-01-04 2017-12-29 华为技术有限公司 一种流图优化方法及其装置
US9967197B2 (en) * 2015-01-12 2018-05-08 Citrix Systems, Inc. Large scale bandwidth management of IP flows using a hierarchy of traffic shaping devices
US9444764B2 (en) * 2015-01-20 2016-09-13 State Farm Mutual Automobile Insurance Company Scalable and secure interconnectivity in server cluster environments
US20160246842A1 (en) * 2015-02-25 2016-08-25 Futurewei Technologies, Inc. Query optimization adaptive to system memory load for parallel database systems
US10904091B2 (en) 2015-06-03 2021-01-26 Avago Technologies International Sales Pte. Limited System for network-based reallocation of functions
US9986019B2 (en) 2015-06-24 2018-05-29 At&T Intellectual Property I, L.P. Intelligent route management for diverse ecosystems
WO2017020251A1 (en) * 2015-08-04 2017-02-09 Hewlett Packard Enterprise Development Lp Load testing based on network virtualization using a container
US10073880B2 (en) * 2015-08-06 2018-09-11 International Business Machines Corporation Vertical tuning of distributed analytics clusters
CN105095023B (zh) * 2015-08-18 2018-07-06 北京皮尔布莱尼软件有限公司 一种云主机创建装置、方法和计算设备
KR102007673B1 (ko) * 2015-09-11 2019-08-06 주식회사 케이티 유저 인터페이스에 대한 이벤트를 처리하는 클라우드 서버, 미디어 재생 장치 및 컴퓨터 프로그램
US10210220B2 (en) * 2015-09-16 2019-02-19 DataStax System and method for fault tolerant queries
CN106598559A (zh) * 2015-10-19 2017-04-26 中兴通讯股份有限公司 一种云平台的快速部署方法及系统
US11263006B2 (en) * 2015-11-24 2022-03-01 Vmware, Inc. Methods and apparatus to deploy workload domains in virtual server racks
US10162660B2 (en) * 2015-12-03 2018-12-25 International Business Machines Corporation Application-level processor parameter management
CN105607903A (zh) * 2015-12-15 2016-05-25 国云科技股份有限公司 一种部署openstack组件的方法
JP6129290B1 (ja) 2015-12-24 2017-05-17 財團法人工業技術研究院Industrial Technology Research Institute 分散計算におけるアプリケーションパラメータ設定およびシステム仕様設定を推奨する方法およびシステム
JP2017167763A (ja) * 2016-03-15 2017-09-21 富士通株式会社 情報処理装置、試験実行方法および試験実行プログラム
US10432491B2 (en) 2016-03-22 2019-10-01 Intel Corporation Control device for estimation of power consumption and energy efficiency of application containers
US10599478B1 (en) * 2016-03-29 2020-03-24 Amazon Technologies, Inc. Automated reconfiguration of real time data stream processing
WO2017176178A1 (en) * 2016-04-05 2017-10-12 Telefonaktiebolaget Lm Ericsson (Publ) Method and agent for sharing information about cloudlet properties in distributed cloud environments
CN107273178B (zh) * 2016-04-06 2021-07-27 阿里巴巴集团控股有限公司 配置虚拟化系统的方法和装置
US10796348B2 (en) * 2016-04-22 2020-10-06 International Business Machines Corporation Data resiliency of billing information
KR102387312B1 (ko) * 2016-06-16 2022-04-14 구글 엘엘씨 클라우드 컴퓨팅 노드들의 보안 구성
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
TWI619026B (zh) * 2016-10-21 2018-03-21 元智大學 解決分散式雲端運算平台於虛擬化下衝突的獨立資源分派系統及雲端服務系統
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US11093311B2 (en) 2016-11-29 2021-08-17 Intel Corporation Technologies for monitoring node cluster health
US10594555B2 (en) 2016-12-16 2020-03-17 Intelligent Platforms, Llc Cloud-enabled testing of control systems
US10169023B2 (en) * 2017-02-06 2019-01-01 International Business Machines Corporation Virtual container deployment
KR101921703B1 (ko) * 2017-02-27 2019-02-14 모젼스랩 (주) 가상화 기반 체험 콘텐츠 제공 클라우드 시스템
US11237872B2 (en) * 2017-05-23 2022-02-01 Kla-Tencor Corporation Semiconductor inspection and metrology systems for distributing job among the CPUs or GPUs based on logical image processing boundaries
US10379908B2 (en) 2017-05-30 2019-08-13 Red Hat, Inc. Merging scaled-down container clusters using vitality metrics
US10353803B2 (en) * 2017-08-21 2019-07-16 Facebook, Inc. Dynamic device clustering
US10877798B2 (en) * 2017-08-31 2020-12-29 Netflix, Inc. Scalable techniques for executing custom algorithms on media items
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10579276B2 (en) 2017-09-13 2020-03-03 Robin Systems, Inc. Storage scheme for a distributed storage system
US10452267B2 (en) 2017-09-13 2019-10-22 Robin Systems, Inc. Storage scheme for a distributed storage system
US10430105B2 (en) 2017-09-13 2019-10-01 Robin Systems, Inc. Storage scheme for a distributed storage system
US10423344B2 (en) 2017-09-19 2019-09-24 Robin Systems, Inc. Storage scheme for a distributed storage system
US10534549B2 (en) 2017-09-19 2020-01-14 Robin Systems, Inc. Maintaining consistency among copies of a logical storage volume in a distributed storage system
US10782887B2 (en) 2017-11-08 2020-09-22 Robin Systems, Inc. Window-based prority tagging of IOPs in a distributed storage system
US10846001B2 (en) 2017-11-08 2020-11-24 Robin Systems, Inc. Allocating storage requirements in a distributed storage system
US10430292B2 (en) 2017-12-19 2019-10-01 Robin Systems, Inc. Snapshot deletion in a distributed storage system
US10430110B2 (en) 2017-12-19 2019-10-01 Robin Systems, Inc. Implementing a hybrid storage node in a distributed storage system
US10452308B2 (en) 2017-12-19 2019-10-22 Robin Systems, Inc. Encoding tags for metadata entries in a storage system
KR102617686B1 (ko) * 2017-12-20 2023-12-22 주식회사 케이티 클라우드 컴퓨팅 환경에서 클러스터 구성 및 관리 시스템 및 그 방법
JP6962180B2 (ja) * 2017-12-27 2021-11-05 富士通株式会社 情報処理システム、コンテナ管理装置及びコンテナ管理方法
US10896102B2 (en) 2018-01-11 2021-01-19 Robin Systems, Inc. Implementing secure communication in a distributed computing system
US10642697B2 (en) 2018-01-11 2020-05-05 Robin Systems, Inc. Implementing containers for a stateful application in a distributed computing system
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US10628235B2 (en) 2018-01-11 2020-04-21 Robin Systems, Inc. Accessing log files of a distributed computing system using a simulated file system
US11392363B2 (en) * 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US10579364B2 (en) 2018-01-12 2020-03-03 Robin Systems, Inc. Upgrading bundled applications in a distributed computing system
US10845997B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Job manager for deploying a bundled application
US10846137B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US10642694B2 (en) 2018-01-12 2020-05-05 Robin Systems, Inc. Monitoring containers in a distributed computing system
US10740132B2 (en) * 2018-01-30 2020-08-11 Veritas Technologies Llc Systems and methods for updating containers
US10776148B1 (en) * 2018-02-06 2020-09-15 Parallels International Gmbh System and method for utilizing computational power of a server farm
US10698622B2 (en) * 2018-05-22 2020-06-30 International Business Machines Corporation Maintaining container to storage volume relations
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US11625360B2 (en) * 2018-06-20 2023-04-11 Kyndryl, Inc. Tailoring container images to a specific microarchitecture in virtualized environments
US11232139B2 (en) 2018-06-29 2022-01-25 Lucid Software, Inc. Custom interactions with visualizations
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US10733029B2 (en) * 2018-07-31 2020-08-04 Hewlett Packard Enterprise Development Lp Movement of services across clusters
US10599622B2 (en) 2018-07-31 2020-03-24 Robin Systems, Inc. Implementing storage volumes over multiple tiers
US10817380B2 (en) 2018-07-31 2020-10-27 Robin Systems, Inc. Implementing affinity and anti-affinity constraints in a bundled application
JP7230381B2 (ja) * 2018-09-10 2023-03-01 日本電気株式会社 コンピュータシステム、パラメータ設定装置、方法、及びプログラム
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US10908848B2 (en) 2018-10-22 2021-02-02 Robin Systems, Inc. Automated management of bundled applications
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US11301299B2 (en) * 2018-10-30 2022-04-12 Hewlett Packard Enterprise Development Lp Data based scheduling for horizontally scalable clusters
US10983806B2 (en) * 2018-11-07 2021-04-20 Sap Se User interface for computer system usage types
US11157292B2 (en) * 2018-11-13 2021-10-26 Servicenow, Inc. Instance mapping engine and tools
US10620871B1 (en) 2018-11-15 2020-04-14 Robin Systems, Inc. Storage scheme for a distributed storage system
US10917339B2 (en) 2018-12-21 2021-02-09 Juniper Networks, Inc. System and method for user customization and automation of operations on a software-defined network
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
SG11202108731TA (en) 2019-02-22 2021-09-29 Lucid Software Inc Reversible data transforms
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
KR102186009B1 (ko) * 2019-03-08 2020-12-04 한국전자통신연구원 컨테이너 인스턴스의 보안 프로파일 생성 시스템 및 방법
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US10831387B1 (en) 2019-05-02 2020-11-10 Robin Systems, Inc. Snapshot reservations in a distributed storage system
CN110188022A (zh) * 2019-05-09 2019-08-30 国家计算机网络与信息安全管理中心 一种基于Java的集群性能测试方法及系统
US10877684B2 (en) 2019-05-15 2020-12-29 Robin Systems, Inc. Changing a distributed storage volume from non-replicated to replicated
US11073888B2 (en) * 2019-05-31 2021-07-27 Advanced Micro Devices, Inc. Platform power manager for rack level power and thermal constraints
US11100173B2 (en) 2019-06-18 2021-08-24 Lucid Software, Inc. Autolayout of visualizations based on graph data
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11853806B2 (en) * 2019-09-27 2023-12-26 Cloudflare, Inc. Cloud computing platform that executes third-party code in a distributed cloud computing network and uses a distributed data store
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
KR102231358B1 (ko) * 2019-11-04 2021-03-24 주식회사 이노그리드 고성능 클라우드 서비스를 위한 단일 가상화 방법 시스템
KR102231359B1 (ko) * 2019-11-04 2021-03-24 주식회사 이노그리드 고성능 클라우드 서비스를 위한 단일 가상화 시스템 및 프로세스 스케줄링 방법
US11169671B2 (en) 2019-11-26 2021-11-09 Lucid Software, Inc. Alteration of a source data visualization based on user input
US11263105B2 (en) * 2019-11-26 2022-03-01 Lucid Software, Inc. Visualization tool for components within a cloud infrastructure
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
WO2021195419A1 (en) * 2020-03-26 2021-09-30 EOS Defense Systems USA, Inc. System for hosting data link layer agent, protocol, and management functions
US10901881B1 (en) * 2020-05-12 2021-01-26 Coupang Corp. Systems and methods for test deployment of computational code on virtual servers
CN113742028A (zh) * 2020-05-28 2021-12-03 伊姆西Ip控股有限责任公司 资源使用方法、电子设备和计算机程序产品
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US20220067423A1 (en) * 2020-08-26 2022-03-03 Beijing Didi Infinity Technology And Development Co., Ltd. Method and system for providing and applying a unified decoding efficiency score with focus on environmental impact
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US20220091572A1 (en) * 2020-09-22 2022-03-24 Rockwell Automation Technologies, Inc. Integrating container orchestration systems with operational technology devices
KR102413922B1 (ko) * 2020-09-25 2022-06-29 주식회사 이노그리드 복수의 컴퓨팅 노드를 이용한 고성능 클라우드 서비스를 제공하는 단일 가상화 시스템을 위한 소프트웨어 정의 서버 배포 스케줄링 방법 및 그 시스템
US11307902B1 (en) * 2020-09-30 2022-04-19 Kyndryl, Inc. Preventing deployment failures of information technology workloads
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
CN112217676B (zh) * 2020-10-13 2023-01-31 北京工业大学 一种基于混合元启发式算法的Kubernetes容器集群节点选取方法
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11762850B2 (en) * 2020-11-09 2023-09-19 International Business Machines Corporation Content-aware node selection for container creation
US20220147378A1 (en) * 2020-11-09 2022-05-12 International Business Machines Corporation Container image creation and deployment
CN114553688B (zh) * 2020-11-25 2023-07-14 腾讯科技(深圳)有限公司 云计算部署方法、装置、设备及计算机可读存储介质
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
CN112506670B (zh) * 2021-02-02 2021-04-20 上海有孚智数云创数字科技有限公司 一种多节点自动化运维任务处理方法、系统及存储介质
US20220276894A1 (en) 2021-02-26 2022-09-01 TurbineOne, Inc. Resource-sharing mesh-networked mobile nodes
US11099819B1 (en) * 2021-03-12 2021-08-24 Dovel Technologies, Llc Methods and systems for operationalizing artificial intelligence models using web-based user interfaces
US11704165B2 (en) * 2021-03-16 2023-07-18 International Business Machines Corporation Persistently available container services through resurrection of user jobs in new compute container instances designated as lead instances
CN113220237A (zh) * 2021-05-17 2021-08-06 北京青云科技股份有限公司 一种分布式存储方法、装置、设备及存储介质
US11469944B1 (en) * 2021-06-14 2022-10-11 Oracle International Corporation Techniques for migrating worker nodes to a new manager instance
CN113467892A (zh) * 2021-07-14 2021-10-01 广州华多网络科技有限公司 分布式集群资源配置方法及其相应的装置、设备、介质
US20230099455A1 (en) * 2021-09-30 2023-03-30 Ati Technologies Ulc Dynamic boot configuration
DE102022202944A1 (de) * 2022-03-25 2023-09-28 Robert Bosch Gesellschaft mit beschränkter Haftung Gerätesystem, Verfahren zur Konfiguration des Gerätesystems, Computerprogramm sowie Speichermedium
US11943110B2 (en) * 2022-05-13 2024-03-26 Charter Communications Operating, Llc Automated network generation, validation and implementation in a production environment
US11909621B2 (en) * 2022-06-03 2024-02-20 Linquest Corporation Systems and methods for implementing a network resiliency testbed emulator
KR102492409B1 (ko) * 2022-06-22 2023-01-27 (주) 이노트리 멀티/하이브리드 클라우드 실시간 모니터링 시스템
CN115061898B (zh) * 2022-08-17 2022-11-08 杭州安恒信息技术股份有限公司 基于Hadoop分析平台的自适应限速方法、装置、设备及介质
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations
CN115357309B (zh) * 2022-10-24 2023-07-14 深信服科技股份有限公司 一种数据处理方法、装置、系统和计算机可读存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010039497A1 (en) * 2000-03-30 2001-11-08 Hubbard Edward A. System and method for monitizing network connected user bases utilizing distributed processing systems
US7444538B2 (en) * 2004-09-21 2008-10-28 International Business Machines Corporation Fail-over cluster with load-balancing capability
US9501329B2 (en) 2009-05-08 2016-11-22 Rackspace Us, Inc. Methods and systems for cloud computing management
CN102193832B (zh) * 2010-03-11 2013-03-27 精英电脑股份有限公司 云端计算资源排程方法与应用的系统
CN101986272A (zh) * 2010-11-05 2011-03-16 北京大学 一种云计算环境下的任务调度方法
CN102004671B (zh) * 2010-11-15 2013-03-13 北京航空航天大学 一种云计算环境下数据中心基于统计模型的资源管理方法
CN102111337B (zh) * 2011-03-14 2013-05-15 浪潮(北京)电子信息产业有限公司 任务调度方法和系统
US8601000B1 (en) * 2011-06-27 2013-12-03 Amazon Technologies, Inc. System and method for conditionally updating an item with attribute granularity
US8572091B1 (en) * 2011-06-27 2013-10-29 Amazon Technologies, Inc. System and method for partitioning and indexing table data using a composite primary key
CN102325192B (zh) * 2011-09-30 2013-11-13 上海宝信软件股份有限公司 云计算实现方法和系统
US8887056B2 (en) * 2012-08-07 2014-11-11 Advanced Micro Devices, Inc. System and method for configuring cloud computing systems
US20140047342A1 (en) * 2012-08-07 2014-02-13 Advanced Micro Devices, Inc. System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics

Also Published As

Publication number Publication date
CN104520814A (zh) 2015-04-15
US20140047341A1 (en) 2014-02-13
CN104520814B (zh) 2017-04-19
KR20150031502A (ko) 2015-03-24
WO2014025585A1 (en) 2014-02-13
JP2015524596A (ja) 2015-08-24
KR101614052B1 (ko) 2016-04-20
US8887056B2 (en) 2014-11-11
EP2883139A1 (en) 2015-06-17

Similar Documents

Publication Publication Date Title
JP5926864B2 (ja) クラウドコンピューティングシステムをコンフィギュアするためのシステム及び方法
JP6373840B2 (ja) クラウドコンピューティングシステムをチューニングするためのシステム及び方法
US9152532B2 (en) System and method for configuring a cloud computing system with a synthetic test workload
US9262231B2 (en) System and method for modifying a hardware configuration of a cloud computing system
US9658895B2 (en) System and method for configuring boot-time parameters of nodes of a cloud computing system
US20140047095A1 (en) System and method for tuning a cloud computing system
US20140047342A1 (en) System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics
US20140047079A1 (en) System and method for emulating a desired network configuration in a cloud computing system
US10614375B2 (en) Machine for development and deployment of analytical models
US10387798B2 (en) Machine for development of analytical models
US9712604B2 (en) Customized configuration of cloud-based applications prior to deployment
Silva et al. Cloudbench: Experiment automation for cloud environments
Scolati et al. A containerized big data streaming architecture for edge cloud computing on clustered single-board devices
US11055568B2 (en) Method and system that measure application response time
EP3149603B1 (en) Customized configuration of cloud-based applications prior to deployment
Kjorveziroski et al. Kubernetes distributions for the edge: serverless performance evaluation
Papapanagiotou et al. Ndbench: Benchmarking microservices at scale
US11921604B2 (en) Evaluating system recovery using emulated production systems
Bian et al. Simulating big data clusters for system planning, evaluation, and optimization
Koziolek et al. Lightweight Kubernetes distributions: a performance comparison of MicroK8s, k3s, k0s, and Microshift
US20220129786A1 (en) Framework for rapidly prototyping federated learning algorithms
Maenhaut et al. Efficient resource management in the cloud: From simulation to experimental validation using a low‐cost Raspberry Pi testbed
CN114579250A (zh) 一种构建虚拟集群的方法、装置及存储介质
Quintero et al. IBM High-Performance Computing Insights with IBM Power System AC922 Clustered Solution
Ge et al. Loosely-coupled benchmark framework automates performance modeling on iaas clouds

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150514

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20150514

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20150708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20151224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160422

R150 Certificate of patent or registration of utility model

Ref document number: 5926864

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250