JP5723882B2 - イベント・ドリブン・システムにおける非集中負荷分散の方法およびコンピュータ・プログラム - Google Patents

イベント・ドリブン・システムにおける非集中負荷分散の方法およびコンピュータ・プログラム Download PDF

Info

Publication number
JP5723882B2
JP5723882B2 JP2012525539A JP2012525539A JP5723882B2 JP 5723882 B2 JP5723882 B2 JP 5723882B2 JP 2012525539 A JP2012525539 A JP 2012525539A JP 2012525539 A JP2012525539 A JP 2012525539A JP 5723882 B2 JP5723882 B2 JP 5723882B2
Authority
JP
Japan
Prior art keywords
node
task
target
load
tasks
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
JP2012525539A
Other languages
English (en)
Other versions
JP2013502642A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013502642A publication Critical patent/JP2013502642A/ja
Application granted granted Critical
Publication of JP5723882B2 publication Critical patent/JP5723882B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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
    • 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
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Power Sources (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、一般に、ソフトウェアによって実行される複数のタスクにより複数のノードを使用するデータ・ストリーム処理に関し、詳細には、エネルギー・コストを削減するという目標で、ターゲット・ノードと呼ばれる可能なノードのサブセット上にタスクを集中させ、負荷分散品質(予想エンドツーエンド・スループット時間など)に関して所定の基準を満たし、経済対策としてタスクのない他のノードを静止させることができることによる負荷分散に関する。
インターネット接続およびネットワーク接続のセンサ・デバイスの急増により、多数のオンライン・ソースから入手可能なデジタル情報の割合が増加している。これらのオンライン・ソースは、データ・ストリームの形で絶え間なくデータ(たとえば、ニュース項目、金融データ、センサ表示値、インターネット・トランザクション記録など)を発生し、ネットワークに提供している。データ・ストリーム処理装置は、典型的に、これらのデータ・ストリームを受信またはモニターし、これを処理して使用可能なフォーマットで結果を生み出すようにネットワーク内に実装される。たとえば、データ・ストリーム処理装置は、たとえば、結果のリストを生成するかまたは相互に確証するために、2つ以上のデータ・ストリームからの(たとえば、2つ以上のニュース・ソースからの)関連データ項目を選別し、集約または評価する結合演算を実行するように実装することができる。
しかし、典型的なデータ・ストリームの入力速度は難題を提示している。データ・ストリーム処理装置はデータ・ストリームが入力される際の、ときに散発的で予測不能な速度を制御できないので、特に速度急上昇中にデータ・ストリーム処理装置が容量以上に負荷がかかることは珍しいことではない。典型的なデータ・ストリーム処理装置は、データ・ストリームを任意にドロップする(たとえば、データ・ストリームの受信を辞退する)ことにより、このようなローディング問題に対処する。これによりローディングが削減されるが、この戦略の任意性の結果、予測不能かつ最適とは言えないデータ処理結果が発生する傾向がある。というのは、関連性のないデータを含むデータ・ストリームが保持され処理される一方で、有用なデータを含むデータ・ストリームが気付かずにドロップされる可能性があるからである。
イベント・ドリブン・システム(event-driven system)における負荷分散のための既知の解決策の大部分では、イベント処理コンポーネントがステートレス(stateless)であると想定する。負荷分散のためにステートフル演算子(stateful operator)を移行することは困難かつ費用のかかることなので、ステートフル演算子をターゲットにする既知の解決策はごくわずかである。ステートフル演算子を移行するために、すべてのデータ・ストリーム処理を停止しなければならず、すべての必要な状態を移行しなければならず、それに応じてすべてのイベント・ルーティング・パスを更新しなければならない。さらに、これらの解決策のほとんどは集中型である。
Xing,ICDE’05
マシン・クラスタによって作業負荷を分散できる場合、本発明者によって提案される異なる戦略は、複数のノードを使用して作業負荷を処理しようと試みることである。データ・ストリーム量が低下する期間中にこのような戦略が使用されている場合、より少ないノードにタスクを戻し、いくつかのノードを全体的に静止するという戦略は、電力コストおよび冷却コストを低下させることができる。
以上および以下に記載した通り、本発明の様々な利点および目的は、本発明の第1の態様により、イベント・ドリブン・システムにおける非集中負荷分散(decentralized load distribution)の方法を提供することによって達成され、この方法は、ステートフルおよびステートレス・イベント処理コンポーネントを有するイベント・ドリブン・システム内の複数のノードで複数のタスクによって処理すべきデータ・フローを受信するステップであって、他のタスクの出力に依存するタスクである階層タスクと、他のタスクの出力に依存しないタスクである非階層タスクと、それらの混合物からなるグループから複数のタスクが選択されるステップと、各ノードで処理(host)された各タスクおよびその熱特性を含むノードの特性に関する統計値を収集するステップと、収集した統計値を使用し、それに対して1つのタスクを部分的にまたは全体的に転送することができる隣接ノードのリストを作成するステップと、少なくとも1つのタスクを処理するシステム負荷を分散し、冷却コストを削減するために、隣接ノードのリストからターゲット・ノードと呼ばれる隣接ノードに移行するための考慮用のノードにおいて第1の温度を有し、ターゲット・タスクと呼ばれる少なくとも1つのタスクを選択するステップと、それに対して少なくとも1つのターゲット・タスクを移行することができ、第2の温度を有するターゲット・ノードを選択するステップと、その移行が第1の温度を低下させ、第2の温度が所定の許容できる熱しきい値未満であるという条件で、ターゲット・タスクをターゲット・ノードに移行するステップと、ターゲット・タスクの移行の回数を管理するために各ノードで負荷交換プロトコルを確立するステップであって、非集中負荷移行がイベント・ドリブン・システムにおける全システムの負荷分散につながり、冷却コストを削減するステップとを含む。
本発明の第2の態様により、イベント・ドリブン・システムにおける非集中負荷分散のためのコンピュータ可読プログラム・コードを有するコンピュータ記録可能記憶媒体を含むコンピュータ・プログラム(computer program product)が提供され、このコンピュータ可読プログラム・コードは、ステートフルおよびステートレス・イベント処理コンポーネントを有するイベント・ドリブン・システム内の複数のノードで複数のタスクによって処理すべきデータ・フローを受信するために構成されたコンピュータ可読プログラム・コードであって、他のタスクの出力に依存するタスクである階層タスクと、他のタスクの出力に依存しないタスクである非階層タスクと、それらの混合物からなるグループから複数のタスクが選択されるコンピュータ可読プログラム・コードと、各ノードで処理された各タスクおよびその熱特性を含むノードの特性に関する統計値を収集するために構成されたコンピュータ可読プログラム・コードと、収集した統計値を使用し、それに対して1つのタスクを部分的にまたは全体的に転送することができる隣接ノードのリストを作成するために構成されたコンピュータ可読プログラム・コードと、少なくとも1つのタスクを処理するシステム負荷を分散し、冷却コストを削減するために、隣接ノードのリストからターゲット・ノードと呼ばれる隣接ノードに移行するための考慮用のノードにおいて第1の温度を有し、ターゲット・タスクと呼ばれる少なくとも1つのタスクを選択するために構成されたコンピュータ可読プログラム・コードと、それに対して少なくとも1つのターゲット・タスクを移行することができ、第2の温度を有するターゲット・ノードを選択するために構成されたコンピュータ可読プログラム・コードと、その移行が第1の温度を低下させ、第2の温度が所定の許容できる熱しきい値未満であるという条件で、ターゲット・タスクをターゲット・ノードに移行するために構成されたコンピュータ可読プログラム・コードと、ターゲット・タスクの移行の回数を管理するために各ノードで負荷交換プロトコルを確立するために構成されたコンピュータ可読プログラム・コードであって、非集中負荷移行がイベント・ドリブン・システムにおける全システムの負荷分散につながり、冷却コストを削減するコンピュータ可読プログラム・コードとを含む。
本発明の第3の態様により、イベント・ドリブン・システムにおける非集中負荷分散の方法が提供され、この方法は、ステートフルおよびステートレス・イベント処理コンポーネントを有するイベント・ドリブン・システム内の複数のノードで複数のタスクによって処理すべきデータ・フローを受信するステップであって、他のタスクの出力に依存するタスクである階層タスクと、他のタスクの出力に依存しないタスクである非階層タスクと、それらの混合物からなるグループから複数のタスクが選択されるステップと、各ノードで処理された各タスクに関する統計値を収集するステップと、収集した統計値を使用し、それに対して1つのタスクを部分的にまたは全体的に転送することができる隣接ノードのリストを作成するステップと、静止モード(quiescent mode)に遷移するためにドナー・ノード(donor node)と呼ばれる少なくとも1つのノードを選択するステップと、隣接ノードのリストからターゲット・ノードと呼ばれる隣接ノードに移行するための考慮用のドナー・ノードにおいてターゲット・タスクと呼ばれるタスクを選択するステップと、それに対してターゲット・タスクを移行することができ、負荷分散品質に関して所定の基準を満たすターゲット・ノードを選択するステップと、ターゲット・タスクの移行の回数を管理するために各ノードで負荷交換プロトコルを確立するステップであって、非集中負荷移行がイベント・ドリブン・システムにおける全システムの負荷分散につながるステップと、ターゲット・タスクをドナー・ノードからターゲット・ノードに移行し、ドナー・ノードを静止モードに遷移するステップとを含む。
本発明の第4の態様により、イベント・ドリブン・システムにおける非集中負荷分散のためのコンピュータ可読プログラム・コードを有するコンピュータ記録可能記憶媒体を含むコンピュータ・プログラムが提供され、このコンピュータ可読プログラム・コードは、ステートフルおよびステートレス・イベント処理コンポーネントを有するイベント・ドリブン・システム内の複数のノードで複数のタスクによって処理すべきデータ・フローを受信するために構成されたコンピュータ可読プログラム・コードであって、他のタスクの出力に依存するタスクである階層タスクと、他のタスクの出力に依存しないタスクである非階層タスクと、それらの混合物からなるグループから複数のタスクが選択されるコンピュータ可読プログラム・コードと、各ノードで処理された各タスクに関する統計値を収集するために構成されたコンピュータ可読プログラム・コードと、収集した統計値を使用し、それに対して1つのタスクを部分的にまたは全体的に転送することができる隣接ノードのリストを作成するために構成されたコンピュータ可読プログラム・コードと、静止モードに遷移するためにドナー・ノードと呼ばれる少なくとも1つのノードを選択するために構成されたコンピュータ可読プログラム・コードと、隣接ノードのリストからターゲット・ノードと呼ばれる隣接ノードに移行するための考慮用のドナー・ノードにおいてターゲット・タスクと呼ばれるタスクを選択するために構成されたコンピュータ可読プログラム・コードと、それに対してターゲット・タスクを移行することができ、負荷分散品質に関して所定の基準を満たすターゲット・ノードを選択するために構成されたコンピュータ可読プログラム・コードと、ターゲット・タスクの移行の回数を管理するために各ノードで負荷交換プロトコルを確立するために構成されたコンピュータ可読プログラム・コードであって、非集中負荷移行がイベント・ドリブン・システムにおける全システムの負荷分散につながるコンピュータ可読プログラム・コードと、ターゲット・タスクをドナー・ノードからターゲット・ノードに移行し、ドナー・ノードを静止モードに遷移するために構成されたコンピュータ可読プログラム・コードとを含む。
新規かつ本発明に特有の要素であると考えられている本発明の特徴は、特許請求に範囲に詳細に明記されている。図は例示のためにのみ示されており、一定の縮尺で描かれているわけではない。しかし、本発明自体は、構成および動作方法のいずれについても、添付図面に併せて以下に示されている詳細な説明を参照することによって最もよく理解することができる。
本発明の模範的なハードウェア環境を示すブロック図である。 データ・プロデューサ(data producer)、データを処理するためのタスク、およびデータ・コンシューマ(data consumer)を含む、従来のタスク・フローを示す図である。 従来の負荷分散問題を示す図である。 本発明によるコンピュータによって実行される方法の好ましい一実施形態を示す流れ図である。 ターゲット・ノードの物理接続に関する基準を示す図である。 ノード間の物理接続を最小限にするという概念を示す図である。 タスク・フロー内のサイクルを回避するという概念を示す図である。 タスクを分割する1つの方法を示す図である。 一度に1つのタスクを移動するという概念を示す図である。 少なくとも1つのノードが静止モードになる可能性がある本発明の実施形態を示す図である。 少なくとも1つのノードが静止モードになる可能性がある本発明の実施形態を示す図である。 少なくとも1つのノードが静止モードになる可能性がある本発明の実施形態を示す図である。 少なくとも1つのノードが静止モードになる可能性がある本発明の実施形態を示す図である。
本発明のこの実施形態が実行されるプログラム環境は、複数の接続された汎用コンピュータまたはハンドヘルド・コンピュータなどの専用デバイスを実例として取り入れている。図1は、2つのコンピュータ・システム22−1、22−2が存在する本発明の模範的なハードウェア環境を示すブロック図である。しかし、本発明を実践する際に、通常、3つ以上のコンピュータ・システムが企図される可能性があることを理解されたい。また、コンピュータ・システムは、以下、マシンまたはノードと呼ぶ場合もある。本発明は、典型的に、マイクロプロセッサ手段、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、およびその他のコンポーネントからなる中央演算処理装置(CPU)10−1、10−2を含むコンピュータ・システム22−1、22−2を使用して実装される。このコンピュータは、パーソナル・コンピュータ、メインフレーム・コンピュータ、またはその他のコンピューティング・デバイスにすることができる。ハード・ディスク、フレキシブル・ディスク・ドライブ、CD−ROMドライブ、磁気テープ・ドライブ、またはその他の記憶装置などの何らかのタイプの記憶装置14−1、14−2は、CPU10−1、10−2に常駐するかまたはその周辺に存在することになる。また、CPU10−1、10−2には、そのデータ単位がバイトであり、RAMとも呼ばれる固定量の内部メモリも常駐する。
一般的に言えば、本発明のソフトウェア実装例である図1のプログラム12−1、12−2は、上述の記憶装置14−1、14−2の1つなどのコンピュータ可読媒体に有形に具現化される。プログラム12−1、12−2は、CPU10−1、10−2のマイクロプロセッサによって読み取られ実行されると、本発明の諸ステップまたは諸要素を実行するために必要な諸ステップをCPU10−1、10−2に実行させる命令を含む。プログラム12−1、12−2はイベント管理および負荷分散管理ランタイムに呼び出すことができる。
プログラム12−1、12−2は1つまたは複数のデータ・ストリーム処理装置16−1、16−2をロードし、始動し、制御し、進めるものであり、そのデータ・ストリーム処理装置は、サブストリーム18−1、18−2で構成することができる入力データ・ストリーム18を処理し、出力サブストリーム20−1、20−2で構成することができる出力データ・ストリーム20を生成する。
コンピュータ・システム22−1、22−2は物理リンク21によってまとめてリンクすることもできる。
また、本発明の技法は様々な技術を使用して実装できることも理解されたい。たとえば、本明細書に記載されている方法は、コンピュータ・システム上で実行されるソフトウェアに実装するか、マイクロプロセッサの組み合わせまたはその他の特殊設計の特定用途向け集積回路、プログラマブル論理装置、あるいはこれらの様々な組み合わせのいずれかを使用してハードウェアに実装することができる。特に、本明細書に記載されている方法は、適切なコンピュータ可読媒体上に常駐する一連のコンピュータ実行可能命令によって実装することができる。適切なコンピュータ可読媒体としては、揮発性(たとえば、RAM)あるいは不揮発性(たとえば、ROM、ディスク)またはその両方のメモリ、搬送波、ならびに伝送媒体(たとえば、導線、同軸ケーブル、光ファイバ・メディア)を含むことができる。模範的な搬送波は、ローカル・ネットワーク、インターネットなどの公的にアクセス可能なネットワーク、または何らかのその他の通信リンクに沿ってデジタル・データ・ストリームを伝達する電気信号、電磁信号、または光信号の形を取ることができる。
さらに、本発明はクラウド・コンピューティング環境で実装することもできる。クラウド・コンピューティングとは、動的にスケーラブルであり、しばしば仮想化されたリソースがインターネットまたは企業の内部ネットワークによりサービスとして提供される、コンピューティング・スタイルの1つである。ユーザは、それらをサポートする「クラウド内」の技術インフラストラクチャについて知識、経験、または制御権を有する必要がない。クラウド・コンピューティング・サービスは、通常、Webブラウザからアクセスされる共通ビジネス・アプリケーションをオンラインで提供し、ソフトウェアおよびデータはサーバ上に保管されるが、データ・ストリーム・イベント処理も「クラウド」の一部であるノードの一部または全部で実行できるであろう。クラウド内の物理リソースは非常に地理的に分散される可能性があるので、異なるマシンへの電力のコストが劇的に異なるものになり、本発明は、データ・ストリーム量が大きくない場合でも、クラウド構成においてよりアクティブに使用される可能性がある。
本発明は、それらから除去すべき負荷を保証するノードとして所定のおよびユーザ設定の基準を満たすドナー・ノードから、負荷を受信することができるノードとしてそれらを認定する所定のおよびユーザ設定の基準を満たす1つまたは複数のターゲット・ノードに、移行すべき適切なタスクとしてそれらを認定する所定のおよびユーザ設定の基準を満たす1つまたは複数のタスクを移行することにより、イベント・ドリブン・システムにおける非集中負荷分散が行われる、方法、コンピュータ・プログラム、およびマシンによって読み取り可能なプログラム記憶装置に関係し、このエンドツーエンド移行は好ましくは、ネットワーク内の全負荷が同じままであるかまたは増加しない所定の基準を満たす。この所定の基準は、本方法によって初期設定され、ユーザによって構成可能である。それ自体からタスク移行を開始するためのノード、移行のために考慮されるタスク、移行されたタスクの受信側として働くためのノード、および移行すべきかどうかの判断を認定する基準については本明細書に記載されている。この基準は、バックグラウンドでノードが定期的に収集する実世界の属性(たとえば、使用される実際のエネルギーまたは入口温度などのセンサ表示値)を含む統計値を頼りにし、この負荷移行意思決定プロセスは進行中であり、ユーザ定義の間隔後にも定期的に実行され、ネットワーク内のノードへのタスクの割り当てにおける変化に至る場合もあれば、至らない場合もある。
本発明は、タスク・フロー内のタスクを処理するノード間の負荷分散のための動的かつ非集中のコンピュータによって実行される方法に関係し、あるタスクの処理によるデータは結果タスク・フロー内の次のタスクへの入力データとして働く場合もある。コンピュータによって実行されるこの方法は、データ・センタ内のノードまたは地理的に分散されるノード、単一マシン上の複数のプロセッサ、あるいはクラウド・コンピューティング環境に適用可能である。コンピュータによって実行されるこの方法のいくつかの目的は、(1)ノードが過負荷状態になることを防止するため、(2)過負荷ノードから負荷を分散するため、(3)エンドツーエンド待ち時間を最小限にすることなど、アプリケーションの何らかのサービス品質要件を維持するため、(4)電力/冷却コストを削減するために、負荷を分散することである。
何らかの定義上の背景は本発明を理解する際に有用になるであろう。「ノード」とは、個々のマシン、マルチプロセッサ・マシン上の単一プロセッサ、またはそれが数値を計算するものであるかまたは電力を発生しコンピュータが接続されたエンジンであるかにかかわらず何らかの処理を実行する物理エンティティを指す。ノードは、データ・センタ内にあるかまたは地理的に分散される可能性がある。本発明では、ノードは1つまたは複数のタスクを処理するか、あるいはいかなるタスクも処理しない。タスクの処理は、あるタスクの出力が他のタスクへの入力として働くように本質的に階層的である可能性がある。加えて、ノードは、ある時点でデータ・フローの一部ではないタスクを実行している可能性があるが、その後、データ・フローの一部としてタスクを実行する。階層内の第1のタスクは、何らかの入力ソースにより受信したデータについて処理を実行する。タスクの処理の多くは本質的に階層的なものになるが、所与のアプリケーションに関するいくつかのタスクは本質的に非階層的なものになる可能性があるので、必ず階層的なものになるわけではない。ノードによって受信されたデータは入力イベントと呼ばれ、処理の結果としてノードによって生成されるデータは導出イベントと呼ばれる。階層処理を必要とする可能性のあるデータの例としては、少し例を挙げれば、金融市場における株取引、RFIDタグ・リーダによって推論されるイベント、ワイヤレス・センサから伝送された温度表示値、通信チャネル上のソフトウェアをモニターすることによって検出された侵入者検出イベント、コーヒー自動販売機のディスペンサの補給品状況を含む。
図面をより詳細に参照すると、図2は、本発明が適用可能なタスクを処理するマシンのネットワークの一例を示している。データ・プロデューサはデータのソースを表している。データの例としては、株式相場、コーヒー自動販売機の障害警報を含む。データ・コンシューマは、このデータについて実行された処理の結果に関心があるエンティティを表している。コンシューマの例としては、コーヒー自動販売機を修理する会社、または所与の日に値上がり率が最も高い上位10銘柄の株に関心がある個人を含む。
タスク・フローはタスクの処理のシーケンスとして定義される。タスクの処理は、あるタスクの処理によるデータ結果がタスク・フロー内の次のタスクへの入力データとして働く階層的なものにすることができる。タスクは、データがそのタスクを通過して他のタスクに到達する前に完了する必要はない。さらに、いくつかのタスクは非階層的なものにすることができ、他のタスクからのデータを必要としない。いくつかのタスクは時には他のタスクからのデータ入力を必要とする場合があり、必要としない場合もある。図2ではタスクF1、J1、およびJ2は共通タスク・フローにある。同様に、タスクF3およびJ2は他のタスク・フローの一部である。
アップストリーム・ノードは、所与のノードnに関して、ノードn上で処理されるタスクの親であるタスクを処理するノードとして定義される。特に、親タスクはタスク・フロー内で子タスクより先行する。親タスクは、直接または仲介を経由して、ノードn上のタスクのための入力の一部になる出力を生成する。図2では、たとえば、タスクF1を処理するノードM4は、タスクJ2を処理するノードM5に関してアップストリーム・ノードである。ダウンストリーム・ノードは、所与のノードnに関して、ノードnによって処理されるタスクの子を処理するノードとして定義される。図2では、たとえば、タスクJ2を処理するノードM5は、タスクJ1を処理するノードM4に関してダウンストリーム・ノードである。
タスク・フロー内の第1のタスクの機能は、1組のメッセージ・ソースであるプロデューサからデータを受信することである。コンシューマは、データに対するタスクの処理の最終結果に関心がある。図2は、タスク・フロー内のプロデューサ(P1〜P5)およびコンシューマ(C1〜C4)の一例を示している。タスクは、あるイベントについて実行した後に状態を保持する場合もあれば、いずれの状態も保持しない場合がある。状態を保持するタスクはステートフル・タスクという。状態を保持しないものは、前の入力イベントが何であったか、またはそのうちのいくつが存在したか、または時間の経過につれてそれらがどのように到着したか、またはこのタスクの前の出力イベントが何であったかにかかわらず、新しい入力イベントについてほぼ同じ長さの時間で同じ導出イベントを出力するであろう。ステートレス・タスクは、それらが以前どのデータを受信したかまたはそれらが以前どのデータを生成したかとは無関係に動作する。ステートフル・タスクの例としては以下のものを含む。
金融データ・ストリームを合体するための結合演算子
地震データをモニターするための集約演算子
軍事監視のための信号処理演算子
イベントe1の直後にイベントe2が発生したことを検出するシーケンス演算子
個人が1日に行った購入後の売却操作(sell-after-buy operation)の回数をカウントするカウント演算子
状態を保持しないタスクはステートレス・タスクという。ステートレス・タスクの例としては以下のものを含む。
距離をフィートからメートルへ変換するかまたは温度を華氏から摂氏に変換するなど、計測系を変換するタスク
その株式に言及する際に企業の証券取引所証券コードを正式名称に変換するなど、識別記号を他の形式の識別記号で置換するタスク
たとえば、米国またはカナダの州名の略語が50通りの2文字の米国州コードのうちの1つであるかカナダの州名の略語のうちの1つであるかに応じて、米国またはカナダの国名フィールドを追加するなど、メッセージ内の他のフィールドの関数であるかまたは定数であるメッセージにフィールドを追加するタスク
図書館の図書貸出日を、常に貸出日の3週間後である図書返却期限で置換するなど、定数でメッセージ・フィールドを調整するタスク
タスクはしばしば演算子と呼ばれる。「タスク」と「演算子」は交換可能な用語であり、どちらも本明細書全体を通して使用されることを理解されたい。
次に図3を参照すると、負荷分散問題が示されている。図3のノードM12およびM13など、いずれの処理も実行していないノードに負荷を移行する場合もあれば、タスクF3およびJ2を処理しているノードM5など、他のタスクをすでに処理しているノードに負荷を移行する場合もある。図3は、以下のような動的負荷分散問題の特性も示している。
ノードが停止する可能性があるか、またはランタイム中に新しいノードがネットワークに追加される可能性がある。
データ転送速度が任意に変化する可能性がある。
タスクが終了し、タスク集合から除去される可能性があるか、またはいつでも新しいタスクが追加される可能性がある。
ランタイム中にタスクが2つ以上の部分に分割される可能性がある。
負荷を移行すべきかどうかを考慮するときに、コンピュータによって実行されるこの方法では、単一タスク、タスク・グループ、または分割タスクを負荷と見なす。
コンピュータによって実行されるこの方法では、タスクが状態を保持するかどうかを考慮に入れるが、これはそのタスクを処理するノードのメイン・メモリ内またはディスク上に保管されるデータの形である可能性がある。ステートフル・タスクを移行することを決定するときに、コンピュータによって実行されるこの方法では、移行すべきステートフル・タスク(ターゲット・タスク)を処理するドナー・ノードと、ステートフル・タスクを受信する受信側ノード(ターゲット・ノード)との間のデータ輸送リンクの速度を考慮に入れる。
また、コンピュータによって実行されるこの方法では、サイクルを防止し、アプリケーションのエンドツーエンド応答時間を最小限にするなど、アプリケーションのサービス品質要件を満たすために、タスクを移行する前のタスク間のデータ・フローも考慮する。
また、コンピュータによって実行されるこの方法では、その作業負荷が特定のパターンで頂点に達したときにノードが過熱するのを防止するために、タスクを移行する前にタスクによって予想される作業負荷も考慮する。予想作業負荷情報は、ノードが記録し計算する統計値から入手可能である。ノードは何らかの統計分析を実行することができ、それによりノードはデータ到着の平均および分散(variance)を計算し、曲線の当てはめ(curve fitting)を使用して入力到着イベントの分散を提案することができる。この分析を基礎として、ノードは、その入力データの到着率のパターンを判断し、それが静止モードになり得る期間の持続時間を決定することができる。
どの負荷を分散するかを決定する間に、コンピュータによって実行されるこの方法では、異なるタスクの負荷相関同士の関係も考慮し、これは負荷相関係数という。この負荷相関係数は、コンピュータによって実行されるこの方法が、そのノードによって処理される他のタスクと同時にその負荷が頂点に達するノードからターゲット・タスクを輸送し、ターゲット・タスクの負荷と同時にその負荷が頂点に達しないタスクを処理するノードにターゲット・タスクを移動することを保証する。
ターゲット・タスクを移行する前に、コンピュータによって実行されるこの方法は、何らかの仮定の場合に、ドナー・ノードおよびターゲット・ノードの移行後の使用率を推定することにより、ターゲット・タスクの移行がドナー・ノードおよびターゲット・ノードにとって良い決定になるかどうかを考慮する。使用率に加えて、本発明の一実施形態におけるコンピュータによって実行されるこの方法は、ドナー・ノードおよび受信側ノードの移行後の入口温度も推定することができ、したがって、受信側ノードの温度を許容できるしきい値以上に上昇させずにドナー・ノードの温度を低下させると思われる負荷移行を擁護することにより冷却コストの削減を提供することができる。
単一ターゲット・タスクを移行することに加えて、コンピュータによって実行されるこの方法は、ターゲット・タスクを分割できる複数の可能な方法を考慮し、したがって、ターゲット・タスクの1つまたは複数の部分を移行することを考慮する。
コンピュータによって実行されるこの方法は非集中方法であるので、ローカル負荷移行決定が相互に矛盾しないことを保証するためにすべてのノードが従わなければならない負荷分散に関するプロトコルが定義される。
移行を考慮する前に、本発明の一実施形態におけるコンピュータによって実行されるこの方法は、エネルギーを節約するために、ネットワーク内の特定のノードが静止モードに遷移しなければならないかどうかも考慮する。いつ静止モードに遷移すべきかに関する決定は、ノードが入力データについて処理を実行しているランタイム中、ならびに負荷分散決定を行う前または後のいつでも動的に行うことができる。負荷移行決定および静止決定は、矛盾する結果をもたらす可能性があるので、同時に行ってはならない。したがって、一方の決定(負荷移行または静止)はもう一方(静止または負荷移行)が完了する前または後に考慮することができる。しかし、ノードを静止するという決定が行われると、そのノード上で実行されているどのタスクにもいかなる追加の入力も送信されず、その結果、これらのタスクがその出力を生成すると、この静止はイベント・フローのどの部分も「オフライン」で要することはない。タスクが実行することになる新しいノードは、このタスクについてすべての追加の入力を受信する。ステートレス・タスクの場合、新しいタスクは、古いタスクがその入力を終了する前に次の入力を処理し始める可能性があるが、ステートフル・タスクの場合、新しいタスクは、古いノードからのタスク状態が完全に転送されるまで次の入力イベントを処理し始めてはならない。この転送は負荷交換プロトコル(以下に記載する)の一部である。
静止モードに遷移するプロセス中に、いくつかのタスクは完了途中で移行することができる。これは、それらのタスクが移動しているときに、すでにいくつかの出力を生成したが、今後、その新しい位置でそれ以上の出力を生成する可能性があることを意味する。
コンピュータによって実行されるこの方法は動的であり、いつ静止モードに遷移すべきかに関する決定は、ノードが入力データについて処理を実行しているランタイム中にいつでも動的に行うことができることを示している。静止モードに遷移するというノードの決定は、以下のものに関する予備的な1組の決定を必然的に伴う。
どのくらい長い間、静止モードであるべきか
静止状態にある期間の予想作業負荷
タスクを中断し、それを後で処理すべきかどうか、あるいは静止モード期間中により効率的に処理できるより効率的なノードにタスクを移行すべきかどうか
他のどの隣接ノードが静止モードに遷移できるか
これらの初期考慮に続いて、静止モードへの遷移の恩恵およびコストの詳細な分析が行われる。このような遷移のコストは以下のものを含む。
(1)静止モードに遷移するノードの電力コスト、(2)静止モードからアクティブ・モードに遷移して戻ること、(3)このノードから移行したタスクを受信し、これらのタスクを受信した結果として、静止モードからアクティブ・モードに遷移する可能性のある任意の他のノードの電力コストを含む遷移に関連する全電力コスト
タスク処理を停止し、適用可能であれば、新しいターゲット・マシン上でそれを再開するための時間
ターゲット・マシンに移行すべきタスクに関連する任意の状態を移行するコスト
状態を戻し、タスクを処理する元のホスト・マシン上で処理を再開するための時間
静止モードへの遷移の恩恵としては以下のものを含む。
静止モードへの遷移によりエネルギー節約に対して予定される影響ならびに静止モードで費やされる時間の長さ
ノードを静止モードにし、タスクを適切な受信側ノードに移行した結果得られるアプリケーションのサービス品質の改善
静止モードへの遷移の恩恵がコストより重要である場合、ノードは遷移を開始する。静止モードへの遷移に関するコンピュータによって実行される方法は、非集中方法として実装することができる。代わって、ネットワーク全体におけるリソースの可用性に関する知識を支配するセントラル・コントローラは、集中方式で静止モード遷移プロセスを制御することができる。
次に、本発明によるコンピュータによって実行される方法について詳細に論ずる。このプロセスは、論ずべきプロセス・ステップを各ノードが実践するという点で非集中型である。本発明によるコンピュータによって実行される方法を示す流れ図は図4に示されている。
ステップ1:入力データの受信
コンピュータによって実行される方法の第1のステップ(ブロック30)は、ステートフルおよびステートレス・イベント処理コンポーネントを有するイベント・ドリブン・システム内の複数のノードで複数のタスクによって処理すべきデータ・フローを受信することを含む。この複数のタスクは、階層タスク、非階層タスク、またはこれらの組み合わせにすることができる。
ステップ2:ノードによる統計値の収集
コンピュータによって実行される方法の次のステップでは、各ノードはそれが処理している各イベント処理コンポーネント(タスクまたは演算子ともいう)について何らかの統計値を定期的に収集する(ブロック32)。これらの統計値としては以下のものを含む。
タスクあたりの負荷:ユーザがシステムに関連して提供する定義が何であれ、これは、タスクあたりのCPU使用率またはタスクごとに評価されたルールの数として定義することができる。
タスクによって占有されるメモリ:タスクに関連するすべての状態が(ディスク上ではなく)メモリ内に常駐していると想定される。タスクを移行する場合、このメモリも輸送する必要がある。
ターゲット・タスクを処理しているノードと他のノードを接続するリンクのネットワーク使用量:ネットワーク使用量(u(l))は、所与の瞬間にリンクlにより輸送中であるデータの量である。
Figure 0005723882

ここで、Fはリンクlによるイベント・フローの集合であり、DRf(l)はリンクlによるフローfのデータ転送速度であり、Lat(l)はリンクlの待ち時間である。この測定基準は、リンクlがどの程度使用中であるかという考え方を示すものであり、あるノードから他のノードへタスク関連状態を移行するのにどのくらいの時間を要するかを推定するために必要である。
本発明の一実施形態では、統計値としては、タスクを処理しているノードの熱特性を含む。
本発明の一実施形態では、統計値としては、データがタスクに流れる速度と、時間またはノードによって処理されるタスクのタイプに基づく着信データ転送速度における繰り返しパターンを含む。
各タスクに関する統計値の収集は、タスクが実行されている間にバックグラウンドで行われる。
このノードは、数値による統計値の時系列を維持し、その平均、分散、および標準偏差を定期的に計算することになる。すべてのHISTORY_NUMBER_OF_INTERVALS_TRACKEDの後に、ノードは各時系列のHISTORY_INTERVAL_COUNT_CLEANUP_SIZE項目のうち、最も古いものを削除し、新しい項目のためにスペースを作ることになる。
ステップ3:負荷交換隣接リストの作成
プロセスの次のステップは、それに対して1つのタスクを部分的にまたは全体的に転送できる隣接ノードのリストを作成することである(ブロック34)。その隣接ノードからの定期的な統計値交換の後、各ノードはロード・バランシング・パートナのリストを維持管理する。ノードはこのリストをソートし、隣接ノードは全使用可能負荷およびメモリに関して降順に順序付けられる。
冷却コストが考慮される本発明の一実施形態では、現行ノードとの相互干渉熱係数(cross-interference heatcoefficient)が非常に高いパートナを除去することにより、隣接ノードのリストが洗練される。すなわち、各ノードは、サイズn×nの相互干渉行列にアクセスすることができ、ここでnはデータ・センタ内のノードの総数である。この行列内の項目a_ijは、ノードiがノードjにもたらす熱量を表している。ノードはこの行列を参照し、相互干渉熱係数が非常に高くなるノードを除去することにより、最も近い隣接ノードのリストを洗練する。あるノードが負荷移行の開始を希望する場合、そのノードは単に隣接ノードのリストを参照して、潜在的な負荷交換パートナ・ノードを選択するだけである。負荷移行を考慮するという決定は、各ノード内で一定間隔で繰り返されるエピソード・イベント(episodic event)として実装される可能性があるか、あるいは最小必要電力節約、最大冷却コスト、最大ノード使用率、または最小ノード使用率などの何らかのしきい値の違反によってトリガされる場合もある。本発明のコンピュータによって実行される方法においてステップ4以降の考慮に至る正確なトリガは、ユーザによって各ノードについて個々に構成することができる。代わって、ネットワークが非常に大きい(たとえば、数千個のノード)場合、ユーザはノードのサブセットについて負荷移行トリガ設定を初期設定し、初期設定されたノードがその初期設定値をそれに関するしきい値が適切である他のノードに広げるために基本拡散または信念伝搬などの自律型非集中情報伝搬アルゴリズムを頼りにすることができる。拡散とは、その情報をほとんどまたはまったく持たない1組のノードに非常に集中しているネットワーク内で情報の正味輸送が1組のノードによってもたらされる技法である。拡散の結果は漸進的な情報の混合である。特定の条件下では、ノードの純粋に自発的なローカル・コーディネーションに基づいて、拡散プロセスの結果、最終的にネットワーク内の情報が完全に混合されることになる。この実施形態では、インストールのパラメータであるLOAD_DISTRIBUTION_INTERVALという長さの間隔後に発生するエピソード・イベントとして負荷移行決定を実装する。このようなパラメータは、ユーザによって各ノードについて個々に構成するか、または自動的に構成して、拡散ベースのプロトコルによって設定できるであろう(この実施形態において詳述する)。
ステップ4:移行のためのタスクの選択
プロセスの次のステップは、ターゲット・タスクを処理するシステム負荷を分散するために隣接ノード(すなわち、ターゲット・ノード)に移行するための考慮用のノードで少なくとも1つのタスク(すなわち、ターゲット・タスク)を選択することである(ブロック36)。ステートフル・タスクとステートレス・タスクの両方が存在する場合、分散する負荷が少なくなるので、まずステートレス・タスクを移行する方が好ましい。ステートフル・タスクのみがノード上で処理されている場合、それらのうち、メモリ内状態(in-memory state)が最小量であるものが移行のために選択される。ステートフル・タスクに関しては、状態はディスク上およびメモリ内に存在する可能性がある。一般に、メモリ内にのみ状態を有するステートフル・タスクを移行する方が好ましい。たまたま単一タスクが事前設定のSTATE_MIGRATION_LIMIT以上のものを使用して単一タスクとして移行する可能性がある。この状況では、プロセスの任意選択ステップは、ターゲット・タスクを2つのターゲット・サブタスクに分割して移行することである。タスクの分割については、以下により詳細に論ずる。タスクの状態の量、状態のタイプ(ディスク上またはメモリ内)、およびそれを介してドナー・ノードから受信側ノードに状態を移行するためのリンク(複数も可)の速度を考慮に入れることにより、本発明のコンピュータによって実行される方法は、多くの既存の負荷移行技法とは異なり、ステートフル・タスクとステートレス・タスクの両方を処理する。実際の状態移行は、既存の研究に記載されているいくつかの方法で最適化できるであろう。
ステップ5:ターゲット・ノードの選択
プロセスの次のステップは、ターゲット・ノードが負荷分散品質に関して所定の基準を満たす場合にそれに対してターゲット・タスクを移行できるターゲット・ノードを選択することである(ブロック38)。このノードは、ターゲット・タスクのための新しいホストとして働くための最小要件(基準)を満足しない潜在的な負荷交換パートナをリストから除去する。
冷却コストが削減される本発明のこの実施形態では、ターゲット・ノードを選択するこのステップは、ターゲット・ノードが負荷分散品質に関して所定の基準を満たす場合ではなく、冷却コストの削減が主要要因である場合に、冷却コストの削減に完全に依存する可能性がある。さらに、好ましい一実施形態では、ターゲット・ノードを選択するこのステップは、ターゲット・ノードが負荷分散品質に関して所定の基準を満たすことに加えて、冷却コストを削減することも考慮することができる。
所定の基準としては、ターゲット・ノードの物理接続、ターゲット・ノードの使用可能負荷およびメモリ、物理リンク数の最小化、サイクルの除去、ターゲット・ノード負荷相関、ならびにドナー・ノードとターゲット・ノードの移行後使用率を含む。これらの基準の少なくともいくつかは、ターゲット・ノードを選択するために満たさなければならない。好ましい一実施形態では、ターゲット・ノードを選択するためにこれらの基準のすべてを満たさなければならない。これらの基準のそれぞれについては詳細に論ずる。
図5に示されているように、ターゲット・ノードの物理接続に関する基準が示されている。ターゲット・ノードMtは、ノードMi上で処理されるターゲット・タスクiの親タスクpを処理するノードMpおよび子タスクcを処理するノードMcに物理的に接続しなければならない。ターゲット・ノードMtは、現在ターゲット・タスクiを処理しているノードMiにも接続しなければならない。この特定の基準は図3に関連してより明らかになる。一例として、現在ノードM4によって処理されているタスクJ1を他のノードに移行することが望ましい。この場合、タスクJ1はターゲット・タスクである。ノードM2またはM3は親ノードになる可能性があり、M4はドナー・ノード(Mi)であり、ノードM7は子タスクを処理するノードMcである。このシナリオでは、ターゲット・タスクJ1はM5またはM13に移行することができ、どちらも親ノード、子ノード、およびドナー・ノードに(直接または間接的に)接続される。
次の基準はターゲット・ノードの使用可能負荷およびメモリである。ターゲット・ノードは、ターゲット・タスクを処理するために十分な使用可能負荷およびメモリを備えていなければならない。上述の統計値の収集は、使用可能負荷およびメモリを評価するために使用される。さらに、ターゲット・ノードと現在ターゲット・タスクを処理しているドナー・ノードとの物理マシン・リンクは、ターゲット・タスクがステートフルであり、メモリ内状態を有する場合、非常に高いネットワーク使用量を備えていてはならない。リンクの使用率が高いほど、ドナー・ノードからターゲット・ノードに状態を移動するのに要する時間が長くなる。
ターゲット・タスクの親タスクおよび子タスクを処理するノードにターゲット・ノードを接続する物理接続数を最小限にすることが望ましい。物理リンクはエンドツーエンド待ち時間を長くするものである。アプリケーションのサービス品質要件は、短いエンドツーエンド待ち時間を含む可能性がある。したがって、物理接続数の最小化は、アプリケーションのサービス品質要件を満たすために重要である。ターゲット・ノードのリストは、移行すべきターゲット・タスクとともに維持する物理接続数に関してソートしなければならない。図6(A)はタスク・フローの一例を示している。図6(B)はフロー内の物理リンク数を増加し、したがって、望ましくない負荷移行の一例を示している。図6(C)はフロー内の物理リンク数を減少し、したがって、望ましい負荷移行の一例を示している。図6(D)はノードが行うことができる負荷移行決定のローカル集合と、それらが物理リンク数にどのように影響を与えるかを示している。図6(D)の決定1および2は物理リンク数を改善し(低下させ)、決定4はそれを悪化させ、決定3では物理リンク数が同じ数にとどまっている。
次の基準はサイクルの除去である。あるタスクから流れ出たメッセージが他のタスクに行き、その出力が、直接または間接的に、元のタスクへの入力になるときに、サイクルが発生する。ターゲット・ノードがターゲット・タスクのフロー内の先行点を表すタスクを処理している場合、それは除去しなければならない。この状況は図7に示されており、ノードMxはタスクiのフロー内の先行点であるタスクを処理するので、ターゲット・タスクiのために望ましくないターゲット・ノードである。
次の基準はターゲット・ノード負荷相関である。ターゲット・ノード上の平均負荷を調べることに加えて、負荷安定性も検査しなければならない。ターゲット・ノードにタスクを移行する前にこのノード上の平均負荷を考慮に入れるだけでは十分ではないことは公表された研究[上記のXing,ICDE’05]で実証されている。そのノード上の負荷変動も検査しなければならない。特に、あるノード上のタスク間の負荷相関係数が負である場合、これは有用になるであろう。2つのタスク間の負荷相関係数が負であることは、一方のタスクの負荷が頂点に達したときにもう一方のタスクの負荷が頂点に達していないことを示す。したがって、移行されるターゲット・タスクと受信側マシン上のタスクとの負荷相関係数の計算は、以下のように負荷移行意思決定プロセスに取り入れられる。
i.ρ(a,N):タスクaの負荷時系列と、aを除くN上のすべてのタスクの全負荷時系列(合計)との相関係数
ii.ドナー・ノードN1の観点から、大きいρ(a,N1)を有するタスクを移動させることは良いことであり、受信側ノードN2の観点から、小さいρ(a,N2)を有するタスクを受け入れることは良いことである。
iii.したがって、ρ(a,N1)−ρ(a,N2)の値が大きいタスクを移動することが好ましい。これをスコアと呼ぶ。
iv.すべての潜在的なターゲット・ノードに関してタスクaに関する相関係数を計算し、最も大きいスコアを有するノードをターゲット・ノードとして選択する。
k個の要素を有する負荷時系列S=(s1,s2,...,sk)の場合、その平均および分散は以下のように定義される。
Figure 0005723882

Figure 0005723882

2つの負荷時系列S1=(s11,s12,...,s1k)およびS2=(s21,s22,...,s2k)の場合、その共分散cov(S1,S2)および相関係数ρは以下のように定義される。
Figure 0005723882

Figure 0005723882
好ましい一実施形態では、負荷相関係数ρは、ドナー・ノードの場合、不利な負荷相関、したがって、移行のために機が熟したことを示す正でなければならず、ターゲット・ノードの場合、ターゲット・ノードへのターゲット・タスクの移行のために有利な負荷相関を示す負でなければならない。
最後の基準はドナー・ノードとターゲット・ノードの移行後使用率である。あるタスクに関する移行決定プロセスの持続時間の間、イベント・トラフィックが同じままになると想定される場合、現行負荷統計値を使用して、ドナー・ノードとターゲット・ノードの移行後使用率を推定することができる。ドナー・ノードの使用率における移行後の減少は十分なもの、すなわち、事前設定のLOAD_DECREASE_THRESHOLDより大きいかまたはこれと等しくなければならず、ターゲット・ノードの使用率における移行後の増加は、タスクの移行を保証するために許容できるしきい値、すなわち、事前設定のLOAD_INCREASE_THRESHOLDを上回ってはならない。
CPU使用率はシステム負荷と見なされる。ノードおよびタスクの負荷は、固定長の期間について測定される。バックグラウンドで実行される統計値の収集は、このために有用である。それぞれの期間では、タスクの負荷は、その期間の長さにわたりそのタスクによって必要とされるCPU時間の一部分として定義される。タスクaに関する期間iにおける平均イベント到着率がλ(a)であり、aの平均イベント処理時間がp(a)である場合、期間iにおけるaの負荷はλ(a)・p(a)である。したがって、ドナー・マシンの移行後使用率Udおよびタスクa1を移行した後の受信側マシンのUrは以下の通りであり、ここで、ndおよびnrはそれぞれドナー側および受信側のタスクの総数である。
Figure 0005723882
移行は、ドナー・ノードの移行後使用率が事前設定のLOAD_MAX_THRESHOLDより小さく、ターゲット・ノードの移行後使用率が事前設定のLOAD_MAX_THRESHOLDより小さい場合に行わなければならない。これらの要件が満たされない場合、このノードは任意選択で、ターゲット・タスクを分割し、分割タスクが良好な移行後使用率につながるかどうかを確認することを試みることができる。分割については次に説明する(図4のブロック40)。分割の結果、成功に至らない場合、このノードは上記のターゲット・ノード相関係数の計算に戻り、必要であれば、新しいターゲット・ノードを選択し、タスク分割を繰り返し続けることになる。潜在的なターゲット・ノードがまったく見つからない場合、コンピュータによって実行される方法は、所与の時間間隔後にタイムアウトし、前述の通り、統計値の収集からやり直すことになる。
ターゲット・タスクが非常に大きい場合、そのタスクは分割することができる。分割はいくつかの異なるタイプのものにすることができる。限定ではなく例示のために、タスク分割のための3通りの方法について以下に説明する。分割の方法はタスクのタイプによって導かれる。以下に記載する方法に加えて、そのほかの分割方法も存在する。
タスクの分割は、図8に例示されている通り、パーティションID別にすることができる。入力ストリームはパーティションIDに応じてパーティション化することができる。同じタスクについて複数の入力ストリームが存在する場合、同じパーティションIDを有するパーティションが、適合すべき最小ユニットとして、そのタスクのすべての入力ストリームにわたってグループ化される。したがって、入力ストリームを分割し、そのパーティションIDを有するパーティションを異なるノードにリダイレクトすることができる。
タスクの分割はコンテキスト別にすることができる。タスクのタイプ次第で、上記のようにパーティションID別に分割することが不可能な場合がある。たとえば、コンテキスト別に分割したいと希望する可能性もある。一例として、1月から6月までオンラインで商品を購入した顧客に関するすべてのイベントをタスクが処理すると仮定する。このタスクは2つのコンテキストに分割することができ、1つのコンテキストは1月から3月までに購入した顧客であり、もう1つのコンテキストは4月から6月までに購入した顧客である。この2つのコンテキストにおいて同じルールを異なるノード上で並行して評価することができる。効果的に、着信データ・ストリームは2つのノード間で分割され、特定の月に関するデータは適切なノードにリダイレクトされる。
第3の選択肢はルール別にタスクを分割することである。タスクは「りんごの販売とオレンジの返品を検出すること」など、いくつかのことを実行すると仮定する。効果的に、このタスクは2つのルールを実行しており、1つのルールは「りんごの販売を検出すること」であり、第2のルールは「オレンジの返品を検出すること」である。したがって、このタスクは2つのルールに分割され、並行して処理することができる。この場合、着信データ・ストリームは完全に複製され、この2つのルールを処理する2つのノードに並行してリダイレクトされる。
冷却コスト節約の目標
相当な負荷を有するタスクの移行はドナー・ノードの冷却時に費やされるエネルギーについて潜在的に相当な節約につながることになるので、ドナー・ノードはこのようなタスクを移行したいと希望する可能性がある[図4のブロック46によって示される通り]。他の一実施形態では、ターゲット・ノードとして認定するための前述の基準のうちの1つまたは複数を満足し、それに加えて冷却コストを削減する、潜在的なターゲット・ノードをまず選択する。本発明のこの実施形態は、ターゲット・ノードを選択するステップ5に取り入れることができる[図4のブロック38]。本発明のこの実施形態は、タスクがそこに移行されると仮説的に想定して、受信側ノードiの出口温度
Figure 0005723882

を計算することを含む。これは以下のように計算することができる。すなわち、ノードiは、タスク集合Ciを実行しながら、速度Piで電力を消費する。
i=Gi(Ci
べき関数Giは、タスク集合Ci内のタスクを処理した結果として、そのノードが読み書きのためにディスクにどのくらい頻繁にアクセスしなければならないかなどの要因を考慮に入れる。
各ノードiのファンは、流量fiおよび入口温度
Figure 0005723882

でノードi上に冷気を引き込み、平均出口温度
Figure 0005723882

で加熱空気を放散する。エネルギー保存の法則ならびにコンピューティング・デバイスによって引き込まれた電力のほとんどすべてが熱として放散されることにより、ノードの電力消費量と入口/出口温度との関係は以下のように概算することができる。
Figure 0005723882

ここで、Cpは空気の熱であり、ρは空気密度である。したがって、ノードiの電力消費によって空気温度が、
Figure 0005723882

から、
Figure 0005723882

に上昇することになる。すでにPiを計算したので、
Figure 0005723882

について以下のように解くことができる。
Figure 0005723882
移行すべきタスクがドナーによって処理されるタスク集合Ciから除去される場合、ドナー・ノードの仮説的移行後出口温度も上記と同じ計算を使用して計算しなければならない。提案された負荷移行は、移行を保証するためにドナー・ノードについて十分な冷却コスト節約を発生しなければならない。ドナー・ノードの仮説的移行後温度の低下は、移行を保証するためにTEMPERATURE_DECREASE_THRESHOLDとして知られるインストールのパラメータより大きいかまたはそれと等しくなければならない。このようなパラメータは、ユーザによって各ノードについて個々に構成するか、または自動的に構成して、拡散ベースのプロトコルによって設定できるであろう(この実施形態において詳述する)。
受信側ノードの移行後出口温度について推定された上昇が事前設定の熱しきい値であるTEMPERATURE_INCREASE_THRESHOLDより大きい場合、タスクを分割し、出口温度を再計算しなければならない。出口温度が依然として許容できない場合、繰り返しタスクを分割し、ターゲット・ノードの移行後温度を推定するためにこの計算を繰り返す。事前設定の熱しきい値はユーザによって設定することができ、ノードごとに様々になる可能性がある。このしきい値は、実行中のいつでも変更しリセットすることができる。タスク分割については以下により詳細に論ずる。タスクをそれ以上分割できない場合、ステップ5に戻り、他のターゲット・ノードを選択する。それ以上使用可能なターゲット・ノードがない場合、ステップ3に戻り、移行のために他のタスクを選択する。
どのタスクを移行すべきかと、そのソース・ノードおよび宛先ノードを選択しながら、推定された温度に対する影響および結果として得られる温度の節約を取り入れるのではなく、ユーザは、この推定をステップ5で定義された移行後使用率計算の一部にするためにいくつかの設定を構成することができる。したがって、移行後使用率情報に加えて、ドナー・ノードおよび受信側ノードの移行後温度は、ステップ5で上述したように推定されるであろう。この「結合意思決定」を優先するユーザは、いくつかの初期パラメータを設定する必要があるであろう。このようなパラメータとしては、タスクを移動するための確かな決定を行うためにドナー・ノード上の許容できる温度低減および冷却コスト節約に関する許容できる最小しきい値と、タスクを移動するための確かな決定を行うためにターゲット・ノード上の温度上昇および冷却コスト増加に関する許容できる最大しきい値を含む。この結合意思決定では、ユーザは、均一な負荷分散という第1の目標と冷却コストの妥当な節約を保証するという第2の目標を持って負荷移行を実行するという意図で本発明を使用する。
ステップ6:負荷交換プロトコル
プロセスの次のステップは、ターゲット・タスクの移行の回数を管理し、ローカルの独立したシステム負荷移行がイベント・ドリブン・システム内の全システムの負荷分散につながることを保証し、ローカル移行が相互に矛盾しないことを保証するために、各ノードで負荷交換プロトコルを確立することである(図4のブロック42)。
コンピュータによって実行される方法は非集中プロセスであるので、負荷交換プロトコルは3つの特性を含まなければならず、すなわち、ターゲット・タスク移行は振動(oscillation)に至ってはならず、単一マシン・サイクルで2つ以上のターゲット・タスクの同時移行が行われてはならず、ターゲット・タスク移行の最終結果として何らかの方法で負荷分散を改善しなければならない。これらの特性の一部または全部が存在しなければならず、好ましい一実施形態では、これらの特性のすべてが存在しなければならない。
次に、これらの特性のそれぞれについて、より詳細に論ずる。
電力コストが以前の実行間隔(run-interval previous)と今後の実行間隔(run-interval coming up)との間で変化しない場合、振動を必要としないが、電力料金またはその他の何らかのコスト要因が十分大きい時間ウィンドウ中に変化する場合、振動は合法的である。たとえば、期間tにおいて負荷がノードAからノードBに移動する場合、期間t+1では、十分な電力節約によって変更が保証されない限り、ノードBからノードAに負荷を戻すことがあってはならない。換言すれば、振動とは、負荷分散決定の結果として、タスクが同じ2つのノード間で2回以上やりとりされることである。
同時移動を行ってはならない。たとえば、タスクAをノードXからノードYに移動する場合、前の決定を最適とは言えないものにする恐れがあるので、Aに接続されたダウンストリーム・タスクも同時に移動することがあってはならない。
入力データ転送速度が期間ごとに極めて変わりやすいわけではないと想定すると、ターゲット・タスク移行の最終結果は何らかの点で初期構成より良くなるはずである。
これらの特性を達成するために、各ノードについて以下のローカル負荷交換制約が定義される。
負荷シフトはすべてダウンストリームまたはすべてアップストリームでなければならない。すべてのノードはタスク・フロー内のダウンストリーム・コンポーネントを処理するノードにタスクを渡すが、フロー・タスク・グラフ内のルートおよびリーフを処理するノードは除く。あるいは、逆に、すべてのノードはそれが処理しているタスクのアップストリーム・コンポーネントを処理するノードにタスクを渡すが、フロー・タスク・グラフ内のルートおよびリーフを処理するノードは除く。どちらの方向が選択されたかにかかわらず、すべてのノードは、方向が逆転される前に所定の数の時間ステップの間、この方向にタスクを渡さなければならない。タスク・グラフ内のルートおよびリーフを処理するノードの場合、並列分割を試みることが推奨される。この負荷交換プリミティブ(primitive)は、強制的に一方向のみに負荷を交換させるので、振動に対する反発力(resilience)をもたらすものである。
時間ステップあたり多くても1回のタスク移行でなければならない。移行すべきターゲット・タスクについて決定を行う場合、このタスクのフロー内のダウンストリームにあって、多くても1つのマシン・リンクによってこのタスクから分離されたタスクはいずれも、同じ時間ステップ中に移動することができない。たとえば、図9に示されているように、タスクcをM3からM5に移動しなければならないと決定した場合、タスクdおよびe(タスクcのフロー内のダウンストリームにあるもの)は同時に移動することができない。ドナー・ノードが負荷をターゲット・ノードにシフトすることを決定した後、ドナー・ノードは、アップストリームとダウンストリームの両方でそれに直接隣接するすべてのノードに通知しなければならない。この通知に基づいて、ノードは、それが負荷をシフトできるかどうかを判断することができる。この負荷交換プリミティブは、相互に矛盾する同時決定の可能性に対する反発力をもたらすものである。
負荷シフトの回数について制約がある。新しい位置にシフトされた後、ターゲット・タスクは、所定の数の追加の時間ステップの間、移動することができない。これは、タスクを最後にシフトしたときから経過した時間の長さに関して表すこともできる。この負荷交換プリミティブは、システムがその時間全体を負荷のシフトに費やすわけではなく、相当な長さの時間が処理にも費やされることを保証するものである。
2つのノードは同時にターゲット・タスクをターゲット・ノードに移行することができない。たとえば、ノードBがその子ノードCに負荷を送信しており、ノードCの親でもあるノードAもノードCに負荷を送信しようと試みている場合、効果的に、ノードBはノードCに対する負荷交換ロックを有し、ノードBがノードCへの負荷移行を完了してロックを解除するまでノードAはノードCにいかなるタスクも移行することができない。ターゲット・ノードの負荷交換ロックを取得せずに、ドナー・ノードはターゲット・ノードに負荷を転送することができない。この負荷交換プリミティブは、正確に同時に他のノードから負荷を受信することにより受信側ノードが過負荷状態にならないことを保証するものである。
入力データ転送速度が2回の連続負荷シフト間で大幅に変動しないと想定した場合、コンピュータによって実行されるこの方法の前のステップで決定された要因により、それぞれのローカル移動が最適であることを保証することができる。したがって、コンピュータによって実行されるこのプロセスを実行した後のマシンに対するタスクの構成は、タスクにとって使用可能な使用可能負荷およびメモリに関してより最適なものになり、ユーザの全応答時間は初期構成に含まれるものより短くなるであろう。
ステップ7:移行
プロセスの最後のステップ[ブロック44]では、ターゲット・タスクがターゲット・ノードに移行する。次に、ターゲット・ノード上でのターゲット・タスクの実行に進むことができる。その後、追加の調整が必要な場合にステップ3〜7による他のロード・バランシングを行えるように、ターゲット・ノード上でのターゲット・タスクの実行に関する統計値を収集すること[ブロック32]が望ましい場合もある。
静止モード遷移および電力節約の目標
本発明の他の代替実施形態[図4のブロック46]では、1つまたは複数のノードが静止モードになることが望ましい場合もある。所与のノードについて1つまたは複数のノードを静止モードに遷移すべきかどうかについて、いくつかの要因を伴う判断プロセスがある。このような判断は、静止ノード(ドナー・ノード)上の任意のタスク(ターゲット・タスク)を他のノード(ターゲット・ノード)に移行することを含むことができる。このようないくつかの要因は以下の通りである。
予想トラフィックおよび静止モード期間の持続時間
他のどのノードが同様に静止モードに遷移できるか
静止モードへの遷移のコストを評価すること
静止モードへの遷移の恩恵を評価すること
静止モードへの遷移は、遷移の恩恵がコストを超える場合にのみ行わなければならない。
恩恵がコストを超える場合、ターゲット・タスクをターゲット・ノードに移行することができ、ドナー・ノードは静止モードに移行して、電力を削減することができる。静止モードへの遷移は、上述のロード・バランシングの前または後に行うことができる。また、ロード・バランシングの代わりに、静止モードへの遷移を行うこともできる。
上記の要因のそれぞれについて詳細に論ずる。
第1の要因は、予想トラフィックおよび静止モード期間の持続時間である。前に受信した入力データ・トラフィックの到着率を分析することにより、ノードは、入力データ・トラフィックにパターンがあるかどうかを判断することができる。この分析は統計分析を含むことができ、それによりノードは到着の平均および分散を計算し、曲線の当てはめを使用して入力到着イベントの分散を提案することができる。この分析を基礎として、ノードは、その入力データの到着率のパターンを判断し、それが静止モードになり得る期間の持続時間を決定することができる。たとえば、毎日特定の期間内にデータがまったく到着しない場合、そのノードは、データがまったく予期されない期間中に静止モードに遷移することを決定することができる。静止期間の結果得られる電力の節約がPOWER_DECREASE_THRESHOLDより大きいかまたはそれと等しいという条件で、そのノードはこれを実行することを決定する。この状況は図10に示されている。図10では、ノードM10は所与の持続時間の間、静止モードに遷移し、残りのノードM4、M9、およびM5はデータを処理し続ける。ノードM10が静止状態なので、ノードM9がノードM10から着信データを受信できない場合でも、M9は、M10が静止モードに遷移する前にそれがM10から受信したデータを処理し続けることができる。また、M9は、ネットワーク内でM9に物理的に接続されたM4から受信したデータを処理している可能性もある。各ノード上でソフトウェアを実行しているものとして現れる負荷分散のための本発明のコンピュータによって実行される方法は、静止モードに遷移すべきときと、そうではないときを決定するために、時間を参照するためのクロックに言及している。
図11および図12は、ドナー・ノードの集合といわれるノード・グループがそれぞれのタスクおよび処理を、受信側ノードの集合といわれる他のノード・グループに移行する状況を示している。受信側ノードは、ドナー・ノードがそこから入力データを受信するノード、ならびにドナー・ノードが入力データについて処理タスクを実行した結果得られる出力をそれに対して送信するノードに物理的に接続しなければならない。また、受信側ノードは、移行されたタスクを送受信するためにドナー・ノードにも物理的に接続しなければならない。物理接続のサイズは1つまたは複数のリンクにすることができるであろう。ドナー・ノードのグループは静止モードに遷移し始め、受信側ノードのグループは移行されたタスクの処理を扱う。この場合、受信側ノードの集合はドナー・ノードの集合より優れている可能性があり、その優位性は、処理能力、RAMおよびディスク上の両方のメモリ・スペース、効率、それらが処理している他のタスク・フローによるデフォルト使用率、またはシステムのユーザによって指定されるその他の要因に関して表すことができる。図11では、このシナリオの一例として、毎日特定の期間中にノードM12およびM13によってデータのバーストが予期される。ノードM12およびM13は、それぞれのタスクおよび関連処理をノードM10およびM9に移行することができ、これらのノードはこのデータを処理するときにより効率的であり、移行されたタスクを処理する期間中に全体的にドナー・ノードより少ないエネルギーを使用し、そうでなければ、この期間中、アイドル状態のままになるであろう。図12は、移行されたタスクの入力データ・バーストの期間が終了したときにタスク処理がノードM10およびM9からノードM12およびM13に戻され、M12およびM13上で処理を行う方がエネルギー効率が良くなる状況を示している。
もう1つの例は、入力データが非常に低速で到着した場合、すなわち、それがBUFFER_RATE_THRESHOLDであるかまたはそれ未満である場合、ノードは半静止モードになることを選択することができ、そこでそのノードは処理を中断し、バッファに入れられた入力を処理する準備ができるまで、BUFFER_TIME_LIMITなどの特定の期間の間、入力をバッファに入れる。
第2の要因は、他のどのノードが同様に静止モードに遷移できるかである。タスクの階層性のため、あるノードが静止モードになる場合、ダウンストリーム・ノード、すなわち、その唯一の入力として静止ノードのタスク出力を頼りにするタスクを処理するノードも静止モードに遷移できそうである。個々のノードのエネルギー節約は静止モードに遷移するというその決定を保証するために十分ではない可能性があり、すなわち、POWER_DECREASE_THRESHOLDより大きくない可能性がある。この場合、ノードは、それ自体とそのダウンストリームの隣接ノードが静止モードに集団遷移した結果得られるそれらの集団エネルギー節約を考慮し、静止モードへの遷移を保証するためにその集団エネルギー節約がPOWER_DECREASE_THRESHOLDより大きいかどうかを判断することができる。ダウンストリーム・ノードとのローカル通信に基づいて、ノードは、他のどのノードがそれ自体と同時に同様に静止モードに遷移できるかを判断することができる。ダウンストリーム・ノードがこの通信時に他のどのアクティブ・タスク・フローについてもタスクを処理していない場合、そのノードはそれに通信メッセージを送信したノードと同時に静止モードに遷移することができる。
第3の要因は、静止モードへの遷移のコストを評価することである。ノードは静止モードへの遷移のコストを推定することができ、この推定は時間原価とビジネス・コストとを含む。より具体的には、コストは以下のもので構成される。
現行処理を中断し、タスクの処理に関連する必要なメモリ内状態をディスクに保存するために要する時間
静止状態になることがタスクを移行するという決定を伴う場合、もう1つのコストは、タスクおよびそれに関連する状態を他のノードに移行するのに要する時間である。タスクそのものならびにタスクに関連するすべての状態はノードにとってローカルであると想定すると、ノードは、まず、タスクおよび状態を受信側ノードに移行するために使用されるリンクの速度および帯域幅を決定することにより、このコストを推定することができる。どのタスクを移行するかおよびどのノードにそれを移行するかを決定する際に、ノードは、この実施形態の上述のステップ1〜ステップ6を使用することができる。
タスクが移行され、他のノード上で再開する必要がある場合、もう1つのコストは、他のノード上でそのタスクの処理を再開する始動コストである。この始動コストは、タスクの処理が中断されたときの状態に到達し、その時点から再開するための時間を含む。
静止モードに移行するコストcは、以下のようにn個の因数の加重結合(weighted combination)として量的に計算することができ、ここで、因数f1は実行を中断するコストを表し、因数f2は移行のコストを表し、fiは他のコスト要因を表し、m1は因数f1に対する重みを表し、m2は因数f2に対する重みを表し、mnは因数fnに対する重みを表す。
Figure 0005723882
第4の要因は、静止モードへの遷移の恩恵を評価することである。静止モードへの遷移の恩恵は、エネルギー節約とビジネス・コスト節約という2つの次元により評価することができる。より具体的には、以下のようにノードによって恩恵を推定することができる。
ノードは、それが静止モードになることを計画している期間の間に累積するエネルギー節約を推定することができる。これは、そのノードの以前のエネルギー使用量パターンを基礎として推定された節約電気または節約電力に関するものになるであろう。タスクがよりパワフルなマシンに移行される場合、これらの移行されたタスクに割り振られる受信側マシンの電力使用量の一部分は全電力節約量から減算しなければならない。ノードi上の移行されたタスク集合の電力使用量は以下のように推定することができ、ここで、Ciはタスクt1、t2、...tnからなるタスク集合であり、nは移行されるタスクの総数である。タスク集合Ciを実行している間に受信側ノードiが電力を消費する速度をPiとする。Pi用の単位の例は毎秒のワット数にすることができるであろう。Piは以下のように計算することができる。
i=Gi(Ci
べき関数Giは、タスク集合Ci内のタスクを処理した結果として、そのノードが読み書きのためにディスクにどのくらい頻繁にアクセスしなければならないかなどの要因を考慮に入れる。Giは、Ciをノードiに移行し、固定間隔の時間tについて電力消費量pの量を記録することによって推定することができ、ここで、着信データ転送速度における最新の傾向と最も一致するように上述の曲線の当てはめ技法を使用して、タスクに課せられたデータ転送速度が推定される。したがって、Giは以下の通りである。
i(Ci)=p/t
iが計算されると、Piを推定することができ、したがって、期間xにおけるタスク集合の電力使用量はPi・xになる。
遷移によってデータがより効率的に処理されるようになる場合、これはアプリケーションに関するエンドツーエンド待ち時間の短縮につながる可能性がある。ビジネス・コストに関するこの潜在的な恩恵は、タスクのエンドツーエンド待ち時間に関して推定することができる。
静止モードへの遷移の恩恵bは、以下のようにn個の因数の加重結合として量的に計算することができ、ここで、因数f1はエネルギー節約を表し、因数f2はエンドツーエンド待ち時間を表し、fiは他の恩恵要因を表し、k1は因数f1に対する重みを表し、k2は因数f2に対する重みを表し、knは因数fnに対する重みを表す。
Figure 0005723882
コストまたは恩恵を決定する因数に対する重みはアフィンにすることができる。アフィン結合は、結合内のすべての重みを合計すると1になるような一次結合として定義される。重みは非線形または定数にすることもできるであろう。特定の重みを使用してコストおよび恩恵の式から意味のある値を抽出するために、因子の数値を正規化しなければならない。正規化は統計値において一般的なやり方である。
静止モードへの遷移の決定は、遷移の恩恵がコストを超える場合にのみ行わなければならない。換言すれば、静止モードへの遷移を保証するために、bはcより大きくなければならない。
また、kiの値はノード上で定期的に更新できることにも留意されたい。たとえば、エネルギー・コストが時刻または曜日あるいは季節によって変化する場合、異なる状況の間にエネルギー節約に関する異なる値を適用することができるであろう。
静止モードにまたは静止モードで遷移する場合、静止モード期間を他のノードと同期させることが重要である。同期とは、複数のノードがグループとしてまとめて電源オフするとき、ならびにそれらがグループとしてまもめてもう一度電源オンするときに、それらが固定時間について合意に達していることを意味する。データはあるタスクから他のタスクに流れているので、ノード間で静止モードを同期させることは重要であり、実行可能である。これは、アップストリーム・ノードが静止モードになる場合、他のフローに属しているタスクを処理していないという条件で、このアップストリーム・ノードに接続され、フロー内のダウンストリームにあるノードも静止モードになることができ、あるいは、ダウンストリーム・ノードが他のフローに属しているタスクを処理している場合、それらが処理している異なるすべてのデータ・フローのアップストリーム・ノードも静止モードに遷移するのであれば、ダウンストリーム・ノードは静止モードになることができるからである。この状況は図13に示されている。図13では、ノードM4は静止モードに遷移することを決定し、このメッセージをそのダウンストリーム・ノードにブロードキャストする。M4のダウンストリーム・ノードM5も静止モードに遷移することを決定する。というのは、そのノードM5は、M4が静止状態にある期間中、M4からいかなるデータも受信できないことを認識し、データ・パターン分析および予測を基礎としてM1からデータを受信しなくなると予想するからである。また、M5は,前に受信した入力データから残りの処理を実行させることはない。したがって、ノードM4はその静止モード期間の長さをノードM5と同期させ、合意した期間の間、どちらも静止モードに遷移する。同様に、図13では、ノードM10が静止モードに遷移することを決定し、このメッセージをそのダウンストリーム・ノードにブロードキャストすると、ノードM9は、ノードM10が静止状態にある期間中、いかなるデータも受信できないことを認識し、残りの処理を実行させることはない。したがって、M10はその静止モード期間をノードM9と同期させ、合意した期間の間、どちらも静止モードに遷移する。ノードが異なれば、静止状態への遷移の電力コストも異なる可能性がある。静止モードに遷移すべきかどうかを決定するときに、ノードは、それ自体をオフにするコストを推定し、それを推定電力節約から減算する。
本発明で定義されたすべてのユーザ設定パラメータの表は以下の通りである。この表のパラメータは、いかなる時点でもユーザによって各ノードについて個々に構成することができる。1つのノードは複数のユーザを有する可能性がある。代わって、ネットワークが非常に大きい(たとえば、数千個のノード)場合、ユーザはノードのサブセットについて負荷移行トリガ設定を初期設定し、初期設定されたノードがその初期設定値をそれに関するしきい値が適切である他のノードに広げるために基本拡散または信念伝搬などの自律型非集中情報伝搬アルゴリズムを頼りにすることができる。拡散とは、その情報をほとんどまたはまったく持たない1組のノードに非常に集中しているネットワーク内で情報の正味輸送が1組のノードによってもたらされる技法である。拡散の結果は漸進的な情報の混合である。特定の条件下では、ノードの純粋に自発的なローカル・コーディネーションに基づいて、拡散プロセスの結果、最終的にネットワーク内の情報が完全に混合されることになる。
Figure 0005723882
本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェアとソフトウェアの両方の要素を含む実施形態の形を取ることができる。好ましい一実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアで実装される。
さらに、本発明は、コンピュータまたは任意の命令実行システムによりあるいはそれに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラムの形を取ることができる。この説明では、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによりあるいはそれに関連して使用するためのプログラムを収容、保管、伝達、伝搬、または移送することができる任意の有形装置にすることができる。
この媒体は、電子、磁気、光、電磁、赤外線、または半導体のシステム(あるいは装置またはデバイス)、もしくは伝搬媒体にすることができる。コンピュータ可読媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、剛性磁気ディスク、および光ディスクを含む。光ディスクの現在の例としては、コンパクト・ディスク読み取り専用メモリ(CD−ROM)、書き換え可能なコンパクト・ディスク(CD−R/W)、およびDVDを含む。
プログラム・コードの保管あるいは実行またはその両方に適したデータ処理システムは、システム・バスを介して記憶素子に直接または間接的に結合された少なくとも1つのプロセッサを含むことになる。記憶素子としては、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量記憶装置と、実行中に大容量記憶装置からコードを取り出さなければならない回数を削減するために少なくとも何らかのプログラム・コードの一時記憶を提供するキャッシュ・メモリとを含むことができる。クラウド・コンピューティング環境も本発明のために構想されている。
入出力またはI/O装置(キーボード、ディスプレイ、ポインティング・デバイスなどを含むがこれらに限定されない)は、直接あるいは介在する入出力コントローラを介してシステムに結合することができる。
データ処理システムが介在する私設網または公衆網を介してその他のデータ処理システムあるいはリモート・プリンタまたは記憶装置に結合された状態になれるようにするために、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、現在使用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
本明細書に具体的に記載された諸実施形態を超える本発明のその他の変更は本発明の精神を逸脱せずに行うことができることは、本発明に注視する当業者にとって明らかになるであろう。したがって、このような変更は、本発明の範囲内で、特許請求の範囲のみによって限定されるものと見なされる。

Claims (12)

  1. コンピュータにより実行されるイベント・ドリブン・システムにおける非集中負荷分散の方法であって、
    前記方法が、
    ステートフルおよびステートレス・イベント処理コンポーネントを有する前記イベント・ドリブン・システム内の複数のノードで複数のタスクによって処理すべきデータ・フローを受信するステップであって、前記複数のタスクは、他のタスクの出力に依存するタスクである階層タスクと、他のタスクの前記出力に依存しないタスクである非階層タスクと、それらの混合物からなるグループから選択される、ステップと、
    各ノードで処理された各タスクおよびその熱特性を含む前記ノードの特性に関する統計値を収集するステップと、
    前記収集した統計値を使用し、それに対して1つのタスクを部分的にまたは全体的に転送することができる隣接ノードのリストを作成するステップと、
    少なくとも1つのタスクを処理するシステム負荷を分散し、冷却コストを削減するために、前記隣接ノードのリストからターゲット・ノードと呼ばれる隣接ノードに移行するための考慮用のノードにおいて第1の温度を有し、ターゲット・タスクと呼ばれる前記少なくとも1つのタスクを選択するステップと、
    それに対して前記少なくとも1つのターゲット・タスクを移行することができ、第2の温度を有する前記ターゲット・ノードを選択するステップと、
    前記移行が前記第1の温度を低下させ、前記第2の温度が所定の許容できる熱しきい値未満であるという条件で、前記ターゲット・タスクを前記ターゲット・ノードに移行するステップと、
    ターゲット・タスクの移行の回数を管理するために各ノードで負荷交換プロトコルを確立するステップであって、非集中負荷移行が前記イベント・ドリブン・システムにおける全システムの負荷分散につながり、冷却コストを削減する、ステップと
    を含み、
    各ノードが、
    (i)第1の所定の期間中にすべてのターゲット・タスクがアップストリームまたはダウンストリームのいずれかに移行され、第2の所定の期間後にターゲット・タスク移行の方向を切り替えることができることと、
    (ii)ターゲット・タスクがターゲット・ノードに移行される場合、所定の長さの時間の間、前記移行の前に最も近い隣接ダウンストリーム・ターゲット・タスクを移行することができないことと、
    (iii)ターゲット・ノードへの移行後に、所定の長さの時間の間、ターゲット・タスクが前記ターゲット・ノードにとどまらなければならないことと、
    (iv)2つのノードが同時にターゲット・タスクをターゲット・ノードに移行することはできないこと
    という負荷交換制約を有する、
    方法。
  2. 前記少なくとも1つのターゲット・タスクを2つ以上のターゲット・サブタスクに分割することをさらに含む、請求項1記載の方法。
  3. 前記負荷交換プロトコルが、
    (i)前記ターゲット・タスクを移行するという決定は振動に至ってはならないことと、
    (ii)単一マシン・サイクルで単一ターゲット・ノードに対して2つ以上のタスクの同時移行が行われてはならないことと、
    (iii)単一マシン・サイクルで1つのノードから2つ以上のタスクの同時移行が行われてはならないことと、
    (iv)ターゲット・タスク移行の最終結果が何らかの方法で負荷分散を改善しなければならないこと
    を含む、請求項1又は2に記載の方法。
  4. 少なくとも1つのターゲット・タスクをターゲット・ノードに移行し、前記ターゲット・ノード上で前記少なくとも1つのターゲット・タスクを実行するステップと、
    前記ターゲット・ノード上での前記少なくとも1つのターゲット・タスクの前記実行に関する統計値を収集するステップと
    をさらに含む、請求項1乃至3のいずれかに記載の方法。
  5. 静止モードに遷移するために少なくとも1つのノードを選択するステップをさらに含む、請求項1乃至4のいずれかに記載の方法。
  6. コンピュータにより実行されるイベント・ドリブン・システムにおける非集中負荷分散の方法であって、
    前記方法が、
    ステートフルおよびステートレス・イベント処理コンポーネントを有する前記イベント・ドリブン・システム内の複数のノードで複数のタスクによって処理すべきデータ・フローを受信するステップであって、前記複数のタスクは、他のタスクの出力に依存するタスクである階層タスクと、他のタスクの前記出力に依存しないタスクである非階層タスクと、それらの混合物からなるグループから前記複数のタスクが選択される、ステップと、
    各ノードで処理された各タスクに関する統計値を収集するステップと、
    前記収集した統計値を使用し、それに対して1つのタスクを部分的にまたは全体的に転送することができる隣接ノードのリストを作成するステップと、
    静止モードに遷移するためにドナー・ノードと呼ばれる少なくとも1つのノードを選択するステップと、
    前記隣接ノードのリストからターゲット・ノードと呼ばれる隣接ノードに移行するための考慮用の前記ドナー・ノードにおいてターゲット・タスクと呼ばれるタスクを選択するステップと、
    それに対して前記ターゲット・タスクを移行することができ、負荷分散品質に関して所定の基準を満たす前記ターゲット・ノードを選択するステップと、
    ターゲット・タスクの移行の回数を管理するために各ノードで負荷交換プロトコルを確立するステップであって、非集中負荷移行が前記イベント・ドリブン・システムにおける全システムの負荷分散につながる、ステップと、
    前記ターゲット・タスクを前記ドナー・ノードから前記ターゲット・ノードに移行し、前記ドナー・ノードを静止モードに遷移するステップと
    を含み、
    各ノードが、
    (i)第1の所定の期間中にすべてのターゲット・タスクがアップストリームまたはダウンストリームのいずれかに移行され、第2の所定の期間後にターゲット・タスク移行の方向を切り替えることができることと、
    (ii)ターゲット・タスクがターゲット・ノードに移行される場合、所定の長さの時間の間、前記移行の前に最も近い隣接ダウンストリーム・ターゲット・タスクを移行することができないことと、
    (iii)ターゲット・ノードへの移行後に、所定の長さの時間の間、ターゲット・タスクが前記ターゲット・ノードにとどまらなければならないことと、
    (iv)2つのノードが同時にターゲット・タスクをターゲット・ノードに移行することはできないこと
    という負荷交換制約を有する、方法。
  7. 静止モードに遷移するために少なくとも1つのノードを選択する前記ステップが、
    前記ドナー・ノードにおける着信トラフィックおよび静止モード期間の予想持続時間を分析することと、
    同様に静止モードに遷移できる他のノードを評価することと、
    静止モードへの遷移の前記ドナー・ノードにおける待ち時間および電力/冷却コストを評価することと、
    静止モードへの遷移の前記ドナー・ノードにおける電力/冷却の恩恵を評価することと、
    静止モードへの遷移の前記恩恵が静止モードへの遷移の前記コストを超える場合に、前記ターゲット・タスクを前記ドナー・ノードから前記ターゲット・ノードに移行し,前記ドナー・ノードを静止モードに遷移すること
    を含む、請求項6記載の方法。
  8. 前記ターゲット・タスクを2つ以上のターゲット・サブタスク・グループに分割することをさらに含む、請求項6又は7記載の方法。
  9. 負荷分散品質に関する前記所定の基準が、
    (i)前記ターゲット・ノードが、(a)前記ターゲット・タスクを処理する前記ノード、(b)前記ターゲット・タスクにとって親であるタスクを処理するノード、および(c)前記ターゲット・タスクにとって子であるタスクを処理するノードに物理的に接続しなければならないことと、
    (ii)前記ターゲット・ノードが前記ターゲット・タスクを処理するために十分な使用可能負荷およびメモリを備えていなければならないことと、
    (iii)前記ターゲット・タスクを通過するデータ・フロー内の物理リンクの数を最小化することと、
    (iv)サイクルを除去することと、
    (v)ターゲット・ノードが負の負荷相関係数を備えていなければならないことと、
    (vi)前記ターゲット・タスクを処理する前記ノードおよび前記ターゲット・ノードの移行後使用率が所定の最大しきい値より小さいこと
    を含む、請求項6乃至8のいずれかに記載の方法。
  10. 前記負荷交換プロトコルが、
    (i)前記ターゲット・タスクを移行するという決定は振動に至ってはならないことと、
    (ii)単一マシン・サイクルで単一ターゲット・ノードに対して2つ以上のタスクの同時移行が行われてはならないことと、
    (iii)単一マシン・サイクルで1つのノードから2つ以上のタスクの同時移行が行われてはならないことと、
    (iv)ターゲット・タスク移行の最終結果が何らかの方法で負荷分散を改善しなければならないこと
    を含む、請求項6乃至9のいずれかに記載の方法。
  11. 前記ターゲット・ノード上での前記ターゲット・タスクの前記実行に関する統計値を収集するステップをさらに含む、請求項6乃至10のいずれかに記載の方法。
  12. コンピュータにより実行されることにより、前記コンピュータに請求項1乃至11のいずれかに記載の方法の各ステップを行わせるコンピュータ・プログラム。
JP2012525539A 2009-08-18 2010-05-04 イベント・ドリブン・システムにおける非集中負荷分散の方法およびコンピュータ・プログラム Active JP5723882B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/543,474 US8479215B2 (en) 2009-08-18 2009-08-18 Decentralized load distribution to reduce power and/or cooling costs in an event-driven system
US12/543,474 2009-08-18
PCT/US2010/033465 WO2011022098A1 (en) 2009-08-18 2010-05-04 Decentralized load distribution to reduce power and/or cooling cost in an event-driven system

Publications (2)

Publication Number Publication Date
JP2013502642A JP2013502642A (ja) 2013-01-24
JP5723882B2 true JP5723882B2 (ja) 2015-05-27

Family

ID=43606330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012525539A Active JP5723882B2 (ja) 2009-08-18 2010-05-04 イベント・ドリブン・システムにおける非集中負荷分散の方法およびコンピュータ・プログラム

Country Status (6)

Country Link
US (2) US8479215B2 (ja)
JP (1) JP5723882B2 (ja)
CN (1) CN102473161B (ja)
DE (1) DE112010003338B4 (ja)
GB (2) GB2526964B (ja)
WO (1) WO2011022098A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2184681A1 (en) * 2008-10-31 2010-05-12 HSBC Holdings plc Capacity control
US9552234B2 (en) 2011-01-31 2017-01-24 Nokia Technologies Oy Method and apparatus for energy optimization in multi-level distributed computations
US8856321B2 (en) * 2011-03-31 2014-10-07 International Business Machines Corporation System to improve operation of a data center with heterogeneous computing clouds
US9280386B1 (en) * 2011-07-14 2016-03-08 Google Inc. Identifying task instance outliers based on metric data in a large scale parallel processing system
TW201314433A (zh) * 2011-09-28 2013-04-01 Inventec Corp 伺服器系統及其電源管理方法
US9430286B2 (en) * 2011-12-12 2016-08-30 International Business Machines Corporation Authorizing distributed task processing in a distributed storage network
US9223630B2 (en) * 2011-12-22 2015-12-29 Alcatel Lucent Method and apparatus for energy efficient distributed and elastic load balancing
US20190012234A1 (en) * 2012-01-31 2019-01-10 International Business Machines Corporation Dynamically shifting tasks in distributed computing data storage
US9203902B2 (en) * 2012-01-31 2015-12-01 Cleversafe, Inc. Securely and reliably storing data in a dispersed storage network
US20130268940A1 (en) * 2012-04-04 2013-10-10 Daniel Juergen Gmach Automating workload virtualization
CN102724277B (zh) * 2012-05-04 2016-01-06 华为技术有限公司 虚拟机热迁移和部署的方法、服务器及集群***
US10652318B2 (en) * 2012-08-13 2020-05-12 Verisign, Inc. Systems and methods for load balancing using predictive routing
GB2505412A (en) 2012-08-28 2014-03-05 Ibm Collaborative modified consensus workload distribution between computing nodes
US9104607B2 (en) * 2012-10-31 2015-08-11 International Business Machines Corporation Simulation engine for use in disaster recovery virtualization
JP6193393B2 (ja) * 2012-12-28 2017-09-06 インテル コーポレイション 分散コンピューティングシステムのための電力の最適化
US9784460B2 (en) * 2013-08-01 2017-10-10 Nautilus Data Technologies, Inc. Data center facility and process that utilizes a closed-looped heat management system
JP5939583B2 (ja) * 2013-12-13 2016-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 抽出装置、データ処理システム、抽出方法および抽出プログラム
KR102205836B1 (ko) * 2014-01-29 2021-01-21 삼성전자 주식회사 태스크 스케줄링 방법 및 장치
US9760408B2 (en) * 2014-03-26 2017-09-12 Unisys Corporation Distributed I/O operations performed in a continuous computing fabric environment
US10445134B2 (en) * 2014-06-03 2019-10-15 Amazon Technologies, Inc. Identifying candidate workloads for migration
DE102014010071A1 (de) 2014-07-08 2016-01-14 Evohaus Gmbh Energiemanagementsystem zur anreizbasierten Verbrauchsoptimierung
US10896432B1 (en) * 2014-09-22 2021-01-19 Amazon Technologies, Inc. Bandwidth cost assignment for multi-tenant networks
JP2016081119A (ja) * 2014-10-10 2016-05-16 富士通株式会社 情報処理システム、情報処理システムの制御方法および制御装置の制御プログラム
CN104539551B (zh) * 2014-12-22 2017-11-17 清华大学 路由交换平台虚拟服务迁移方法
US9626227B2 (en) * 2015-03-27 2017-04-18 Intel Corporation Technologies for offloading and on-loading data for processor/coprocessor arrangements
US9848041B2 (en) * 2015-05-01 2017-12-19 Amazon Technologies, Inc. Automatic scaling of resource instance groups within compute clusters
US9967160B2 (en) 2015-05-21 2018-05-08 International Business Machines Corporation Rerouting data of a streaming application
US10009825B1 (en) * 2016-01-20 2018-06-26 Sprint Spectrum L.P. Donor selection for relay access nodes
JP6181216B2 (ja) 2016-01-22 2017-08-16 株式会社東芝 通信制御装置、通信制御方法、プログラムおよび通信システム
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
JP6743568B2 (ja) * 2016-08-09 2020-08-19 富士通株式会社 制御装置、情報処理システム、プログラム及び情報処理方法
KR101856454B1 (ko) * 2017-03-06 2018-05-10 주식회사 티맥스데이터 분산처리를 위한 컴퓨팅 장치
CN107018201B (zh) * 2017-04-20 2019-12-31 北京中科睿芯科技有限公司 数据流架构中利用关键路径信息进行指令动态迁移的方法
KR102091481B1 (ko) * 2017-11-29 2020-03-20 국민대학교산학협력단 동적 신경망 학습 방법 및 이를 수행하는 동적 신경망 학습 장치
EP3648430B1 (de) * 2018-11-05 2021-06-02 Wincor Nixdorf International GmbH Hardware-sicherheitsmodul
CN109918195B (zh) * 2019-01-18 2023-06-20 华南理工大学 基于热感知动态任务迁移的众核***处理器资源调度方法
US11138213B2 (en) 2019-04-10 2021-10-05 Snowflake Inc. Internal resource provisioning in database systems
US10944644B2 (en) * 2019-04-30 2021-03-09 Intel Corporation Technologies for thermal and power awareness and management in a multi-edge cloud networking environment
US10674118B1 (en) * 2019-05-01 2020-06-02 CYBERTOKA Ltd. Method and system for discreetly accessing security camera systems
DE102019214255A1 (de) * 2019-09-19 2021-03-25 Robert Bosch Gmbh Dynamisches Zuweisen von Sonderaufgaben in verteilten Netzwerken
CN112882827A (zh) 2019-11-29 2021-06-01 伊姆西Ip控股有限责任公司 用于负载均衡的方法、电子设备和计算机程序产品
WO2021139726A1 (zh) * 2020-01-07 2021-07-15 中科寒武纪科技股份有限公司 任务迁移的方法、装置、计算机设备及可读存储介质
US11842213B2 (en) * 2021-04-16 2023-12-12 Dell Products L.P. Cooling-power-utilization-based workload allocation system
CN116029539B (zh) * 2023-03-30 2023-06-09 深圳市奥思网络科技有限公司 一种基于工作流的项目流转方法及相关组件

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61114363A (ja) * 1984-11-07 1986-06-02 Hitachi Ltd 計算機システム間ジヨブ転送方式
US5136708A (en) * 1987-06-09 1992-08-04 Oce-Nederland B.V. Distributed office automation system with specific task assignment among workstations
JPH01194054A (ja) * 1988-01-29 1989-08-04 Hitachi Ltd 分散処理システムのプログラムローデイング方式
US5031089A (en) * 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
JP2875284B2 (ja) * 1989-06-23 1999-03-31 株式会社日立製作所 計算機システム及びその課金処理方法
JPH0782440B2 (ja) * 1990-07-05 1995-09-06 工業技術院長 論理合成の演算割り当て方法
IL99923A0 (en) * 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
JPH0675786A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
US5418953A (en) * 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
US5630129A (en) 1993-12-01 1997-05-13 Sandia Corporation Dynamic load balancing of applications
JPH0816531A (ja) * 1994-06-28 1996-01-19 Hitachi Ltd プロセススケジュール方式
JPH0830471A (ja) * 1994-07-14 1996-02-02 Hitachi Ltd ジョブの実行プロセサ変更方式
US6078945A (en) * 1995-06-21 2000-06-20 Tao Group Limited Operating system for use with computer networks incorporating two or more data processors linked together for parallel processing and incorporating improved dynamic load-sharing techniques
JPH09231180A (ja) * 1995-12-22 1997-09-05 Hitachi Ltd サーバ分割方法
US6393455B1 (en) * 1997-03-28 2002-05-21 International Business Machines Corp. Workload management method to enhance shared resource access in a multisystem environment
US6128279A (en) * 1997-10-06 2000-10-03 Web Balance, Inc. System for balancing loads among network servers
US6584102B1 (en) 1998-12-21 2003-06-24 At&T Corp. Communication network apparatus and method
US7117273B1 (en) 2000-01-25 2006-10-03 Cisco Technology, Inc. Methods and apparatus for maintaining a map of node relationships for a network
US6658449B1 (en) * 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
EP1182552A3 (en) 2000-08-21 2003-10-01 Texas Instruments France Dynamic hardware configuration for energy management systems using task attributes
EP1182548A3 (en) 2000-08-21 2003-10-15 Texas Instruments France Dynamic hardware control for energy management systems using task attributes
WO2002017082A1 (en) * 2000-08-22 2002-02-28 Akamai Technologies, Inc. Dynamic content assembly on edge-of-network servers in a content delivery network
US7552350B2 (en) * 2000-09-27 2009-06-23 Huron Ip Llc System and method for activity or event base dynamic energy conserving server reconfiguration
US20040068729A1 (en) 2001-02-14 2004-04-08 Oren Simon Non-hierarchical collaborative computing platform
EP1386432A4 (en) 2001-03-21 2009-07-15 John A Stine PROTOCOL OF ACCESS AND ROUTING FOR AD HOC NETWORKS, IN WHICH THE COLLISION RESOLUTION AND THE DISSEMINATION OF NODE STATES ARE USED
US7093004B2 (en) 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
US7313503B2 (en) 2002-02-19 2007-12-25 Hewlett-Packard Development Company, L.P. Designing layout for internet datacenter cooling
JPWO2003083693A1 (ja) * 2002-04-03 2005-08-04 富士通株式会社 分散処理システムにおけるタスクスケジューリング装置
JP2004126968A (ja) * 2002-10-03 2004-04-22 Fujitsu Ltd 並列計算機のジョブスケジューリング装置
US7590984B2 (en) * 2003-05-29 2009-09-15 International Business Machines Corporation System and method for balancing a computing load among computing resources in a distributed computing problem
US7373268B1 (en) 2003-07-30 2008-05-13 Hewlett-Packard Development Company, L.P. Method and system for dynamically controlling cooling resources in a data center
US7441033B2 (en) * 2003-08-14 2008-10-21 Oracle International Corporation On demand node and server instance allocation and de-allocation
US8156217B2 (en) 2003-11-24 2012-04-10 Hewlett-Packard Development Company, L.P. Dynamically balancing load for servers
US7451210B2 (en) * 2003-11-24 2008-11-11 International Business Machines Corporation Hybrid method for event prediction and system control
TW200532466A (en) * 2004-02-03 2005-10-01 Sony Corp Information processing device, information processing method, information processing system and information processing program of accessible media
US7360102B2 (en) 2004-03-29 2008-04-15 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processor manipulation
JP4465598B2 (ja) 2004-07-05 2010-05-19 ソニー株式会社 集積回路およびその処理制御方法、並びに、プログラム
JP4082439B2 (ja) * 2004-07-26 2008-04-30 三菱電機株式会社 並列計算機
US7925727B2 (en) * 2004-07-29 2011-04-12 Nortel Networks Limited Method and apparatus for efficient communication of management data in a telecommunications network
US7400585B2 (en) * 2004-09-23 2008-07-15 International Business Machines Corporation Optimal interconnect utilization in a data processing network
US20060265712A1 (en) * 2005-05-18 2006-11-23 Docomo Communications Laboratories Usa, Inc. Methods for supporting intra-document parallelism in XSLT processing on devices with multiple processors
US7487206B2 (en) 2005-07-15 2009-02-03 International Business Machines Corporation Method for providing load diffusion in data stream correlations
US7327571B2 (en) 2005-09-06 2008-02-05 Hewlett-Packard Development Company, L.P. Thermal load balancing systems and methods
KR100715674B1 (ko) 2005-09-15 2007-05-09 한국전자통신연구원 부하 분산 방법 및 장치, 그리고 이를 이용한 소프트웨어스트리밍 시스템
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
JP2007226567A (ja) 2006-02-23 2007-09-06 Fujitsu Ltd 回路シミュレータおよび回路シミュレーションプログラム
JP4523921B2 (ja) * 2006-02-24 2010-08-11 三菱電機株式会社 計算機リソース動的制御装置
US8032889B2 (en) * 2006-04-05 2011-10-04 Maxwell Technologies, Inc. Methods and apparatus for managing and controlling power consumption and heat generation in computer systems
US20080005391A1 (en) 2006-06-05 2008-01-03 Bugra Gedik Method and apparatus for adaptive in-operator load shedding
US7941805B2 (en) 2006-08-15 2011-05-10 International Business Machines Corporation Affinity dispatching load balancer with precise CPU consumption data
JP4308241B2 (ja) 2006-11-10 2009-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
EP2073119A1 (en) * 2007-04-09 2009-06-24 Panasonic Corporation Multiprocessor control unit, its control method, and integrated circuit
US7644254B2 (en) * 2007-04-18 2010-01-05 International Business Machines Corporation Routing data packets with hint bit for each six orthogonal directions in three dimensional torus computer system set to avoid nodes in problem list
US8370844B2 (en) * 2007-09-12 2013-02-05 International Business Machines Corporation Mechanism for process migration on a massively parallel computer
US7877490B1 (en) 2007-12-28 2011-01-25 Violin Memory, Inc. Method and apparatus for efficient TCP connection handoff
US20090192981A1 (en) * 2008-01-29 2009-07-30 Olga Papaemmanouil Query Deployment Plan For A Distributed Shared Stream Processing System
US7797588B2 (en) * 2008-02-01 2010-09-14 International Business Machines Corporation Mechanism to provide software guaranteed reliability for GSM operations
CA2757647A1 (en) 2008-04-04 2009-12-03 Powerwave Cognition, Inc. Methods and systems for a mobile, broadband, routable internet
US9009211B2 (en) * 2008-04-14 2015-04-14 Telecom Italia S.P.A. Distributed service framework

Also Published As

Publication number Publication date
DE112010003338B4 (de) 2017-08-10
US20110047554A1 (en) 2011-02-24
CN102473161B (zh) 2014-07-16
US8479215B2 (en) 2013-07-02
JP2013502642A (ja) 2013-01-24
DE112010003338T5 (de) 2012-08-09
GB2526964B (en) 2016-02-03
GB2483610B (en) 2016-02-03
GB201514952D0 (en) 2015-10-07
GB201200477D0 (en) 2012-02-22
CN102473161A (zh) 2012-05-23
GB2483610A (en) 2012-03-14
US9665407B2 (en) 2017-05-30
GB2526964A (en) 2015-12-09
US20130254778A1 (en) 2013-09-26
WO2011022098A1 (en) 2011-02-24

Similar Documents

Publication Publication Date Title
JP5723882B2 (ja) イベント・ドリブン・システムにおける非集中負荷分散の方法およびコンピュータ・プログラム
US8479216B2 (en) Method for decentralized load distribution in an event-driven system using localized migration between physically connected nodes and load exchange protocol preventing simultaneous migration of plurality of tasks to or from a same node
Hieu et al. Virtual machine consolidation with multiple usage prediction for energy-efficient cloud data centers
Ghomi et al. Load-balancing algorithms in cloud computing: A survey
Mosa et al. Optimizing virtual machine placement for energy and SLA in clouds using utility functions
TWI553472B (zh) 個人資料中心內的排程和管理
Cheng et al. Energy efficiency aware task assignment with dvfs in heterogeneous hadoop clusters
Eskandari et al. T3-scheduler: A topology and traffic aware two-level scheduler for stream processing systems in a heterogeneous cluster
Chaabouni et al. Energy management strategy in cloud computing: a perspective study
El Khoury et al. Energy-aware placement and scheduling of network traffic flows with deadlines on virtual network functions
Attaoui et al. Multi-criteria virtual machine placement in cloud computing environments: a literature review
Lakshmanan et al. A stratified approach for supporting high throughput event processing applications
Schneider et al. Dynamic load balancing for ordered data-parallel regions in distributed streaming systems
Rawas et al. LECC: Location, energy, carbon and cost-aware VM placement model in geo-distributed DCs
GB2496958A (en) Changing configuration of processors for data packet distribution based on metric
Zheng et al. Dynamic load balancing and pricing in grid computing with communication delay
US9577869B2 (en) Collaborative method and system to balance workload distribution
Xia et al. Data locality-aware big data query evaluation in distributed clouds
Sun et al. Performance-aware deployment of streaming applications in distributed stream computing systems
Do et al. A generalized model for investigating scheduling schemes in computational clusters
Liu et al. On-line real-time service allocation and scheduling for distributed data centers
Kanagaraj et al. Uniform distribution elephant herding optimization (UDEHO) based virtual machine consolidation for energy-efficient cloud data centres
Nine et al. Greendataflow: Minimizing the energy footprint of global data movement
Nethaji et al. Differential Grey Wolf Load‐Balanced Stochastic Bellman Deep Reinforced Resource Allocation in Fog Environment
El-Zoghdy et al. A threshold-based load balancing algorithm for grid computing systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140314

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141219

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150106

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: 20150310

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150330

R150 Certificate of patent or registration of utility model

Ref document number: 5723882

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150