JP2018524693A - 拡張可能な分散型作業負荷試験 - Google Patents

拡張可能な分散型作業負荷試験 Download PDF

Info

Publication number
JP2018524693A
JP2018524693A JP2017564357A JP2017564357A JP2018524693A JP 2018524693 A JP2018524693 A JP 2018524693A JP 2017564357 A JP2017564357 A JP 2017564357A JP 2017564357 A JP2017564357 A JP 2017564357A JP 2018524693 A JP2018524693 A JP 2018524693A
Authority
JP
Japan
Prior art keywords
worker
pool
task
computer system
worker pool
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.)
Pending
Application number
JP2017564357A
Other languages
English (en)
Inventor
ヴィバウ ガーグ
ヴィバウ ガーグ
レナト イドリソフ
レナト イドリソフ
ティモフェイ バーミン
ティモフェイ バーミン
アンドレイ ヴァセニン
アンドレイ ヴァセニン
ヴァジム リトヴィノフ
ヴァジム リトヴィノフ
ドミトリー イワノフ
ドミトリー イワノフ
Original Assignee
マシーン ゾーン インコーポレイテッド
マシーン ゾーン インコーポレイテッド
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 マシーン ゾーン インコーポレイテッド, マシーン ゾーン インコーポレイテッド filed Critical マシーン ゾーン インコーポレイテッド
Publication of JP2018524693A publication Critical patent/JP2018524693A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • G06F11/2242Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors in multi-processor systems, e.g. one processor becoming the test master
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3414Workload generation, e.g. scripts, playback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

複数のノードを割り当て、複数のノード上に第1のワーカープールを実装して、各ノードが第1のワーカープールからのワーカーのうちの1つ又は2つ以上を含むようにし、第1のワーカープールに、コンピュータシステムと相互作用するように構成された第1のタスクを実行するための命令セットを与え、第1のワーカープールを使用して第1のタスクを実行し、第1のワーカープールからのワーカーが第1のタスクを実行している間に、コンピュータシステムに関連する少なくとも1つの性能評価基準をモニタする、コンピュータ記憶媒体上に符号化されたコンピュータプログラムを含む方法、システム及び装置について説明する。
【選択図】図1

Description

〔関連出願との相互参照〕
本出願は、2015年6月9日に出願された米国仮特許出願第62/173,251号に対する優先権を主張するものであり、この文献は、その全体が引用により本明細書に組み入れられる。
コンピュータシステム及び関連するサービスは、より高い性能及び信頼性を求めて増加の一途をたどるユーザからの要求に直面する。このようなサービスを実装の前後に試験することは、これらのサービスが正しく機能してユーザの要求についていくのを確実にするために重要である。
既存のコンピュータシステム試験ツールは、一般に柔軟性がなく、拡張が困難であり、クラウドサポートを提供しない。通常、このようなツールは、システムがどれだけ多くの同時ユーザに対処できるかを判断しようと試みる。しかしながら、この方法の問題点は、(接続によって表される)各ユーザが1つの要求を実行して、次の要求の実行まで応答を待っていること(例えば、接続毎に1つの要求を実行する閉フィードバックループ)を前提としている点である。このような前提は、ウェブアプリケーションには当てはまらないことが多い。例えば、異なるユーザが異なるタイプの行動を開始し、これらの行動が負担の異なる複数の要求を引き起す可能性もある。さらに、同期要求応答サイクルでは、試験中のシステム(すなわち、被試験システム又は「SUT」)に送信される要求の数と共に応答時間の変化が生じることもある。
本明細書で説明する主題の実施形態は、分散型作業負荷試験のためのシステム及び方法に関する。本明細書で説明するベンチマークシステムは、ユーザが書いた(例えば、様々な負荷プロファイルの)試験シナリオを実行し、被試験システム(SUT)に適用される(本明細書では「負荷」とも呼ぶ)作業負荷を複数のノードから生成することができる。このベンチマークシステムは、毎秒何百万件もの要求に拡張できる、及び/又は複数のデータセンタにわたって分散したノードから生成できる作業負荷を生成することができる。ベンチマークシステムは、ノードがユーザにとって単一のユニットとして機能するようにノード間の調整を行うことができる。このベンチマークシステムを使用して、試験中におけるSUTの性能に関連する評価基準(例えば、カウンタ及び/又はヒストグラム)をモニタ及び/又は収集することができる。この性能評価基準に基づいて、レポート及び様々なチャートを自動的に生成することができる。このベンチマークシステムは、高速開発環境を提供するとともに、ワンステップ試験の展開及び実行を実現する。
本明細書で説明する主題は、1つの態様ではコンピュータシステムを試験する方法に関する。この方法は、1又は2以上のコンピュータを用いて、複数のノード上に第1のワーカープールを実装して、各ノードが第1のワーカープールからのワーカーのうちの1つ又は2つ以上を含むようにするステップと、第1のワーカープールに、コンピュータシステムと相互作用するように構成された第1のタスクを実行するための命令セットを与えるステップと、第1のワーカープールを使用して第1のタスクを実行するステップと、第1のワーカープールからのワーカーが第1のタスクを実行している間に、コンピュータシステムに関連する少なくとも1つの性能評価基準をモニタするステップと、を実行するステップを含む。
いくつかの例では、複数のノード内の各ノードが、仮想マシン及び/又は物理的マシンであり、或いはこれらのマシンを含む。複数のノードは、複数のデータセンタに存在することができる。いくつかの例では、第1のプールからの各ワーカーが、別個のノードに存在する。これとは別に、又はこれに加えて、第1のプールからの少なくとも2つのワーカーは、単一のノードに存在する。複数のノードは、少なくとも1つのディレクタノードと、少なくとも1つのワーカーノードとを含むことができる。第1のタスクは、コンピュータシステムに要求を送信するステップを含むことができる。この要求は、例えばハイパーテキストトランスファプロトコル(HTTP)要求及び/又はメッセージキュー(MQ)要求とすることができ、或いはこれらの要求を含むことができる。
様々な例では、第1のプールからの各ワーカーが、第1のタスクを実行する際に、コンピュータシステムに一連の要求を指定速度で送信する。これとは別に、又はこれに加えて、第1のプールからの各ワーカーは、第1のタスクを実行する際に、以前の要求に対するコンピュータシステムからの応答を受け取るのを待つことなくコンピュータシステムに要求を送信するように構成することができる。少なくとも1つの性能特性は、例えば速度及び/又は待ち時間とすることができ、或いはこれらを含むことができる。方法は、少なくとも1つの性能評価基準をユーザのクライアント装置に提供するステップを含むことができる。方法は、第1のワーカープールとコンピュータシステムとの間のインターフェイスとして機能するように構成されたワーカーモジュールを準備するステップを含むことができる。
いくつかの例では、方法が、複数のノード上に第2のワーカープールを実装して、各ノードが第2のワーカープールからの1又は2以上のワーカーを含むようにするステップと、第2のワーカープールに、コンピュータシステムと相互作用するように構成された第2のタスクを実行するための命令セットを与えるステップと、第2のワーカープールを使用して第2のタスクを実行するステップと、を含む。第1のタスクと第2のタスクは並行して実行することができる。
本明細書で説明する主題は、別の態様ではシステムに関する。このシステムは、複数のノード上に第1のワーカープールを実装して、各ノードが第1のワーカープールからのワーカーのうちの1つ又は2つ以上を含むようにするステップと、第1のワーカープールに、コンピュータシステムと相互作用するように構成された第1のタスクを実行するための命令セットを与えるステップと、第1のワーカープールを使用して第1のタスクを実行するステップと、第1のワーカープールからのワーカーが第1のタスクを実行している間に、コンピュータシステムに関連する少なくとも1つの性能評価基準をモニタするステップと、を含む動作を実行するようにプログラムされた1又は2以上のコンピュータを含む。
いくつかの例では、複数のノード内の各ノードが、仮想マシン及び/又は物理的マシンであり、或いはこれらのマシンを含む。複数のノードは、複数のデータセンタに存在することができる。いくつかの例では、第1のプールからの各ワーカーが、別個のノードに存在する。これとは別に、又はこれに加えて、第1のプールからの少なくとも2つのワーカーは、単一のノードに存在する。複数のノードは、少なくとも1つのディレクタノードと、少なくとも1つのワーカーノードとを含むことができる。第1のタスクは、コンピュータシステムに要求を送信するステップを含むことができる。この要求は、例えばハイパーテキストトランスファプロトコル(HTTP)要求及び/又はメッセージキュー(MQ)要求とすることができ、或いはこれらの要求を含むことができる。
様々な例では、第1のプールからの各ワーカーが、第1のタスクを実行する際に、コンピュータシステムに一連の要求を指定速度で送信する。これとは別に、又はこれに加えて、第1のプールからの各ワーカーは、第1のタスクを実行する際に、以前の要求に対するコンピュータシステムからの応答を受け取るのを待つことなくコンピュータシステムに要求を送信するように構成することができる。少なくとも1つの性能特性は、例えば速度及び/又は待ち時間とすることができ、或いはこれらを含むことができる。動作は、少なくとも1つの性能評価基準をユーザのクライアント装置に提供するステップを含むことができる。動作は、第1のワーカープールとコンピュータシステムとの間のインターフェイスとして機能するように構成されたワーカーモジュールを準備するステップを含むことができる。
いくつかの例では、動作が、複数のノード上に第2のワーカープールを実装して、各ノードが第2のワーカープールからの1又は2以上のワーカーを含むようにするステップと、第2のワーカープールに、コンピュータシステムと相互作用するように構成された第2のタスクを実行するための命令セットを与えるステップと、第2のワーカープールを使用して第2のタスクを実行するステップと、を含む。第1のタスクと第2のタスクは並行して実行することができる。
本明細書で説明する主題は、別の態様では記憶装置に関する。この記憶装置は、命令を記憶し、この命令は、1又は2以上のコンピュータシステムによって実行された時に、複数のノード上に第1のワーカープールを実装して、各ノードが第1のワーカープールからのワーカーのうちの1つ又は2つ以上を含むようにするステップと、第1のワーカープールに、コンピュータシステムと相互作用するように構成された第1のタスクを実行するための命令セットを与えるステップと、第1のワーカープールを使用して第1のタスクを実行するステップと、第1のワーカープールからのワーカーが第1のタスクを実行している間に、コンピュータシステムに関連する少なくとも1つの性能評価基準をモニタするステップと、を含む動作を実行する。
いくつかの例では、複数のノード内の各ノードが、仮想マシン及び/又は物理的マシンであり、或いはこれらのマシンを含む。複数のノードは、複数のデータセンタに存在することができる。いくつかの例では、第1のプールからの各ワーカーが、別個のノードに存在する。これとは別に、又はこれに加えて、第1のプールからの少なくとも2つのワーカーは、単一のノードに存在する。複数のノードは、少なくとも1つのディレクタノードと、少なくとも1つのワーカーノードとを含むことができる。第1のタスクは、コンピュータシステムに要求を送信するステップを含むことができる。この要求は、例えばハイパーテキストトランスファプロトコル(HTTP)要求及び/又はメッセージキュー(MQ)要求とすることができ、或いはこれらの要求を含むことができる。
様々な例では、第1のプールからの各ワーカーが、第1のタスクを実行する際に、コンピュータシステムに一連の要求を指定速度で送信する。これとは別に、又はこれに加えて、第1のプールからの各ワーカーは、第1のタスクを実行する際に、以前の要求に対するコンピュータシステムからの応答を受け取るのを待つことなくコンピュータシステムに要求を送信するように構成することができる。少なくとも1つの性能特性は、例えば速度及び/又は待ち時間とすることができ、或いはこれらを含むことができる。動作は、少なくとも1つの性能評価基準をユーザのクライアント装置に提供するステップを含むことができる。動作は、第1のワーカープールとコンピュータシステムとの間のインターフェイスとして機能するように構成されたワーカーモジュールを準備するステップを含むことができる。
いくつかの例では、動作が、複数のノード上に第2のワーカープールを実装して、各ノードが第2のワーカープールからの1又は2以上のワーカーを含むようにするステップと、第2のワーカープールに、コンピュータシステムと相互作用するように構成された第2のタスクを実行するための命令セットを与えるステップと、第2のワーカープールを使用して第2のタスクを実行するステップと、を含む。第1のタスクと第2のタスクは並行して実行することができる。
添付図面及び以下の説明には、本明細書で説明する主題の1又は2以上の実施形態の詳細を示す。明細書、図面及び特許請求の範囲からは、主題の他の特徴、態様及び利点が明らかになるであろう。
コンピュータシステムを試験するベンチマークシステム例の概略図である。 コンピュータシステムを試験するベンチマークシステム例の概略図である。 ベンチマークシステムのワーカーノード例の概略図である。 図1のベンチマークシステム例の概略図である。 図1のベンチマークシステム例の概略図である。 図1のベンチマークシステム例の概略図である。 コンピュータシステムの試験のための要求率と時間を対比させたプロット例である。 コンピュータシステムの試験のための待ち時間と時間を対比させたプロット例である。 ベンチマークシステムのダッシュボードのスクリーンショットである。 コンピュータシステムを試験する方法例のフローチャートである。
様々な図面における同様の参照番号及び名称は同様の要素を示す。
本明細書で説明する主題の例は、コンピュータシステム(すなわち、被試験システム又は「SUT」)を試験するためのシステム及び方法に関する。一般に、これらのシステム及び方法は、アプリケーションプログラミングインターフェイス(API)を用いた他のプログラム、コンピュータシステム及び/又はサービスとの容易な統合を実現する。いくつかの例では、システム及び方法がERLANGプログラミング言語を用いて実装されるが、他のプログラミング言語を使用することもでき、システム及び方法は、いずれかの特定のプログラミング言語に限定されるものではない。
システム及び方法は、一般にSUTが対処できる要求の数を特定するように構成される。システム及び方法は、開ループ法を用いて一定の要求率を維持することが好ましい。一定要求率は、SUTに関連するいずれの作業負荷の急増及び/又は応答時間にも関わらずに維持することができる。この一定要求率の手法は、SUTの応答時間によって要求率が変化する従来の手法(例えば、閉ループシステム)とは異なる。従来の閉ループ手法では、作業負荷の急増に出くわすと、SUTに送られる要求の数が減少する。しかしながら、いくつかの例では、システム及び方法が開ループ手法を使用し、及び/又は一定要求率を使用しないこともある。例えば、一定要求率を保証又は達成できないことがある。これとは別に、又はこれに加えて、閉ループ手法が望ましく、及び/又はいくつかの試験に利用することもできる。システム及び方法は、一定要求率を維持するようにも、或いは(例えば、指定された形で時間と共に)要求率の変化を可能にするようにも構成することができる。
システム及び方法は、SUTに関連する性能評価基準を収集するようにも構成される。このような性能評価基準は、システム及び方法のユーザに試験中のSUTの性能に関連する情報を提供する。性能評価基準は、例えば、処理速度、待ち時間、要求数、総メッセージサイズ、エラー数、応答(例えば、HTTP 200応答及び/又はHTTP 500応答)数、チャットルーム数、ユーザ数、チャットルーム当たりのメッセージ数、CPU使用率及び/又はメモリ使用量を含むことができる。システム及び方法のユーザは、試験中に収集される評価基準のタイプを指定できることが好ましい。カウンタ及びヒストグラムなどの、システム及び方法が使用する評価基準収集計器は、実行にほんの2μsほどしか掛からない。
好ましい例では、システム及び方法が、ユーザにコマンドラインユーザインターフェイス(CLI)又はダッシュボードを提供する。ユーザは、このCLIを使用して、試験に関連する命令及びパラメータを入力することができる。CLIは、例えば拡張Lisp型ドメイン固有言語(DSL)で書かれた命令文又はプログラムを受け入れることができる。ユーザが作成したあらゆるプログラム又は命令文は保存され、後で後続の試験中に再利用できることが好ましい。システム及び方法は、LUAなどの他のプログラミング言語に拡張可能(かつスケーラブル)であることが好ましい。用途によっては、試験パラメータがデフォルト値に設定される。
図1〜図5は、コンピュータシステム又はコンピュータ実装サービスの性能を試験するベンチマークシステム例100の概略図である。図1を参照すると、ベンチマークシステム100は、アプリケーションプログラミングインターフェイス(API)サーバ102と、クラウドコントローラ104と、1又は2以上のワーカーノード106a及びディレクタノード106を含む複数のノード106と、被試験システム(SUT)108と、コマンドラインインターフェイス(CLI)110と、クライアント装置112とを含む。一般に、APIサーバ102は、SUTに対して実行される(本明細書では「試験」とも呼ぶ)ベンチマークのライフサイクルを制御する。APIサーバ102は、例えばハイパーテキスト転送プロトコル(HTTP)サーバとすることができ、又はこれを含むことができる。1つの例では、APIサーバ102を使用して、ベンチマーク試験の開始及び終了を行い、試験からの性能評価基準(例えば、データログ、チャート又はグラフ)を受け取り、及び/又は1又は2以上のユーザに性能評価基準を提供する。
クラウドコントローラ104は、複数のノード106内のワーカーノード106a及びディレクタノード106bの割り当て及び割り当て解除に使用される。クラウドコントローラ104は、例えばAMAZON WEB SERVICES(AWS)又はGOOGLE CLOUD PLATFORMなどのクラウドサービスプロバイダをサポートする、又はこれらにアクセスするプラグ式モジュールとすることができる。複数のノード106内の各ノードは、ベンチマーク及び収集の実行、及び/又は性能評価基準の処理に使用される仮想マシン又は物理的マシンである。一般に、ワーカーノード106aは、試験中にSUTに負荷をかけ、及び/又はSUTに関連する性能評価基準を収集するために使用される。ディレクタノード106bは、一般にワーカーノード106aによって収集された性能評価基準を統合及び/又は処理するために使用される。1つの例では、複数のノード106内のノードが、カリフォルニア州サンフランシスコのDocker社によって開発されたdockerコンテナなどの単独計算過程であり、又はこのような単独計算過程を含む。
複数のノード106の使用には、ベンチマークシステム100が拡張可能になり、幅広い要求及び接続を処理できるようになるという利点がある。いくつかの例では、ベンチマークシステム100が、何百万件もの要求及び接続を処理することができる。複数のノードは、例えば最大50個のノード、100個のノード、又はそれ以上のノードを使用して所望の拡張性を達成することができる。
ベンチマークシステム100のユーザは、クライアント装置112上に設けられたCLI110を使用してベンチマークシステム100と相互作用することができる。例えば、ユーザは、CLIを使用してベンチマーク試験のための様々なパラメータを指定し、及び/又は試験から得られた性能評価基準にアクセスすることができる。ユーザは、CLIを使用して、試験に使用すべき所望のノードタイプを指定又は選択することもできる。CLI110は、PYTHONで書くことができ、及び/又はAPIサーバ102にHTTPコールを行うために使用することができる。他の例では、ユーザが、CLI110ではなくPYTHONアプリケーションプログラミングインターフェイス(API)を使用してベンチマークシステム100と相互作用することができる。
いくつかの実装では、SUT108が、ベンチマークシステム100によって試験されているコンピュータシステム又はコンピュータ実装サービスである。試験中、ベンチマークシステム100は、例えばSUT108に様々なタスクを高速で実行するように要求することによって、SUT108に一定の要求又は負荷を加える。ベンチマークシステム100は、SUT108が負荷状態で動作している時にSUT108の性能をモニタして、関連する性能評価基準を収集する。APIサーバ102は、試験中又は試験後に、評価基準を受け取って分析のためにユーザに転送することができる。
様々な例では、ベンチマークシステム100のコンポーネントが、同じ地理的位置に存在することも又はしないこともある複数のコンピュータシステム上に存在する。例えば、クラウドコントローラ104及びAPIサーバ102は、同じ又は異なる地理的位置に存在できる同じ又は異なるコンピュータシステム上で動作するソフトウェアコンポーネントとすることができる。同様に、複数のノード106も、同じ又は異なる地理的位置に存在する同じ又は異なるコンピュータシステム上で動作することができる。いくつかの例では、複数のノード106が、異なる地理的位置に存在できる2又は3以上のデータセンタ内に存在する2又は3以上のノードを含む。これに加えて、又はこれとは別に、SUT108は、同じ又は異なる地理的位置に存在する1又は2以上のコンピュータシステムとすることができ、又はこのようなコンピュータシステムを含むことができる。SUT108の地理的位置と、複数のノード106のうちの1つ又は2つ以上の地理的位置は、同じとすることも又は異なることもできる。
ノードが、世界の異なる地域における2又は3以上のデータセンタ内に存在する場合には、一般にノード間の高速伝送は存在せず、ノード間の距離が一貫性を欠き又は異なる場合もある。さらに、2又は3以上のノードが異なるプライベートネットワーク上に存在することにより、(例えば、各ノードが1つおきのノードに接続された)ハイパーキューブトポロジの構成が困難かつ非セキュアになる場合もある。このような課題に対処するために、システム及び方法のいくつかの実装は、(例えば、完全なERLANGリモートプロシージャコールの代わりに)制限されたプロトコルを利用して(例えば、ハイパーキューブ型ではなくスター型に)構成を単純化し、及び/又は(例えば、任意のコード実行を行わずに)セキュリティを強化する。
図1を参照すると、ユーザは、ベンチマークシステム100を使用してSUT108の試験を開始するために、クライアント装置112上のCLI110を用いて試験要求を提出する。この要求は、様々な試験パラメータ及び/又は命令を含み、(例えば、HTTP Getを使用して)クライアント装置112から接続114に沿ってAPIサーバ102に転送される。次に、APIサーバ102は、(例えば、ユーザがCLI110を通じて指定した)複数のノード106を割り当てる命令を接続116に沿ってクラウドコントローラ104に送信する。最低限2つのノード106を、すなわち試験を実行するための少なくとも1つのノード(すなわち、ワーカーノード106a)と、性能評価基準を収集及び/又は集約するための1つのノード(すなわち、ディレクタノード106b)とを割り当てることができる。クラウドコントローラ104は、接続118を使用して所望の数のノードを割り当てると、制御をAPIサーバ102に戻す。クラウドサービスプロバイダによっては、ノードを割り当てる際に、指定された画像又はソフトウェアをインストールしてセキュアシェル(SSH)サーバを立ち上げることが必要なものもある。APIサーバ102は、SSHサーバを介して及び/又はSSHプロトコルを用いてノード106と相互作用することができる。
図2及び図3を参照すると、APIサーバ102は、ノード106の割り当て後に、ノード106上にいくつかのソフトウェアを設定又はインストールすることができる。1つの例では、接続120に沿って2つのソフトウェアモジュールがインストールされる。一方のモジュールは、各ワーカーノード106aにおけるベンチマークの実行及び評価基準の収集を制御するノードモジュール122である。ノードモジュール122は、各ノードとAPIサーバ102との間の相互作用機構を提供することもできる。他方のモジュールは、APIサーバ102を通じてSUT108と相互作用する(本明細書では、単純にワーカーとも呼ぶ)ワーカーモジュール124である。一般に、ワーカー124には、試験中にSUT108に負荷をかける1又は2以上のタスク又はステップを実行する命令が与えられる。これとは別に、又はこれに加えて、ワーカー124は、試験中に性能評価基準を収集するようにも構成される。ソフトウェアのインストール後には、割り当てられたノード106が正常な状態で正しく動作していることを確認するための1又は2以上のチェックを(例えば、ネットワークタイミングプロトコル(NTP)に基づいて)行うことができる。
図4を参照すると、APIサーバ102は、ノード106が割り当てられて所望のソフトウェアが設定されると、ワーカーノード106a上に存在するワーカーを作動させることによってベンチマーク試験を開始する。一般に、ワーカーは、1又は2以上のタスクを含んでSUT108に負荷を導入する試験計画又は試験シナリオを実行する。このシナリオは、例えばSUT108が処理(例えば、検索)の実行、情報の抽出及び/又は情報の送信などの何かを行うことを求める一連の要求126を含むことができる。SUT108内に負荷が生じると、ワーカーは、試験中のSUT108の性能に関連する評価基準の収集及び/又はモニタリングも行う。図示の例では、ベンチマークを実行するための2つのワーカーノード106aと、ワーカーノード106aが収集した評価基準を処理するための1つのディレクタノード106bという3つのノードが割り当てられている。
一般に、ワーカーによって実行されるシナリオは、SUT108の全体的な目的に関連することができる。例えば、SUT108が検索を実行して検索結果を送信するように設計されている場合、シナリオは、(例えば、データベース内で又はインターネットを介して)検索を行って検索結果を提供する命令をワーカーがSUT108に送信するように仕向けるものとすることができる。同様に、SUT108がメッセージを取り出して配信するように設計されている場合、シナリオは、ワーカーがSUT108にメッセージを送信して1又は2以上の受信者にメッセージを配信するように仕向けるものとすることができる。例えば、ワーカーがSUT108に提出できる考えられる要求の例としては、検索要求、印刷要求、読み取り要求、計算要求、チャットルーム形成要求、及び/又はメッセージ送信要求(例えば、チャットルームのためのチャットメッセージ)が挙げられる。一般に、要求のタイプはSUT108に依存する。例えば、チャットシステムSUTの場合、ワーカーは、チャットルームを形成する要求、連絡先をリストに追加する要求、リストから連絡先を削除する要求、プライベートメッセージ又は通常のメッセージを送信する要求、及び/又は同報メッセージを送信する要求などの、チャットシステムに特化した要求を送信することができる。ゲームシステムの場合、要求の例としては、何かの建設、攻撃、移動などの、ゲームのプレーヤによって行われる要求が挙げられる。メッセージブローカの場合、要求の例としては、メッセージキューへの登録、メッセージキューの登録解除、キューへのメッセージ送信、キューからのメッセージ受信などが挙げられる。一般に、ユーザは、ワーカーによって実行される命令を、シナリオを実行するように制御する。これらの命令は、所望の負荷生成率及び/又は強度、並びに収集すべきあらゆる所望の性能評価基準を含むことができる。ユーザは、CLI110、及び/又はクライアント装置112上のダッシュボードを通じて命令を実行することができる。
一般に、ベンチマークシステム100においてシナリオを生成するには、ワーカーのプールを構築する。プール内のワーカーは、タスク命令を含む又は規定する同じワーカーモジュールを参照するので、同様のタスクを行う。プール内に含めるべきワーカー数を定めるサイズパラメータを指定する。一般に、プール内の各ワーカーは、プール内に定められた動作を実行する。複数のノード上でシナリオが実行される場合、ワーカーは、ラウンドロビン方式で分散させることができる。ベンチマークシステム100は、ランプ関数を用いて何らかの期間にわたってワーカーの数を増加させる能力を有することが好ましい。
様々な例では、ベンチマークシステムが複数のプールを使用し、これらの複数のプールを異なるワーカーに結び付けることができる。例えば、1つのプールがHTTP要求を実行し、他のプールがMQ要求を実行することができる。このことは、複雑なシナリオを記述する上で非常に有用であり、各ワーカープールが他のプールと無関係に動作できるようにする。
様々な実装では、ワーカーによって実行されるタスクを、時間と共に変化するように構成することができる。例えば、ワーカーがSUT108に要求を送信する割合を、例えば時間と共に線形的に、二次的に、ポワソン的に又は段階的に変化するようにプログラムすることができる。同様に、ワーカーが実行するタスクのタイプを試験の進行と共に変更するようにワーカーに指示することもできる。例えば、ワーカーは、SUT108に検索機能を実行するように要求することから、SUT108に印刷機能を実行するように要求することに変更を行うことができる。
図5を参照すると、試験の実行中、ワーカーノード106aは、いくつかの性能評価基準を収集し、この性能評価基準を(例えば、毎秒又は10秒毎に)接続128に沿ってディレクタノード106bに送信する。次に、ディレクタノード106bは、これらの評価基準を編集又は統合し、統合された評価基準を接続132に沿って評価基準処理モジュール130に送信する。評価基準処理モジュール130は、試験から得られたデータログの記録、及び/又は試験結果の様々なプロット、チャート及び/又はテーブルの生成を行うことができる。例えば、評価基準処理モジュール130は、SUT108に関連する速度(例えば、要求率又は応答率)又は待ち時間の時間履歴を生成することができる。例えば、待ち時間は、第1のタイムスタンプ(例えば、要求の開始前又は要求の送信時)と第2のタイムスタンプ(例えば、要求の完了後又は要求に対する応答の受信時)との間の差分を求めることによって測定することができる。APIサーバ102は、接続134に沿って、データログ、プロット、チャート及び/又はテーブルを含む試験結果を評価基準処理モジュール130から取り出すことができる。試験結果は、接続136に沿ってクライアント装置112に転送することができる。ユーザは、試験中(例えば、リアルタイムで)及び/又は試験の完了時に結果を見ることができる。いくつかの例では、APIサーバ102が、電子メールによって1又は2以上のユーザに試験結果のレポートを転送する。
一般に、ベンチマーク試験は、シナリオの所望の終了時間に到達するまで進められる。しかしながら、場合によっては、例えば試験中におけるSUT108の性能不足又は不具合を理由に早めに試験を終了することもできる。試験の早期終了は、ユーザが手動で実行することも、及び/又はベンチマークシステム100が自動的に実行することもできる。
図6を参照すると、試験の完了後、APIサーバ102は、試験に使用したノード106の割り当てを解除する命令を接続138に沿ってクラウドコントローラ104に送信することができる。次に、クラウドコントローラ104は、接続140を使用してノード106の割り当てを解除し、及び/又はノード106にインストールされているあらゆるソフトウェアモジュール(例えば、ノードモジュール122及びワーカーモジュール124)をアンインストールすることができる。或いは、ノードの割り当て解除及び/又はソフトウェアモジュールのアンインストールをAPIサーバ102が行うこともできる。その後、割り当て解除されたノードは、ベンチマークシステム100によって行われる別の試験などの他の目的で自由に使用することができる。いくつかの実装では、ソフトウェアモジュールがノード上に維持されてアンインストールされない。これにより、将来的な試験の展開を速めることができる。
様々な実施形態では、ベンチマークシステム100のコンポーネント間で送信されるデータ、及びSUT108との間で送信されるデータが圧縮される。例えば、システムコンポーネント間で送信されるデータログ及び評価基準データを圧縮することができる。このような圧縮は、さらなる帯域幅の割り当てを必要とすることなくさらに多くのデータの送信を可能にすることができる。
いくつかの例では、ワーカーが、試験シナリオのための関数を提供するソフトウェアモジュール(例えば、ERLANGモジュール)である。ワーカーは、HTTP又はXMPPのような一般的なプロトコルを実行することも、或いは特定の試験事例のみに関する特別なルーチンを実行することもできる。ワーカーは、関連する評価基準の実装及び収集を行うこともできる。ワーカーモジュールの形成には以下の言語例を使用することができ、この中の「search(State,_Meta,Url,Term)」は、ヒストグラム内の待ち時間評価基準を収集するように構成されたAPI関数を指定するものである。
様々な実装では、試験計画又は試験シナリオがDSLコードで実装される。DSLコードは、Lisp様の表記を有することができ、ERLANGタプル及びリストに基づくことが好ましい。DSLコードは、シナリオを実装するために、工程(すなわち、ワーカー)の数と、ベンチマークにおいて負荷を生成するために使用される特定の要求とを定める。以下のテキストは、ERLANGリスト及びタプルを用いて実装されるシナリオ例を表すものである。
この例では、「size」が、作業負荷を生成するために使用される工程数を定め、「worker_type」が、ワーカーモジュールを指定する。「loop」セクションは、試験の速度及び実行時間を指定する。このシナリオでは、ワーカーが、5分間にわたる毎秒10回の要求率の「search」関数を(連続して)2回実行するように指示されている。この「search」関数は、上述したワーカーモジュールの例で定められたAPI関数を参照する。
様々な例では、ユーザが、ワーカーモジュール及び試験シナリオを形成することによってSUTの試験を展開する。ユーザは、例えば新たなワーカーモジュールの形成、既存のワーカーモジュールの使用、又は既存のワーカーモジュールの修正という選択肢を有する。ワーカーモジュールは、試験に使用することができてDSL命令文を含むことができるAPIを公開する。試験シナリオは、ワーカーモジュールを参照し、実行時にAPIを要求する。
様々な実装では、ワーカープールが、同じ又は異なるタスクを実行する一群のワーカー又はワーカーモジュール(例えば、ERLANG処理)である。ワーカーは、ワーカーノードにわたって分散することができ、試験計画又は試験シナリオに定められた1又は2以上のタスクを同時に実行することができる。ワーカープールは、試験中に複数のワーカーが変化できるように、数又は工程を動的に増減させることができる。また、タスクの数及びタイプは、試験中にユーザからの命令に従って変化することもできる。
いくつかの例では、試験が複数のワーカープールを利用し、各プールが異なる一連のタスクを実行する。例えば、1つのプールは、SUTに1つのタイプの要求(例えば、検索要求)を行い、他のプールは、異なるタイプの要求(例えば、読み取り要求)を行うことができる。これらの複数のワーカープールは、異なるワーカーノード上に存在することも、又は同じノード上に存在することもできる。例えば、ワーカーノードは、複数のプールからの1又は2以上のワーカーを含むことができる。異なるプールからのワーカーを使用して、同じ時点又は異なる時点でSUTに異なるタイプの負荷を導入することができる。例えば、1又は2以上の異なるワーカーモジュールに対し、HTTPプール及び/又はメッセージキューイングプールなどの複数のワーカープールを参照することができる。
様々な実装では、ワーカーによって生じる負荷を、同期ループ及び/又は非同期ループを用いて実装することができる。同期ループは、負荷タイプ、時間、ランプ(例えば、線形又はポワソン)、動作タイプを指定することができ、入れ子状であることができる。非同期ループは、複数の処理を含むことができ、一定の要求率を維持するように構成することができる。以下のテキストは、1rps→5rpsの増加率で30秒間にわたってHTTP GET要求を送信するループ例を生じるものである。
ループ関数は、指定動作をループの形で繰り返し実行することによって負荷を生成するために使用することができる。ユーザは、DSLにループを追加する際に、ループの動作継続時間、動作の実行速度、線形分布、ポワソン分布又はその他の分布のいずれを用いて速度が増加するか、ループ内からどの動作が実行されるか、を指定することができる。全ての動作は、順に実行することができる。
ベンチマークが実行されると、システム及び方法は、動作の実行及び要求率の維持に必要な時間を測定する。要求が、達成可能な数よりも少ない場合、ループの実行工程は、残りの継続時間にわたってスリープ状態に入ることができる。システム及び方法は、ループの性能を高めるために、動作のバッチ処理を行って要求率を維持することができる。
応答時間が長くてシステム及び方法が要求率を維持できない場合には、「並行(parallel)」又は「生成(spawn)」演算子を用いて複数の工程によって各反復を実行する非同期ループを使用することができる。システム及び方法は、ループ内で指定された要求率を保証しようと試みることができる。
様々な実装では、本明細書で説明するシステム及び方法が、高速、正確かつ拡張可能な結果評価基準を提供する。評価基準は、ワーカーノードによって収集することができ、及び/又は、例えばハッシュベースのデータ記憶及びアクセス機能を提供できるERLANGテーブル記憶システム(ETS)を用いてワーカーノード又はディレクタノードに記憶することができる。結果評価基準は、例えばカウンタ及びヒストグラムを含むことができ、ディレクタノード上に集約することができる。カウンタは累積的なものであり、EXOMETERなどのモニタリング又は集約ツールを用いて集約することができる。カウンタは、1〜2μsの待ち時間で1秒毎に値を生成する特別な関数を使用することができる。ヒストグラムは、HDRHISTOGRAMなどのヒストグラムツールを用いて1〜2μsの待ち時間でディレクタノード上に集約することができる。いくつかの実装は、評価基準の命名、評価基準のグループ化及び/又は評価基準のための測定単位の指定を目的として以下のような言語を使用することができる。
図7及び図8は、コンピュータシステムの試験から得られた性能評価基準のプロット例である。図7は、試験中のワーカーの要求率(1秒当たりの要求)と時間とを対比させたプロット700である。図示のように、要求率は、試験中に時間と共にほぼ線形的に増加する。図8は、試験中の待ち時間と時間とを対比させたプロット800である。図8の各線は、一定割合の要求の待ち時間がその線を下回ることに対応する。一番上の線802は、100%又は最大の待ち時間であり(すなわち、全ての待ち時間値は一番上の線を下回り)、一番上の線の次の線は、99.9%、99%、95%などである。
図9は、本明細書で説明するシステム及び方法のためのダッシュボード例900のスクリーンショットである。ユーザは、ダッシュボード900を使用して、SUTに対する試験を構成し、実行して分析することができる。このダッシュボードは、ユーザが試験を識別又は区別するために名前又は別名(例えば、一連の文字列)を入力できる名前フィールド902を含む。ノードフィールド904は、(例えば、クラウドプロバイダからの)試験用ワーカーノードの数を指定するために使用される。クラウドフィールド906は、クラウドサービスプロバイダ(例えば、AWS)を指定するために使用される。クラウドフィールド906は、APIサーバによって指定されるような考えられるクラウドサービスプロバイダのドロップダウンリストを含むことができる。環境変数フィールド908は、試験用スクリプトに代入又は追加すべき何らかの値をユーザが指定できるようにする。スクリプト領域910は、スクリプト本体(例えば、ワーカープールのための命令)を含む。ユーザは、実行ボタン912を選択することによって試験を開始し、又はキャンセルボタン914を選択することによって試験をキャンセルすることができる。
図10は、コンピュータシステムを試験する方法例1000のフローチャートである。この方法は、複数のノードを割り当てるステップ(ステップ1002)を含む。これらの複数のノード上に、第1のワーカープールを実装する(ステップ1004)。各ノードは、第1のプールからのワーカーのうちの1つ又は2つ以上を含む。第1のワーカープールに、コンピュータシステムと相互作用するように構成された第1のタスクを実行するための命令セットを与える(ステップ1006)。第1のワーカープールを使用して第1のタスクを実行する(ステップ1008)。第1のプールからのワーカーが第1のタスクを実行している間に、コンピュータシステムに関連する少なくとも1つの性能評価基準をモニタする(ステップ1010)。
様々な例では、ワーカー又はワーカーモジュールが、一連のDSL命令文を含むERLANGアプリケーションである。ワーカーモジュールは、コマンドラインユーティリティを使用して生成することができる。例えば、新たなワーカーは、以下のコマンドを使用して生成することができ、
この場合の<MZ_BENCH_SRC>は、システムソースコードまでの経路を示す。
このコマンドは、最小主義ではあるが完全に機能的な<worker_name>という名前のワーカーを含む新たなディレクトリ<worker_name>を形成する。このディレクトリには、ワーカーソースコードを含むsrc/<worker_name>.erlと、これを用いた単純なシナリオを含むexamples/<worker_name>.erlとが存在する。
SUTへのアクセスが、TCPなどの既知のプロトコルに基づく場合、new_workerコマンドは、この種のSUTのためのコードを既に含んでいるワーカーを生成することができる。ベンチマークシステムは、以下を実行することによってリスト化される利用可能なプロトコルのリストを含む。
新たなワーカーは、以下を使用してnew_workerコマンドに追加パラメータを加えることによって生成することができる。
いくつかの例では、ワーカーモジュールを用いたベンチマークシナリオのローカルインスタンスを立ち上げることによってワーカーモジュールが試験される。例えば、ユーザは、ワーカーソースコードディレクトリ内で、<script>を、実行すべきベンチマークシナリオまでの経路に置き換えながら、以下のコマンドを実行することができる。
環境変数は、−−envオプションを用いて受け渡すことができる。この実行モードでは、全てのmake_installという最上位命令文を無視することができる。
一般に、ワーカーは、一連のDSL命令文(例えば、サブルーチン)及び一連の評価基準を提供する。ワーカーは、内部状態を有することができるので、様々なサブルーチンが独立している必要はない。
以下は、ワーカーモジュールのための一連のDSL命令文の例である。
この例は、initial_state/0、metric_names/2、及びprint/3という3つの関数をエクスポートする。これらのうちの最初の2つが、ワーカーモジュールに必要となり得る。
initial_state/0関数は、何かを戻すことができ、ワーカーの初期状態を初期化するために使用される。各並列実行ジョブは独自の状態を有することができる、従ってこの関数は、ジョブの開始毎に1回呼び出すことができる。ワーカーがステートレスである場合、空の文字列を状態として使用することができる。
場合によっては、metric_names/2関数が必要になることもある。この関数は、ワーカーによって生成された評価基準のリストを戻す。
残りのエクスポートされる関数は、このワーカーが提供するDSL命令文を定義する。上記で定義されているdummy_workerは、文字列を標準出力に出力するのに有用な印刷命令文を提供する。
いくつかの例では、ユーザが、ワーカーによって提供されるDSL命令文を定めるために、このような命令文に出くわした時に呼び出されるERLANG関数をエクスポートすることができる。エクスポートされる関数は、以下の一般形式のものとすることができる。
この関数は、その関数が規定する命令文と同じ名前を有することができ、少なくとも後続のパラメータ、すなわち命令文の実行時におけるワーカーの内部状態を取ることができる。この関数は、命令文のパラメータに対応できるあらゆる数の他のパラメータを受け入れることもできる。
様々な実装では、文関数が2つの値のタプルを戻す。第1の値は、命令文の戻り値である。命令文は、戻り値を有していなければゼロを戻す。タプルの第2の要素は、命令文の実行後の新たなワーカーの初期状態である。
例えば、以下の関数は、ベンチマークシナリオでは{foo,X,Y}として呼び出すことができる。
いくつかの例では、性能評価基準が、シナリオ実行中に収集される数値である。評価基準は、ワーカーの主要結果であり、ユーザがベンチマークと共に受け取って評価したいと望む値を表す。
本明細書で説明するシステム及び方法は、例えばカウンタ、ゲージ、ヒストグラム及び導出された評価基準を含むことができる複数のタイプの評価基準をサポートすることができる。一般に、カウンタは単一の相加値であり、すなわち現在の値に新たな値を加算することができる。ゲージは、単一の非相加値であり、すなわち新たな値が以前の値に取って代わることが好ましい。ヒストグラムは、値の分布を定量的に示す一連の数値とすることができ、すなわち分布に新たな値が追加される。導出された評価基準は、ユーザが定義した関数を用いて、及び/又は別の評価基準値に基づいて定期的に評価される。例えば、ユーザは、速度及び/又は待ち時間などの他の性能評価基準の関数である評価基準を計算するようにシステムに指示することができる。
例えば、負荷が様々なサイズのTCPパケットを含み、転送されている全データ量を追跡することが目的である場合には、カウンタ評価基準を使用することができる。分布(例えば、平均サイズ又は50パーセンタイル)を取得することが目的である場合には、ヒストグラムを使用する。
ワーカーによって収集された評価基準は、metric_names/2関数によって戻されるリスト内で告示することができる。各評価基準は、以下の形式のタプルに対応することができる。
<metric_name>は、評価基準に与えられる名前である。<metric_type>は、カウンタ又はヒストグラムとすることができる。
いくつかの例では、関連する評価基準を識別することができる。このことは、例えば成功率カウンタ及び失敗率カウンタなどのいくつかの評価基準値を同じチャート上にプロットするのに有用となり得る。グループ化された評価基準の告示は、主要評価基準リスト内のサブリスト内に配置することができる。
例えば、
という評価基準告示では、success_requestsカウンタ及びfailed_requestsカウンタを含む評価基準のグループが生成されている。ここでは、1つのグループを使用して複数のグラフを生成することができる。例えば、成功要求及び失敗要求を含むグループは、絶対カウンタ値のグラフ及び割合値のグラフを生成することができる。
いくつかの例では、例えば以下の関数を呼び出すことによって、告示された評価基準をワーカーの内部から更新することができる。
タプル{“<metric_name>”,<metric_type>}は、評価基準の告示中に使用された同じものであり、更新すべき評価基準を識別する。<value>は、評価基準に加算される値である。
DSL言語は、本明細書で説明するシステム及び方法のための試験シナリオを書くために使用することができる。一般に、この言語は、LISP型プログラミング言語と同様の表記を有することができ、リスト及びタプルを含むことができる。リストは、角括弧で囲まれた要素をコンマで区切ったリストである。例えば、[A,B,C]である。タプルは、波括弧で囲まれた要素をコンマで区切ったリストである。例えば、{A,B,C}である。
いくつかの例では、シナリオを、最上位センテンスとドットのリストとすることができる。例えば、以下とすることができる。
この例の各センテンスは、タプルとすることができる。タプルの第1の要素は、例えばプール又はアサートなどの呼び出す関数の名前を示すことができる。他の要素は、この関数に受け渡すパラメータとすることができる。パラメータは、アトム、タプル又はリストとすることができる。例えば、{print,“Hello,world!”}又は{add,2,3}である。
いくつかの例では、最上位センテンスが、シナリオを記述する最上位リスト内に出現できるセンテンスである。最上位センテンスは、最上位ディレクティブ及びプールという2つの種類の一方とすることができる。最上位ディレクティブは、シナリオに関するいくつかの一般的事実についてシステムに伝え、或いはいくつかのグローバルパラメータを定める。プールは、実行すべき実際の作業を記述する。
最上位ディレクティブの例は、{make_install,[{git,<URL>},{branch,<Branch>},{dir,<Dir>}]}である。この例は、シナリオの実行前に、遠隔地のgitリポジトリからワーカーノードにソフトウェアをインストールするようにシステムに指示するものである。例えば、この例は、以下の動作を実行する。
この例では、ブランチが指定されていない場合、代わりにマスタが使用される。
さらなるディレクティブを提供することもできる。例えば、{include_resource,handle,“filename.txt”}というディレクティブ例は、追加のリソースファイルをシナリオに含めるようにベンチマークシステムに指示するものである。{assert,always,<Condition>}というディレクティブ例は、シナリオが実行されている間ずっと指定条件が満たされていることをチェックするようにベンチマークシステムに指示するものである。{assert,<TimeConstant>,<Condition>}というディレクティブ例は、少なくとも指定された時間にわたって条件が満たされていることをチェックするようにベンチマークシステムに指示するものである。条件は、特定の評価基準が数値的限界を満足できるように指定することができる。例えば、待ち時間が30ミリ秒よりも短いことを条件とすることができる。
いくつかの例では、プールディレクティブが、ノード間で分散させて同時に行うべきジョブのプールを表し、ジョブが、ワーカーによって定義又は実行される命令セットである。ワーカーは、特定のサービス(例えば、HTTPサーバ、FTPサーバ又はTWITTER)にアクセスするための命令セットを定めるプラグインとすることができ、又はこのようなプラグインを含むことができる。
以下は、10個のノード上でHTTP GET要求を2つのサイトに同時に送信するプール例である。
get命令文は、組み込みsimple_httpワーカーによって提供される。プール命令文内の第1のパラメータは、プールオプションのリストである。
一般に、プールは、以下のようなプールの最上位命令文を用いて定めることができる。
プールの最上位命令文は、オプションのリスト及び命令文のリストを含む2つの引数を取る。プールオプションのリストは、どれだけ多くのジョブを同時に立ち上げるか、可能な命令文のリストを定めるためにどのワーカーを使用すべきか、及びジョブをどのように立ち上げることができるかを定めることができる。size及びworker_typeが必要とされる場合もある。命令文のリストは、ジョブを定義する。ユーザは、選択されたワーカーによって定義された命令文及び標準ライブラリの命令文を使用することができる。
例えば、プールの最上位命令文は、以下とすることができる。
この例は、2つのプールを含み、2つの別個のジョブを定める。第1のプールによって定められるジョブは、sizeオプションによって定められるように同時に10回立ち上げられ、dummy_workerによって定められる一連の命令文を用いて記述される。このジョブは、1つの命令文(すなわち、print)のみを定め、標準出力に文字列を印刷するものである。他には何も指定されないので、全てのジョブが同時に立ち上げられる。このプールに関連するジョブは、{print,“AAA”}という単一の命令文を含むことができる。このジョブは、開始されると標準出力にAAAという文字列を印刷して終了する。dummy_workerを用いて定められる第2のプールに関するジョブは、標準出力にBBBを印刷して終了するものである。このジョブは、並行して同時に5回立ち上げられる。要約すると、上記のスクリプト例は、AAAを10回印刷することとBBBを5回印刷することを全て同時に行うことを伴う2つのジョブを定める。3つのノード上でスクリプトを実行する場合には、15個の文字列が3つの全てのノード間で均等に分散する。
プールのための様々なオプションを定めることもできる。例えば、{size,<int>}というオプションは、いくつのジョブを立ち上げなければならないかについてベンチマークシステムに指示するものである。この数は、いずれかの整数とすることができる。
{worker_type,<Atom>}というオプションは、特定のジョブを書くための命令セットを定めるワーカーを識別するものである。一般に、プールは、1つタイプのワーカーしか含まない。複数のタイプのワーカーを使用する場合には、各ワーカータイプが別個のプールに関連するように複数のプールを定めることができる。
{worker_start,{linear,<rate>}}というオプションは、間に一定の遅延を伴って並列ジョブを開始しなければならないことをシステムに示すものである。<rate>は、1秒当たりにいくつのジョブを開始しなければならないかを示す。指定しなければ、全てのジョブが同時に開始される。ジョブの実行速度は、例えば線形的に又は二次的に時間と共に変化するように定めることができる。
{worker_start,{poisson,<rate>}}というオプションは、ポワソン過程によって定められる速度でジョブを開始できることをシステムに示すものである。指定しなければ、全てのジョブが同時に開始することができる。
いくつかの例では、命令文が、変数としてブール条件を取ることができる。このような条件は、使用する比較演算を定めるアトムを第1の要素とするトリプレットによって定めることができる。考えられる演算は、例えば、lt(〜よりも小さい(less than))、gt(〜よりも大きい(greater than))、lte(〜以下の(less than or equal to))、及びgte(〜以上の(greater then or equal to))である。第2及び第3の要素は、比較すべき2つの値である。各値は、数字(例えば、整数又は浮動小数点値)又は評価基準名のいずれかとすることができる。評価基準は、ベンチマーク中に収集される数値であり、ワーカーが定めることができる。例えば、dummy_workerを使用する場合には、{gt,“print.value”,20}という条件が使用される。この条件は、印刷動作が20回よりも多く行われた場合に成功する。
これとは別に、又はこれに加えて、本明細書で説明するシステム及び方法は、様々なループを使用することもできる。ループ命令文は、いくつかの命令文ブロックを複数回繰り返すようにベンチマークシステムに指示するものである。これにより、異なる負荷プロファイルの生成が可能になる。
一般形式では、ループ命令文を以下のように定義することができる。
ループ命令文は、オプションのリスト及び命令文のリストという2つのパラメータを取る。命令文のリストは、繰り返すべき実際のジョブを定め、いずれかのワーカー、又は標準ライブラリで定められる命令文を含むことができる。オプションは、このジョブをどのように繰り返すかを定める。例えば、{time,<time>}というオプションは、命令ブロックをどれだけ長く繰り返すかを指定する。<time>は、{N,h}(N時間にわたる繰り返し)、{N,min}(N分間にわたる繰り返し)、{N,sec}(N秒間にわたる繰り返し)、{N,ms}(Nミリ秒間にわたる繰り返し)として指定することができる。
{rate,<rate>}というオプションは、命令ブロックをどのような頻度で繰り返すかを指定する。<rate>は、{N,rph}(1時間当たりN回の繰り返し)、{N,rpm}(1分間当たりN回の繰り返し)、{N,rps}(1秒間当たりN回の繰り返し)、{ramp,linear,<start−rate>,<end−rate>}(<start−rate>から<end−rate>まで反復率を線形的に変化させる)として指定することができる。反復率を指定しなければ、できるだけ頻繁に命令ブロックを繰り返すことができる。
{parallel,<N>}というオプションは、<N>個の並列スレッドで反復処理を実行することを示す。指定しなければ、反復処理を1つずつ実行することができる。
{iterator,<name>}というオプションは、現在の反復数を含む繰り返し命令ブロック内に<name>という名前の変数を定める。このオプションには、{var,<name>}という命令を用いてアクセスすることができる。
以下の例では、ループ本体の実行レートが5秒間に1rpsから5rpsまで連続して増加する。
以下の例では、変数を用いて定められた反復率を有する入れ子ループが使用される。
これらの2つの例の違いは、反復率の増加方法にある。第1の例では、直線チャートが生じると考えられ、第2の例では、階段関数チャートが生じると考えられる。
様々な例では、ベンチマークシナリオが、しばしば実行速度又は全体的な継続時間などのいくつかの値を含む必要がある。これは、環境変数を用いて行うことができる。例えば、{var,<name>[,<default_value>]}は、ハードコード化された値を可変命令文の形に置き換えるものであり、この場合の<name>は、使用する値を識別する文字列である。その後、シナリオの開始時に−−envコマンドラインパラメータを用いて実際の値が受け渡される。
いくつかの例では、リソース命令文を使用してファイルにデータを含めることができる。リソースファイルは、以下のようにinclude_resource最上位ディレクティブを用いて告示することができ、
この場合の<resource_name>は、このリソースファイルをシナリオ内で識別するアトムであり、<file_name>は、リソースファイルのファイル名を示す文字列である。<type>パラメータは、ファイルの内容をどのように解釈すべきかを示すアトムである。リソースファイルが登録されると、{resource,<resource_name>}というリソース命令文を使用して、シナリオ内のいずれかの場所にその内容を含めることができる。
いくつかの例では、システム及び方法が、ベンチマークの前及び/又は後にユーザがカスタムコードを実行できるようにするプレフック及び/又はポストフックを利用する。フックは、全てのノード上で適用することも、又はディレクタノード上でのみ適用することもできる。フックハンドラのあらゆる環境変数は、シナリオ内で変更して使用することができる。
シナリオのためのフック例は、以下の通りである。
ワーカーのためのフック例は、以下の通りである。
本明細書で説明した主題及び動作は、デジタル電子回路で実装することも、本明細書で開示した構造及びその構造的同等物を含むコンピュータソフトウェア、ファームウェア又はハードウェアで実装することも、或いはこれらのうちの1つ又は2つ以上の組み合わせで実装することもできる。本明細書で説明した主題は、1又は2以上のコンピュータプログラムとして、すなわちコンピュータ記憶媒体上に符号化された、データ処理装置によって実行される、又はデータ処理装置の動作を制御するコンピュータプログラム命令の1又は2以上のモジュールとして実装することができる。これとは別に、又はこれに加えて、プログラム命令は、好適な受信装置に送信されてデータ処理装置によって実行される情報を符号化するように生成された、例えば機械によって生成された電気信号、光信号又は電磁信号などの人工的に生成された伝搬信号上で符号化することもできる。コンピュータ記憶媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶基板、ランダム又はシリアルアクセスメモリアレイ又は素子、或いはこれらのうちの1つ又は2つ以上の組み合わせとすることができ、或いはこれらに含めることができる。さらに、コンピュータ記憶媒体は伝搬信号ではなく、人工的に生成された伝搬信号に符号化されたコンピュータプログラム命令のソース又は宛先とすることができる。コンピュータ記憶媒体は、1又は2以上の別個の物理的コンポーネント又は媒体(例えば、複数のCD、ディスク又はその他の記憶装置)とすることも、或いはこれらに含めることもできる。
本明細書で説明した動作は、1又は2以上のコンピュータ可読記憶装置に記憶された、又は他のソースから受け取られたデータに対してデータ処理装置が実行する動作として実装することもできる。
「データ処理装置」という用語は、一例としてプログラマブルプロセッサ、コンピュータ、1又は複数のシステムオンチップ、或いはこれらの組み合わせを含む、データを処理する全ての種類の装置、デバイス及び機械を含む。装置は、例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)などの専用論理回路を含むことができる。装置は、ハードウェアに加えて、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、或いはこれらのうちの1つ又は2つ以上の組み合わせを構成するコードなどの、対象のコンピュータプログラムのための実行環境を生じるコードを含むこともできる。装置及び実行環境は、ウェブサービス、分散コンピューティングインフラ、及びグリッドコンピューティングインフラなどの様々な異なるコンピューティングモデルインフラを実現することができる。
(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト又はコードとしても知られている)コンピュータプログラムは、コンパイラ型言語又はインタープリタ型言語、宣言型言語又は手続き型言語を含むあらゆる形のプログラミング言語で書くことができ、スタンドアロンプログラム、又はモジュール、コンポーネント、サブルーチン、オブジェクト、又はコンピューティング環境で使用するのに適した他のユニットとしての形を含むあらゆる形で展開することができる。コンピュータプログラムは、必須ではないが、ファイルシステム内のファイルに対応することができる。プログラムは、対象のプログラム専用の単一のファイル内の、又は複数の連動するファイル(例えば、1又は2以上のモジュール、サブプログラム、又はコードの一部を記憶するファイル)内の、他のプログラム又はデータ(例えば、マークアップ言語リソースに記憶された1又は2以上のスクリプト)を保持するファイルの一部に記憶することができる。コンピュータプログラムは、1つのコンピュータ上で実行されるように展開することも、或いは1つのサイトに位置する、又は複数のサイトに分散して通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開することもできる。
本明細書で説明した処理フロー及びロジックフローは、1又は2以上のコンピュータプログラムを実行する1又は2以上のプログラマブルプロセッサによって、入力データに作用して出力を生成することによって動作を行うように実行することができる。処理フロー及びロジックフローは、例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)などの専用論理回路によって実行することもでき、装置をこのような専用論理回路として実装することもできる。
コンピュータプログラムを実行するのに適したプロセッサとしては、一例として、汎用マイクロプロセッサ及び専用マイクロプロセッサの両方、並びにあらゆる種類のデジタルコンピュータのいずれか1つ又は2つ以上のプロセッサが挙げられる。一般に、プロセッサは、リードオンリメモリ又はランダムアクセスメモリ、或いはこれらの両方から命令及びデータを受け取る。コンピュータの必須要素は、命令に従って動作を実行するプロセッサ、並びに命令及びデータを記憶する1又は2以上の記憶装置である。一般に、コンピュータは、例えば磁気ディスク、磁気光学ディスク又は光学ディスクなどの、データを記憶する1又は2以上の大容量記憶装置も含み、或いはこのような大容量記憶装置との間でデータの受け取り及びデータの転送、又はこれらの両方を行うように動作可能に結合される。しかしながら、コンピュータは、このような装置を有していなくてもよい。さらに、コンピュータは、いくつかの例を挙げると、例えば携帯電話機、携帯情報端末(PDA)、モバイルオーディオプレーヤ又はビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、又はポータブル記憶装置(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)などの別の装置に組み込むこともできる。コンピュータプログラム命令及びデータの記憶に適した装置としては、一例として、EPROM、EEPROM及びフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスク又はリムーバブルディスクなどの磁気ディスク、磁気光学ディスク、並びにCD ROM及びDVD−ROMディスクを含む全ての形の不揮発性メモリ、媒体及びメモリデバイスが挙げられる。プロセッサ及びメモリは、専用論理回路によって補完することも、又は専用論理回路に組み込むこともできる。
本明細書で説明した主題は、ユーザとの相互作用をもたらすために、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタなどの、ユーザに情報を表示する表示装置と、マウス又はトラックボールなどの、ユーザがコンピュータに入力を提供できるようにするキーボード及びポインティングデバイスとを有するコンピュータ上に実装することができる。他の種類の装置を使用してユーザとの相互作用をもたらすこともでき、例えばユーザに提供されるフィードバックは、視覚的フィードバック、聴覚的フィードバック又は触覚的フィードバックなどのあらゆる形の感覚的フィードバックとすることができ、ユーザからの入力は、音響入力、音声入力又は触覚入力を含むあらゆる形で受け取ることができる。また、コンピュータは、例えばウェブブラウザから受け取られた要求に応答してユーザのクライアント装置上のウェブブラウザにウェブページを送信することなどの、ユーザが使用する装置との間でリソースを送受信することによってユーザと相互作用することもできる。
本明細書で説明した主題は、例えばデータサーバとしてのバックエンドコンポーネントを含む、又は例えばアプリケーションサーバとしてのミドルウェアコンポーネントを含む、又は例えば本明細書で説明した主題の実施形態とユーザが相互作用できるようにするグラフィカルユーザインターフェイス又はウェブブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含む、或いは1又は2以上のこのようなバックエンド、ミドルウェア又はフロントエンドコンポーネントのいずれかの組み合わせを含むコンピュータシステムに実装することができる。システムのコンポーネントは、例えば通信ネットワークなどの何らかの形のデジタルデータ通信又はその媒体によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、及びピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)が挙げられる。
コンピュータシステムは、クライアント及びサーバを含むことができる。一般に、クライアントとサーバは互いに離れており、通常は通信ネットワークを介して相互作用する。このクライアントとサーバの関係は、それぞれのコンピュータ上で実行される、互いにクライアント−サーバの関係を有するコンピュータプログラムによって生じる。いくつかの実装では、(例えば、クライアント装置と相互作用するユーザにデータを表示し、ユーザからユーザ入力を受け取る目的で)サーバがクライアント装置にデータ(例えば、HTMLページ)を送信する。サーバでは、クライアント装置において生成されたデータ(例えば、ユーザインタラクションの結果)をクライアント装置から受け取ることができる。
1又は2以上のコンピュータから成るシステムは、システムにインストールされて動作時にシステムに処理を実行させるソフトウェア、ファームウェア、ハードウェア又はこれらの組み合わせを有することによって特定の動作又は処理を実行するように構成することができる。1又は2以上のコンピュータプログラムは、データ処理装置によって実行された時に装置に処理を実行させる命令を含むことによって特定の動作又は処理を実行するように構成することができる。
本明細書は多くの特定の実装の詳細を含むが、これらの詳細は、いずれかの発明又は特許請求できるものの範囲を限定するものとして解釈すべきではなく、むしろ特定の発明の特定の実装に固有の特徴を説明するものとして解釈すべきである。本明細書において別個の実装の文脈で説明したいくつかの特徴は、単一の実装において組み合わせて実装することもできる。これとは逆に、単一の実施形態の文脈で説明した様々な特徴は、複数の実施形態において別個に、又はいずれかの好適な部分的組み合わせの形で実装することもできる。さらに、上記では特定の組み合わせで機能するように特徴を説明し、最初はこのように特許請求している場合もあるが、いくつかの例では、特許請求する組み合わせからの1又は2以上の特徴をこれらの組み合わせから削除することもでき、特許請求する組み合わせを部分的組み合わせ又は部分的組み合わせの変形例に向けることもできる。
同様に、図面には特定の順序で動作を示しているが、これについて、望ましい結果を達成するためにこのような動作を図示の特定の順序又は順番で実行し、又は図示の動作を全て実行する必要があると理解すべきではない。状況によっては、マルチタスク処理及び並行処理が有利な場合もある。さらに、上述した実装において様々なシステムコンポーネントを分離していても、このような分離が全ての実装において必要であると理解すべきではなく、説明したプログラムコンポーネント及びシステムは、単一のソフトウェア製品に一般的に統合し、又は複数のソフトウェア製品にパッケージ化することもできると理解されたい。
以上、本主題の特定の実装について説明した。他の実装は、以下の特許請求の範囲に含まれる。場合によっては、特許請求の範囲に記載した処理を異なる順序で実行しても望ましい結果を得ることができる。また、添付図に示した工程は、望ましい結果を達成するために必ずしも図示の特定の順序又は順番で行う必要はない。実装によっては、マルチタスク処理及び並行処理が有利な場合もある。
100 ベンチマークシステム
102 APIサーバ
104 クラウドコントローラ
106a ワーカーノード
106b ディレクタノード
108 被試験システム
110 コマンドラインインターフェイス
112 クライアント装置
114 接続
116 接続
118 接続

Claims (30)

  1. コンピュータシステムを試験する方法であって、
    複数のノード上に第1のワーカープールを実装して、各ノードが前記第1のワーカープールからのワーカーのうちの1つ又は2つ以上を含むようにするステップと、
    前記第1のワーカープールに、前記コンピュータシステムと相互作用するように構成された第1のタスクを実行するための命令セットを与えるステップと、
    前記第1のワーカープールを使用して前記第1のタスクを実行するステップと、
    前記第1のワーカープールからの前記ワーカーが前記第1のタスクを実行している間に、前記コンピュータシステムに関連する少なくとも1つの性能評価基準をモニタするステップと、
    を1又は2以上のコンピュータによって実行するステップを含む、
    ことを特徴とする方法。
  2. 前記複数のノード内の各ノードは、仮想マシン及び物理的マシンの少なくとも一方を含む、
    請求項1に記載の方法。
  3. 前記複数のノードは、複数のデータセンタに存在する、
    請求項1に記載の方法。
  4. 前記第1のワーカープールからの各ワーカーは、別個のノードに存在する、
    請求項1に記載の方法。
  5. 前記第1のワーカープールからの少なくとも2つのワーカーは、単一のノードに存在する、
    請求項1に記載の方法。
  6. 前記複数のノードは、少なくとも1つのディレクタノードと、少なくとも1つのワーカーノードとを含む、
    請求項1に記載の方法。
  7. 前記第1のタスクは、前記コンピュータシステムに要求を送信するステップを含む、
    請求項1に記載の方法。
  8. 前記要求は、ハイパーテキストトランスファプロトコル(HTTP)要求及びメッセージキュー(MQ)要求から成る群から選択される、
    請求項7に記載の方法。
  9. 前記第1のワーカープールからの各ワーカーは、前記第1のタスクを実行する際に、前記コンピュータシステムに一連の要求を指定速度で送信する、
    請求項1に記載の方法。
  10. 前記第1のワーカープールからの各ワーカーは、前記第1のタスクを実行する際に、以前の要求に対する前記コンピュータシステムからの応答を受け取るのを待つことなく前記コンピュータシステムに要求を送信するように構成される、
    請求項1に記載の方法。
  11. 前記少なくとも1つの性能特性は、速度、待ち時間及びこれらの組み合わせから成る群から選択される、
    請求項1に記載の方法。
  12. 前記少なくとも1つの性能評価基準をユーザのクライアント装置に提供するステップをさらに含む、
    請求項1に記載の方法。
  13. 前記第1のワーカープールと前記コンピュータシステムとの間のインターフェイスとして機能するように構成されたワーカーモジュールを準備するステップをさらに含む、
    請求項1に記載の方法。
  14. 複数のノード上に第2のワーカープールを実装して、各ノードが前記第2のワーカープールからの1又は2以上のワーカーを含むようにするステップと、
    前記第2のワーカープールに、前記コンピュータシステムと相互作用するように構成された第2のタスクを実行するための命令セットを与えるステップと、
    前記第2のワーカープールを使用して前記第2のタスクを実行するステップと、
    をさらに含む請求項1に記載の方法。
  15. 前記第1のタスクと前記第2のタスクは並行して実行される、
    請求項14に記載の方法。
  16. システムであって、
    複数のノード上に第1のワーカープールを実装して、各ノードが前記第1のワーカープールからのワーカーのうちの1つ又は2つ以上を含むようにするステップと、
    前記第1のワーカープールに、前記コンピュータシステムと相互作用するように構成された第1のタスクを実行するための命令セットを与えるステップと、
    前記第1のワーカープールを使用して前記第1のタスクを実行するステップと、
    前記第1のワーカープールからの前記ワーカーが前記第1のタスクを実行している間に、前記コンピュータシステムに関連する少なくとも1つの性能評価基準をモニタするステップと、
    を含む動作を実行するようにプログラムされた1又は2以上のコンピュータを備える、
    ことを特徴とするシステム。
  17. 前記複数のノード内の各ノードは、仮想マシン及び物理的マシンの少なくとも一方を含む、
    請求項16に記載のシステム。
  18. 前記複数のノードは、複数のデータセンタに存在する、
    請求項16に記載のシステム。
  19. 前記第1のワーカープールからの各ワーカーは、別個のノードに存在する、
    請求項16に記載のシステム。
  20. 前記第1のワーカープールからの少なくとも2つのワーカーは、単一のノードに存在する、
    請求項16に記載のシステム。
  21. 前記複数のノードは、少なくとも1つのディレクタノードと、少なくとも1つのワーカーノードとを含む、
    請求項16に記載のシステム。
  22. 前記第1のタスクは、前記コンピュータシステムに要求を送信するステップを含む、
    請求項16に記載のシステム。
  23. 前記要求は、ハイパーテキストトランスファプロトコル(HTTP)要求及びメッセージキュー(MQ)要求から成る群から選択される、
    請求項22に記載のシステム。
  24. 前記第1のワーカープールからの各ワーカーは、前記第1のタスクを実行する際に、前記コンピュータシステムに一連の要求を指定速度で送信する、
    請求項16に記載のシステム。
  25. 前記第1のワーカープールからの各ワーカーは、前記第1のタスクを実行する際に、以前の要求に対する前記コンピュータシステムからの応答を受け取るのを待つことなく前記コンピュータシステムに要求を送信するように構成される、
    請求項16に記載のシステム。
  26. 前記少なくとも1つの性能特性は、速度、待ち時間及びこれらの組み合わせから成る群から選択される、
    請求項16に記載のシステム。
  27. 前記少なくとも1つの性能評価基準をユーザのクライアント装置に提供するステップをさらに含む、
    請求項16に記載のシステム。
  28. 前記第1のワーカープールと前記コンピュータシステムとの間のインターフェイスとして機能するように構成されたワーカーモジュールを準備するステップをさらに含む、
    請求項16に記載のシステム。
  29. 複数のノード上に第2のワーカープールを実装して、各ノードが前記第2のワーカープールからの1又は2以上のワーカーを含むようにするステップと、
    前記第2のワーカープールに、前記コンピュータシステムと相互作用するように構成された第2のタスクを実行するための命令セットを与えるステップと、
    前記第2のワーカープールを使用して前記第2のタスクを実行するステップと、
    をさらに含む請求項16に記載のシステム。
  30. 命令を記憶する記憶装置であって、前記命令は、1又は2以上のコンピュータシステムによって実行された時に、
    複数のノード上に第1のワーカープールを実装して、各ノードが前記第1のワーカープールからのワーカーのうちの1つ又は2つ以上を含むようにするステップと、
    前記第1のワーカープールに、前記コンピュータシステムと相互作用するように構成された第1のタスクを実行するための命令セットを与えるステップと、
    前記第1のワーカープールを使用して前記第1のタスクを実行するステップと、
    前記第1のワーカープールからの前記ワーカーが前記第1のタスクを実行している間に、前記コンピュータシステムに関連する少なくとも1つの性能評価基準をモニタするステップと、
    を含む動作を実行する、
    ことを特徴とする記憶装置。
JP2017564357A 2015-06-09 2016-06-08 拡張可能な分散型作業負荷試験 Pending JP2018524693A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562173251P 2015-06-09 2015-06-09
US62/173,251 2015-06-09
PCT/US2016/036425 WO2016200921A1 (en) 2015-06-09 2016-06-08 Distributed scalable workload testing

Publications (1)

Publication Number Publication Date
JP2018524693A true JP2018524693A (ja) 2018-08-30

Family

ID=56134690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017564357A Pending JP2018524693A (ja) 2015-06-09 2016-06-08 拡張可能な分散型作業負荷試験

Country Status (6)

Country Link
US (1) US20160364307A1 (ja)
EP (1) EP3308271A1 (ja)
JP (1) JP2018524693A (ja)
CN (1) CN107735771A (ja)
AU (1) AU2016276475A1 (ja)
WO (1) WO2016200921A1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016048394A1 (en) 2014-09-25 2016-03-31 Hewlett Packard Enterprise Development Lp Testing a cloud service
US10514994B2 (en) 2015-06-09 2019-12-24 Satori Worldwide, Llc Distributed scalable workload testing
US10681074B2 (en) 2015-10-28 2020-06-09 Qomplx, Inc. System and method for comprehensive data loss prevention and compliance management
US11032323B2 (en) 2015-10-28 2021-06-08 Qomplx, Inc. Parametric analysis of integrated operational technology systems and information technology systems
US11055451B2 (en) 2015-10-28 2021-07-06 Qomplx, Inc. System and methods for multi-language abstract model creation for digital environment simulations
US11005824B2 (en) 2015-10-28 2021-05-11 Qomplx, Inc. Detecting and mitigating forged authentication object attacks using an advanced cyber decision platform
US11477245B2 (en) 2015-10-28 2022-10-18 Qomplx, Inc. Advanced detection of identity-based attacks to assure identity fidelity in information technology environments
US11055630B2 (en) 2015-10-28 2021-07-06 Qomplx, Inc. Multitemporal data analysis
US11635994B2 (en) 2015-10-28 2023-04-25 Qomplx, Inc. System and method for optimizing and load balancing of applications using distributed computer clusters
US11968235B2 (en) 2015-10-28 2024-04-23 Qomplx Llc System and method for cybersecurity analysis and protection using distributed systems
US12041091B2 (en) 2015-10-28 2024-07-16 Qomplx Llc System and methods for automated internet- scale web application vulnerability scanning and enhanced security profiling
US11089045B2 (en) 2015-10-28 2021-08-10 Qomplx, Inc. User and entity behavioral analysis with network topology enhancements
US11637866B2 (en) 2015-10-28 2023-04-25 Qomplx, Inc. System and method for the secure evaluation of cyber detection products
US12058178B2 (en) 2015-10-28 2024-08-06 Qomplx Llc Privilege assurance of enterprise computer network environments using logon session tracking and logging
US12107895B2 (en) 2015-10-28 2024-10-01 Qomplx Llc Privilege assurance of enterprise computer network environments using attack path detection and prediction
US11023284B2 (en) 2015-10-28 2021-06-01 Qomplx, Inc. System and method for optimization and load balancing of computer clusters
US11539663B2 (en) 2015-10-28 2022-12-27 Qomplx, Inc. System and method for midserver facilitation of long-haul transport of telemetry for cloud-based services
US11757849B2 (en) 2015-10-28 2023-09-12 Qomplx, Inc. Detecting and mitigating forged authentication object attacks in multi-cloud environments
US11757920B2 (en) 2015-10-28 2023-09-12 Qomplx, Inc. User and entity behavioral analysis with network topology enhancements
US12113831B2 (en) 2015-10-28 2024-10-08 Qomplx Llc Privilege assurance of enterprise computer network environments using lateral movement detection and prevention
US11323484B2 (en) 2015-10-28 2022-05-03 Qomplx, Inc. Privilege assurance of enterprise computer network environments
US11055601B2 (en) 2015-10-28 2021-07-06 Qomplx, Inc. System and methods for creation of learning agents in simulated environments
US10572365B2 (en) * 2016-12-15 2020-02-25 Nutanix, Inc. Verification for device management
WO2018187160A1 (en) * 2017-04-07 2018-10-11 Satori Worldwide, Llc Distributed scalable workload testing
US10838840B2 (en) * 2017-09-15 2020-11-17 Hewlett Packard Enterprise Development Lp Generating different workload types for cloud service testing
US10541901B2 (en) 2017-09-19 2020-01-21 Keysight Technologies Singapore (Sales) Pte. Ltd. Methods, systems and computer readable media for optimizing placement of virtual network visibility components
US10764169B2 (en) 2017-10-09 2020-09-01 Keysight Technologies, Inc. Methods, systems, and computer readable media for testing virtual network components deployed in virtual private clouds (VPCs)
WO2019113508A1 (en) * 2017-12-07 2019-06-13 Fractal Industries, Inc. A system and methods for multi-language abstract model creation for digital environment simulations
US11038770B2 (en) 2018-02-01 2021-06-15 Keysight Technologies, Inc. Methods, systems, and computer readable media for managing deployment and maintenance of network tools
US10812349B2 (en) 2018-02-17 2020-10-20 Keysight Technologies, Inc. Methods, systems and computer readable media for triggering on-demand dynamic activation of cloud-based network visibility tools
US11044180B2 (en) * 2018-10-26 2021-06-22 Vmware, Inc. Collecting samples hierarchically in a datacenter
CN111522727B (zh) * 2019-02-01 2023-04-14 阿里巴巴集团控股有限公司 一种模拟对象测试方法、设备和系统
CN110752964B (zh) * 2019-09-06 2021-09-14 锐捷网络股份有限公司 一种网络设备的测试方法及装置
CN110716832B (zh) * 2019-09-24 2022-06-07 腾讯科技(深圳)有限公司 业务运行的监控告警方法、系统、电子设备及存储介质
US11489745B2 (en) 2019-10-15 2022-11-01 Keysight Technologies, Inc. Methods, systems and computer readable media for providing a declarative network monitoring environment
CN111193642A (zh) * 2019-12-30 2020-05-22 支付宝(杭州)信息技术有限公司 压测方法、压测平台、电子设备及可读存储介质
US11876686B2 (en) * 2022-03-31 2024-01-16 Keysight Technologies, Inc. Methods, systems, and computer readable media for conducting a network traffic simulation using hypertext transfer protocol archive data
US20240143414A1 (en) * 2022-10-27 2024-05-02 Microsoft Technology Licensing, Llc Load testing and performance benchmarking for large language models using a cloud computing platform
US12063140B2 (en) 2022-10-31 2024-08-13 Keysight Technologies, Inc. Methods, systems, and computer readable media for test system agent deployment in a smartswitch computing environment
CN117093503B (zh) * 2023-10-17 2024-02-06 杭银消费金融股份有限公司 一种客户端测试管理方法与系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153209A (ja) * 1997-08-04 1999-02-26 Nec Corp 命令組合せ連続試験方式
EP2447838A1 (en) * 2010-10-29 2012-05-02 Fujitsu Limited Technique for efficient parallelization of software analysis in a distributed computing environment through intelligent dynamic load balancing
JP2013041574A (ja) * 2011-07-21 2013-02-28 Hitachi Ltd 情報処理システム運用管理装置、運用管理方法及び運用管理プログラム
US20140047272A1 (en) * 2012-08-07 2014-02-13 Advanced Micro Devices, Inc. System and method for configuring a cloud computing system with a synthetic test workload
US8839035B1 (en) * 2011-09-14 2014-09-16 Amazon Technologies, Inc. Cloud-based test execution
US20140351412A1 (en) * 2013-05-21 2014-11-27 Amazon Technologies, Inc. Determining and monitoring performance capabilities of a computer resource service
US8977903B1 (en) * 2012-05-08 2015-03-10 Amazon Technologies, Inc. Scalable testing in a production system with autoshutdown

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100547583C (zh) * 2003-08-14 2009-10-07 甲骨文国际公司 数据库的自动和动态提供的方法
US20140047095A1 (en) * 2012-08-07 2014-02-13 Advanced Micro Devices, Inc. System and method for tuning a cloud computing system
WO2014062637A2 (en) * 2012-10-15 2014-04-24 Hadapt, Inc. Systems and methods for fault tolerant, adaptive execution of arbitrary queries at low latency
CN103279385A (zh) * 2013-06-01 2013-09-04 北京华胜天成科技股份有限公司 一种云计算环境中集群任务调度方法及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153209A (ja) * 1997-08-04 1999-02-26 Nec Corp 命令組合せ連続試験方式
EP2447838A1 (en) * 2010-10-29 2012-05-02 Fujitsu Limited Technique for efficient parallelization of software analysis in a distributed computing environment through intelligent dynamic load balancing
JP2012099107A (ja) * 2010-10-29 2012-05-24 Fujitsu Ltd 知的且つ動的なロードバランシングによる、分散コンピューティング環境におけるソフトウェアの解析の効率的な並列化の手法
JP2013041574A (ja) * 2011-07-21 2013-02-28 Hitachi Ltd 情報処理システム運用管理装置、運用管理方法及び運用管理プログラム
US8839035B1 (en) * 2011-09-14 2014-09-16 Amazon Technologies, Inc. Cloud-based test execution
US8977903B1 (en) * 2012-05-08 2015-03-10 Amazon Technologies, Inc. Scalable testing in a production system with autoshutdown
US20140047272A1 (en) * 2012-08-07 2014-02-13 Advanced Micro Devices, Inc. System and method for configuring a cloud computing system with a synthetic test workload
US20140351412A1 (en) * 2013-05-21 2014-11-27 Amazon Technologies, Inc. Determining and monitoring performance capabilities of a computer resource service

Also Published As

Publication number Publication date
AU2016276475A1 (en) 2017-11-30
CN107735771A (zh) 2018-02-23
WO2016200921A1 (en) 2016-12-15
EP3308271A1 (en) 2018-04-18
US20160364307A1 (en) 2016-12-15

Similar Documents

Publication Publication Date Title
JP2018524693A (ja) 拡張可能な分散型作業負荷試験
US10514994B2 (en) Distributed scalable workload testing
CN104077212B (zh) 压力测试系统及方法
US7984095B2 (en) Apparatus, system and method of executing monolithic application programs on grid computing systems
Di et al. GloudSim: Google trace based cloud simulator with virtual machines
US20150263900A1 (en) High performance distributed computing environment particularly suited for reservoir modeling and simulation
US8326971B2 (en) Method for using dynamically scheduled synthetic transactions to monitor performance and availability of E-business systems
US10545857B2 (en) Controlling executions of synchronous and/or non-synchronous operations with asynchronous messages
US20140351394A1 (en) Reporting performance capabilities of a computer resource service
US20140331209A1 (en) Program Testing Service
CN110546615B (zh) 超动态java管理扩展
Wu et al. Modeling of distributed file systems for practical performance analysis
Wu et al. A distributed workflow management system with case study of real-life scientific applications on grids
US20180121329A1 (en) Uninstrumented code discovery
CN116635834A (zh) 协调在可扩展应用处执行的请求
EP1963973B1 (en) Systems and methods for quantitative application measurement
US20180219752A1 (en) Graph search in structured query language style query
Tao et al. Cloud-based infrastructure for mobile testing as a service
WO2018187160A1 (en) Distributed scalable workload testing
Tchana et al. A self-scalable and auto-regulated request injection benchmarking tool for automatic saturation detection
US10203970B2 (en) Dynamic configuration of native functions to intercept
Phutrakul Evaluation of Emerging Serverless Platforms
JP2013232035A (ja) 情報処理システム、情報処理装置、情報処理方法、及びプログラム
Dawson A Simple Resource Usage Monitor for Users of PBS and Slurm
Marru et al. Reliable and scalable job submission: LEAD science gateways testing and experiences with WS GRAM on Teragrid resources

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20190314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20190314

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190607

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200713

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210222