[go: up one dir, main page]

JP4781089B2 - タスク割り当て方法およびタスク割り当て装置 - Google Patents

タスク割り当て方法およびタスク割り当て装置 Download PDF

Info

Publication number
JP4781089B2
JP4781089B2 JP2005330887A JP2005330887A JP4781089B2 JP 4781089 B2 JP4781089 B2 JP 4781089B2 JP 2005330887 A JP2005330887 A JP 2005330887A JP 2005330887 A JP2005330887 A JP 2005330887A JP 4781089 B2 JP4781089 B2 JP 4781089B2
Authority
JP
Japan
Prior art keywords
task
node
time
tasks
assignment
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.)
Expired - Fee Related
Application number
JP2005330887A
Other languages
English (en)
Other versions
JP2007140710A5 (ja
JP2007140710A (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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Priority to JP2005330887A priority Critical patent/JP4781089B2/ja
Priority to KR1020060111586A priority patent/KR101343020B1/ko
Priority to US11/559,458 priority patent/US7930339B2/en
Priority to EP06255820.0A priority patent/EP1785861B1/en
Priority to CN2006101603694A priority patent/CN1967488B/zh
Publication of JP2007140710A publication Critical patent/JP2007140710A/ja
Publication of JP2007140710A5 publication Critical patent/JP2007140710A5/ja
Application granted granted Critical
Publication of JP4781089B2 publication Critical patent/JP4781089B2/ja
Expired - Fee Related 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]
    • 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/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Description

この発明は、プロセッサを有する複数のノードからなる分散処理システムにおいて、各ノードへタスクを割り当てる技術に関する。
プロセッサを有する複数のノードからなる分散処理システムにおいてアプリケーションを実行するためには、アプリケーションのタスクをいずれのノードで実行すべきか決定する必要がある。この場合、あるイベントの結果が全てのノードに影響を及ぼすような重要な計算について、いかにして整合性を維持するかが問題となる。従来から、イベントをノード間で相互に通信して各ノードで整合性を維持する方式や、代表ノードが専用サーバの役割を果たし、代表ノードでのみ重要なタスクを実行することで整合性を維持する方式が知られている。
しかしながら、上記第1の方式では、各ノードでの演算結果が相違し整合性がとれなくなる場合がある。また、第2の方式では、専用サーバの役割を果たす代表ノードに他のノードを接続する形態をとることになる。したがって、アプリケーションの実行中に代表ノードを他のノードに変更したり、新たなノードを追加したりすることは困難である。
本発明はこうした課題に鑑みてなされたものであり、その目的は、プロセッサを有する複数のノードからなる分散処理システムにおいて、アプリケーションのタスクをいずれのノードに割り当てるべきかを判定する技術を提供することにある。
本発明のある態様は、それぞれがプロセッサを備え相互に通信可能に接続された複数のノードを含む分散処理システムにおいて、先後関係を有する複数のタスクを各ノードに割り当てるタスク割り当て方法である。この方法では、ひとつまたは複数のプロセッサが、各タスクについて、当該タスクを最も早く処理開始可能な時刻である最先開始時刻と、時間制約内にタスクを終了するための最も遅い開始時刻である最遅開始時刻とを算出し、最先開始時刻と最遅開始時刻との差分であるタスク可動範囲を算出し、タスク可動範囲が小さいタスクから順に割当先ノードを決定する処理を実行する。
ここで、「タスク」とは、ある目的を達成するためにプログラムされたアプリケーションまたはそれに含まれる情報処理の内容をいい、アプリケーションと対応してもよいし、入出力制御やユーザが指定したコマンドなどアプリケーションよりも小さい単位と対応してもよく、何らかの処理または機能の単位に対応すればよい。
この態様によれば、タスク可動範囲に基づいて各タスクの割当先ノードが決定されるので、事前に代表ノードを定めることなく、アプリケーションタスクを処理時間の観点から最適なノードに割り当てることができる。
なお、本発明の構成要素や表現を方法、システム、コンピュータプログラム、コンピュータプログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
本発明によれば、分散処理システムにおいて各ノードへのタスクの割り当てが自動的に決定されるので、代表ノードを予め定めておく必要がない。
本発明は、複数のノードで構成される分散処理システムにおいて、アプリケーションを実行する際に、タスクの持つ時間制約を充足できるようにタスクを各ノードに割り当てる技術に関する。
以下、本発明の一実施の形態に係るシステム構成と、当該システムで実行されるタスクの概略を説明した後、各機能ブロックの動作をフローチャートを参照して詳細に説明する。
図1は、本発明の実施の形態に係る分散アプリケーション実行システムの構成図である。各ノード10は、汎用のコンピュータからなり、それぞれひとつ以上のCPUを備える。各CPUは、同一の命令セットを使用可能であるとする。各ノード10は、インターネットを初めとするネットワーク30を介して相互にデータ送受信可能に構成されている。図1では、ノード1〜5の5台のコンピュータがネットワーク30に接続されているが、分散処理システムを構成するノードの数に制限はない。
図1の環境において、分散アプリケーションが実行される。ここで、「分散アプリケーション」とは、ネットワークで接続された複数のCPU搭載機器を同時に使用し、分担して処理を進める形のアプリケーションをいう。
図2は、各ノードを構成する汎用コンピュータ100の概略構成を示す。コンピュータ100は、CPU12、メインメモリ14、記憶装置16、入出力インタフェース20および表示制御装置28を備える。CPU12は、コンピュータ100の全体を制御するとともに、ノードへのタスク割り当てプログラムを実行する。メインメモリ14は、各種のデータや描画処理プログラムなどを記憶する。これらはバス18を介して接続され、相互にデータの送受信が可能となっている。表示制御装置28には、アプリケーション実行の結果生成される画像を出力するディスプレイ26が接続される。入出力インタフェース20には、CD−ROM、DVD−ROMまたはハードウェアディスクドライブなどの外部記憶装置22と、コンピュータ100に対してデータを入力するためのキーボードやマウス等の入力装置24が接続される。入出力インタフェース20は、外部記憶装置22および入力装置24に対するデータの入出力を制御する。入出力インタフェース20は、外部記憶装置22に格納されたデータやプログラムを読み込み、メインメモリ14に提供する。入出力インタフェース20には、他のノードを構成するコンピュータと通信して、データおよびプログラムを取得する通信装置60も接続される。
以下の実施形態では、分散アプリケーションとしてネットワーク対戦型の格闘ゲームを想定して説明するが、本実施の形態を適用可能なアプリケーションはこれに限られるわけではなく、複数のノードでタスク処理が必要となる任意の分散アプリケーションに適用することができる。
図3は、上記ゲームアプリケーションにおいて、各プレイヤーに対しての処理を担当するノードで実行されるべきタスク、およびタスク間の実行順序の制約の概略を示す。図中のブロックはそれぞれタスクを表し、矢印はタスク間の実行順序の制約を表す。実線の長方形ブロックは、各プレイヤーの担当ノードでのみ実行されるべきタスクを表す。例えば、BGM演奏31、キー入力32、背景表示36、キャラクタ表示39、効果音発生40といったタスクは、各ノードでそれぞれのプレイヤーに対して実行されなければ、ゲームアプリケーションとしての意味をなさない。長方形に縦線入りのブロックは、ネットワーク接続される任意のノードで実行可能なタスクを表す。キャラクタ移動・座標計算33およびダメージ計算37は、その計算結果を用いた表示が各プレイヤーのノードで出力される限り、実行されるノードを選ばない。
二重囲いのブロックは、全てのプレイヤーについての計算を一カ所のノードで実行すべきタスクを表す。実行されるノードは任意である。衝突判定34は、ゲーム環境内のキャラクタ間の接触の結果を計算するタスクであるが、このような計算は、複数のノードで実行すると整合がとれなくなる場合があるので、全プレイヤーの座標計算の終了後に一カ所のノードで集中して演算すべきである。さらに、点線の長方形ブロックは、ひとつのノードで計算されてもよいし、分散されて複数のノードで計算されてもよいタスクを表す。ゲーム環境内のキャラクタの移動とは無関係に変化する背景を計算する背景変化計算35は、その計算結果が各ノードに提供されれば、ひとつのノードで実行してもよい。
図4は、本実施の形態によるタスク割り当て結果の一例を示す。図4中のノード1〜5は、図1のノード1〜5と対応している。このうち、ノード1はプレイヤー1の処理を担当するノードであり、ノード5はプレイヤー2の処理を担当するノードであり、ノード2〜4はプレイヤーの付いていないノードとする。図4では、実線長方形のブロックおよび長方形に縦線入りのブロックのうち、斜線なしのブロックはプレイヤー1に関するタスク、斜線を付したブロックはプレイヤー2に関するタスクを表す。
図4に示すように、キー入力32、BGM演奏31、背景表示36といったタスクは、各プレイヤーに対して割り当てられたノード1、ノード5上に割り当てられる。図4では、プレイヤー1に関するキャラクタ移動・座標計算33は、ノード1ではなくノード2に割り当てられ、プレイヤー2に関するキャラクタ移動・座標計算33は、ノード5ではなくノード4に割り当てられている。また、一カ所のノードで実行すべき衝突判定34は、ノード2およびノード4のキャラクタ移動・座標計算33からそれぞれデータを受け取ってノード3上で実行され、その計算結果がノード1、2、5に割り当てられたタスクに伝達されている。この結果、全てのノード上で計算結果の整合性を保ちつつ、ノード1およびノード5において、音声再生や画面表示が実現される。なお、このタスク割り当ては一例であり、他の割り当て結果も当然存在する。
このように、一口にタスクといっても、特定のノードで処理すべきなのか、または任意のノードで処理してもよいのかなど、条件は様々である。また、タスク毎の処理時間も異なるし、演算結果をタスク間で転送するのに要する時間も異なる。さらに、ゲームアプリケーションは画面の描画を伴うので、1フレーム(例えば、1/60秒)以内にプレイヤー一人分の処理、すなわちキー入力から画面表示までの一連の処理を終了しなければならない。
したがって、分散アプリケーション実行環境において、アプリケーション内のタスクをいずれのノードに割り当てるかは、全てのノードにおける演算結果の整合性や、リアルタイム性を確保するための処理時間などに大きな影響を及ぼしうる。
以下では、図1に示すような分散アプリケーション実行システムにおいて、アプリケーションのタスクを自動的にかつ適切に分配するタスク割り当て方法について説明する。
図5は、実施の形態に係るタスク割り当て処理を実行するノード10の機能ブロック図である。各ブロックは、分散アプリケーション実行環境においてタスク割り当てを実現するために必要な処理を実行する。なお、ノード10は、ハードウェア的には、CPU、RAM、ROMなどの構成で実現でき、ソフトウェア的にはデータ入力機能、データ保持機能、演算機能、通信機能などの諸機能を発揮するプログラムで実現されるが、図5ではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組み合わせによって様々な形で実現できる。
ユーザ入力部102は、キーボードやマウス等の入力装置を介してユーザからのデータ入力を受け取る。
情報収集部108は、タスク割り当てを決定するために必要となる各種情報を収集する。情報収集部108は、タスクに関する情報を取得するタスク情報取得部110と、ノードに関する情報を取得するノード情報取得部112と、後述する事前指定を受け付ける事前指定受付部118とを含む。
タスク情報取得部110が取得するタスク情報には、タスク間の先後関係、リアルタイム性を確保するために各タスクに科せられる時間制約、最悪ケースでの各タスクの処理に要する時間であるタスク処理時間、タスク間の転送データ量が含まれる。ここで、時間制約は、例えば、あるアプリケーションを所定の間隔で周期的に繰り返し実行すべきときは、その間隔が時間制約となり得るし、または、あるアプリケーションの実行を開始してから終了するまでの制限時間も制約条件のひとつである。この時間制約は、以下の説明では「デッドライン時刻」として表現されている。
ノード情報取得部112が取得するノード情報には、ノードリスト、ノード間通信レイテンシ、ノード間通信スループット、ノードリソース情報が含まれる。このうち、ノードリソース情報は、タスクを割り当てるべき各ノードにおける計算負荷の状態や、各ノードのCPU処理能力、メモリ容量といった計算リソースに関する情報である。これらの情報は、図示しない負荷監視部が、ネットワークに接続されている各ノードから現時点での負荷量の通知を受けるようにするか、または、オペレーティングシステムにこれらの情報を伝達する仕組みを設けることで取得する。
なお、タスク間の転送データ量と、ノード間のレイテンシ、スループット情報から、タスク間の通信時間を計算することができる。
また、事前指定受付部118が受け付ける情報には、タスク割り当てノード事前指定、タスクグループ事前指定が含まれる。
各タスクの時間制約、タスク処理時間、タスク間転送データ量、ノードリスト、ノード間通信レイテンシ、ノード間通信スループットは、実行されるアプリケーションのプログラマが予め入力しておいたものを使用するか、または、プログラム解析部104が、プログラム解析ツールを用いてアプリケーションプログラムを解析して推定した結果を使用してもよい。ノード間通信レイテンシとノード間通信スループットは、ネットワーク構成から推定される推定値を使用してもよい。
格納部130は、情報収集部108で取得されたタスク割り当て処理に必要となる各種データを格納する。タスク情報格納部120は、タスク先後関係、タスク時間制約、タスク処理時間、タスク間転送データ量、タスク割り当てノード事前指定情報、タスクグループ事前指定情報を格納する。ノード情報格納部126は、ノードリスト、ノード間通信レイテンシ、ノード間通信スループット、ノードリソース情報を格納する。
タスク割り当て部140は、格納部130に存在する各種情報のうち少なくともひとつの情報を参照して、ネットワーク内のノードにアプリケーションタスクを割り当てるタスク割り当て処理を実行する。タスク割り当て部140は、開始時刻算出部144、対象タスク選択部146、ノード選択部148を含む。
開始時刻算出部144は、各タスクまたはタスクグループについて、それぞれ最先開始時刻(AEST:Absolute Earliest Start Time )、および最遅開始時刻(ALST:Absolute Latest Start Time)を計算する。AESTの算出については図7および図8を参照して説明し、ALSTの算出については図9および図10を参照して説明する。
対象タスク選択部146は、タスク割り当ての対象となるタスクを選択する。この選択には、上述のAESTおよびALSTが利用される。この対象タスク選択処理については、図11のフローチャートを参照して説明する。
ノード選択部148は、タスク割り当ての対象となるタスク(以下、「割り当て対象タスク」という)を、ネットワーク内のいずれのノードに割り当てるかのノード選択処理を実行する。この処理については、図13〜図17のフローチャートを参照して説明する。
タスク配置部150は、タスク割り当て部140における処理結果にしたがってタスクを各ノードに配置し、タスクを実際に動作させるのに必要な情報、すなわち、タスクのプログラムコード、初期データ、先後関係のあるタスクの割り当てられたノードなどの情報を伝達する。プログラムコードそのものの代わりに、各ノードの記憶装置に予め複数のコードを記録しておき、必要なコードの管理番号などを伝達してもよい。
配置されたタスクは、各ノードで分散処理される。このとき、各ノードがそれぞれ勝手にタスクの実行を開始しても統制がとれなくなる可能性がある。そのため、分散アプリケーションの全タスクの全てが実行可能になるのを待機し、全ノードで一斉にタスクの実行を開始するなどの処理を実現するために、タスク配置部150は、実行の開始、中断、停止などの命令を各ノードに発行してもよい。
タスク配置部150は、ネットワーク内の各ノードの状況の変化、例えば、新たなノードが追加されたり、またはノードがネットワークから切断されたりして、各タスクの実行が困難になった場合に、タスク割り当て部140にタスクの再配置をするように指示してもよい。
続いて、本実施の形態におけるタスク割り当て処理の概要を説明する。
各タスクについて、タスクの最先開始時刻AESTと、デッドライン時刻を守るための最遅開始時刻ALSTを求め、その差が最小であるタスク、すなわち最も時間的に余裕の少ないタスクを選択し、このタスクの割当先のノードを決定する。AESTやALSTは、タスク処理時間やタスク間の通信時間などを考慮して算出される。ひとつのタスクの割当先ノードが決定すると、その結果にしたがって全タスクについてAESTとALSTを再計算し、その計算結果にしたがって次の割り当て対象タスクを決定する。このようにして、重要なタスクから割当先のノードが決定されていく。
図6は、ノード10で実施されるタスク割り当て処理のメインフローチャートである。
まず、アプリケーションのプログラマは、ノードおよびタスクに関する所定の情報をネットワーク内のいずれかのノードに格納する。この格納先は、タスク割り当て処理を実行するノードに接続された記憶装置であることが好ましいが、ネットワークを介して接続される別のノードの記憶装置であってもよい。格納すべき情報は、上述の時間制約やタスク処理時間である。特定のノードでのみ実行すべきタスクがある場合は、ノード事前指定情報やグループ事前指定情報も格納する。上述の情報を固定値として予め準備しておく代わりに、各ノードがアプリケーションプログラムを解析することによってこれらの情報を求めてもよい。
次に、ネットワーク内のいずれかのノードの情報収集部108が、上述のタスク情報、ノード情報、および事前指定情報を取得する(S12)。続いて、各ノードにいずれのタスクを割り当てるかを決定していく。このタスク割り当て処理は、五段階に分けて実行される。まず、ノード事前指定のあるタスクについて割り当て処理を実行する(S14)。ここでは、単にタスクを指定されたノードに割り当てる。但しこのとき、ノード事前指定のあるタスクにグループ事前指定がある場合は、指定されたノードにグループの全タスクを割り当てる。次に、ノード事前指定のないタスクをそれぞれ別の仮想ノードに割り当てる(S16)。但しこのとき、グループ事前指定のあるタスクについては、グループ毎に同一の仮想ノードに割り当てる。続いて、仮想ノードに割り当てられているタスクのうちデッドライン制約のあるタスクについて、図11を参照して後述するタスク割り当て処理を実行する(S18)。さらに、仮想ノードに割り当てられているタスクのうちデッドライン制約のないタスクについて、後述するタスク割り当て処理を実行する(S20)。最後に、ノードに割り当てられた全てのタスクの実行時刻を、S14〜S20において計算されるAESTに設定した上で、タスク配置部150が、それぞれのAESTの時刻にタスクが実行されるように各ノードに配置する(S22)。
なお、図6のタスク割り当て処理を担当するノードは、分散アプリケーションの実行要求を出すノードとすることが好ましい。したがって、割り当て処理の担当ノードは、アプリケーションの実行要求者全員がなる可能性がある。但し、割り当て処理が同時並行して行われるので、各ノードの負荷状態などがこのタイミングで更新されたときには、必要に応じて割り当て処理の再実行をするように構成しておく。
なお、分散アプリケーション実行システム内のいずれかのノードを、別の方法でタスク割り当て処理を担当するノードに決定してもよい。この場合、割り当て処理を担当するノードを、システム内のいくつかのノードに予め限定しておいてもよい。
ここで、AESTおよびALSTについて説明する。
最先開始時刻AESTは、あるタスクを最も早く処理開始可能な時刻を表す。最先開始時刻は以下のように求める。計算対象のタスクの全ての先行タスクについて、その先行タスクの最先開始時刻に、当該先行タスクの処理時間と、当該先行タスクから計算対象タスクまでの通信時間とを加えた時刻を求め、この計算値が最大となる(すなわち、最も時刻の遅い)ものが計算対象タスクのAESTとなる。
最遅開始時刻ALSTは、あるタスクを時間制約内に終了するための最も遅い開始時刻を表す。最遅開始時刻は以下のように求める。(1)計算対象のタスクにデッドライン制約がある場合は、(1−1)計算対象タスクの全ての後続タスクについて、その後続タスクの最遅開始時刻から、計算対象タスクの処理時間と、計算対象タスクからその後続タスクまでの通信時間とを減じた時刻、(1−2)計算対象タスクのデッドライン時刻から当該計算対象タスクの処理時間を減じた時刻、のそれぞれを計算し、これらの計算値のうち最小となる(すなわち、最も時刻の早い)ものが計算対象タスクのALSTとなる。(2)計算対象のタスクにデッドライン制約がない場合は、計算対象タスクの全ての後続タスクについて、その後続タスクの最遅開始時刻から、計算対象タスクの処理時間と、計算対象タスクからその後続タスクまでの通信時間とを減じた時刻を計算し、この計算値が最小となる(すなわち、最も時刻の早い)ものが計算対象タスクのALSTとなる。
AEST、ALSTの演算方法については、Yu-Kwong Kwok, Ishfaq Ahmad, Dynamic Critical-Path Scheduling: An Effective Technique for Allocating Task Graphs to Multiprocessors, IEEE Transactions on Parallel and Distributed Systems, 1996 March, vol. 7, pp. 506-521,に記載されている。本明細書ではその概略のみを説明する。
図7(a)は、AESTの算出方法を模式的に示しており、図7(b)は、タスク間の依存関係の一例を示す。図7(b)において、白丸内の数字がタスク番号を表しており、矢印が依存関係を表す。すなわち、図7(b)では、「タスク4」の先行タスクとして「タスク1」、「タスク2」、「タスク3」があることを示している。
ここで、「タスク間の依存関係」とは、あるタスクの処理結果が他のタスクの処理に用いられるような関係をいう。互いに依存関係にあるタスクにおいて、対象タスクより時間的に先行するタスクを「先行タスク(親タスクともいう)」と呼び、時間的に後続するタスクを「後続タスク(子タスクともいう)」と呼ぶ。
任意のノードJにおけるあるタスクnのAESTは、次式で算出される。なお、nはAESTの計算対象となるタスクであり、nikはタスクnのk番目の先行タスクであり、1≦k≦p、すなわちnの先行タスクがp個あるものとする。
AEST(ni,J)=max1≦k≦p{AEST(nik,PE(nik))+w(nik)+r(PE(nik),J)cki}・・・(1)
ここで、PE(nik)は、タスクnのk番目の先行タスクを割り当てたノード番号である。w(nik)は、先行タスクnikの処理時間を表す。r(PE(nik),J)は、先行タスクの割り当てノードPE(nik)と対象タスクの割り当てノードJが同じノードであれば0、違う場合は1となる係数である。ckiは、先行タスクから対象タスクへの通信時間である。式(1)において、左辺は「対象タスクnのノードJにおけるAEST」を表し、右辺の第1項は「先行タスクnikのAEST」を、第2項は「先行タスクnikの処理時間」を、第3項は「先行タスクnikと対象タスクn間の通信時間」を表す。
但し、先頭のタスク(エントリタスク)については、先行タスクがひとつもないのでAEST=0とする。
以下、図7(b)に示すタスク間の依存関係を例にして、タスク4についてのAESTを計算する手順について具体的に述べる。図7(b)では、タスク4の先行タスクはタスク1〜タスク3の三つあるので、k=1〜3である。また、式(1)においてi=4として、nがタスク4、n41がタスク1、n42がタスク2、n43がタスク3となる。
タスク1、タスク2、タスク3がそれぞれノード1、2、3に割り当てられているとすると、PE(n41)=PE(1)=1、PE(n42)=PE(2)=2、PE(n43)=PE(3)=3となる。この条件の下、タスク4をノード2に割り当てたときのAEST(4,2)を式(1)にしたがって計算すると、次式のようになる(図7(a)のブロック168)。
AEST(4,,2)=max1≦k≦3{AEST(n4k,PE(n4k))+w(n4k)+r(PE(n4k),2)ck4}・・・(2)
式(2)においてk=1としたとき、n41がタスク1(ブロック162)に対応するから、次式が成り立つ。
AEST(1,PE(1))+w(1)+r(PE(1),2)c14
=AEST(1,1)+w(1)+r(1,2)c14・・・(3)
式(2)においてk=2としたとき、n42がタスク2(ブロック164)に対応するから、次式が成り立つ。
AEST(2,PE(2))+w(2)+r(PE(2),2)c24
=AEST(2,2)+w(2)+r(2,2)c24
=AEST(2,2)+w(2)・・・(4)
式(2)においてk=3としたとき、n43がタスク3(ブロック166)に対応するから、次式が成り立つ。
AEST(3,PE(3))+w(3)+r(PE(3),2)c34
=AEST(3,3)+w(3)+r(3,2)c34・・・(5)
式(3)ないし式(5)の計算結果のうち最大のものをAEST(4,2)と決定する。
図8は、上記処理をフローチャートとして表す。まず、対象タスクnをあるノードJに仮に割り当てる(S50)。開始時刻算出部144は、対象タスクnの先行タスクのAESTを計算し(S52)、先行タスクの処理時間をタスク情報格納部120から取得する(S54)。また、開始時刻算出部144は、タスク情報格納部120からタスク間転送データ量を、ノード情報格納部126からレイテンシ、スループットを取得し、対象タスクnをノードJに割り当てたときの、先行タスクから対象タスクnへのタスク間通信時間を算出する(S56)。先行タスクと対象タスクnとが同一ノードにある場合は、通信時間は「0」になる。
続いて、式(1)にしたがって、S52〜S56で取得した値を加算する(S58)。すなわち、S52で計算した先行タスクAEST、S54で取得した先行タスク処理時間、およびS56で取得したタスク間通信時間を加算する。以上のS50〜S58の演算を、対象タスクnの全ての先行タスクnikについて実行し、S58で算出される計算結果のうち最大値を、対象タスクnのAESTに決定する(S60)。
図9(a)は、ALSTの算出方法を模式的に示しており、図9(b)は、タスク間の依存関係の一例を示す。図7(b)と同様、白丸内の数字がタスク番号を表しており、矢印が依存関係を表す。すなわち、図9(b)では、「タスク1」の後続タスクとして「タスク4」があり、「タスク2」の後続タスクとして「タスク4」と「タスク5」があり、「タスク3」の後続タスクとして「タスク5」があることを示している。
ALSTは、全タスクを終了させるためにそのタスクの処理を開始すべき最後のタイミングを表す。任意のノードJにおけるあるタスクnのALSTは、次式で算出される。なお、nはALSTの計算対象となるタスクであり、nimはタスクnのm番目の後続タスクであり、1≦m≦q、すなわちnの後続タスクがq個あるとする。
ALST(ni,J)=min1≦m≦q{ALST(nim,PE(nim))−r(PE(nim),J)cim−w(ni), Deadline(ni)−w(ni)}・・・(6)
ここで、PE(nim)は、タスクnのm番目の後続タスクを割り当てたノード番号である。w(n)は、対象タスクの処理時間を表す。r(PE(nim),J)は、後続タスクnimの割り当てノードPE(nim)と対象タスクの割り当てノードJが同じノードであれば0、違う場合は1となる係数である。cimは、対象タスクから後続タスクへの通信時間である。式(6)において、左辺は「対象タスクnのノードJにおけるALST」を表し、右辺の第1項は「後続タスクnimのALST」を、第2項は「対象タスクnと後続タスクnim間の通信時間」を、第3項は「対象タスクnの処理時間」を表す。
但し、最後のタスク(出口タスク)については以下のようにする。
デッドライン時刻有りの場合:ALST=(デッドライン時間Deadline(ni))−(処理時間w(ni))
デッドライン時刻の指定なしの場合:ALST=∞
したがって、デッドライン時刻の指定のない経路とデッドライン時刻のある経路についてそれぞれALSTを計算した場合は、常にデッドライン時刻有りの経路のALSTが採用されることになる。
なお、デッドライン制約は、出口タスクだけでなく、経路の途中のタスクに設定することも可能である。
以下、図9(b)に示すタスク間の依存関係を例にして、タスク2についてのALSTを計算する手順について具体的に述べる。図9(b)では、タスク2の後続タスクはタスク4とタスク5の二つあるので、m=1,2である。また、式(6)においてi=2として、nがタスク2、n21がタスク4、n22がタスク5となる。
タスク4、タスク5がそれぞれノード1、3に割り当てられているとすると、PE(n21)=PE(4)=1、PE(n22)=PE(5)=3となる。この条件の下、タスク2をノード2に割り当てたときのALST(2,2)を式(6)にしたがって計算すると、次式のようになる。
ALST(2,2)=min1≦m≦2{ALST(n2m,PE(n2m))−r(PE(n2m),J)c2m−w(n2), Deadline(n2)-w(n2)}・・・(7)
式(7)においてm=1としたとき、n21がタスク4(ブロック178)に対応するから、次式が成り立つ。
{ALST(4,PE(4))−r(PE(4),2)c24−w(2), Deadline(2)−w(2) }
={ALST(4,1))−r(1, 2)c24−w(2), Deadline(2)−w(2) }・・・(8)
式(7)においてm=2としたとき、n22がタスク5(ブロック184)に対応するから、次式が成り立つ。
{ALST(5,PE(5))−r(PE(5),2)c25−w(2), Deadline(2)−w(2) }
={ALST(5,3))−r(3, 2)c25−w(2), Deadline(2)−w(2) }・・・(9)
式(8)、式(9)の計算結果のうち最小のものをALST(2,2)と決定する。図9(a)の例では、式(8)の結果に対応するブロック174のALST(2,2)の方が、式(9)の結果に対応するブロック180のALST(2,2)よりも小さい、すなわち時刻が早いので、ブロック174のALST(2,2)が採用される。
図10は、上記処理をフローチャートとして表す。まず、対象タスクnをあるノードJに仮に割り当てる(S70)。開始時刻算出部144は、対象タスクnの後続タスクのALSTを計算し(S72)、対象タスクnの処理時間をタスク情報格納部120から取得する(S74)。また、開始時刻算出部144は、タスク情報格納部120からタスク間転送データ量を、ノード情報格納部126からレイテンシとスループットとを取得し、対象タスクnをノードJに割り当てたときの、対象タスクnから後続タスクへの通信時間を算出する(S76)。AESTの場合と同様に、対象タスクnと後続タスクとが同一ノードにある場合は、通信時間は「0」になる。
続いて、S72〜S76で計算した値について、「後続タスクALST−(対象タスク処理時間+通信時間)」を計算する(S78)。さらに、開始時刻算出部144は、デッドライン時刻から対象タスクの処理時間を減じたものを計算する(S80)。S70〜S80の一連の演算を、対象タスクnの先行タスクnimの全てについて実行し、S78、S80で算出される計算結果のうち最小値を、対象タスクnのALSTに決定する(S82)。
続いて、図6のフローチャートの各ステップを詳述していく。
図11は、図6中のタスク割り当て処S18、S20のフローチャートである。S18、S20は、割り当て対象となるタスクが異なるだけであり、同一の処理内容を繰り返す。ここでは、ノード事前指定のないタスクを別々の仮想ノードに割り当てた状態を初期状態として、各ノードを実在のノードに割り当てていく処理を実行する。タスク割り当て処理は、以下に述べるS30〜S44の対象タスク選択処理と、S46のノード選択処理を含む。
まず、開始時刻算出部144は、対象となる全タスクのAESTを図8のフローチャートにしたがって計算し(S30)、次に全タスクのALSTを図10のフローチャートにしたがって計算する(S32)。対象タスク選択部146は、対象となる全てのタスクが仮想ノードでないいずれかのノードに割り当て済みか否かを判定する(S34)。割り当て済みであれば(S34のY)、タスク割り当て処理を終了する。未だ仮想ノードに割り当てられているタスクがあれば(S34のN)、対象タスク選択部146は、ALSTとAESTの差分(ALST−AEST)を未割り当てのタスクについて計算し(以下、これを「タスク可動範囲」とも呼ぶ)、タスク可動範囲が最小となるタスクを選択する(S36)。S36でひとつのタスクが選択できれば(S38のY)、S40〜S44をスキップする。S36でタスク可動範囲が等しくなるタスクが複数ある場合は(S38のN)、対象タスク選択部146は、それらのうち、先行タスクまたは後続タスクとの間で最も長いタスク間通信時間となる経路を持つタスクを選択する(S40)。S40でひとつのタスクが選択できれば(S42のY)、S44をスキップする。S42で、通信時間が等しくなるタスクが複数ある場合(S42のN)、対象タスク選択部146は、それらのタスクのうち最小のAESTを持つタスクを選択する(S44)。こうして、割り当ての対象となるタスクが決定すると、ノード選択部148がノード選択処理を実行して割り当て対象タスクをいずれかのノードに振り分ける(S46)。この結果、他のタスクのAESTおよびALSTも変化するので、S30からの処理を繰り返す。
なお、S40において、通信経路の両側のタスク、つまり送信側のタスクと受信側のタスクがともに未割り当ての段階では、タスク間通信時間を求めることができない。この場合、対象タスク選択部146は、受信側のタスク(換言すれば、より後続側のタスク)を優先して割り当て対象のタスクとして選択するようにしてもよい。これによって、後述するタスクのグループ化を優先して実施することができる。
図11の割り当て処理は、仮想ノード(後述するグループ化のための仮想ノードを含む)に割り当てられた全てのタスクが、仮想でない実在のノードに割り当てられた時点で終了する(図17参照)。
なお、仮想ノードのタスク間通信時間を計算する際に用いるレイテンシ、スループットについては、予め定めた固定値を使用したり、実在するノードのレイテンシ、スループットの平均値を用いたりする方法が考えられる。
図11のフローチャートにおける処理をまとめると、本実施の形態において、「最も重要な」タスクとは、以下の三つの基準で選択される。
評価基準1.ALSTとAESTの差分(タスク可動範囲)が最小のタスク
評価基準2.候補となるタスクが複数ある場合、最も長いタスク間通信時間となる経路を持つタスク
評価基準3.基準2においても候補となるタスクが複数ある場合、AESTが最小となるタスク
図12は、ノード選択部148の詳細な機能ブロック図である。この図についても、これらの機能ブロックはハードウェア、ソフトウェアの組み合わせによって様々な形で実現できる。
ノード選択部148は、前処理部200、ノード選択判定部210、および後処理部230を含む。
前処理部200は、タスクの割当先ノードを選択するに当たり必要な処理を実行する。対象タスク確認部202は、割り当て対象タスクのデッドライン時刻の有無、処理時間、通信時間、ノード事前指定およびグループ事前指定があるか否かの情報を、格納部130から取得する。先後タスク確認部204は、割り当て対象タスクの先行タスクおよび後続タスクについての情報を格納部130から取得する。ノードリスト作成部206は、対象タスク確認部202および先後タスク確認部204の情報を参考にして、割り当て対象タスクを配置可能なノード情報が含まれるノードリストを作成する。
ノード選択判定部210は、AEST、ALSTおよび、前処理部200で準備された情報などに基づいて、割り当て対象タスクを割り当てるノードを選択する。
ノードリスト作成部206で作成されたノードリストは、ノードリスト格納部220に格納される。また、図5の開始時刻算出部144で計算されたAESTおよびALSTは、開始時刻格納部222に記憶されている。
空き時間検出部214は、割り当て対象タスクを仮に割り当てるノード(以下、「候補ノード」という)を選択した後、開始時刻格納部222内のAESTおよびALSTを使用して、候補ノード上での割り当て対象タスクの実行が可能となる空き時間を検出する。より具体的には、各ノードに割り当て対象タスクを割り当てた場合の仮AESTを計算する。割り当て対象タスクを候補ノードに割り当て可能であれば、その仮AESTに開始するように割り当てたと仮定し、割り当て対象タスクの最も重要な後続タスクを、最も早く開始できる時刻(後続タスクAEST)を求める。そして、後続タスクAESTが最小となるノードを割り当て対象タスクの割当先として選択する。候補ノードが複数ある場合には、仮AESTが最小のものを優先する。AEST条件判定部224は、空き時間検出部214で算出されるAESTの条件判定を実行する。
なお、「最も重要な後続タスク」は、割り当て対象タスクの後続タスクの中から、上述の評価基準1〜3にしたがって決定される。このとき、ALSTとAESTの差分、およびAESTについては、各後続タスクについての値を用いるが、タスク間通信時間については、割り当て対象タスクと各後続タスクとの間の通信時間を用いることに注意する。
後処理部230は、ノード選択判定部210で選択されたノードを受け取り、必要な後処理を実行する。後処理部230は、必要に応じてタスクのグループ化を実行するグループ化部226を含む。
図13は、ノード選択処理のフローチャートである。前処理では、割り当て対象タスクnの割当先候補となるノードを列挙するノードリストを作成する(S90)。ノードリスト内の各ノードに対してメインループを実行して、割り当て対象タスクnを配置するノードを選択する(S92)。後処理では、割り当て対象タスクnを選択されたノードに割り当てた上で、そのノードが後述する仮想ノードの場合には、タスクのグループ化を実行する(S94)。
図14は、図13におけるS90の前処理のフローチャートである。
ノードリスト作成部206は、割り当て対象タスクnのノード事前指定があるか否かを判定する(S100)。ノード事前指定があれば(S100のY)、そのノードをノードリストに加える(S102)。ノード事前指定がなければ(S100のN)、割り当て対象タスクnを配置可能な空きリソースを有するノードを検索し、そのノードをノードリストに加える(S104)。
次に、ノードリスト作成部206は、割り当て対象タスクnにデッドライン時刻が存在するか否かを確認する(S106)。デッドライン時刻がない場合(S106のN)、続くS108、S110をスキップする。デッドライン時刻がある場合(S106のY)、さらに、割り当て対象タスクの最も重要な先行タスクがいずれかのノードに割り当て済みか否かを判定する(S108)。割り当て済みであれば(S108のN)、S110をスキップし、割り当て済みでなければ(S108のY)、ノードリストに仮想ノードを追加する(S110)。この仮想ノードは、タスクを一時的にグループ化するために使用する。そして、メインループで使用する各変数に初期値をセットする(S112)。これで前処理は終了する。
なお、「最も重要な先行タスク」は、割り当て対象タスクの先行タスクの中から、上述の評価基準1〜3にしたがって決定される。このとき、ALSTとAESTの差分、およびAESTについては、各先行タスクについての値を用いるが、タスク間通信時間については、各先行タスクと割り当て対象タスクとの間の通信時間を用いることに注意する。
図15および図16は、図13におけるS92のメインループのフローチャートである。
空き時間検出部214は、ノードリスト内の全ノードについての検出処理が終了したか否かを判定する(S120)。終了していない場合は、ノードリストからひとつのノードを候補ノードJとして選択し(S122)、候補ノードJに割り当て対象タスクnを割り当てるだけのリソースが余っているか否かを判定する(S123)。リソースに余裕がなければ(S123のN)、S120に戻る。リソースが余っていれば(S123のY)、そのノードについて空き時間検出処理を実行して、割り当て対象タスクnの仮AESTを求める(S214)。仮AESTが算出可能であれば(S126のY)、図16に進む。仮AESTが算出不可能であれば(S126のN)、S120に戻る。
図16に移り、空き時間検出部214は、対象タスクnの重要後続タスクnがあるか否かを判定する(S140)。重要後続タスクnがある場合(S140のY)、タスクnを候補ノードJに仮に割り当てる(S142)。空き時間検出部214は、タスクnのノード指定があるか否かを判定する(S146)。このノード指定は、ノード事前指定と、このアルゴリズムにより割当先が決定された場合の両方を含む。ノード指定がない場合は(S146のN)、空き時間検出処理により、後続タスクnを候補ノードJに割り当てたときの後続タスクのAESTを計算する(S148)。ノード指定がある場合には(S146のY)、指定ノードに後続タスクnを割り当てたときの後続タスクのAESTを計算する(S150)。重要後続タスクnが既に割り当て済みであれば、対象タスクnを割り当てたことで値が変わるので、重要後続タスクnのAESTを再計算する。重要後続タスクnにノード事前指定があり、かつその指定されたノードに十分なリソースがない場合、重要後続タスクnのAESTを「∞」とする。なお、重要後続タスクnが存在しない場合には、後続タスクAESTを「0」とする。後続タスクのAESTを計算すると、仮に割り当てた割り当て対象タスクnを元に戻す(S152)。
次に、AEST条件判定部224は、S148またはS150で求めた後続タスクAESTが、S156でセットされる最小後続タスクAEST未満か否かを判定する(S154)。つまり、割り当て対象タスクnの割当先ノードには、後続タスクAESTが最小のものが優先される。これは、後続タスクのAESTが小さいほど、ノード経路を短くしてタスク間通信時間を短縮できるためである。後続タスクAESTが最小であれば(S154のY)、AEST条件判定部224は、候補ノードJを暫定的にベストノードにセットし、最小後続タスクAESTを現在の後続タスクAESTで書き換える。さらに、最小対象タスクAESTを、対象タスク仮AESTで書き換える(S158)。フローは図15のS120に戻り、ノードリスト内の別のノードについて上記処理を繰り返す。
後続タスクAESTが最小後続タスクAEST以上の場合は(S154のN)、AEST条件判定部224は、さらに、後続タスクAESTが最小後続タスクAESTと等しく、かつ、仮AESTがS158でセットされる最小仮AEST未満であるかを判定する(S156)。後続タスクAESTが最小後続タスクAESTと等しく、かつ、仮AESTが最小であれば(S156のY)、S158に進む。後続タスクAESTが最小後続タスクAESTより大きいか、または仮AESTが最小でない場合、対象タスクをこの候補ノードJに割り当てるべきでないので、フローはS120に戻り、別のノードについて上記処理を繰り返す。
図17は、図13におけるS94の後処理のフローチャートである。
図15のS120において、ノードリスト内の全ノードについての処理が終了すると、フローは図17に移る。後処理部232は、上記処理でベストノードが存在するか否かを判定する(S170)。ベストノードが存在しない場合、つまり割り当て対象タスクnの割当先ノードが見つからなかった場合には(S170のN)、このノード選択処理は失敗であり(S172)、適切なフォロー処理を実行する。ベストノードが存在する場合(S170のY)、割り当て対象タスクnをそのベストノードに割り当てる(S174)。割り当てられたノードが仮想ノードである場合(S176のY)、グループ化部226がタスクのグループ化処理を実行した上で(S178)、ノードリストをリセットし(S180)、今回のノード選択処理は成功となる(S182)。割り当てられたノードが仮想ノードでない場合(S176のN)、S178およびS180はスキップする。
図18は、図15のS124、図16のS148およびS150の空き時間検出処理の詳細なフローチャートである。空き時間検出部214は、候補ノードJに割り当て済みの全てのタスクについて、AESTとALSTを計算する(S190)。なお、この計算は開始時刻算出部144によって実行されてもよい。次に、対象タスクを配置可能な位置を選択し(S192)、先行タスクの終了時刻から後続タスクの開始時刻までの間に、対象タスクnの処理時間分の空きがあるか否かを判定する(S194)。空き時間があれば(S194のY)、そのタスクのAESTを出力する(S196)。空き時間がなければ(S194のN)、そのノード内で、対象タスクを配置する可能性のある全ての位置について検討したか否かを判定し(S198)、未検討の配置があれば(S198のN)、S192に戻り他の配置について検討する。全ての位置について確認した場合には(S198のY)、「PUSH型挿入」による配置が可能か否かを判定する(S200)。
ここで、PUSH型挿入について説明する。既に候補ノードJに割り当て済みの各タスクのALSTを遅延させることによって、対象タスクn(グループ化されたタスクの場合は、同じグループのタスク全て)を候補ノードJに割り当てられるか否かを検討する。つまり、アプリケーション全体の終了時刻が遅れることを許容して、対象タスクを必ずいずれかの実在のノードに割り当てるようにする。
PUSH型挿入による配置が可能であれば(S200のY)、そのタスクのAESTを出力する(S196)。PUSH型挿入による配置が不可能であれば(S200のN)、このノードJには対象タスクの割り当てが不可能となる。
図19(a)、図19(b)は、図18の空き時間検出処理を模式的に説明する図である。空き時間検出処理では、既に候補ノードJに割り当て済みの各タスクの最遅開始時刻ALSTを遅らせずに、対象タスクnを候補ノードJに割り当てることができるか否かを判定する。
空き時間検出部214は、候補ノードJにタスクnjkとタスクnjk+1が既に割り当て済みであるとき、割り当て対象タスクnをさらに配置可能か否かを判定する。但し、対象タスクnの挿入位置(つまり、タスクnjkとタスクnjk+1の間)より後には、対象タスクnの先行タスクが存在せず、挿入位置より前には、対象タスクnの後続タスクが存在しないようにする。
タスクnの処理終了時刻は、AESTとタスクnの処理時間を用いて、{ALST(nj,J)+w(nj)}で表せる。また、タスクnの最先開始時刻は、AEST(nj,J)で表せる。したがって、割り当て対象タスクをタスクnjkとタスクnjk+1の間に配置できるかは、タスクnjkの終了時刻とタスクnjk+1の開始時刻の差分である「タスク実行可能範囲」が、対象タスクnの処理時間以上であればよいので、次式が成立すればよい。
min{ALST(ni,J)+w(ni), ALST(njk+1,J)}−max{AEST(ni,J), AEST(njk,J)+w(njk)}−(AEST(ni)-ALST(ni))≧w(ni)・・・(10)
第1項では、タスクnjk+1の最遅開始時刻と、対象タスクnの処理終了時刻のうち最も遅い場合とを比較して、時刻が早い方が選択される。第2項では、対象タスクnの最先開始時刻と、タスクnjkの処理終了時刻のうち最も早い場合とを比較して、時刻が遅い方が選択される。これらの差分が対象タスクn自体の処理時間よりも長ければ、対象タスクnをタスクnjkとタスクnjk+1との間に配置することが可能であり、差分が対象タスクn自体の処理時間よりも短ければ、対象タスクnをそれらの間に配置することが不可能であると判定される。なお、第3項は、AESTとALSTの基準となる時刻が異なることに基づく補正項である。
割り当て可能であれば、空き時間検出部214は、対象タスクnを配置できる最先のAESTを返す。割り当て不可であれば、上述の「PUSH型挿入」による配置を検討する。
図19(a)、図19(b)を参照して、さらに説明する。図19(a)のケースでは、対象タスクnの最先開始時刻AEST(ni,J)の方がタスクnjkの処理終了時刻AEST(njk,J)+w(njk)よりも遅い時刻であるため、対象タスクnの最先開始時刻が採用される。また、対象タスクnの処理終了時刻ALST(ni,J)+w(ni)は、タスクnjk+1の最遅開始時刻ALST(njk+1,J)よりも早い時刻であるため、対象タスクnの処理終了時刻が採用される。したがって、このケースでは対象タスクnの実行可能範囲は次式のようになる。
(実行可能範囲)={ALST(ni,J)+w(ni)}−AEST(ni,J)・・・(11)
図19(b)のケースでは、タスクnjkの処理終了時刻AEST(njk,J)+w(njk)の方が対象タスクnの最先開始時刻AEST(ni,J)よりも遅い時刻であるため、タスクnjkの処理終了時刻が採用される。また、タスクnjk+1の最遅開始時刻ALST(njk+1,J)の方が対象タスクnの処理終了時刻ALST(ni,J)+w(ni)よりも早い時刻であるため、タスクnjk+1のALSTが採用される。したがって、このケースでは対象タスクnの実行可能範囲は次式のようになる。
(実行可能範囲)=ALST(njk+1,J)−{AEST(njk,J)+w(njk)}・・・(12)
図20は、図18のS200における「PUSH型挿入」を説明する図である。図20の左側のブロック270に示すように、対象タスクnの実行可能範囲内では、対象タスクnの処理時間をタスクnjk+1の処理時間と重ねない限り対象タスクnをノードJに配置できない場合がある。このようなときは、空き時間検出部214は、図20の右側のブロック272に示すように、タスクnjk+1のALSTを変更してタスクnjk+1の開始時刻を後ろにずらすことによって、対象タスクnの配置を実現する。これは、アプリケーション全体の終了時刻を遅らせることにつながる。
以上説明したように、空き時間検出処理では、タスクの割当先ノードの選択方法として、対象タスクとその最も重要な後続タスク(すなわち、未だ仮想ノードに割り当てられている後続タスクのうち、そのAESTとALSTとの差が最小のタスク)とを割り当てた際に、後続タスクAESTが最小となるノードを選ぶようにした。これによって、対象タスクの1ステップ後の後続タスクの割り当てまでを考慮して対象タスクの割当先ノードが選択されることになるので、対象タスクのAESTは早期にあるが、後続タスクのAESTが遅れ、結果として全体の処理時間が長期化してしまうような事態を回避することができる。
(実施例)
本発明の実施の形態について詳細に説明した。以降では、実施の形態において述べた各処理を適用してタスクをノードに割り当てる様子を、具体例を参照しつつ説明する。
図1に示した5つのノードを含む分散アプリケーション実行システムにおいて、図21に示す先後関係のあるタスクを処理する場合について説明する。図中、白丸内の数字は、「プレイヤーの番号−タスク番号」を表しており、例えば「1−1」は、「プレイヤー1の1番目のタスク」を表している。図21では、プレイヤー1に関連したタスクとして「1−1」〜「1−6」、プレイヤー2に関連したタスクとして「2−1」〜「2−6」が含まれ、さらに、上述した対戦ゲームアプリケーションの衝突処理のように、両プレイヤーに対しての演算を同一ノードで実行すべきタスクとして「3−1」が規定される。
さらに、ノード事前指定として、タスク「1−1」「1−6」についてはノード1が指定され、タスク「2−1」「2−6」についてはノード5が指定されているとする。これらは、コントローラによる入力処理やディスプレイへの画面表示などの、各プレイヤーのノードでのみ実施されるべきタスクである。また、タスク「3−1」についてはノード4が指定されているとする。
また、デッドライン時刻として、プレイヤー1の経路については200ms、プレイヤー2の経路については250msが設定されている。
さらに、説明を簡単にすべく、各タスク間の通信時間計算のためのレイテンシは5ms、スループットは100Mbpsに統一する。また、各ノードとも計算リソースは十分に空いているものとする。
まず、情報収集部108により、各タスクの処理時間、レイテンシ、スループット、転送データ量を取得する。図22は、それらを取得した後のタスク相関図であり、図中にそれらの値が記載してある。白丸の左下または右下の数字がタスクの処理時間であり、矢印にそって書かれた数字が転送データ量である。タスク間通信時間は、「レイテンシ+(スループット×転送データ量)」で算出される。
続いて、ノード事前指定されているタスクがそれぞれのノードに配置される。このとき、タスク間の先後関係は当然考慮され、また必要に応じて各ノードの空きリソース量も確認される。
続いて、ノード事前指定のないタスクを仮想ノードに配置し、開始時刻算出部144により、各タスクについてAESTおよびALSTが計算される。この計算には、先に述べたデッドライン時刻から、タスクの処理時間、通信時間を用いて、上述した数式を使用して計算される。例えば、タスク2−6については、デッドライン時刻250msからタスク2−6の処理時間10msを減じた240msがALSTとなる。タスク2−5については、タスク2−6のAEST240msから、5Mb分の通信時間50msと、レイテンシ5msと、タスク2−5の処理時間20msを減じた165msがALSTとなる。他のタスクについても同様である。なお、タスク3−1については、タスク1−6から辿る左側の経路と、タスク2−6から辿る右側の経路の両方から算出するため、ALSTが二つ求められるが、このような場合は、左側の経路から求められた、より小さい値である−5msがALSTとなる。
AESTについては、タスク1−1および2−1のAESTを0とし、そこからタスク処理時間と通信時間を加えていく。例えば、タスク1−2であれば、タスク1−1の処理時間10ms、1Mb分の通信時間10ms、およびレイテンシ5msを加えた25msがAESTとなる。他のタスクについても同様である。
次に、(ALST−AEST)で求められるタスク可動範囲を算出する。以上の計算の結果、各タスクのAEST、ALST、タスク可動範囲は、図23に示す表のようになる。
続いて、ノードの選択に移る。最も余裕のない経路、すなわちタスク可動範囲が最小(−130ms)のタスクのうち、通信時間の最も長いものを検出する。図23から分かるように、これに適合するのはタスク1−4とタスク1−5間の経路(以下、経路Aという)、およびタスク1−5とタスク1−6間の経路(以下、経路Bという)である。二つの経路A、Bの通信時間は55msで等しいので、対象タスクを決定するために、それらの後続タスクのAESTについてさらに検討する。この場合、経路Aの後続タスク1−5のAEST(245ms)と経路Bの後続タスク1−6のAEST(320ms)を比較すると、タスク1−5のAESTの方が小さいので、まずタスク1−5の配置を先に考慮する。
代替的に、二つの経路A、Bの通信時間が55msで等しいとき、次のような手順で対象タスクを決定してもよい。まず、経路Aについて考えると、タスク1−4とタスク1−5はどちらも未割り当てなので、上述したように、グループ化を優先して行うべく後続側のタスク1−5を割り当て候補とする。次に、経路Bについて考えると、タスク1−6は割り当て済みなので、タスク1−5が割り当て候補となる。したがって、タスク1−5の配置を先に考慮する。
ここで、空き時間検出処理により、タスク1−5のベストノード、後続タスクAEST、仮AESTを求める。最初の状態では、タスク1−5の先行タスクである1−4が未割り当てなので、タスク1−4だけを割り当てた仮想ノード0を想定する。この時点では、タスク1−5のベストノードはヌル値であり、後続タスクAEST、仮AESTは「∞」である。また、タスク1−5を割り当て可能なノードのリストには、仮想ノード0およびノード1〜5の6つのノードが登録される。ここで、まずリストの先頭にある仮想ノード0にタスク1−5を割り当てる場合を考える。上記式(2)の計算をすると、仮想ノード0に割り当てた場合のタスク1−5の仮AESTは190msになる。
次に、重要後続タスクnとして、タスク1−6を選択する。タスク1−5を仮想ノード0に割り当てた場合は、タスク1−6のAESTは265msになる。
したがって、後続タスクAEST(265ms)<最小後続タスクAEST(∞)になるので、ベストノードに仮想ノード「0」、最小後続タスクAESTに「265」、最小仮AESTに「190」が代入される。
上記と同様の計算を、残りのノード1〜5について繰り返す。J=1のとき、後続タスクAESTは265ms、仮AESTは245msになるため、ベストノードは0のまま変更されない。J=2〜5についても同様である。
このように、DCP法とは異なり、後続タスクAESTの小さい方を優先するが、後続タスクAESTが同一の場合には、仮AESTが小さい方を優先する。
その結果、ベストノードは「0」になるので、タスク1−5は仮想ノード0に割り当てられる。すなわち、タスク1−4とは同じノードに割り当てるべきと判断され、タスク1−4と1−5はグループ化される(図24参照)。グループ化されたタスクは、以後の計算ではひとつのタスクと見なされて処理される。すなわち、グループ内のタスク間の通信時間は0であり、タスクの処理時間のみ加算されたもので計算する。
1−4と1−5がグループ化された状態で、全タスクのAESTとALSTを更新する。グループ化されて同一ノードに配置されたため、1−4と1−5の間の通信時間が「0」になることで、全タスクのAEST、ALSTが更新される。更新後の各タスクのAEST、ALST、タスク可動範囲を図25に示す。
この結果、今度はタスク可動範囲が−80msのタスクが割り当て対象になり、これらのうち通信時間の最も長い経路として、タスク2−4と2−5の間と、タスク2−5と2−6の間(55ms)が検出される。上述と同様に、タスク2−5について、ノード選択処理が実行される。その結果、2−4と2−5はグループ化される。
次に、タスク1−4と1−5のグループについての計算が実施され、その計算結果に従うと、タスク1−4、1−5、1−6は同一のグループになる。ここで、タスク1−6は、ノード1に配置されるよう指定されている。したがって、タスク1−4、1−5、1−6は、ノード1に割り当てられることが決定される(図26参照)。
このように計算を繰り返していくことによって、最終的に各タスクは図27に示すようにノードに割り当てられる。
以上説明したように、実施の形態によれば、最先開始時刻AESTと最遅開始時刻ALSTの差分であるタスク可動範囲が最大のタスクからノードへの割り当てを実行する。また、タスクのノードへの割り当てを実行する際に、重要な経路、すなわちタスク間の通信時間が最大になるタスクを割り当てるノードから順に割り当てを実行するようにした。これによって、通信遅延時間を効率的に削減することができる。また、より重要なタスクから順に割り当てが決定されるため、重要度の低いタスクによってリソースが先に消費されることが回避され、タスクの実施に必要なリソースを先に確保することができる。
また、最遅開始時刻ALSTを算出する際に、タスクのデッドライン時刻を考慮して算出するようにした。これによって、タスクの終了期限に対する余裕時間を考慮して、最遅開始時刻ALSTを計算することができる。
また、タスク割り当てを実行することによって、ネットワーク内の複数のノード間で計算リソース(例えば、CPU時間、メモリ容量など)を融通することができる。したがって、単一機器の性能以上の能力を発揮させることも可能となる。
従来は、分散ネットワーク環境における格闘ゲームなどでは、衝突判定を専門に担当する専用サーバを準備して整合性を維持していた。この方式では、サーバとノード間の通信による遅延時間が大きくなりがちである。また、参加プレイヤー数の増加につれ、衝突判定の演算量も増大するので、サーバを増強する必要がある。
これに対し、本実施の形態では、専用サーバを用意せず全ての演算はノードで実行されるため、専用サーバの増強を考える必要はない。
また、本発明の仕組みを採用することによって、並列システムや分散システムでもリアルタイム処理を実行することができる。
従来では、ネットワークに存在するノード数、各ノードの性能、ネットワークの構造などが事前に分からない場合や、アプリケーション実行中にノードの増減が発生する分散ネットワーク環境では、ノード間でタスクをリアルタイムでやりとりする処理は不可能であった。これに対し、本発明では、ノード間の接続を組み替えることによってネットワークの構造が変化したり、または、ノードの追加や減少などが生じた場合であっても、ノードについての情報を処理することによって、適切なタスク割り当て処理を継続することができる。
さらに、本発明では、特定のタスクを割り当てるノードを事前に指定することが可能なので、キー入力や音声出力、画像出力などの、特定ユーザの担当ノードで実行しなければ意味のないタスクを必ず担当ノードに割り当てることができる。
また、複数のタスクで使用する同じコンテキストデータを持つタスクを、グループ化によって同じノードにまとめて割り当てるように指定することも可能である。これによって、通信量および通信回数を削減することができ、また通信遅延の影響を最小にすることができる。
このように、本発明では、ノード事前指定を活用することによって、多様な種類および性質のタスクを扱うことができる。
本発明では、従来の方法と比較してタスク割り当てに要する計算量は増加する傾向にあるが、上述した様々な特徴のようにタスクを割り当てるノード選択の柔軟性が高いため、全体の処理をより早期に終了可能なタスク配置が実現されうる。
以上、実施の形態をもとに本発明を説明した。これらの実施の形態は例示であり、各構成要素またはプロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
実施の形態で述べた構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。また、本明細書にフローチャートとして記載した方法は、その順序にそって時系列的に実行される処理のほか、並列的または個別に実行される処理をも含む。
本発明の一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータとして実現してもよいし、あるいは、各種のプログラムをインストールすることで各種の機能を実行することが可能な汎用のコンピュータに、ネットワークや記録媒体からソフトウェアをインストールすることによって実現してもよい。
実施の形態では、複数ノードがネットワークで接続された分散アプリケーション実行環境について述べたが、ひとつのノードに複数のプロセッサが存在するマルチプロセッサシステムにおいて、それらプロセッサ間で処理を分担する「並列アプリケーション実行環境」に対しても、本発明を適用することができる。この場合、分散環境でのノード間のレイテンシ、スループットを、ノード内のプロセッサ間のレイテンシ、スループットで置き換えることで、上述と同様のアルゴリズムを適用できる。
さらに、それらマルチプロセッサシステムのノード同士がネットワークで接続された環境に対しても、本発明を適用することができる。この場合、ひとつのノード内に存在する複数のプロセッサ間のレイテンシ、スループットと、別ノードのプロセッサまでのレイテンシ、スループットとを適切に設定することによって、上述と同様のアルゴリズムを適用することができる。
実施の形態に係る分散アプリケーション実行システムの構成図である。 各ノードを構成する汎用コンピュータの概略構成を示す図である。 各ノードで実行されるタスクと、タスク間の実行順序の制約を表す図である。 タスク割り当て結果の一例を示す図である。 実施の形態に係るタスク割り当て処理を実行するノードの機能ブロック図である。 タスク割り当て処理のメインフローチャートである。 図7(a)はAESTの算出方法を模式的に示し、図7(b)はタスク間の依存関係の一例を示す図である。 AESTの計算処理のフローチャートである。 図9(a)はALSTの算出方法を模式的に示し、図9(b)はタスク間の依存関係の一例を示す図である。 ALSTの計算処理のフローチャートである。 図6におけるタスク割り当て処理のフローチャートである。 ノード選択部の詳細な機能ブロック図である。 図11におけるノード選択処理のフローチャートである。 図13における前処理の詳細なフローチャートである。 図13におけるメインループの詳細なフローチャートである。 図13におけるメインループの詳細なフローチャートである。 図13における後処理の詳細なフローチャートである。 図15、図16における空き時間検出処理のフローチャートである。 図19(a)、図19(b)は、空き時間検出処理の計算手法を模式的に示す図である。 図18のS200における「PUSH型挿入」を説明する図である。 タスク割り当ての実行対象となるタスク経路の具体例を示す図である。 タスク処理時間、通信時間、事前指定ノードを記載したタスク経路を示す図である。 図22の各タスクのAEST、ALST、タスク可動範囲を示す表である。 タスク1−4とタスク1−5とをグループ化した後のタスク経路を示す図である。 図24の各タスクのAEST、ALST、タスク可動範囲を示す表である。 タスク1−4、1−5、1−6をノード1に割り当てた後のタスク経路を示す図である。 タスク割り当て処理後のタスク経路を示す図である。
符号の説明
10 ノード、 100 コンピュータ、 102 ユーザ入力部、 104 プログラム解析部、 108 情報収集部、 110 タスク情報取得部、 112 ノード情報取得部、 118 事前指定受付部、 120 タスク情報格納部、 126 ノード情報格納部、 130 格納部、 140 タスク割り当て部、 144 開始時刻算出部、 146 対象タスク選択部、 148 ノード選択部、 150 タスク配置部、 200 前処理部、 202 対象タスク確認部、 204 先後タスク確認部、 206 ノードリスト作成部、 210 ノード選択判定部、 214 空き時間検出部、 220 ノードリスト格納部、 222 開始時刻格納部、 224 AEST条件判定部、 226 グループ化部、 230 後処理部。

Claims (12)

  1. それぞれがプロセッサを備え相互に通信可能に接続された複数のノードを含む分散処理システムにおいて、アプリケーションに含まれる先後関係を有する複数のタスクを複数のノード間での計算結果の整合性が維持されるように各ノードに割り当てるタスク割り当て方法であって、
    タスク割り当ての処理を実行するノードのプロセッサが、
    前記アプリケーションを解析して、または予め定められた、タスク間の先後関係、各タスクに科せられる時間制約、タスク処理時間、タスク間転送データ量、ノード間通信スループットを取得し、
    タスク毎に、当該タスクと先後関係にある全ての先行タスクについて、先行タスクの処理開始時刻と、先行タスクの処理時間と、当該タスクと先行タスクの間のタスク間転送データ量をノード間通信スループットで除して求めた通信時間とを加えた時刻を算出し、算出された時刻のうち最も遅い時刻を、当該タスクを最も早く処理開始可能な時刻である最先開始時刻と決定し、
    タスク毎に、当該タスクと先後関係にある全ての後続タスクについて、後続タスクの処理開始時刻から、当該タスクの処理時間と当該タスクと後続タスクの間のタスク間転送データ量をノード間通信スループットで除して求めた通信時間とを減じた時刻を算出し、算出された時刻のうち最も早い時刻を、当該タスクの処理を終了するための最も遅い開始時刻である最遅開始時刻と決定し、
    前記最遅開始時刻から前記最先開始時刻を減じたタスク可動範囲を算出し、
    少なくとも一部のタスクについて、タスクが割り当てられるべきノードの事前指定を受け付け、
    前記少なくとも一部のタスクを事前指定されたノードに優先して割り当てた後、残りのタスクについて、前記タスク可動範囲が小さいタスクから順に割り当て対象タスクと決定し、該割り当て対象タスクの処理時間分の空き時間を有するノードを割当先ノードとして選択し、該割当先ノードに前記割り当て対象タスクを割り当てることを特徴とするタスク割り当て方法。
  2. 前記タスク割り当ての処理を実行するノードのプロセッサが、
    前記事前指定がなされていないタスクを、前記複数のノードに実際に割り当てる前に一時的に配置するための仮想ノードに割り当て、
    前記仮想ノードに割り当てられたタスクと他のノードに割り当てられたタスクとの間で、前記仮想ノードと他のノードとの間の通信スループットとして予め定められている仮想スループットでタスク間転送データ量を除して求めた仮想データ通信時間を算出し、該仮想データ通信時間を前記通信時間の代わりに使用して前記最先開始時刻および最遅開始時刻を算出することを特徴とする請求項に記載のタスク割り当て方法。
  3. 前記タスク割り当ての処理を実行するノードのプロセッサが、
    前記タスク可動範囲が最小となるタスクが複数ある場合、当該タスクと後続タスクとの間でのタスク間転送データ量を、当該タスクと後続タスクが割り当てられたノード間のノード間通信スループットで除して求めた通信時間が最長となるタスクを選択し、
    選択したタスクと後続タスクとを一体的に取り扱うようグループ化し、
    グループ単位で前記タスク可動範囲を算出し、
    前記タスク可動範囲が小さいグループからグループ単位で割当先ノードを選択し、該割当先ノードに前記割り当て対象タスクを割り当てることを特徴とする請求項1または2に記載のタスク割り当て方法。
  4. それぞれがプロセッサを備え相互に通信可能に接続された複数のノードを含む分散処理システムにおいて、アプリケーションに含まれる先後関係を有する複数のタスクを複数のノード間での計算結果の整合性が維持されるように各ノードに割り当てるタスク割り当て装置であって、
    タスク間の先後関係、各タスクに科せられる時間制約、タスク処理時間、タスク間転送データ量、ノード間通信スループットを取得する情報取得部と、
    タスク毎に、当該タスクと先後関係にある全ての先行タスクについて、先行タスクの処理開始時刻と、先行タスクの処理時間と、当該タスクと先行タスクの間のタスク間転送データ量をノード間通信スループットで除して求めた通信時間とを加えた時刻を算出し、算出された時刻のうち最も遅い時刻を、当該タスクを最も早く処理開始可能な時刻である最先開始時刻と決定し、かつ、タスク毎に、当該タスクと先後関係にある全ての後続タスクについて、後続タスクの処理開始時刻から、当該タスクの処理時間と、当該タスクと後続タスクの間のタスク間転送データ量をノード間通信スループットで除して求めた通信時間とを減じた時刻を算出し、算出された時刻のうち最も早い時刻を、当該タスクの処理を終了するための最も遅い開始時刻である最遅開始時刻と決定する、開始時刻算出部と、
    少なくとも一部のタスクについて、タスクが割り当てられるべき割当先ノードの指定を受け付ける事前指定受付部と、
    前記少なくとも一部のタスクを指定された割当先ノードに優先して割り当てた後、残りのタスクについて前記最遅開始時刻から前記最先開始時刻を減じたタスク可動範囲を算出し、該タスク可動範囲が小さいタスクから順に割り当て対象タスクと決定し、該割り当て対象タスクの処理時間分の空き時間を有するノードを割当先ノードとして選択するノード選択部と、
    選択された割当先ノードに前記割り当て対象タスクを配置するタスク配置部と、
    を備えることを特徴とするタスク割り当て装置。
  5. 割当先ノードの事前指定がなされていないタスクを、前記複数のノードに実際に割り当てる前に一時的に配置するための仮想ノードに割り当て、前記仮想ノードに割り当てられたタスクと他のノードに割り当てられたタスクとの間で、前記仮想ノードと他のノードとの間の通信スループットとして予め定められている仮想スループットでタスク間転送データ量を除して仮想データ通信時間を算出するタスク間通信時間取得部をさらに備え、
    前記開始時刻算出部は、前記仮想データ通信時間を前記通信時間の代わりに使用して前記最先開始時刻および前記最遅開始時刻を算出することを特徴とする請求項に記載のタスク割り当て装置。
  6. 前記ノード選択部は、複数の割り当て対象タスクについて前記タスク可動範囲が同一の場合、割り当て対象タスクとその後続タスクとの間の前記仮想データ通信時間が大きな割り当て対象タスクについて、割当先ノードを優先的に選択することを特徴とする請求項に記載のタスク割り当て装置。
  7. 前記ノード選択部は、優先的に割当先ノードが決定された割り当て対象タスクとその後続タスクとを同一ノードに割り当てることを特徴とする請求項に記載のタスク割り当て装置。
  8. 前記ノード選択部は、複数の割り当て対象タスクについて後続タスクとの間の前記仮想データ通信時間が同一である場合、全ての割り当て対象タスクのうち最先開始時刻が最小であるタスクについて、割当先ノードを優先的に選択することを特徴とする請求項に記載のタスク割り当て装置。
  9. 前記ノード選択部は、ひとつ以上のタスクが既に割り当てられているノードに対してさらに割り当て対象タスクを割り当てるとき、前記ノードに前記割り当て対象タスクの処理時間分の空き時間があるか否かを判定し、空き時間がないとき、前記ノードに割り当て済みのタスクの最遅開始時刻を移動させることで前記空き時間を作れるか否かを判定する空き時間検出部をさらに含むことを特徴とする請求項4ないし8のいずれかに記載のタスク割り当て装置。
  10. 前記ノード選択部は、前記タスク可動範囲が最小となる割り当て対象タスクが複数ある場合、割り当て対象タスクと後続タスクとの間でのタスク間転送データ量を、割り当て対象タスクと後続タスクが割り当てられたノード間のノード間通信スループットで除して求めた通信時間が最長となるタスクをグループ化するグループ化部をさらに備え、
    前記開始時刻算出部は前記グループを単位として前記最先開始時刻と最遅開始時刻とを算出し、
    前記ノード選択部は、前記グループを単位として割当先ノードを選択し、選択した割当先ノードにグループ内の全てのタスクを割り当てることを特徴とする請求項ないしのいずれかに記載のタスク割り当て装置。
  11. 前記事前指定受付部は、複数のタスクをグループ化する指定を受け付け、
    前記グループ化部は、指定通りにタスクのグループ化を実行することを特徴とする請求項10に記載のタスク割り当て装置。
  12. それぞれがプロセッサを備え相互に通信可能に接続された複数のノードを含む分散処理システムにおいて、アプリケーションに含まれる先後関係を有する複数のタスクを複数のノード間での計算結果の整合性が維持されるように各ノードに割り当てるタスク割り当てプログラムであって、
    前記アプリケーションを解析して、または予め定められた、タスク間の先後関係、各タスクに科せられる時間制約、タスク処理時間、タスク間転送データ量、ノード間通信スループットを取得する機能と、
    タスク毎に、当該タスクと先後関係にある全ての先行タスクについて、先行タスクの処理開始時刻と、先行タスクの処理時間と、当該タスクと先行タスクの間のタスク間転送データ量をノード間通信スループットで除して求めた通信時間とを加えた時刻を算出し、算出された時刻のうち最も遅い時刻を、当該タスクを最も早く処理開始可能な時刻である最先開始時刻と決定する機能と、
    タスク毎に、当該タスクと先後関係にある全ての後続タスクについて、後続タスクの処理開始時刻から、当該タスクの処理時間と、当該タスクと後続タスクの間のタスク間転送データ量をノード間通信スループットで除して求めた通信時間とを減じた時刻を算出し、算出された時刻のうち最も早い時刻を、当該タスクの処理を終了するための最も遅い開始時刻である最遅開始時刻と決定する機能と、
    前記最遅開始時刻から前記最先開始時刻を減じたタスク可動範囲を算出する機能と
    少なくとも一部のタスクについて、タスクが割り当てられるべきノードの事前指定を受け付ける機能と、
    前記少なくとも一部のタスクを事前指定されたノードに優先して割り当てた後、残りのタスクについて、前記タスク可動範囲が小さいタスクから順に割り当て対象タスクと決定し、該割り当て対象タスクの処理時間分の空き時間を有するノードを割当先ノードとして選択し、該割当先ノードに前記割り当て対象タスクを割り当てる機能と、
    タスク割り当ての処理を実行するノードのプロセッサに実現させるためのタスク割り当てプログラム。
JP2005330887A 2005-11-15 2005-11-15 タスク割り当て方法およびタスク割り当て装置 Expired - Fee Related JP4781089B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2005330887A JP4781089B2 (ja) 2005-11-15 2005-11-15 タスク割り当て方法およびタスク割り当て装置
KR1020060111586A KR101343020B1 (ko) 2005-11-15 2006-11-13 태스크 할당방법 및 태스크 할당장치
US11/559,458 US7930339B2 (en) 2005-11-15 2006-11-14 Task allocation method and task allocation apparatus
EP06255820.0A EP1785861B1 (en) 2005-11-15 2006-11-14 Task allocation method and task allocation apparatus
CN2006101603694A CN1967488B (zh) 2005-11-15 2006-11-15 任务分配方法和任务分配装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005330887A JP4781089B2 (ja) 2005-11-15 2005-11-15 タスク割り当て方法およびタスク割り当て装置

Publications (3)

Publication Number Publication Date
JP2007140710A JP2007140710A (ja) 2007-06-07
JP2007140710A5 JP2007140710A5 (ja) 2009-01-08
JP4781089B2 true JP4781089B2 (ja) 2011-09-28

Family

ID=37946038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005330887A Expired - Fee Related JP4781089B2 (ja) 2005-11-15 2005-11-15 タスク割り当て方法およびタスク割り当て装置

Country Status (5)

Country Link
US (1) US7930339B2 (ja)
EP (1) EP1785861B1 (ja)
JP (1) JP4781089B2 (ja)
KR (1) KR101343020B1 (ja)
CN (1) CN1967488B (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040725A1 (en) * 2006-08-11 2008-02-14 Barrie Jon Moss Method and apparatus for a parallel model of tasks including abstracted execution and software development
US20080244602A1 (en) * 2007-03-30 2008-10-02 Bennington Bud J Method for task and resource management
JP2009020692A (ja) * 2007-07-11 2009-01-29 Toshiba Corp タスク管理装置、タスク管理方法及びタスク管理プログラム
US8959516B2 (en) 2007-07-30 2015-02-17 International Business Machines Corporation Methods and systems for coordinated financial transactions in distributed and parallel environments
WO2009029549A2 (en) * 2007-08-24 2009-03-05 Virtualmetrix, Inc. Method and apparatus for fine grain performance management of computer systems
KR100953485B1 (ko) 2008-02-26 2010-04-16 연세대학교 산학협력단 항공 레이저 측량 데이터의 병렬 처리 시스템 및 그 방법
US8812578B2 (en) 2008-11-07 2014-08-19 International Business Machines Corporation Establishing future start times for jobs to be executed in a multi-cluster environment
US8782653B2 (en) * 2010-03-26 2014-07-15 Virtualmetrix, Inc. Fine grain performance resource management of computer systems
US8677071B2 (en) * 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
US8973010B2 (en) * 2010-05-28 2015-03-03 Varian Medical Systems International, AG Scheduling image recognition tasks based on task dependency and phase
FR2960732B1 (fr) * 2010-06-01 2012-06-29 Bull Sas Procede de routage pseudo-dynamique dans un cluster comprenant des liens de communication statiques et programme d'ordinateur mettant en oeuvre ce procede
US8930896B1 (en) * 2010-07-23 2015-01-06 Amazon Technologies, Inc. Data anonymity and separation for user computation
US9274862B2 (en) * 2010-12-09 2016-03-01 Mimecast North America Inc. Reducing latency in performing a task among distributed systems
US9124508B2 (en) * 2011-05-23 2015-09-01 Nec Corporation Communication control device communication control system, communication control method and program
KR20130035128A (ko) * 2011-09-29 2013-04-08 한국과학기술정보연구원 지구환경 관측자료에 대한 자료제공시스템 및 지구환경 관측자료에 대한 자료제공방법
US9430286B2 (en) * 2011-12-12 2016-08-30 International Business Machines Corporation Authorizing distributed task processing in a distributed storage network
CN102521056B (zh) * 2011-12-28 2013-08-14 用友软件股份有限公司 任务分配装置和任务分配方法
JP5971334B2 (ja) * 2012-04-18 2016-08-17 日本電気株式会社 タスク配置装置、タスク配置方法、および、コンピュータ・プログラム
WO2014027444A1 (ja) * 2012-08-13 2014-02-20 日本電気株式会社 スケジューリング装置、及び、スケジューリング方法
WO2014034060A1 (ja) * 2012-08-30 2014-03-06 日本電気株式会社 イベント処理制御装置、ノード装置、イベント処理システム、及び、イベント処理制御方法
CN103870317B (zh) * 2012-12-10 2017-07-21 中兴通讯股份有限公司 云计算中的任务调度方法及系统
KR101770191B1 (ko) * 2013-01-30 2017-08-23 한국전자통신연구원 자원 할당 방법 및 그 장치
CN104035747B (zh) * 2013-03-07 2017-12-19 伊姆西公司 用于并行计算的方法和装置
US9836330B2 (en) 2013-07-16 2017-12-05 Hitachi, Ltd. Virtual resource management tool for cloud computing service
JP6213167B2 (ja) * 2013-11-07 2017-10-18 富士通株式会社 分散配備装置、分散配備方法、および分散配備プログラム
CA3114544A1 (en) 2013-12-05 2015-06-11 Ab Initio Technology Llc Managing interfaces for dataflow composed of sub-graphs
CN103631751B (zh) * 2013-12-17 2016-04-27 武汉科技大学 一种基于连接特征的多任务集合划分方法
US9418348B2 (en) * 2014-05-05 2016-08-16 Oracle International Corporation Automatic task assignment system
US20160071068A1 (en) * 2014-09-08 2016-03-10 Bernard Ertl Critical Path Scheduling with Early Finish Sets
JP6369257B2 (ja) * 2014-09-19 2018-08-08 富士通株式会社 情報処理システム、情報処理システムの制御方法、管理装置、及び制御プログラム
US10904111B2 (en) 2014-10-02 2021-01-26 International Business Machines Corporation Lightweight framework with dynamic self-organizing coordination capability for clustered applications
US10162341B2 (en) * 2014-10-10 2018-12-25 Applied Materials, Inc. Method for sequencing a plurality of tasks performed by a processing system and a processing system for implementing the same
CN104376407A (zh) * 2014-11-06 2015-02-25 河南智业科技发展有限公司 任务分配应用系统及方法
EP3230885B1 (en) 2014-12-08 2024-04-17 Umbra Technologies Ltd. Method for content retrieval from remote network regions
KR101595967B1 (ko) * 2014-12-16 2016-02-22 충북대학교 산학협력단 데드라인 부여된 작업의 분산 처리 성능 향상을 위한 맵리듀스 스케쥴링 시스템 및 방법
CN107251518B (zh) 2015-01-06 2021-03-02 安博科技有限公司 用于中立应用程序编程接口的系统和方法
CN115834534A (zh) 2015-01-28 2023-03-21 安博科技有限公司 用于全局虚拟网络的系统
EP4325804A3 (en) 2015-04-07 2024-05-29 Umbra Technologies Ltd. Multi-perimeter firewall in the cloud
US11558347B2 (en) 2015-06-11 2023-01-17 Umbra Technologies Ltd. System and method for network tapestry multiprotocol integration
CN106557356B (zh) * 2015-09-25 2020-06-19 阿里巴巴集团控股有限公司 一种任务处理方法及装置
WO2017098326A1 (en) 2015-12-11 2017-06-15 Umbra Technologies Ltd. System and method for information slingshot over a network tapestry and granularity of a tick
US11226841B2 (en) * 2016-03-22 2022-01-18 Mitsubishi Electric Corporation Information processing system, information processing device, and information processing method
ES2975242T3 (es) 2016-04-26 2024-07-04 Umbra Tech Ltd Generadores de pulsos de baliza de datos potenciados por Slingshot de información
CN107784036A (zh) * 2016-08-31 2018-03-09 北京国双科技有限公司 网络爬虫系统和基于网络爬虫系统的数据处理方法
US10558683B2 (en) * 2016-12-07 2020-02-11 Oracle International Corporation Selection of a start time for a periodic operation
KR20180096339A (ko) 2017-02-21 2018-08-29 강태성 전단 보강재 및 그 제작방법
JP6885459B2 (ja) * 2017-03-31 2021-06-16 日本電気株式会社 計算システム、計算方法および計算プログラム
EP3610374A1 (en) * 2017-04-13 2020-02-19 Telefonaktiebolaget LM Ericsson (PUBL) Method and resource manager for scheduling of instances in a data centre
JP6885193B2 (ja) * 2017-05-12 2021-06-09 富士通株式会社 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
WO2018235124A1 (ja) * 2017-06-19 2018-12-27 三菱電機株式会社 分散配置装置、分散配置システム、および、分散配置方法
CN109508843B (zh) * 2017-09-14 2023-06-02 阿里巴巴集团控股有限公司 一种智能服务实现方法及装置
US10620989B2 (en) * 2018-06-08 2020-04-14 Capital One Services, Llc Managing execution of data processing jobs in a virtual computing environment
CN109359828B (zh) * 2018-09-26 2021-07-09 长沙市到家悠享家政服务有限公司 调度费确定方法、装置及电子设备
CN110968406B (zh) * 2018-09-30 2023-04-07 北京国双科技有限公司 处理任务的方法、装置、存储介质和处理器
CN109325703B (zh) * 2018-10-10 2020-12-15 上海海勃物流软件有限公司 一种两端式轨道吊的任务分配方法及系统
CN109522107B (zh) * 2018-10-25 2020-11-20 陕西师范大学 一种面向时空约束的任务分配方法及系统
CN110399207A (zh) * 2019-06-29 2019-11-01 苏州浪潮智能科技有限公司 分布式存储系统中定时任务处理方法、系统及存储介质
CN112667377A (zh) * 2020-12-23 2021-04-16 浙江大学 一种面向电力芯片混合多核系统的任务调度优化方法
CN112988377B (zh) * 2021-01-05 2023-08-04 腾讯科技(深圳)有限公司 用于云服务的资源分配方法、系统和介质
CN113127173B (zh) * 2021-04-21 2021-09-24 浙江大学 一种异构感知的集群调度方法及装置
US20230004440A1 (en) * 2021-06-17 2023-01-05 Sync Computing Corp. Allocating of computing resources for applications
CN114546626B (zh) * 2022-03-02 2025-02-25 中国科学院大学 基于用户预分组的机会式群智感知在线任务分配方法
CN116542413B (zh) * 2023-04-28 2024-04-16 北京大数据先进技术研究院 基于时间坐标的任务处理方法、装置、设备及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05242103A (ja) * 1992-02-28 1993-09-21 Mitsubishi Electric Corp スケジューリングシステム
JPH05250338A (ja) * 1992-03-05 1993-09-28 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサシステムのタスク割当処理方法
JPH0675786A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
GB2272085A (en) * 1992-10-30 1994-05-04 Tao Systems Ltd Data processing system and operating system.
US6948172B1 (en) * 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
JP2823520B2 (ja) * 1993-12-17 1998-11-11 テキサス インスツルメンツ インコーポレイテツド リアルタイムアプリケーションタスクスケジューリング及び処理システム
US5980093A (en) * 1996-12-04 1999-11-09 Lsi Logic Corporation Integrated circuit layout routing using multiprocessing
JP3037182B2 (ja) * 1997-02-17 2000-04-24 日本電気株式会社 タスク管理方式
JPH1153326A (ja) * 1997-07-30 1999-02-26 Internatl Business Mach Corp <Ibm> 分散処理システム、クライアントノード、サーバノードおよび分散処理方法
US6748451B2 (en) * 1998-05-26 2004-06-08 Dow Global Technologies Inc. Distributed computing environment using real-time scheduling logic and time deterministic architecture
US6633942B1 (en) * 1999-08-12 2003-10-14 Rockwell Automation Technologies, Inc. Distributed real-time operating system providing integrated interrupt management
JP2001166816A (ja) * 1999-12-10 2001-06-22 Toshiba Corp 生産管理のスケジュール作成方法、スケジュール作成装置及び記憶媒体
WO2002059743A2 (en) * 2001-01-25 2002-08-01 Improv Systems, Inc. Compiler for multiple processor and distributed memory architectures
JP2003050709A (ja) * 2001-08-06 2003-02-21 Matsushita Electric Ind Co Ltd タスクスケジューリング方法および装置
EP1318453A1 (en) * 2001-12-07 2003-06-11 Hewlett-Packard Company Scheduling system, method and apparatus for a cluster
JP3975795B2 (ja) * 2002-03-22 2007-09-12 トヨタ自動車株式会社 タスク管理装置、同方法およびプログラム
JP3922070B2 (ja) * 2002-03-29 2007-05-30 株式会社デンソー 分散制御方法及び装置
CN1379567A (zh) * 2002-05-20 2002-11-13 梁宝明 多媒体设备及电器装置的控制系统
US7356655B2 (en) * 2003-05-15 2008-04-08 International Business Machines Corporation Methods, systems, and media for managing dynamic storage
JP3833213B2 (ja) * 2003-12-01 2006-10-11 キヤノン株式会社 情報処理装置、印刷システム、負荷分散印刷方法、及びプログラム並びに記憶媒体

Also Published As

Publication number Publication date
KR20070051703A (ko) 2007-05-18
CN1967488B (zh) 2011-02-09
JP2007140710A (ja) 2007-06-07
US7930339B2 (en) 2011-04-19
EP1785861A2 (en) 2007-05-16
EP1785861A3 (en) 2008-01-23
KR101343020B1 (ko) 2013-12-18
EP1785861B1 (en) 2018-10-17
CN1967488A (zh) 2007-05-23
US20070110094A1 (en) 2007-05-17

Similar Documents

Publication Publication Date Title
JP4781089B2 (ja) タスク割り当て方法およびタスク割り当て装置
Ge et al. GA-based task scheduler for the cloud computing systems
Rahman et al. A dynamic critical path algorithm for scheduling scientific workflow applications on global grids
US8185908B2 (en) Dynamic scheduling in a distributed environment
CN112416585A (zh) 面向深度学习的gpu资源管理与智能化调度方法
CN111381950A (zh) 一种面向边缘计算环境基于多副本的任务调度方法和系统
Zhang et al. An effective data locality aware task scheduling method for MapReduce framework in heterogeneous environments
CN104636204B (zh) 一种任务调度方法与装置
Djigal et al. Task scheduling for heterogeneous computing using a predict cost matrix
Wu et al. Optimizing the performance of big data workflows in multi-cloud environments under budget constraint
JP6969499B2 (ja) Vmマイグレーションシステムおよびvmマイグレーション方法
Domeniconi et al. Cush: Cognitive scheduler for heterogeneous high performance computing system
Denninnart et al. Improving robustness of heterogeneous serverless computing systems via probabilistic task pruning
Gu et al. Performance analysis and optimization of distributed workflows in heterogeneous network environments
Feljan et al. Task allocation optimization for multicore embedded systems
US20040093477A1 (en) Scalable parallel processing on shared memory computers
Beauprez et al. A multi-agent negotiation strategy for reducing the flowtime
KR102002246B1 (ko) 빅데이터 처리를 위한 자원 분배 방법 및 장치
Miranda et al. Dynamic communication-aware scheduling with uncertainty of workflow applications in clouds
Cao et al. Performance optimization of budget-constrained mapreduce workflows in multi-clouds
Skrinarova Implementation and evaluation of scheduling algorithm based on PSO HC for elastic cluster criteria
Nirmalan et al. Survey on Map Reduce Scheduling Algorithms in Hadoop Heterogeneous Environments
Pop et al. Evaluation of multi-objective decentralized scheduling for applications in grid environment
Marques Soares et al. On the use of HCM to develop a resource allocation algorithm for heterogeneous clusters
CN112181656A (zh) 一种数据密集型工作流调度方法及系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101022

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20101217

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110705

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4781089

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees