JP2020502641A - 計算リソース割り振り - Google Patents

計算リソース割り振り Download PDF

Info

Publication number
JP2020502641A
JP2020502641A JP2019528471A JP2019528471A JP2020502641A JP 2020502641 A JP2020502641 A JP 2020502641A JP 2019528471 A JP2019528471 A JP 2019528471A JP 2019528471 A JP2019528471 A JP 2019528471A JP 2020502641 A JP2020502641 A JP 2020502641A
Authority
JP
Japan
Prior art keywords
program
requests
computational
computing
resources
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.)
Granted
Application number
JP2019528471A
Other languages
English (en)
Other versions
JP6825103B2 (ja
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 JP2020502641A publication Critical patent/JP2020502641A/ja
Application granted granted Critical
Publication of JP6825103B2 publication Critical patent/JP6825103B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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
    • 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
    • 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
    • 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
    • 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]
    • 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
    • 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
    • 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5077Logical partitioning of resources; Management or configuration of virtualized 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

多数のプログラム部分を含むプログラム(224)を実行するための計算リソースを要求することは、要求のセットを計算することを含む。各セットは、初期セットを除き、以前に提出されたセットが許可された場合にのみ、計算リソースマネージャ(120)によって処理される。初期セットの後にマネージャによる処理のための1つ以上の追加のセットが形成される。追加のセットの要求は、プログラム部分の最小充足セット内にあるプログラム部分のための部分要求(386)を含む。各プログラム部分は、その、以前に要求されたリソースの量を、関連目標量で除した、それぞれの充足率に関連付けられる。部分要求は、部分要求が許可された後には、最小充足セット内の各プログラム部分が、これまでの充足率より大きく、且つ依然として1より小さい充足率を有することになるほどの十分に少ない量の計算リソースを要求する。

Description

関連出願の相互参照
本出願は、2016年12月8日に出願された米国特許出願第62/431,505号に対する優先権を主張する。
本明細書は、計算システムにおける計算リソースの割り振りに関する。
計算システム上で動作するアプリケーションは、これを行うために計算システムの計算リソースの一部分を必要とする。したがって、計算システムは、その上で動作するアプリケーションへの計算システムのリソース割り振りを管理しなければならない。アプリケーションに割り振られるリソースのいくつかの例としては、計算システムのメモリの一部分へのアクセス、ファイルデータへのアクセス、および必要とされる量の処理パワーへのアクセスが挙げられる。
分散計算システムにおいては、協働してデータ処理アプリケーションを動作させる1つ以上のクラスタ内に含まれる多数のサーバの間で、計算リソース(データ記憶および処理リソースを含む)が分散している。いくつかの例では、分散計算システムは、計算システム上におけるアプリケーションの実行をスケジュールするとともに、アプリケーションへの計算システムの分散リソースの割り振りも管理する、集中リソースマネージャを用いる。このようなリソースマネージャの1つが「Hadoop YARN」である。
一般態様1では、計算リソースマネージャから、複数のプログラム部分を有するコンピュータプログラムを計算システム内で実行するための計算リソースを要求するための方法であって、本方法は、プログラム部分のそれぞれのものに関連付けられた計算リソースの目標量を指定する情報を記憶することであって、各プログラム部分は、そのプログラム部分が計算システム内で実行されることを可能にする、計算リソースマネージャによって許可された、許可された計算リソースを用いる、記憶することと、要求を計算することであって、要求は、要求の複数のセットとして計算リソースマネージャへ提出するための、コンピュータプログラムを計算システム内で実行するための計算リソースを求めるものであり、要求の各セットは、要求の初期セットを除いて、要求の複数のセットのうちの以前に提出された1つ以上のセットが、計算リソースマネージャによって複数のプログラム部分による使用のために許可された場合にのみ、計算リソースマネージャによって処理されることになる、計算することと、を含み、計算することは、要求の初期セットを形成すること、および要求の初期セットの後に計算リソースマネージャによる処理のための要求の1つ以上の追加のセットを形成すること、を含み、要求の追加のセットのうちの要求の少なくとも1つのセットが、1つ以上のプログラム部分の最小充足セット内にある複数のプログラム部分のうちの少なくとも1つのプログラム部分のための部分要求を含み、複数のプログラム部分の各プログラム部分が、各プログラム部分の、以前に要求された計算リソースの量を、各プログラム部分の関連目標計算リソース量で除した、それぞれの充足率に関連付けられ、プログラム部分は、その関連充足率が複数のプログラム部分の全てにわたって関連充足率の最小値である場合には、最小充足セットのメンバであり、部分要求は、部分要求が許可された後には、最小充足セット内の各プログラム部分が、部分要求が許可される前の最小充足セット内の1つ以上のプログラム部分の各々についての充足率より大きく、且つ依然として1より小さい充足率を有することになるような量の計算リソースを要求する、方法が提供される。
部分要求が、この部分要求が許可された後には、最小充足セット内の各プログラム部分が、最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率より依然として小さい充足率を有することになるような量以下である量の計算リソースを要求する、態様1に係る態様2。
部分要求が、この部分要求が許可された後には、最小充足セット内の各プログラム部分が、最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率と少なくとも同じ大きさである充足率を有することになるような量以上である量の計算リソースを要求する、態様1または2に係る態様3。
部分要求が、この部分要求が許可された後には、最小充足セット内の各プログラム部分が、最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率と少なくとも同じ大きさである充足率を有することになるような量以上である量の計算リソースを要求する、態様1〜3のうちのいずれか1つに係る態様4。
要求の初期セットがプログラム部分ごとの最小要求を含み、各最小要求は、プログラムの対応する部分を実行するために必要とされる最小量の計算リソースを要求する、態様1〜4のうちのいずれか1つに係る態様5。
プログラム部分のうちの少なくとも1つが計算リソースの固定目標量に関連付けられ、プログラム部分のうちの少なくとも1つが計算リソースの可変目標量に関連付けられ、計算リソースの固定目標量に関連付けられたプログラム部分ごとの最小要求が、計算リソースの完全な目標量に対応する全要求であり、計算リソースの可変目標量に関連付けられたプログラム部分ごとの最小要求が、計算リソースの完全な目標量未満に対応する部分要求である、態様1〜5のうちのいずれか1つに係る態様6。
計算リソースの可変目標量に関連付けられたプログラム部分ごとの最小要求が、計算リソースの単一のユニットに対応する部分要求であり、計算リソースの各可変目標量は、計算リソースの完全な目標量を等しいサイズの複数のユニットに分割する計算リソースの細分性を単位として規定される、態様1〜6のうちのいずれか1つに係る態様7。
要求の少なくとも1つのセット内の少なくともいくつかの要求が、互いに異なるサイズの計算リソースの量に対応する、態様1〜7のうちのいずれか1つに係る態様8。
複数のプログラム部分のうちのそれぞれのものに関連付けられた計算リソースの目標量を指定する情報を記憶することが、少なくとも1つのプログラム部分について、ユーザ入力に少なくとも部分的に基づいて、少なくとも1つのプログラム部分の、計算リソースの関連目標量を決定することを含む、態様1〜8のうちのいずれか1つに係る態様9。
計算リソースが複数の計算ノードにわたって分散している、態様1〜9のうちのいずれか1つに係る態様10。
プログラム部分のうちの少なくともいくつかが、それらの許可された計算リソースが複数の計算ノードのうちの特定の1つ以上の計算ノードから得られることを必要とする、態様1〜10のうちのいずれか1つに係る態様11。
要求の複数のセットの要求の各セットの各要求に関連付けられた計算リソースが、複数の計算ノードの単一の計算ノードから得られなければならない、態様1〜11のうちのいずれか1つに係る態様12。
プログラム部分のうちの少なくともいくつかが、1つ以上のデータソースからのデータ項目を処理するように構成されており、本方法が、1つ以上のデータソースからのデータ項目に少なくとも部分的に基づいてプログラム部分の各々のための計算リソースの目標量を決定することをさらに含む、態様1〜12のうちのいずれか1つに係る態様13。
1つ以上のデータソースからのデータ項目に少なくとも部分的に基づいてプログラム部分の各々のための計算リソースの目標量を決定することが、プログラム部分ごとに、プログラム部分の単一のインスタンスに関連付けられた計算リソースを、プログラム部分によって処理されるべきデータ項目ごとのプログラム部分に関連付けられた計算リソースの目標量に加算することを含む、態様1〜13のうちのいずれか1つに係る態様14。
要求の複数のセットの要求の各セットの各要求が、複数のプログラム部分のうちの特定のプログラム部分の単一のインスタンスによって必要とされる計算リソースを要求する、態様1〜14のうちのいずれか1つに係る態様15。
複数のプログラム部分のうちの第1のプログラム部分が、要求の複数のセットからの複数の要求に関連付けられる、態様1〜15のうちのいずれか1つに係る態様16。
要求の初期セットに応答して、要求の初期セットのうちの1つ以上の要求が充足されなかったとの指示を受信し、応答に基づいてプログラムの実行を中止することをさらに含む、態様1〜16のうちのいずれか1つに係る態様17。
一般態様18では、コンピュータ可読媒体は、計算リソースマネージャから、計算システム内で、複数のプログラム部分を有するコンピュータプログラムを実行するための計算リソースを要求するためのソフトウェアを記憶し、ソフトウェアは、計算システムに態様1〜17のうちのいずれかに係る方法を遂行させるための命令を含む。
一般態様19では、計算リソースマネージャから、複数のプログラム部分を有するプログラムを計算システム内で実行するための計算リソースを要求するための計算システムであって、この計算システムは、プログラム部分のうちのそれぞれのものに関連付けられた計算リソースの目標量を指定する情報を記憶するデータ記憶システムと、態様1〜17のうちのいずれかに係る方法を遂行するように構成された少なくとも1つのプロセッサと、を含む、計算システムが提供される。
上述の態様および後述される条項は以下の利点のうちの1つ以上を含むことができる。
利点の中でもとりわけ、諸態様は、別のプログラム部分の計算リソースが枯渇している間に、データ処理コンポーネントのうちのいずれも、それが必要とするよりも多くの計算リソースを割り振られないよう、計算システムの計算リソースを、データ処理グラフなどのコンピュータプログラムの、データ処理コンポーネントなどのプログラム部分に割り振る。それゆえ、本明細書に記載されている諸技法は、計算システムの他の計算リソースがデータ処理タスクに全面的に従事していないにもかかわらず、データ処理タスクによって過負荷状態になり得る計算システムの計算リソースの機能停止を低減する。それゆえ、これらの技法は、データ処理グラフなどのコンピュータプログラムを実行する計算システムの計算リソースのより効率的な利用に寄与し、ひいては、計算システムの適切な内部機能を向上させ、これを確実にする。本明細書に記載されている諸技法の別の技術的効果は、計算システム上で実行されるデータ処理グラフなどのコンピュータプログラムに対する効果である。例えば、計算システムの計算リソースの全体として釣り合いのとれた割り振りを促進することによって、データ処理グラフなどの、より多数のコンピュータプログラムが並行して実行することができ、および/またはデータ処理グラフなどのコンピュータプログラムの一部が、実行に必要とされる計算システムの必要計算リソースを獲得するために同じほど長く待たなくてもよいおかげで、より早く開始することができる。
本発明の他の特徴および利点は、以下の説明、図、および請求項から明らかになるであろう。
この発明の概要は、発明を実施するための形態においてさらに後述される概念の選択を、単純化された形で伝えるために提供される。この発明の概要は、クレームされている主題の主要な特徴または本質的な特徴を特定することを意図するものではない。
図1は、分散計算リソースの割り振りのためのシステムのブロック図である。 図2Aは、分散計算リソースの割り振りのためのシステムの詳細ブロック図である。 図2Bは、データ処理グラフの一例の図である。 図3は、分散計算リソース割り振りアルゴリズムのフローチャートである。 図4は、計算リソース割り振りアルゴリズムの第1ステップの完了後における図2のブロック図である。 図5は、計算リソース割り振りアルゴリズムの第2ステップの完了後における図2のブロック図である。 図6は、計算リソース割り振りアルゴリズムの第3ステップの間における図2のブロック図である。 図7は、計算リソース割り振りアルゴリズムの第5ステップの間における図2のブロック図である。 図8は、計算リソース割り振りアルゴリズムの第7ステップの第1の部分の間における図2のブロック図である。 図9は、計算リソース割り振りアルゴリズムの第7ステップの第2の部分の間における図2のブロック図である。 図10は、計算リソース割り振りアルゴリズムの第7ステップの第3の部分の間における図2のブロック図である。 図11は、計算リソース割り振りアルゴリズムの第9ステップの1回目の反復の間における図2のブロック図である。 図12は、計算リソース割り振りアルゴリズムの第9ステップの2回目の反復の間における図2のブロック図である。 図13は、計算リソース割り振りアルゴリズムの第9ステップの3回目の反復の間における図2のブロック図である。 図14は、計算リソース割り振りアルゴリズムの第9ステップの4回目の反復の間における図2のブロック図である。 図15は、計算リソースを割り振ることができる、本明細書に記載されている番号付き条項を参照したプロセスフローを示す。
図1は、計算リソース割り振り技法を用いることができる、計算システム100またはデータ処理システム100の一例を示す。
システム100は、種々の形式(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、またはメインフレームによって用いられる固有の形式)のうちの任意のものでデータを各々記憶または提供し得る、記憶デバイス、またはオンラインデータストリームへの接続などの、データの1つ以上のソースを含み得るデータソース102を含む。実行環境104は、実行モジュール112、リソースマネージャ120、およびリソース要求モジュール122を含む。実行環境104は、例えば、UNIXオペレーティングシステムのバージョンなどの、好適なオペレーティングシステムの制御を受ける1つ以上の汎用コンピュータ(中央処理装置、CPUを各々有する)上でホストされ得る。例えば、実行環境104は、複数の中央処理装置(CPU)またはプロセッサコア、局所的なもの(例えば、対称型マルチプロセッシング(SMP)コンピュータなどのマルチプロセッサシステム)、または局所的に分散したもの(例えば、クラスタとして結合された複数のプロセッサ、または超並列処理(MPP)システム、あるいは遠隔的なもの、または遠隔的に分散したもの(例えば、ローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)を介して結合された複数のプロセッサ)のいずれか、あるいはそれらの任意の組み合わせを用いたコンピュータシステムの構成上でホストされた、複数ノード並列コンピューティング環境であり得る。
本出願全体を通じて使用するとき、1つ以上のコンピュータプログラム(1つ以上のデータ処理グラフなど)に割り振られる、用語「計算リソース」のいくつかの例は、計算システムのメモリ(一次メモリなど)の一部分へのアクセス、計算システム100のデータ記憶(ディスク上に記憶されたファイルデータなど)へのアクセス、および計算システム100の必要とされる量の処理パワーへのアクセス(CPUへのアクセスなど)のうちの1つ以上を含む。本出願全体を通じて、コンピュータプログラム(データ処理グラフなど)に割り振られる、用語「計算リソース」は、より具体的には、実行環境104によってアクセス可能なメモリ(一次メモリなど)の一部分へのアクセス、実行環境104によってアクセス可能なデータ記憶(データソース102もしくはデータ記憶116など)へのアクセス、および実行環境104の必要とされる量の処理パワーへのアクセス(実行環境104によってアクセス可能なCPUもしくは仮想コアへのアクセスなど)のうちの1つ以上を含むことができる。
データ記憶システム116は、実行環境104および任意選択的な開発環境118がアクセス可能である。開発環境118は、本明細書に述べられているデータ処理グラフなどの、コンピュータプログラムを開発するためのシステムである。データ記憶システム116は、実行環境104に対してローカルにあることができ、例えば、実行環境104をホストするコンピュータに接続された記憶媒体(例えば、ハードドライブ)上に記憶されるか、または実行環境104に対してリモートにあることができ、例えば、(例えば、クラウド計算インフラストラクチャによって提供される)リモート接続を通じて、実行環境104をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム)上でホストされる。
例えば、グラフベースの計算を開発するためのこのような環境が、本明細書において参照により組み込まれる、「Managing Parameters for Graph−Based Applications」と題する米国特許出願公開第2007/0011668号明細書により詳細に記載されている。このようなグラフベースの計算を実行するためのシステムが、本明細書において参照により組み込まれる、「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題する米国特許第5,966,072号明細書に記載されている。例えば、このシステムに従って作成された、データ処理グラフは、グラフコンポーネントによって表された個々のプロセス内へ情報を入れ、そこから出すための方法、プロセス間で情報を移動させるための方法、およびプロセスのための動作順序を定義するための方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信方法を選定するアルゴリズムを含み得る(例えば、グラフのリンクに係る通信経路は、TCP/IPまたはUNIXドメインソケットを用いるか、あるいはプロセス間でデータを受け渡すための共有メモリを用いることができる)。
実行モジュール112は、リソースマネージャ120によって割り振られた計算リソースを用いて、1つ以上のデータ処理グラフ114などの、1つ以上のコンピュータプログラム114に従ってデータソース102からのデータを処理し、データソース102内に再び記憶されるか、またはデータ記憶システム116内に記憶されるか、あるいは他の仕方で用いられ得る、出力データを生成する。データソース102を提供する記憶デバイスは、実行環境104に対してローカルにあることができ、例えば、実行環境104をホストするコンピュータに接続された記憶媒体(例えば、ハードドライブ108)上に記憶されるか、または実行環境104に対してリモートにあることができ、例えば、(例えば、クラウド計算インフラストラクチャによって提供される)リモート接続を通じて、実行環境104をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム110)上でホストされる。実施例によっては、データソース102は、場合によってはヌル値を含む、(「属性」または「列」とも呼ばれる)それぞれのフィールドのための値を有するレコードとして編成され得るデータを含む1つ以上の(例えば異なる)形式のデータベースシステムを含む。
リソースマネージャ120は、実行環境104上における、1つ以上のデータ処理グラフ114などの、1つ以上のコンピュータプログラム114の実行をスケジュールし、コンピュータプログラムまたはデータ処理グラフ114への、計算システムの、またはより具体的には、実行環境の、計算リソースの割り振りを管理する。以下においてより詳細に説明されるように、数値データ処理コンポーネントを含むデータ処理グラフなどの、プログラム部分を含むコンピュータプログラムのために、リソース要求モジュール122はリソースマネージャ120と対話し、いずれのプログラム部分またはデータ処理コンポーネントも、別のプログラム部分コンポーネントの計算リソースが枯渇している間に、必要とするより多くの計算リソースを割り振られないよう、計算リソースをデータ処理コンポーネントなどのプログラム部分に割り振る。
1つ以上のデータ処理グラフ114などの、1つ以上のコンピュータプログラム114は、これらの異なる部分(例えば、データ処理グラフのデータ処理コンポーネントなどのプログラム部分)が、実行時における使用のために割り振られるべき計算リソースの特定の(例えば異なる)目標量に関連付けられるような種々の仕方で構成またはプログラムすることができる。目標量は、それぞれのプログラム部分によって、その1つ以上のインスタンスを全て適切に、または完全に実行するために、例えば、それぞれのプログラム部分に関連付けられた、またはそれによって処理されるべき所与の量の入力データを(失敗なく)完全に処理するため、ならびに/あるいは所与の入力データに対して、プログラム部分によって実施され、その入力データに関連付けられた、インスタンスに関連付けられた全てのデータ処理タスクを実行の失敗なく実行するために必要とされる計算リソースの最小必要量に基づいて決定され得る。計算リソースの最小必要量は、インスタンスのプログラム部分が実行されるべき時に、並列に消費されることが必要とされる、プログラム部分に関連付けられたCPU、仮想コア、および/または一次メモリの部分の最小数であり得る。本出願全体を通じて使用するとき、これらのコンピュータプログラム114は、実行時の間に、データソース102から受信されたデータなどのデータを処理するデータ処理プログラムであり得る。このようなデータ処理プログラムの一例は、頂点間の有向リンクまたはデータフロー接続(作業要素、すなわち、データのフローを表す)によって接続された頂点(データ処理コンポーネントまたはデータセットを表す)を含む有向グラフによって表すことができる、本出願全体を通じて述べられているとおりのデータ処理グラフ114(「データフローグラフ」と呼ぶこともできる)である。図2Bに、データ処理グラフ114の一例225が示されている。図2Bにおいて、データ処理コンポーネントはC1〜C5(226、228、230、232および234とも標識される)である。リンクまたはデータフロー接続は、図2Bにおいて、226a、228a、228b、230aおよび232aと標識されている。本出願全体を通じて説明されるとおりのコンピュータプログラムのプログラム部分はまた、プログラム部分の間のデータのフローを提供するデータフロー接続によって接続することもできる。データ処理コンポーネントもしくはプログラム部分の数、およびリンクもしくはデータフロー接続の数は本出願において例示目的のためにのみ選定されており、各々、任意の他の数であることができる。これらのリンクまたはデータフロー接続に加えて、一部のデータ処理グラフは、データ処理コンポーネントの間のデータフローの決定および/または調整のための制御フロー接続も有し得る。本出願全体を通じて説明されるデータ処理グラフにおいて、データ処理コンポーネントはプログラム部分であることができ、それらのリンクまたはデータフロー接続に従って相互に関連し合う、または相互に依存し合うことができる。データ処理コンポーネントは、実行されるためにコンピューティングリソースを別個に許可され得る。コンピュータプログラムの他の例では、プログラム部分は、実行されるためにコンピューティングリソースを別個に許可されるコンピュータプログラム内のサブモジュールまたは他のデータ処理エンティティである。本出願全体を通じて説明するとき、データ処理コンポーネントなどのプログラム部分は、データ処理グラフなどの、それらが属するコンピュータプログラム全体が実行される能力が、個々のプログラム部分が実行される能力に依存する範囲で、「相互に関連し合う、または相互に依存し合う」と考えられる。一例では、プログラム部分のうちの1つが実行することができない場合には、それらが属するコンピュータプログラム全体が実行することができない。このような相互に関連し合う、または相互に依存し合うプログラム部分はまた、実行のために互いに依存し得る。例えば、1つのプログラム部分は別のプログラム部分からデータを受信し、そこへデータを提供し得る。また、データ処理コンポーネントなどのプログラム部分が計算システムのコンピューティングリソースを別個に許可されるが、それらは、一部共通するか、相互に関連し合うか、または様々な他の仕方で相互に依存し合ってもよい(例えば、限られた供給量のコンピューティングリソースを競合する)。本出願全体を通じて使用するとき、用語「プログラム部分」(または「データ処理コンポーネント」)は、1個のソフトウェアコード(「プログラミングコード」とも呼ばれる)であり得、コンピュータプログラム(またはデータフローグラフ)はそのプログラム部分(またはデータ処理コンポーネント)によって形成され得る。
図2Aを参照すると、図1と関連して上述された計算システム100/データ処理システム100のより具体的な表現は、実行環境104、データソース102、および実行環境104の計算リソースを用いてデータソース102からのデータを処理するためのコンピュータプログラムもしくはデータ処理グラフ224を含む。
実行環境104は、リソース要求モジュール122、リソースマネージャ120、および実行モジュール112を含む。特徴の中でもとりわけ、実行モジュール112は、複数のホスト(例えば、サーバなどの計算クラスタ)にわたって分散し、および/または複数のホストに割り振られ得る計算リソースを含む。図2Aでは、3つのホスト、第1のホストH1 236、第2のホストH2 238、および第3のホストH3 240が存在する。各ホストは、総合すれば実行モジュール112の総計算リソースを含む有限の量または数の計算リソースを含む。リソースマネージャ120によって管理され、割り振られる計算リソースの例は、ホストのプロセッサの使用占有率(例えば、1つ以上のマルチコアプロセッサの物理コアに対応する仮想コアとして指定される)、ホストの揮発性メモリの部分(例えば、ホストの主メモリ空間の指定された量)、ホストの不揮発性メモリの部分(例えば、ホストのハードディスクドライブ記憶空間の量として指定される)、または通信チャネルの使用占有率(例えば、ホストのEthernetインターフェースの帯域幅の割合)のうちの任意のものを含み得る。計算リソースの単一のユニット237は、指定数のCPUまたは仮想コア、ならびに指定量の主/一次メモリ、または指定数の(仮想)主/一次メモリ部分などの、複数の種類の計算リソースのうちの1つ以上を含み得る。CPUはプロセッサであり得る。
図2Aでは、本明細書に記載される計算リソース割り振りアプローチの説明を簡単にするために、ホストの計算リソースの全部が、全て同じ細分性(すなわち、許可され得る最も小さいサイズ)を有するように示される、1つ以上の計算リソースユニット237(図2Aにおけるホスト内の正方形として示される)によって形成されている。しかし、計算リソースは必ずしも、固定された等しい細分性を有するユニット237にセグメント化されるとは限らず、その代わりに、様々な細分性のユニットにセグメント化されるか、または他の代替的なアプローチを用いて分割することができることに留意されたい。さらに、本明細書に記載される計算リソース割り振りアプローチの説明を簡単にするために、図2Aの実行モジュール112内のホストは全て、同じ数(すなわち、16個)の計算リソースユニット237を有するように示されている。しかし、一般的に、異なるホストは、例えば、異なる数の計算リソースユニット237を有することによって、異なる量の計算リソースを有し得ることに留意されたい。
リソースマネージャ120は計算リソースの要求を受信し、実行モジュール112のホスト236、238、240内の利用可能な計算リソースの量に基づいて要求を許可または拒否する。このようなリソースマネージャ120の一例としては、コンピュータプログラム(またはプログラム部分)を実行するための計算リソースの要求を受信する能力を有し、十分な計算リソースが利用可能である場合には、計算リソースの何らかの数のユニットを有する「コンテナ」、例えば、プログラム部分のインスタンスごとに1つのコンテナをコンピュータプログラムによる使用のために許可する、「Hadoop YARN」リソースマネージャが挙げられる。コンテナは、特定の量の計算リソースを包含するか、または特定の量の計算リソースを特定する任意の情報を包含するか、あるいはこれらの任意の組み合わせのための任意の好適なデータ構造として実現することができる。このとき、コンピュータプログラムは、許可されたコンテナ内の計算リソースを用いて実行し得る。実施例によっては、コンピュータプログラムは、計算リソースの複数のコンテナ(例えば、プログラムの一部分の並行インスタンス239を動作させるため、またはプログラムの複数の部分を動作させるための多数のコンテナ)をリソースマネージャ120から一度に要求することができる。リソースマネージャ120が、要求された複数のコンテナの全てをコンピュータプログラムに許可するために十分なリソースが利用可能である場合には、リソースマネージャ120はこれを行うことになる。さもなければ、利用可能なリソースに基づき、リソースマネージャ120は、要求されたコンテナのうちの一部のみ(すなわち、要求されたコンテナの総数未満の整数個のコンテナ)を許可し得るか、またはリソースマネージャ120は、要求されたコンテナを全く許可し得ない。実装形態によっては、所与のコンテナに関連付けられた計算リソースの全てが単一のホストから得られる。代替的に、他の実装形態では、所与のコンテナのリソースは複数のホストから得られ得る。
以下においてより詳細に説明されるように、リソース要求モジュール122は、データ処理グラフ224などの、コンピュータプログラムによって課された制約が満足されること、および/またはより釣り合いのとれた様態で満足されることを確実にする仕方でリソースマネージャ120と対話する。
データ処理グラフ224は、データソース102から受信されたデータを処理するためのコンピュータプログラムの一仕様または一例である。図2Bは、第1のデータ処理コンポーネントC1 226、第2のデータ処理コンポーネントC2 228、第3のデータ処理コンポーネントC3 230、第4のデータ処理コンポーネントC4 232、および第5のデータ処理コンポーネントC5 234を含む多数の(例えば、相互に関連し合う、または相互に依存し合う)データ処理コンポーネントを含む、データ処理グラフ224のグラフベースの仕様の一例225を示す。
概して、本出願全体を通じて説明されるデータ処理グラフの各データ処理コンポーネントは1つ以上の制約に関連付けられ得る。このような制約は、データ処理コンポーネントのインスタンス239の並列化に関連する制約を指定する「レイアウト」であり得る。レイアウトにおいて指定される制約の1つは、静的(S)レイアウト型、固定深さ動的レイアウト(FDL)型、および可変深さ動的レイアウト(VDL)型を含む多数の値のうちの1つを取ることができる「レイアウト型」であり得る。異なるレイアウト型などの、1つ以上の制約は、データ処理コンポーネントの実行の間に並列に実行可能である、または実行されるべきデータ処理コンポーネントのコンポーネントインスタンスの目標数、および/またはそれらの実行場所を指定し得る。データ処理コンポーネントごとに、コンポーネントインスタンスの目標数は、データ処理コンポーネントによって処理されるべきデータ要素の関連付けられた数に基づいて決定され得る。
それはまた、レイアウトなどのこれらの制約が、目標数のコンポーネントインスタンスが実行されるべきである時に並列に消費されることが要求される計算リソースの目標量(例えば、仮想コア、または一次メモリの量)を直接決定することも意味する。換言すれば、これらのコンポーネントインスタンスの各々が計算リソースを消費することになり、これにより、特定のレイアウトを有するデータ処理コンポーネントのために必要とされる計算リソースの目標量は、そのコンポーネントのためのコンポーネントインスタンスの対応する目標数によって直接決定されるか、またはそれと相関する。本出願全体を通じて使用するとき、特定のデータ処理コンポーネントなどの特定のプログラム部分のための用語「計算リソースの目標量」は、プログラム部分のインスタンスの目標数と、プログラム部分のインスタンスの各々によって必要とされる計算リソースの量との積に等しくなり得る。
ごく一般的に言えば、本出願全体を通じて説明されるデータ処理コンポーネントのうちの1つが静的レイアウト型を有する場合には、このとき、このデータ処理コンポーネントは、データ処理グラフ224がうまく動作するよう(例えば、関連付けられたデータ処理タスクの全てを失敗なく実行するよう)実行モジュール112上で実行するために必要とされるコンポーネントインスタンス239の既定の固定目標数を有する。静的レイアウト型を有するデータ処理コンポーネントはまた、実行モジュール112の1つ以上のホスト236、238、240の既定のセット上でそのコンポーネントインスタンス239を実行することを必要とされる。
静的レイアウト型の潜在的利点は計算の局所性である。局所性とは、データ処理コンポーネントのための特定の計算リソース(例えば、インスタンスが実行することになるホストのコア)を他の計算リソース(例えば、インスタンスのためのデータが記憶されるホストのメモリ)と同じホスト上に位置付ける能力を指す。動的レイアウト型(FDLまたはVDL)は、インスタンスを、そのインスタンスによって操作されるべきデータを記憶するホストとは異なるホスト上で実行するように割り当てることができる。これは、柔軟性の増大をもたらし得るが、それは、局所性の低下をトレードオフすることによってのみもたらされる。しかし、局所性が特定の計算にとって重要でない場合には、このトレードオフは価値のあるものになり得る。
本出願全体を通じて説明されるデータ処理コンポーネントのうちの1つがFDL型を有する場合には、このとき、このデータ処理コンポーネントは、データ処理グラフ224がうまく動作するよう(例えば、関連付けられたデータ処理タスクの全てを失敗なく実行するよう)実行モジュール112上で実行するために必要とされるコンポーネントインスタンス239の既定の固定目標数を有する。FDL型を有するデータ処理コンポーネントのコンポーネントインスタンスがどこで(すなわち、実行モジュール112のどのホスト236、238、240上で)実行するのかに関する制限はない。
本出願全体を通じて説明されるデータ処理コンポーネントのうちの1つがVDL型を有する場合には、このとき、このデータ処理コンポーネントは、コンポーネントインスタンス239の動的に決定される目標数(実行時に決定され得る)を有し、データ処理グラフ224がうまく動作するために(例えば、関連付けられたデータ処理タスクの全てを失敗なく実行するために)、実行モジュール112上における少なくとも1つのコンポーネントインスタンスの実行が必要とされる。VDL型を有するデータ処理コンポーネントのコンポーネントインスタンスがどこで(すなわち、実行モジュール112のどのホスト236、238、240上で)実行するのかに関する制限はない。
動的レイアウト型(FDLまたはVDL)の潜在的利点は、たとえ、特定の(例えば、ローカルの)ホスト236、238、240上で利用可能な計算リソースが存在しない場合でも、クラスタ内のいずれかのホスト236、238、240上で利用可能な計算リソースが存在する限り、計算が開始可能であるという柔軟性である。別の潜在的利点は、1つ以上のホスト236、238、240の障害のために計算が失敗した場合には、ホスト236、238、240の異なるセット上で計算が再開可能であることである。
FDL型を上回るVDL型の潜在的利点は、たとえ、所望どおりの大きさの量の計算リソースが存在しない場合でも、計算が依然として開始可能であることである。VDL型を上回るFDL型の潜在的利点は、より高い並列度の要求が充足されるのを待つことによって生じるであろう起動時間遅延を抑制するために、並列度(すなわち、コンポーネントインスタンスの数)を固定する能力である。
図2Aおよび図2Bの例示的なデータ処理グラフ224、225では、例示的な第1のコンポーネント226は静的レイアウト型を有し、(同じ、または異なる計算リソースユニット237内で実行される)2つのコンポーネントインスタンス239を実行モジュール112の第1のホスト236上で実行することを必要とされる。第2のコンポーネント228は模範的にFDL型を有し、コンポーネントインスタンスがどこで(すなわち、実行モジュール112のどのホスト236、238、240上で)動作させられるのかに関して制限なく、3つのコンポーネントインスタンス239を実行モジュール112上で動作させることを必要とされる。第3のコンポーネント230、第4のコンポーネント232、および第5のコンポーネント234は模範的に全てVDL型を有し、したがって、データ処理グラフが実行するために単一のコンポーネントインスタンスを実行モジュール112上で実行することを必要とされるのみであるが、十分な計算リソースが実行モジュール112上で利用可能である場合には、追加のコンポーネントインスタンスが実行され得る。第3のコンポーネント230、第4のコンポーネント232、および第5のコンポーネント234のコンポーネントインスタンスがどこで(すなわち、実行モジュール112のどのホスト236、238、240上で)実行するのかに関する制限はない。
データ処理グラフ224、225内のデータ処理コンポーネント226、228、230、232、234の各々は、データソース102内のデータセットからのデータ要素(例えば、ブロック、ファイル、またはレコード)などの、データソース102からのデータを処理するように構成されている。実施例によっては、ブロックは、1つ以上のレコードを含むファイル内のデータの部分である。図2Aでは、第1のコンポーネント226は第1のデータセット242からの第1のデータ要素252を処理し、第2のコンポーネントC2 228は第2のデータセット244からの第2のデータ要素254を処理し、第3のコンポーネントC3 230は第3のデータセット246からの第3のデータ要素256を処理し、第4のコンポーネントC4 232は第4のデータセット248からの第4のデータ要素258を処理し、第5のコンポーネントC5 234は第5のデータセット250からの第5のデータ要素260を処理する。後述される一実施例では、システム100の一部分(例えば、リソース要求モジュール122)が、各コンポーネントに関連付けられたデータセットを分析し、データ要素の数に基づき、異なるコンポーネントのためのインスタンスの目標数、ひいては計算リソースの目標量を決定する。しかし、他の実施例では、計算リソースの目標量は、関連付けられたデータセット内のデータの量に基づくのみでなく、その代わりに(またはさらに)、明示的もしくは暗黙的なユーザの要請、履歴的な、もしくは推定された性能データ、またはこれらの組み合わせなどの、他の因子にも依存し得る。各データ処理コンポーネント226、228、230、232、234が異なるデータセットに関連付けられるという要件はないことに留意されたい。例えば、複数のデータ処理コンポーネント226、228、230、232、234が全て、同じデータセットのうちの1つ以上からのデータを処理してもよい。
換言すれば、ならびに図1および図2Aに関連して上述された計算システム100を総括すれば、計算システム100は、データの1つ以上のソースを含むデータソース102と、実行モジュール112、リソースマネージャ120、およびリソース要求モジュール122を含む実行環境104であって、実行環境104は1つ以上のコンピュータ上でホストされ、実行モジュール112は、リソースマネージャ120によって1つ以上のコンピュータプログラム114に割り振られた実行環境104の計算リソースを用いて、1つ以上のデータ処理グラフ224などの、1つ以上のコンピュータプログラム114に従ってデータソース102からのデータを処理し、出力データを生成するように構成されており、コンピュータプログラム114は、データソース102から複数のプログラム部分を通って流れるデータに対して遂行されるデータ処理タスクを実施し、出力データを生成する、データ処理グラフ224の複数の(例えば、相互に関連し合う、もしくは相互に依存し合う)データ処理コンポーネント226、228、230、232、234などの、複数の(例えば、相互に関連し合う、もしくは相互に依存し合う)プログラム部分を含む、実行環境104と、実行環境104がアクセス可能であるデータ記憶116であって、コンピュータプログラム114およびその複数のプログラム部分は、データ記憶116内に記憶されたプログラミングコードおよび/またはデータ構造によって指定される、データ記憶116と、を備え、複数のプログラム部分は、プログラム部分の間の、リンク226a、228a、228b、230a、232aなどの、データフローのための1つ以上のデータフロー接続によって接続され、データフロー接続はプログラミングコードおよび/またはデータ構造によって指定され、実行モジュール112は、記憶されたプログラミングコードおよび/またはデータ構造を読み込むように構成されており、リソースマネージャ120は、リソース要求モジュール122からの計算リソースの要求を受信し、実行環境104内で利用可能な計算リソースの量に基づき、受信された要求を許可または拒否するように構成されており、任意選択的に、リソースマネージャ120は、実行モジュール112による1つ以上のコンピュータプログラム114の実行をスケジュールし、監視するようにさらに構成されており、リソースマネージャ120は、要求され、許可された要求に関連付けられた、実行環境の計算リソースを複数のプログラム部分に割り振るようにさらに構成されており、リソース要求モジュール122およびリソースマネージャ120は、本出願に記載の方法のうちのいずれか1つが実行されるよう、例えば、複数のプログラム部分の各プログラム部分が、データソース102からのデータの一部分に対して実行の失敗なく実行され、出力データを生成する、プログラム部分のインスタンスを有するよう、複数のプログラム部分によって実装される全てのデータ処理タスクが、データソース102からのデータに対して実行の失敗なく実行され、出力データを生成されるよう、またはコンピュータプログラムによって処理されるべきデータソース102からの所与の量のデータが、コンピュータプログラムによって(例えば、実行の失敗なく)完全に処理され、出力データを生成されるよう、互いに対話するように構成されている。
本出願全体を通じて本明細書において使用するとき、データ処理コンポーネントの「コンポーネントインスタンス」、またはより一般的には、プログラム部分の「インスタンス」は、一次メモリの一部分内にあるなど、計算リソースを現在消費している、データ処理コンポーネントまたはプログラム部分の実行可能なコピーである。
1 リソース割り振り
データ処理グラフ224内のコンポーネントに関連付けられたレイアウト制約を考慮すると、第1のデータ処理コンポーネント226の2つのコンポーネントインスタンスが実行モジュール112の第1のホスト236上で実行され、第2のデータ処理コンポーネント228の3つのコンポーネントインスタンスが実行モジュール112上で実行され、第3のデータ処理コンポーネント230、第4のデータ処理コンポーネント232、および第5のデータ処理コンポーネント234の各々の少なくとも1つのコンポーネントインスタンスが実行モジュール112上で実行された場合にのみ、例示的なデータ処理グラフ224はうまく動作するか、または少しでも動作することができる。データ処理グラフの動作の成功は、全てのコンポーネントインスタンスが、データソース102からのデータに対して実行の失敗なく実行され、出力データを生成することで特徴付けることができる。
リソース要求モジュール122が、データ処理グラフ224のデータ処理コンポーネントの総数のコンポーネントインスタンスによって必要とされる計算リソース、および実行モジュール112内で利用可能な計算リソースの知識を有する場合には、このとき、リソースマネージャ120を介してデータ処理グラフ224のための計算リソースを割り振るタスクは、パッキング最適化問題に対する解を用いて遂行することができるであろう。
しかし、一般的には、リソース要求モジュール122が、実行モジュール112内で利用可能な計算リソースの知識を有するとは限らない。その代わりに、リソース要求モジュール122はリソースマネージャ120から計算リソースを要求し、要求された計算リソースが許可されるかどうか分かるのを待つ。実行モジュール112内で利用可能な計算リソースの知識がないため、リソース要求モジュール122がデータ処理グラフ224の特定のVDL型データ処理コンポーネントのリソース要件を過剰に割り振り、そうすることで、任意の計算リソースがデータ処理グラフ224の他のVDL型データ処理コンポーネントに割り振られる前に、実行モジュール112内で利用可能な計算リソースを使い果たすか(すなわち、枯渇)、または過少に割り振られたデータ処理コンポーネントによるボトルネックを生み出すことによって、過剰に割り振られたデータ処理コンポーネントの計算リソースを無駄にすることになる(すなわち、釣り合いを欠いた実行)可能性がある。
1.1 計算リソースの枯渇
例えば、計算リソースをデータ処理グラフ224のために割り振ることへの1つのアプローチでは、リソース要求モジュール122はまず、第1の静的レイアウト型コンポーネント226および第2のFDL型コンポーネント228のために必要とされるコンピューティングリソースを要求する。本例では、リソースマネージャ120は、第1のコンポーネント226および第2のコンポーネント228のために必要とされる計算リソースを割り振ることができる。
次に、リソース要求モジュール122は、(第3のコンポーネント230の必要とされる単一のインスタンスを実行モジュール112上で実行するのに足る計算リソースのみを要求するのではなく)第3のVDL型コンポーネント230の目標数のインスタンス(4つのインスタンス)を実行モジュール112上で実行するための計算リソースを要求する。リソースマネージャ120は、要求された計算リソースを第3のコンポーネント230の4つのインスタンスのために割り振ることができる。次に、リソース要求モジュール122は、第4のコンポーネント232の単一のインスタンスを実行するために必要とされる計算リソース要求する。本例では、リソースマネージャ120は、第4のコンポーネント232の単一のインスタンスを実行モジュール112上で実行するために必要とされる計算リソースを割り振るためのリソースが十分にないことを指示する。
上述の例では、目標計算リソースを第3のコンポーネント230のために過剰に割り振ることによって、リソース要求モジュール122は、データ処理グラフ224の第4のコンポーネント232および第5のコンポーネント234の任意の計算リソースを本質的に枯渇させている。その結果、第4のコンポーネント232および第5のコンポーネント234は、単一のコンポーネントインスタンスさえも実行モジュール112上で実行することができない。データ処理グラフ224は、うまく動作するために、計算システム112上におけるデータ処理グラフ224のVDL型コンポーネントの全ての少なくとも1つのインスタンスの実行を必要とするため、データ処理グラフはうまく動作することができない。それに対して、仮に第3のコンポーネント230が単一のインスタンスのための計算リソースのみを割り振られていれば、第4のコンポーネント232および第5のコンポーネント234の各々の単一のインスタンスのために十分なものが存在したであろう。この意味で、第3のコンポーネント230は計算リソースを過剰に割り振られていた。
1.2 計算リソース要求アルゴリズム
図3を参照すると、リソース要求アルゴリズムが、リソース要求モジュール122によるなど、計算システム100によって実装されており、以下において、コンピュータプログラムの一例としてデータ処理グラフのために、およびプログラム部分の例としてデータ処理コンポーネントのために説明される。アルゴリズムはデータ処理コンポーネントの上述の枯渇を回避し、計算リソースを釣り合いのとれた様態でVDL型コンポーネントに公平且つ適切に割り振る。アルゴリズムは、データ処理グラフ224のデータ処理コンポーネント362およびデータソース102からのデータセット364を入力として受け入れ、入力を処理し、計算リソースをVDL型コンポーネント230、232、234に公平且つ適切に割り振り、VDL型コンポーネント230、232、234の計算リソースを枯渇させることを回避することを含む、データセット364からのデータの処理のために、計算リソースをデータ処理コンポーネント362に割り振る。第1ステップ370に先立つ1つ以上の前処理ステップがアルゴリズム内に任意選択的に含まれてもよく、(例えば、データ処理コンポーネントの各々に関連付けられたメタデータに基づき)データ処理グラフ224の受け入れられたデータ処理コンポーネント362内の任意の静的、FDLおよびVDLデータ処理コンポーネントを特定することを含み得る。
第1ステップ370において、データ処理コンポーネント362の各々を分析し、データ処理コンポーネントのコンポーネントインスタンスを実行モジュール112上で実行するために必要とされる計算リソース372の量を決定する。すなわち、データ処理コンポーネント362の各々を分析し、データ処理コンポーネントの1つのコンポーネントインスタンス239の(全)実行のために、プログラミングコードによって必要とされる計算リソース372の量、および/またはデータ処理コンポーネントを規定するデータ構造を決定する。静的レイアウト型データ処理コンポーネントごと、およびFDL型データ処理コンポーネントごとに、データ処理コンポーネントの実行の間に実行されるべき、または実行可能な、コンポーネントインスタンスの目標数を決定することができ、これにより、これらのデータ処理コンポーネントの各々の実行のために必要とされる計算リソースの目標量が得られる。第2ステップ366において、VDL型データ処理コンポーネント(例えば、図2A、図2Bにおけるデータ処理コンポーネント230、232、234)ごとに、データ処理コンポーネントに関連付けられた、またはそれによって処理されるべき、データセットのデータの量またはデータ項目の数を用いて、データ処理コンポーネントに関連付けられた、またはそれによって必要とされる、コンポーネントインスタンス239、368(時としてと「プライ(ply)」呼ばれる)の目標数を決定し、データ処理コンポーネントの実行の間に実行されるべき、または実行可能であるコンポーネントインスタンスの目標数を決定することができ、これにより、これらのデータ処理コンポーネントの各々の実行のために必要とされる計算リソースの目標量が得られる。実施例によっては、インスタンス368の目標数は、コンポーネントに関連付けられたデータセットのデータ項目の数と同じである。
第3ステップ374において、データ処理コンポーネント362の中の各静的レイアウト型コンポーネント226の必要とされるコンポーネントインスタンスごとに、リソース要求モジュール122は、リソースマネージャ120からコンポーネントインスタンスのために必要とされるホストH1〜H3からの必要とされる計算リソースを含む「コンテナ」を要求する。要求が成功するか、または充足された場合には、リソースマネージャ120は、必要とされる計算リソースを含むコンテナをもって要求の各々に応答する。第4ステップ376において、第3ステップ374においてリソースマネージャ120に送信された要求のうちのいずれかが充足されない場合には(例えば、リソースマネージャ120が所定の期間以内に応答しない場合には)、データ処理グラフ224を実行するために実行モジュール112内で利用可能なリソースが十分に存在しないため、アルゴリズムは中止する。すなわち、要求のうちのいずれかが充足されない場合には、このとき、データ処理グラフは動作することができない。第3ステップ374においてリソースマネージャ120に送信された要求の全てが充足された場合には、アルゴリズムは第5ステップ378へ進む。
第5ステップ378において、データ処理コンポーネント362の中の各FDL型コンポーネント228の必要とされるコンポーネントインスタンスごとに、リソース要求モジュール122は、リソースマネージャ120からコンポーネントインスタンスのために必要とされる計算リソースを含むコンテナを要求する。上記のように、FDL型コンポーネントは、実行モジュール112のホストのうちの任意のものからの計算リソースを用いて実行することができる。第6ステップ380において、第5ステップ378においてリソースマネージャ120に送信された要求のうちのいずれかが充足されない場合には、データ処理グラフ224を実行するために実行モジュール112内で利用可能な計算リソースが十分に存在しないため、アルゴリズムは中止する。すなわち、要求のうちのいずれかが充足されない場合には、このとき、データ処理グラフは動作することができない。第5ステップ378においてリソースマネージャ120に送信された要求の全てが充足された場合には、アルゴリズムは第7ステップ382へ進む。
第7ステップ382において、データ処理コンポーネント362の中のVDL型コンポーネント230、232、234ごとに、リソース要求モジュール122は、リソースマネージャ120からコンポーネントの単一のコンポーネントインスタンスのために必要とされる計算リソースを含むコンテナを要求する。第8ステップ384において、第7ステップ382においてリソースマネージャ120に送信された要求のうちのいずれかが充足されない場合には、データ処理グラフ224を実行するために実行モジュール112内で利用可能な計算リソースが十分に存在しないため、アルゴリズムは中止する。第7ステップ382においてリソースマネージャ120に送信された要求の全てが充足された場合には、データ処理グラフ224が実行することができることを確実にするために十分な計算リソースが割り振られる。具体的には、第7ステップ382がうまく完了すると、アルゴリズムは、あらゆる静的レイアウト型コンポーネントおよびあらゆるFDL型コンポーネントのために必要とされる計算リソースが割り振られ、少なくともいくつかの計算リソースがVDL型コンポーネントの各々に割り振られることを確実にした。次に、アルゴリズムは第9ステップ386へ進む。
第9ステップ386において、データ処理コンポーネント362の中のVDL型コンポーネント230、232、234の全てをそれらの充足率に従ってランク付ける。ここで、用語「充足率」は、それぞれのコンポーネントに割り振られた計算リソースのそれぞれのコンポーネントの目標量の割合である。具体的には、充足率は、以前に要求された(および許可されたと仮定された)計算リソースの量「#許可」を計算リソースのその関連目標量「#目標」で除したものである。例えば、VDL型コンポーネントが、それ自体では10個のコンポーネントインスタンスを動作させるよう設定された目標を有し、2つのコンポーネントインスタンスが以前に要求された(および許可された)場合には、そのコンポーネントは20パーセント充足されている、すなわち、20パーセントの充足率を有する。本例では、特定のコンポーネントの各インスタンスは、(コンテナの数として指定された)同じ量の計算リソースを必要とすると想定されているが、他の例では、同じコンポーネントの異なるインスタンスは異なる量の計算リソースを必要とし得ることに留意されたい。このとき、許可されたコンテナの数が、実行時に実行することができるコンポーネントインスタンスの数を決定する。
VDL型コンポーネントがそれらの充足率に従ってランク付けられると、最小充足VDL型コンポーネント(コンポーネントAと呼ばれる)および2番目の最小充足コンポーネント(コンポーネントBと呼ばれる)が特定される。最小充足コンポーネントの特定における同順位については、以下のことを最小充足コンポーネントの各々のために遂行することができる。2番目の最小充足コンポーネントの特定における同順位は、その充足率のみが用いられることになるため、問題とならない。最小充足コンポーネントのために、リソース要求モジュール122は、許可された場合には、その「部分要求」の結果、最小充足コンポーネントが第2の最小充足コンポーネントよりも充足されるであろう、最小充足コンポーネントのための数N個のコンテナのために、1つ以上のコンテナを要求する。実施例によっては、Nは次式に従って決定される:
全てのコンポーネントが完全に充足されたために(すなわち、1の充足率)、同順位が生じた場合には、このとき、アルゴリズムは完了する。
第10ステップ388において、第9ステップ386においてリソースマネージャ120によって要求されたコンテナのうちのいずれかが充足されない場合には、アルゴリズムは完了する。第9ステップ386においてリソースマネージャ120によって要求されたコンテナの全てが充足された場合には、アルゴリズムは第9ステップ386へループして戻る。データ処理コンポーネント362の全てが完全に充足される、すなわち、100%の充足率を有するか、またはVDL型コンポーネントのうちのいずれかのためのコンテナの要求が充足されなくなるまで、第9ステップ386および第10ステップ388は繰り返し動作する。
他の例示的な実装形態では、リソース要求アルゴリズムのステップのうちのいくつかを異なる順序で遂行することができるか、またはいくつかのステップを無くすことができる。例えば、ステップ374、378、および382の要求は、異なる順序で遂行するか、または単一の要求に組み合わせることができる。
例示的な実装形態によっては、上述のアルゴリズムは、要求のうちのいずれかがリソースマネージャ120に送信される前に、コンテナの要求の全てを定式化する。定式化されると、要求の全ては、例えば全て一度に、まとめて送信され、リソースマネージャ120によって、上述のアルゴリズムを用いて要求が送信されたであろう順序に従って順番に処理される。例えば、要求は、優先順位に関連付けられるか、または、優先順位を指定する優先順位タグ(例えば、第1次優先順位、第2次優先順位および第3次優先順位などを指定するメタデータ)を含み得、これにより、要求は、リソースマネージャ120によって、優先順位によって与えられた順序で許可のために評価されることになる。換言すれば、優先順位は、要求がリソースマネージャ120による許可のために評価されるべき順序を規定する、リソースマネージャ120によってアクセスされ、用いられるべき、評価制約を規定することができ、評価制約に従って、要求は、要求のうちの、より高い優先順位を有し、および/または以前に提出された1つ以上の要求が計算リソースマネージャによって全て許可された場合にのみ、リソースマネージャ120による許可のために評価されるようになる。例えば、リソースマネージャ120は、受信された全ての要求に含まれる優先順位タグに最初にアクセスし得る。次に、リソースマネージャ120は、優先順位タグによって与えられた優先順位に従ってこれらの要求の順序を特定し得る。次に、リソースマネージャ120は、特定された順序に従って1要求ずつ、現在考慮されている要求のために、より高い優先順位を有し、および/または以前に提出された要求(存在する場合)がリソースマネージャ120によって許可されたかどうかを判定し、そうである場合にのみ(さもなければ、現在考慮されている要求は計算リソースの許可のために評価さえされない)、計算リソースが、順序内の現在考慮されている要求に関連付けられたプログラム部分への割り振りのために依然として利用可能であるかどうかを評価する。このような計算リソースが依然として利用可能である場合には、このとき、この現在考慮されている要求は許可される。しかし、現在考慮されている要求に対して、順序内の現在考慮されている要求に関連付けられたプログラム部分への割り振りのために十分な計算リソースが利用可能でないと評価された場合には、このとき、現在考慮されている要求は許可されない(すなわち、拒否される)。各プログラム部分は、計算リソースマネージャモジュールによってそれぞれのプログラム部分に割り振られたか、または割り振られたとこれまで見なされる、それぞれのプログラム部分の、計算リソースの決定された目標量の度合いである、現在の充足率に関連付けられ得る。充足率は、追加の計算リソースが(例えば、リソースマネージャ120による関連要求の許可によって)それぞれのプログラム部分に割り振られたか、または割り振られたと見なされるたびに、更新され得る。
1.3 実施例
図4〜図14を参照すると、図3のアルゴリズムがデータ処理グラフ224の実行に備えて図1または図2のシステム100に適用される。図4を参照すると、アルゴリズムの第1ステップ370において、リソース要求モジュール122はデータ処理グラフ224のデータ処理コンポーネントを分析し、データ処理コンポーネントの各々のための計算リソース要件を決定する。第1ステップ370の結果、リソース要求モジュール122は、第1のデータ処理コンポーネント226の各コンポーネントインスタンスは計算リソースの5つのユニット237を必要とし、第2のデータ処理コンポーネント228の各コンポーネントインスタンスは計算リソースの3つのユニット237を必要とし、第3のデータ処理コンポーネント230の各コンポーネントインスタンスは計算リソースの4つのユニットを必要とし、第4のデータ処理コンポーネント232の各コンポーネントインスタンスは計算リソースの5つのユニット237を必要とし、第5のデータ処理コンポーネント234の各コンポーネントインスタンスは計算リソースの2つのユニット237を必要とすると決定する。
図5を参照すると、アルゴリズムの第2ステップ366において、リソース要求モジュール122は、各VDL型コンポーネントに関連付けられたデータセット246、248、250を分析し、コンポーネントのためのインスタンスの目標数を決定する。実施例によっては、コンポーネントに関連付けられたデータセット内に含まれるデータ項目の数がコンポーネントのためのインスタンスの目標数を決定する。図5では、第3のコンポーネント230に関連付けられた第3のデータセット246は4つのデータ項目256を含む。したがって、リソース要求モジュール122は、第3のコンポーネント230のためのコンポーネントインスタンスの目標数は4に等しいと決定する。第4のコンポーネント232に関連付けられた第4のデータセット248は2つのデータ項目258を含む。したがって、リソース要求モジュール122は、第4のコンポーネント232のためのコンポーネントインスタンスの目標数は2に等しいと決定する。第4のコンポーネント234に関連付けられた第5のデータセット250は10個のデータ項目260を含む。したがって、リソース要求モジュール122は、第5のコンポーネント234のためのコンポーネントインスタンスの目標数は10に等しいと決定する。
図6を参照すると、アルゴリズムの第3ステップ374において、リソース要求モジュール122はリソースマネージャ120と対話し、第1の静的レイアウト型コンポーネント226のための計算リソースを割り振る。これを行うために、リソース要求モジュール122は、5つの計算リソースユニット237のサイズを各々有する、第1のホスト236からの2つのコンテナ(すなわち、コンポーネントの必要とされるコンポーネントインスタンスごとに1つ)の要求690をリソースマネージャ120へ送信する。図6では、リソースマネージャ120は第1のホスト236上の10個の計算リソースユニット237を割り振り、リソースマネージャ120が、要求された計算リソースを割り振ることができ、したがって、要求690が充足されたことを指示するメッセージ692をもって応答する。5つの計算リソースユニットを各々含む2つのコンテナが第1のコンポーネント226のために割り振られたことにより、第1のコンポーネント226は、データ処理グラフ224が実行するために必要とされるとおりに、100%充足される。アルゴリズムの第4ステップ376は、要求690が充足されたと決定し、したがって、アルゴリズムをアルゴリズムの第5ステップ378へ進ませる。
図7を参照すると、アルゴリズムの第5ステップ378において、リソース要求モジュール122はリソースマネージャ120と対話し、第2のFDL型コンポーネント228のための計算リソースを割り振る。これを行うために、リソース要求モジュール122は、3つの計算リソースユニットのサイズを各々有する、ホスト236、238、240のうちの任意のものからの3つのコンテナ(すなわち、コンポーネントの必要とされるコンポーネントインスタンスごとに1つ)の要求790をリソースマネージャ120へ送信する。図7では、リソースマネージャ120は、第1のホスト236上の3つの計算リソースユニット237、第2のホスト238上の3つの計算リソースユニット、および第3のホスト240上の3つの計算リソースユニットを割り振る。次に、リソースマネージャ120は、リソースマネージャ120が、要求された計算リソースを割り振ることができ、したがって、要求790が充足されたことを指示するメッセージ792をもって応答する。3つの計算リソースユニット237を各々含む3つのコンテナが第2のコンポーネント228のために割り振られたことにより、第2のコンポーネント228は、データ処理グラフ224が実行するために必要とされるとおりに、100%充足される。アルゴリズムの第6ステップ380は、要求790が充足されたと決定し、したがって、アルゴリズムをアルゴリズムの第7ステップ382へ進ませる。
図8〜図10を参照すると、アルゴリズムの第7ステップ382において、リソース要求モジュール122はリソースマネージャ120と対話し、第3のVDL型コンポーネント230、第4のVDL型コンポーネント232、および第5のVDL型コンポーネント234の各々の単一のコンポーネントインスタンスのためのリソースを割り振る。
図8では、リソース要求モジュール122は、4つの計算リソースユニット237のサイズを有する単一のコンテナの要求890をリソースマネージャ120へ送信することによって、第3のVDL型コンポーネント230の単一のコンポーネントインスタンスのための計算リソースの割り振りを要求する。リソースマネージャ120は第3のホスト240上の4つの計算リソースユニット237を割り振り、次に、リソースマネージャ120が、要求された計算リソースを割り振ることができ、したがって、要求890が充足されたことを指示するメッセージ892をもって応答する。(4つのコンテナの目標数のうち)4つの計算リソースユニットを含む1つのコンテナが第3のコンポーネント230のために割り振られたことにより、第3のコンポーネント230は25%充足される。
図9では、リソース要求モジュール122は、5つの計算リソースユニット237のサイズを有する単一のコンテナの要求990をリソースマネージャ120へ送信することによって、第4のVDL型コンポーネント232の単一のコンポーネントインスタンスのための計算リソースの割り振りを要求する。リソースマネージャ120は第2のホスト238上の5つの計算リソースユニット237を割り振り、次に、リソースマネージャ120が、要求された計算リソースを割り振ることができ、したがって、要求990が充足されたことを指示するメッセージ992をもって応答する。(2つのコンテナの目標数のうち)5つの計算リソースユニットを含む1つのコンテナが第4のコンポーネント232のために割り振られたことにより、第4のコンポーネント232は50%充足される。
図10では、リソース要求モジュール122は、2つの計算リソースユニット237のサイズを有する単一のコンテナの要求1090をリソースマネージャ120へ送信することによって、第5のVDL型コンポーネント234の単一のコンポーネントインスタンスのための計算リソースの割り振りを要求する。リソースマネージャ120は第2のホスト238上の2個の計算リソースユニット227を割り振り、次に、リソースマネージャ120が、要求された計算リソースを割り振ることができ、したがって、要求1090が充足されたことを指示するメッセージ1092をもって応答する。(10個のコンテナの目標数のうち)2つの計算リソースユニットを含む1つのコンテナが第5のコンポーネント234のために割り振られたことにより、第5のコンポーネント234は10%充足される。
アルゴリズムの第8ステップ384は、計算リソースがVDL型コンポーネント230、232、234の各々の単一のコンポーネントインスタンスのためにうまく割り振られたと決定し、したがって、アルゴリズムをアルゴリズムの第9ステップ386へ進ませる。
第7ステップおよび第8ステップ382、384が完了すると、各データ処理コンポーネントが、データ処理グラフ224が実行モジュール104上で実行することができるよう実行され得る少なくとも1つのコンポーネントインスタンスを有することを確実にするために十分な計算リソースが、データ処理グラフ224のデータ処理コンポーネントに割り振られる。その後、アルゴリズムの第9および第10ステップ386、388を繰り返し動作させ、図11〜図14に示されるように、残りの計算リソースを第3、第4、および第5のコンポーネント230、232、234に公平且つ適切に分散させる。
図11を参照すると、アルゴリズムの第9ステップ386において、ソース要求モジュール122は、第5のコンポーネント234が(10%の充足率における)最小充足コンポーネントであり、第3のコンポーネント230が(25%の充足率における)2番目の最小充足コンポーネントであると決定する。次に、リソース要求モジュール122は、許可された場合には、第5のコンポーネント234が第3のコンポーネント230よりも充足される結果をもたらすであろう、第5のコンポーネント234のインスタンスの数Nを次式のとおりとすると決定する:
次に、リソース要求モジュール122は、2つの計算リソースユニットのサイズを各々有する、ホストのうちの任意のものからの2つのコンテナの要求1190をリソースマネージャ120へ送信する。図11では、リソースマネージャ120は、第2のホスト238上の2つの計算リソースユニット、および第3のホスト240上の2つの計算リソースユニットを割り振る。次に、リソースマネージャ120は、リソースマネージャ120が、要求された計算リソースを割り振ることができ、したがって、要求1190が充足されたことを指示するメッセージ1192をもって応答する。2つの計算リソースユニットを各々含む3つのコンテナが第5のコンポーネント234のために割り振られたことにより、第5のコンポーネント234は30%充足される。第10ステップ388は、第9ステップ386においてリソースマネージャ120によって要求されたコンテナの全てが充足されたと決定し、したがって、アルゴリズムは第9ステップ386へループして戻る。
図12を参照すると、アルゴリズムの第9ステップ386の2回目の反復において、ソース要求モジュール122は、第3のコンポーネント230が(25%の充足率における)最小充足コンポーネントであり、第5のコンポーネント234が(30%の充足率における)2番目の最小充足コンポーネントであると決定する。次に、リソース要求モジュール122は、許可された場合には、第3のコンポーネント230が第5のコンポーネント234よりも充足される結果をもたらすであろう、第3のコンポーネント230のインスタンスの数Nを次式のとおりとすると決定する:
次に、リソース要求モジュール122は、4つの計算リソースユニットのサイズを有する、ホストのうちの任意のものからの1つのコンテナの要求1290をリソースマネージャ120へ送信する。図12では、リソースマネージャ120は第2のホスト238上の4つの計算リソースユニットを割り振る。次に、リソースマネージャ120は、リソースマネージャ120が、要求された計算リソースを割り振ることができ、したがって、要求1290が充足されたことを指示するメッセージ1292をもって応答する。4つの計算リソースユニットを含む単一のコンテナが第3のコンポーネント230のために割り振られたことにより、第3のコンポーネント230は50%充足される。第10ステップ388は、第9ステップ386においてリソースマネージャ120によって要求されたコンテナの全てが充足されたと決定し、したがって、アルゴリズムは第9ステップ386へループして戻る。
図13を参照すると、アルゴリズムの第9ステップ386の第3の反復において、ソース要求モジュール122は、第5のコンポーネント234が(30%の充足率における)最小充足コンポーネントであり、第3のコンポーネント230(または第4のコンポーネント232)が(50%の充足率における)2番目の最小充足コンポーネントであると決定する。次に、リソース要求モジュール122は、許可された場合には、第5のコンポーネント234が第3のコンポーネント230よりも充足される結果をもたらすであろう、第5のコンポーネント234のインスタンスの数Nを次式のとおりとすると決定する:
次に、リソース要求モジュール122は、各々のコンテナが2つの計算リソースユニットのサイズを有する、ホストのうちの任意のものからの3つのコンテナの要求1390をリソースマネージャ120へ送信する。図13では、リソースマネージャ120は、第1のホスト236上の2つの計算リソースユニット、および第3のホスト240上の4つの計算リソースユニットを割り振る。次に、リソースマネージャ120は、リソースマネージャ120が、要求された計算リソースを割り振ることができ、したがって、要求1390が充足されたことを指示するメッセージ1392をもって応答する。2つの計算リソースユニットを各々含む3つのコンテナが第5のコンポーネント234のために割り振られたことにより、第5のコンポーネント234は60%充足される。第10ステップ388は、第9ステップ386においてリソースマネージャ120によって要求されたコンテナの全てが充足されたと決定し、したがって、アルゴリズムは第9ステップ386へループして戻る。
図14を参照すると、アルゴリズムの第9ステップ386の4回目の反復において、ソース要求モジュール122は、第4のコンポーネント232が(50%の充足率における)最小充足コンポーネントであり、第3のコンポーネント230が(50%の充足率における)2番目の最小充足コンポーネントであると決定する。次に、リソース要求モジュール122は、許可された場合には、第4コンポーネント232が第3のコンポーネント230よりも充足される結果をもたらすであろう、第4のコンポーネント232のコンポーネントインスタンスの数Nを次式のとおりとすると決定する:
次に、リソース要求モジュール122は、5つの計算リソースユニット237のサイズを有する、ホスト236、238、240のうちの任意のものからの1つのコンテナの要求1490をリソースマネージャ120へ送信する。図14では、リソースマネージャ120はホストのうちのいずれの上の利用可能な計算リソースユニットの間でも5つの計算リソースユニット237を割り振ることができず、したがって、リソースマネージャ120が、要求された計算リソースを割り振ることができなかったことを指示するメッセージ1492をもって応答する。第10ステップ388は、第9ステップ386においてリソースマネージャ120によって要求されたコンテナの全てが充足されないと決定し、したがって、アルゴリズムは「終了し」、抜け出る。
実施例によっては、データ処理コンポーネントが異なる計算リソース要件を有し得るため、アルゴリズムは、リソース割り振りのための最初の要求失敗時に、抜け出ない、または完了しなくてもよく、その代わりに、データ処理コンポーネントのうちのいずれも追加の計算リソースを全く割り振ることができなくなるまで、他のVDL型コンポーネントのための追加のリソースを割り振ることを試みてもよいことに留意されたい。
実施例によっては、各データ処理コンポーネントは異なるレイアウトに関連付けられているが、他の実施例では、同じレイアウトを共有する複数の(またはさらに全ての)コンポーネントが存在してもよい。それらの後者の実施例では、複数のコンポーネントによって必要とされるリソースを合計し、共有するべき複数のコンポーネントのための得られた合計数のリソースを要求することによって、本明細書に記載されている同じ技法を用いることができる。
計算リソース割り振りのための様々な態様および実施形態が説明された。本発明はまた(代替的に)、図15にも示される、後述の番号付き条項1〜23によって記述され得る。
一般条項1によれば、記載されるのは、計算システム内で、複数のプログラム部分を有するコンピュータプログラムを実行するための計算リソースを割り振るための、コンピュータにより実施される方法(1000)であって、本方法は、
複数のプログラム部分のプログラム部分ごとに、コンピュータプログラムが動作するべく計算システムによって実行されるために必要とされるプログラム部分の1つ以上のインスタンスの目標数を決定すること(1001)と、
複数のプログラム部分のプログラム部分ごとに、プログラム部分を分析し、プログラム部分の必要とされる1つ以上のインスタンスを実行するために必要とされる計算リソースの目標量を決定すること(1002)であって、複数のプログラム部分のうちの少なくとも1つのプログラム部分は第1の型のものであり、複数のプログラム部分のうちの異なる少なくとも1つのプログラム部分は、第1の型とは異なる第2の型のものである、決定すること(1002)と、
複数のプログラム部分のプログラム部分ごとに、プログラム部分を、現在の、もしくは更新された充足率に関連付けること(1003)、および/または維持することであって、充足率は、計算リソースマネージャモジュールによってそれぞれのプログラム部分に割り振られたか、または割り振られたとこれまで見なされる、それぞれのプログラム部分の、計算リソースの決定された目標量の度合いであり、
複数のプログラム部分のうちのプログラム部分は、その関連充足率が複数のプログラム部分の全てのプログラム部分にわたって関連充足率の最小値に等しい場合には、最小充足セットのメンバである、関連付けること(1003)、および/または維持することと、
計算リソースの複数の要求を計算リソースマネージャモジュールへ提出すること(1004)であって、複数の要求は、
第1の型のプログラム部分ごとに、第1の型のプログラム部分のために決定された完全な目標量の計算リソースを求める、関連付けられた第1次優先順位を有する、第1の要求、ならびに
第2の型のプログラム部分ごとに、第2の型のプログラム部分のために決定された完全な決定された目標量未満の計算リソースを求める、ただし、少なくとも、第2の型のプログラム部分の必要とされるインスタンスのうちの単一のものに関連付けられた量の計算リソースを求める、関連付けられた第2次優先順位を有する、第2の要求、ならびに
1つ以上の第3の要求であって、第3の要求の各々は、関連付けられた第3次優先順位を有し、最小充足セットのメンバである第2の型の1つのプログラム部分のために提出され、各第3の要求は以下の量の計算リソースを求めるものであり、その量とは、この量の計算リソースが第2の型の1つのプログラム部分に割り振られたか、または割り振られたと見なされた後には、最小充足セット内のメンバである複数のプログラム部分の各プログラム部分が、第3の要求において要求されたこの量の計算リソースが割り振られたか、または割り振られたと見なされる前における、最小充足セット内のメンバである1つ以上のプログラム部分についての充足率よりも大きく、且つ依然として1よりも小さい充足率を有することになるというものである、1つ以上の第3の要求、
を含む、提出すること(1004)と、
利用可能な計算リソースに基づいて計算リソースマネージャモジュールによって許可された、複数の要求のうちのそれらの1つ以上の要求において要求されたとおりの複数のプログラム部分のうちのプログラム部分への計算リソースの割り振り、または見なされた割り振りの指示を受信すること(1005)であって、第1次優先順位、第2次優先順位、および第3次優先順位は評価制約を規定し、この評価制約に従って、(i)1つ以上の第1の要求、1つ以上の第2の要求、および1つ以上の第3の要求が、第2の要求の前に第1の要求、および第3の要求の前に第2の要求の順序で計算リソースマネージャモジュールによる許可のために評価され、(ii)第1、第2、および第3の要求は、複数の要求のうちの、より高い優先順位を有し、および/または以前に提出された1つ以上の要求が全て順番に計算リソースマネージャによって許可された場合にのみ、計算リソースマネージャモジュールによる許可のために評価されるようになる、受信すること(1005)と、
を含む方法である。
条項2では、条項1に係る方法は、データソース内に記憶された複数のデータセットの各データセット内のデータ要素またはデータ項目の数を決定することをさらに含み、複数のデータセットの各データセットは複数のプログラム部分のうちのプログラム部分に関連付けられる。
条項3では、条項2に係る方法は、複数のプログラム部分のプログラム部分ごとに、データ要素またはデータ項目の関連付けられた決定された数に基づいて、コンピュータプログラムが複数のデータセットを入力データとして用いて動作するべく、計算システムによって実行されるために必要とされるプログラム部分の1つ以上のインスタンスの目標数を決定することをさらに含む。
第1の型の少なくとも1つのプログラム部分が計算リソースの固定目標量に関連付けられ、第2の型の少なくとも1つのプログラム部分が、計算リソースの可変目標量、または動的に決定される目標量に関連付けられる、条項1〜3のうちのいずれか1つに係る条項4。
第1の型の少なくとも1つのプログラム部分がインスタンスの固定目標数に関連付けられ、第2の型の少なくとも1つのプログラム部分が、インスタンスの可変目標数、または動的に決定される目標数に関連付けられる、条項1〜4のうちのいずれか1つに係る条項5。
動的決定がコンピュータプログラムの実行時における決定である、条項4または条項5に係る条項6。
複数の要求内の少なくともいくつかの要求が、互いに異なるサイズの計算リソースの量に対応する、条項1〜クローズ6のうちのいずれか1つに係る条項7。
1つ以上の第3の要求が、第3の要求が許可された後には、最小充足セット内の各プログラム部分が、最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率より依然として小さい充足率を有することになるような量以下である量の計算リソースを各々要求する、条項1〜条項7のうちのいずれか1つに係る条項8。
1つ以上の第3の要求が、第3の要求が許可された後には、最小充足セット内の各プログラム部分が、最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率と少なくとも同じ大きさである充足率を有することになるような量以上である量の計算リソースを各々要求する、条項1〜条項8のうちのいずれか1つに係る条項9。
1つ以上の第3の要求が、第3の要求が許可された後には、最小充足セット内の各プログラム部分が、最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率と少なくとも同じ大きさである充足率を有することになるような量以上である量の計算リソースを各々要求する、条項1〜条項9のうちのいずれか1つに係る条項10。
本方法が、プログラム部分のうちのそれぞれのものに関連付けられた計算リソースの目標量を指定する情報を記憶することをさらに含み、各プログラム部分が、そのプログラム部分が計算システム内で実行されることを可能にする、計算リソースマネージャによって許可された、許可された計算リソースを用いる、条項1〜条項10のうちのいずれか1つに係る条項11。
複数のプログラム部分のうちのそれぞれのものに関連付けられた計算リソースの目標量を指定する情報を記憶することが、少なくとも1つのプログラム部分について、ユーザ入力に少なくとも部分的に基づいて、少なくとも1つのプログラム部分の、計算リソースの関連目標量を決定することを含む、条項11に係る条項12。
計算リソースが複数の計算ノードにわたって分散している、条項1〜条項12のうちのいずれか1つに係る条項13。
第1の型の1つ以上のプログラム部分のうちの少なくともいくつかが、それらの許可された計算リソースが複数の計算ノードのうちの特定の1つ以上の計算ノードから得られることを必要とする、条項13に係る条項14。
プログラム部分のうちの少なくともいくつかが、1つ以上のデータソースからのデータ項目を処理するように構成されており、本方法が、1つ以上のデータソースからのデータ項目に少なくとも部分的に基づいてプログラム部分の各々のための計算リソースの目標量を決定することをさらに含む、条項1〜14のうちのいずれか1つに係る条項15。
計算リソースの複数の要求が計算リソースマネージャモジュールへ全て一度に提出され、各要求が、関連付けられた第1次、第2次、または第3次優先順位を指定する優先順位タグを任意選択的に含み得る、条項1〜条項15のうちのいずれか1つに係る条項16。
計算リソースの複数の要求が、第2の要求の前に第1の要求、および第3の要求の前に第2の要求の順序で計算リソースマネージャモジュールへ提出される、条項1〜条項16のうちのいずれか1つに係る条項17。
データ要素またはデータ項目に少なくとも部分的に基づいてプログラム部分の各々のための計算リソースの目標量を決定することと、プログラム部分ごとに、プログラム部分の単一のインスタンスに関連付けられた計算リソースを、プログラム部分によって処理されるべきデータ項目またはデータ要素ごとのプログラム部分に関連付けられた計算リソースの目標量に加算することと、をさらに含む、条項2〜条項17のうちのいずれか1つに係る条項18。
第1または第2の要求を提出したことに応答して、第1または第2の要求のうちの1つ以上の要求が許可されなかった、または充足されなかったとの指示を受信し、応答に基づいてコンピュータプログラムの実行を中止することを含む、条項1〜条項18のうちのいずれか1つに係る条項19。
第1の型が、静的(S)レイアウト型または固定深さ動的レイアウト(FDL)型であり、第2の型が可変深さ動的レイアウト(VDL)型である、条項1〜19のうちのいずれか1つに係る条項20。
本方法が、複数の要求のうちの1つ以上の要求が計算リソース管理モジュールによって許可されなかったと決定することと、決定に応答して、許可されなかった1つ以上の要求に関連付けられた1つ以上のプログラム部分を指示する通知を出力することであって、任意選択的に、この通知は、許可されなかった1つ以上の要求に関連付けられた1つ以上のプログラム部分に関連付けられた現在の充足率の指示を含む、出力することと、をさらに含む、条項1〜20のうちのいずれか1つに係る条項21。
一般条項22では、コンピュータ可読媒体は、計算リソースマネージャから、計算システム内で、複数のプログラム部分を有するコンピュータプログラムを実行するための計算リソースを要求するためのソフトウェアを記憶し、ソフトウェアは、コンピュータに条項1〜21のうちのいずれかに係る方法を遂行させるための命令を含む。
一般条項23では、計算リソースマネージャから、計算システム内で、複数のプログラム部分を有するコンピュータプログラムを実行するための計算リソースを要求するための計算システムであって、この計算システムは、ソフトウェア命令を記憶するコンピュータ可読媒体と、ソフトウェア命令を用いることによって条項1〜21のうちのいずれかの方法を実行するように構成された少なくとも1つのプロセッサと、を含む計算システムが提供される。
2 実装形態
上述された計算リソース割り振りアプローチは、例えば、好適なソフトウェア命令を実行するプログラム可能計算システムを用いて実施することができるか、あるいはそれは、フィールドプログラマブルゲートアレイ(FPGA)などの好適なハードウェアにおいて、または何らかのハイブリッド形態で実施することができる。例えば、プログラムされたアプローチでは、ソフトウェアは、少なくとも1つのプロセッサ、(揮発性および/または不揮発性メモリおよび/または記憶要素を含む)少なくとも1つのデータ記憶システム、(少なくとも1つの入力デバイスもしくはポートを用いて入力を受信するため、および少なくとも1つの出力デバイスもしくはポートを用いて出力を提供するための)少なくとも1つのユーザインターフェースを各々含む、(分散型、クライアント/サーバ型、またはグリッド型などの様々なアーキテクチャのものであり得る)1つ以上のプログラムされた、またはプログラム可能な計算システム上で実行する1つ以上のコンピュータプログラム内の手続きを含み得る。ソフトウェアは、例えば、データ処理グラフの設計、構成、および実行に関連するサービスを提供する、より大きなプログラムの1つ以上のモジュールを含み得る。プログラムのモジュール(例えば、データ処理グラフの要素)は、データリポジトリ内に記憶されたデータモデルに適合するデータ構造またはその他の編成データとして実装されることが可能である。
ソフトウェアは、揮発性もしくは不揮発性記憶媒体、または媒体の物理特性(例えば、表面ピットおよびランド、磁区、あるいは電荷)を用いる任意の他の非一時的媒体内に、期間(例えば、ダイナミックRAMなどのダイナミックメモリデバイスのリフレッシュ期間の間の時間)にわたって組み込まれるなど、非一時的形態で記憶され得る。命令のロードに備えて、ソフトウェアは、CD−ROM、または(例えば、汎用もしくは専用計算システムもしくはデバイスによって可読の)その他のコンピュータ可読媒体などの、有形の非一時的媒体上に提供され得るか、あるいはネットワークの通信媒体を通じて、ソフトウェアが実行される計算システムの有形の非一時的媒体へ(例えば、伝搬信号内に符号化されて)配信され得る。処理の一部または全ては、専用コンピュータ上で、あるいはコプロセッサまたはフィールドプログラマブルゲートアレイ(FPGA)または専用の特定用途向け集積回路(ASIC)などの、専用ハードウェアを用いて遂行されてもよい。処理は、ソフトウェアによって指定された計算の異なる部分が異なるコンピューティング要素によって遂行される、分散した仕方で実施されてもよい。このようなコンピュータプログラムは各々、好ましくは、記憶デバイス媒体がコンピュータによって、本明細書において説明されている処理を実行するために読み出されると、コンピュータを構成し、動作させるために、汎用または専用プログラム可能コンピュータによってアクセス可能な記憶デバイスのコンピュータ可読記憶媒体(例えば、ソリッドステートメモリもしくは媒体、または磁気的もしくは光学的媒体)上に記憶されるか、またはそれにダウンロードされる。本発明のシステムはまた、コンピュータプログラムを用いて構成された、有形の非一時的媒体として実装されると考えられてもよく、このように構成された媒体は、コンピュータを、本明細書において説明されている処理ステップのうちの1つ以上を遂行するための特定の既定の仕方で動作させる。
本明細書に記載された任意選択的な特徴の各々は、任意選択的な特徴のうちの任意の他のものと組み合わせることができ、また、単独で、または他の任意選択的な特徴と組み合わせて、本出願に記載の番号付きの態様、条項、または請求項のうちの任意のものと組み合わせることもできる。
本発明の多数の実施形態が説明された。しかし、上述の説明は、本発明の範囲を限定することではなく、本発明を例示することが意図されていることを理解されたい。本発明の範囲は添付の請求項の範囲によって定義される。したがって、他の実施形態もまた、添付の請求項の範囲内に含まれる。例えば、様々な変更が、本発明の範囲から逸脱することなくなされ得る。追加的に、上述されたステップのいくつかは順序に依存しなくてもよく、それゆえ、説明されているものと異なる順序で遂行されることが可能である。

Claims (19)

  1. 計算リソースマネージャから、複数のプログラム部分を有するコンピュータプログラムを計算システム内で実行するための計算リソースを要求するための方法であって、前記方法は、
    前記プログラム部分のうちのそれぞれのものに関連付けられた計算リソースの目標量を指定する情報を記憶することであって、各プログラム部分は、そのプログラム部分が前記計算システム内で実行されることを可能にする、前記計算リソースマネージャによって許可された、許可された計算リソースを用いる、記憶することと、
    要求を計算することであって、前記要求は、要求の複数のセットとして前記計算リソースマネージャへ提出するための、前記コンピュータプログラムを前記計算システム内で実行するための計算リソースを求めるものであり、要求の各セットは、要求の初期セットを除いて、要求の前記複数のセットのうちの前記以前に提出された1つ以上のセットが、前記計算リソースマネージャによって前記複数のプログラム部分による使用のために許可された場合にのみ、前記計算リソースマネージャによって処理されることになる、計算することと、
    を含み、前記計算することは、
    要求の前記初期セットを形成すること、および
    要求の前記初期セットの後に前記計算リソースマネージャによる処理のための要求の1つ以上の追加のセットを形成すること、
    を含み、
    要求の前記追加のセットのうちの要求の少なくとも1つのセットが、1つ以上のプログラム部分の最小充足セット内にある前記複数のプログラム部分のうちの少なくとも1つのプログラム部分のための部分要求を含み、
    前記複数のプログラム部分の各プログラム部分が、各プログラム部分の、以前に要求された計算リソースの量を、各プログラム部分の、計算リソースの関連目標量で除した、それぞれの充足率に関連付けられ、
    プログラム部分は、その関連充足率が前記複数のプログラム部分の全てにわたって前記関連充足率の最小値である場合には、前記最小充足セットのメンバであり、
    前記部分要求は、前記部分要求が許可された後には、前記最小充足セット内の各プログラム部分が、前記部分要求が許可される前の前記最小充足セット内の前記1つ以上のプログラム部分の各々についての前記充足率より大きく、且つ依然として1より小さい充足率を有することになるような量の計算リソースを要求する、
    方法。
  2. 前記部分要求が、前記部分要求が許可された後には、前記最小充足セット内の各プログラム部分が、前記最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率より依然として小さい充足率を有することになるような量以下である量の計算リソースを要求する、請求項1に記載の方法。
  3. 前記部分要求が、前記部分要求が許可された後には、前記最小充足セット内の各プログラム部分が、前記最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率と少なくとも同じ大きさである充足率を有することになるような量以上である量の計算リソースを要求する、請求項2に記載の方法。
  4. 前記部分要求が、前記部分要求が許可された後には、前記最小充足セット内の各プログラム部分が、前記最小充足セットのメンバでない少なくとも1つのプログラム部分の充足率と少なくとも同じ大きさである充足率を有することになるような量以上である量の計算リソースを要求する、請求項1に記載の方法。
  5. 要求の前記初期セットがプログラム部分ごとの最小要求を含み、各最小要求は、前記プログラムの対応する部分を実行するために必要とされる最小量の計算リソースを要求する、請求項1〜4のいずれか一項に記載の方法。
  6. 前記プログラム部分のうちの少なくとも1つが計算リソースの固定目標量に関連付けられ、前記プログラム部分のうちの少なくとも1つが計算リソースの可変目標量に関連付けられ、計算リソースの前記固定目標量に関連付けられたプログラム部分ごとの前記最小要求が、計算リソースの前記完全な目標量に対応する全要求であり、計算リソースの前記可変目標量に関連付けられたプログラム部分ごとの前記最小要求が、計算リソースの前記完全な目標量未満に対応する部分要求である、請求項1〜5のいずれか一項に記載の方法。
  7. 計算リソースの可変目標量に関連付けられたプログラム部分ごとの前記最小要求が、計算リソースの単一のユニットに対応する部分要求であり、計算リソースの各可変目標量は、計算リソースの前記完全な目標量を等しいサイズの複数のユニットに分割する計算リソースの細分性を単位として規定される、請求項6に記載の方法。
  8. 要求の少なくとも1つのセット内の少なくともいくつかの要求が、互いに異なるサイズの計算リソースの量に対応する、請求項1〜7のいずれか一項に記載の方法。
  9. 前記複数のプログラム部分のうちのそれぞれのものに関連付けられた計算リソースの目標量を指定する前記情報を記憶することが、少なくとも1つのプログラム部分について、ユーザ入力に少なくとも部分的に基づいて、前記少なくとも1つのプログラム部分の、計算リソースの関連目標量を決定することを含む、請求項1〜8のいずれか一項に記載の方法。
  10. 前記計算リソースが複数の計算ノードにわたって分散している、請求項1〜9のいずれか一項に記載の方法。
  11. 前記プログラム部分のうちの少なくともいくつかが、それらの許可された計算リソースが前記複数の計算ノードのうちの特定の1つ以上の計算ノードから得られることを必要とする、請求項10に記載の方法。
  12. 要求の前記複数のセットの要求の各セットの各要求に関連付けられた計算リソースが、前記複数の計算ノードのうちの単一の計算ノードから得られなければならない、請求項10または11に記載の方法。
  13. 前記プログラム部分のうちの少なくともいくつかが、1つ以上のデータソースからのデータ項目を処理するように構成されており、前記方法が、前記1つ以上のデータソースからの前記データ項目に少なくとも部分的に基づいて前記プログラム部分の各々のための計算リソースの前記目標量を決定することをさらに含む、請求項1〜12のいずれか一項に記載の方法。
  14. 前記1つ以上のデータソースからの前記データ項目に少なくとも部分的に基づいて前記プログラム部分の各々のための計算リソースの前記目標量を決定することが、プログラム部分ごとに、前記プログラム部分の単一のインスタンスに関連付けられた計算リソースを、前記プログラム部分によって処理されるべきデータ項目ごとの前記プログラム部分に関連付けられた計算リソースの前記目標量に加算することを含む、請求項13に記載の方法。
  15. 要求の前記複数のセットの要求の各セットの各要求が、前記複数のプログラム部分のうちの特定のプログラム部分の単一のインスタンスによって必要とされる計算リソースを要求する、請求項1〜14のいずれか一項に記載の方法。
  16. 前記複数のプログラム部分のうちの第1のプログラム部分が、要求の前記複数のセットからの複数の要求に関連付けられる、請求項1〜15のいずれか一項に記載の方法。
  17. 要求の前記初期セットに応答して、要求の前記初期セットのうちの1つ以上の要求が充足されなかったとの指示を受信し、前記応答に基づいて前記プログラムの実行を中止することをさらに含む、請求項1〜16のいずれか一項に記載の方法。
  18. 計算リソースマネージャから、計算システム内で、複数のプログラム部分を有するコンピュータプログラムを実行するための計算リソースを要求するためのソフトウェアを記憶するコンピュータ可読媒体であって、前記ソフトウェアは、前記計算システムに請求項1〜17のいずれか一項に記載の方法を遂行させるための命令を含む、コンピュータ可読媒体。
  19. 計算リソースマネージャから、複数のプログラム部分を有するプログラムを計算システム内で実行するための計算リソースを要求するための前記計算システムであって、前記計算システムは、
    前記プログラム部分のうちのそれぞれのものに関連付けられた計算リソースの目標量を指定する情報を記憶するデータ記憶システムと、
    請求項1〜17のいずれか一項に記載の方法を遂行するように構成された少なくとも1つのプロセッサと、
    を含む、計算システム。
JP2019528471A 2016-12-08 2017-12-06 計算リソース割り振り Active JP6825103B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662431505P 2016-12-08 2016-12-08
US62/431,505 2016-12-08
PCT/US2017/064849 WO2018106772A1 (en) 2016-12-08 2017-12-06 Computational resource allocation

Publications (2)

Publication Number Publication Date
JP2020502641A true JP2020502641A (ja) 2020-01-23
JP6825103B2 JP6825103B2 (ja) 2021-02-03

Family

ID=61656329

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019528471A Active JP6825103B2 (ja) 2016-12-08 2017-12-06 計算リソース割り振り

Country Status (7)

Country Link
US (2) US10445137B2 (ja)
EP (1) EP3552104B1 (ja)
JP (1) JP6825103B2 (ja)
CN (1) CN110050261B (ja)
AU (1) AU2017373882B2 (ja)
CA (1) CA3043974C (ja)
WO (1) WO2018106772A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022118369A1 (ja) * 2020-12-01 2022-06-09 日本電信電話株式会社 計算資源クラスタ管理装置、計算資源クラスタ管理方法、および、計算資源クラスタ管理プログラム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697121B (zh) * 2017-10-20 2023-05-05 伊姆西Ip控股有限责任公司 用于向应用分配处理资源的方法、设备和计算机可读介质
CN109697115B (zh) * 2017-10-20 2023-06-06 伊姆西Ip控股有限责任公司 用于调度应用的方法、装置以及计算机可读介质
US20220270735A1 (en) * 2018-08-28 2022-08-25 Novo Nordisk A/S Systems and methods for providing container based medication dose guidance to treat diabetes
US11836505B2 (en) 2019-05-07 2023-12-05 Ab Initio Technology Llc Dynamic distribution of container images
CN112073498B (zh) * 2020-09-01 2022-09-09 北京字节跳动网络技术有限公司 一种资源分配方法及装置
CA3217116A1 (en) * 2021-06-04 2022-12-08 Ab Initio Technology Llc Dynamic computational resource allocation
CN113535333A (zh) * 2021-08-12 2021-10-22 北京字节跳动网络技术有限公司 Yarn集群资源调度方法、系统、介质和计算机设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US7051188B1 (en) 1999-09-28 2006-05-23 International Business Machines Corporation Dynamically redistributing shareable resources of a computing environment to manage the workload of that environment
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US8095620B2 (en) * 2002-06-13 2012-01-10 Elbit Systems Land and C41-Tadiran Ltd. System and method for dynamic allocation of a resource
US7970902B2 (en) 2004-03-19 2011-06-28 Hewlett-Packard Development Company, L.P. Computing utility policing system and method using entitlement profiles
US7584281B2 (en) 2005-06-07 2009-09-01 Datasynapse, Inc. Method for allocating shared computing infrastructure for application server-based deployments
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
CN102422298A (zh) * 2009-05-08 2012-04-18 惠普开发有限公司 分布式计算资源的访问控制系统和方法
US9210040B2 (en) * 2009-09-03 2015-12-08 C3Dna Apparatus and methods for cognitive containters to optimize managed computations and computing resources
US8935702B2 (en) * 2009-09-04 2015-01-13 International Business Machines Corporation Resource optimization for parallel data integration
US8565407B1 (en) * 2009-11-23 2013-10-22 Amazon Technologies, Inc. Systems and methods for allocation of telephony resources on-demand
US8661120B2 (en) * 2010-09-21 2014-02-25 Amazon Technologies, Inc. Methods and systems for dynamically managing requests for computing capacity
US8533724B1 (en) * 2010-12-20 2013-09-10 Amazon Technologies, Inc. Virtual resource provisioning by assigning colors to virtual resources in multi-tenant resource pool
US9515899B2 (en) * 2012-12-19 2016-12-06 Veritas Technologies Llc Providing optimized quality of service to prioritized virtual machines and applications based on quality of shared resources
US9183016B2 (en) 2013-02-27 2015-11-10 Vmware, Inc. Adaptive task scheduling of Hadoop in a virtualized environment
US10193963B2 (en) 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
US9727379B1 (en) * 2014-04-14 2017-08-08 Google Inc. Specifying behavior among a group of computing tasks
US9537788B2 (en) * 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
CN107925994B (zh) * 2015-08-07 2022-04-08 瑞典爱立信有限公司 用于资源请求的方法和装置
US10642652B2 (en) 2016-01-29 2020-05-05 Peter P. Nghiem Best trade-off point on an elbow curve for optimal resource provisioning and performance efficiency

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022118369A1 (ja) * 2020-12-01 2022-06-09 日本電信電話株式会社 計算資源クラスタ管理装置、計算資源クラスタ管理方法、および、計算資源クラスタ管理プログラム

Also Published As

Publication number Publication date
CA3043974C (en) 2021-11-09
JP6825103B2 (ja) 2021-02-03
US20180165129A1 (en) 2018-06-14
EP3552104B1 (en) 2021-06-23
CN110050261A (zh) 2019-07-23
US20200257556A1 (en) 2020-08-13
CN110050261B (zh) 2022-11-25
AU2017373882B2 (en) 2020-04-02
US10445137B2 (en) 2019-10-15
EP3552104A1 (en) 2019-10-16
WO2018106772A1 (en) 2018-06-14
AU2017373882A1 (en) 2019-05-30
CA3043974A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
JP6825103B2 (ja) 計算リソース割り振り
Turilli et al. A comprehensive perspective on pilot-job systems
US8112751B2 (en) Executing tasks through multiple processors that process different portions of a replicable task
US9401835B2 (en) Data integration on retargetable engines in a networked environment
US11467874B2 (en) System and method for resource management
KR20170044639A (ko) 멀티테넌트 어플리케이션 서버 환경에서 작업 관리자를 제공하는 시스템 및 방법
Ruiz-Alvarez et al. Toward optimal resource provisioning for cloud mapreduce and hybrid cloud applications
Cafaro et al. Preference–based matchmaking of grid resources with cp–nets
Baresi et al. Fine-grained dynamic resource allocation for big-data applications
Thomadakis et al. Toward runtime support for unstructured and dynamic exascale-era applications
Rajendran et al. Matrix: Many-task Computing Execution Frabic for Extreme Scales
Fan et al. Improving the load balance of mapreduce operations based on the key distribution of pairs
Sharma et al. New efficient Hadoop scheduler: Generalized particle swarm optimization and simulated annealing‐dominant resource fairness
Fan et al. VM instance selection for deadline constraint job on agent-based interconnected cloud
Jagannatha et al. Cost performance analysis: Usage of resources in cloud using Markov-chain model
Beach et al. Integrating acceleration devices using CometCloud
Chen et al. Fangorn: adaptive execution framework for heterogeneous workloads on shared clusters
US20220391257A1 (en) Dynamic Computational Resource Allocation
Nirmalan et al. Survey on Map Reduce Scheduling Algorithms in Hadoop Heterogeneous Environments
Quintero et al. IBM Technical Computing Clouds
Li et al. Resource availability-aware advance reservation for parallel jobs with deadlines
Bahceci Investigating the scaleability of analyzing and processing RDBMS datasets with Apache Spark
Verma A Novel survey on Scheduling Algorithms on CloudSim in Cloud Environment
Hema et al. Improvisioning hadoop in Globus Toolkit
Ding et al. Budget Constrained Dataflow Scheduling for Minimized Completion Time on the Cloud.

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190628

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210113

R150 Certificate of patent or registration of utility model

Ref document number: 6825103

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250