JP2019121240A - ワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器 - Google Patents

ワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器 Download PDF

Info

Publication number
JP2019121240A
JP2019121240A JP2018001411A JP2018001411A JP2019121240A JP 2019121240 A JP2019121240 A JP 2019121240A JP 2018001411 A JP2018001411 A JP 2018001411A JP 2018001411 A JP2018001411 A JP 2018001411A JP 2019121240 A JP2019121240 A JP 2019121240A
Authority
JP
Japan
Prior art keywords
task
workflow
tasks
workflows
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018001411A
Other languages
English (en)
Inventor
大場 義洋
Yoshihiro Oba
義洋 大場
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.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2018001411A priority Critical patent/JP2019121240A/ja
Priority to US16/120,404 priority patent/US10866832B2/en
Publication of JP2019121240A publication Critical patent/JP2019121240A/ja
Pending legal-status Critical Current

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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】短い処理完了時間で高いスループットを得るワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器を提供する。【解決手段】実施形態によれば、ワークフロースケジューリングシステムは、各々が1以上のタスクを含む複数のワークフローを複数の計算機資源を含む1以上の計算単位によって並列に処理する場合におけるタスクの実行順を計画する。ワークフロースケジューリングシステムは、複数のワークフローのうち1以上のワークフローに含まれる1以上のタスクの集合であるタスクグループごとに、タスクが同時に実行されるワークフローの数が複数の計算単位の数以下の第1個数までに制限されるように制御を行う制御手段を備える。【選択図】 図1

Description

本実施形態は、計算機におけるスケジューリング技術に関する。
計算機においては、複数のジョブを計算機資源(リソース)を用いて効率よく実行するために、例えばどのタイミングで、どのリソースを用いてどのジョブを処理するかを決定するスケジューリング技術が用いられる。
Zhifeng Yu、"TOWARD PRACTICAL MULTI-WORKFLOW SCHEDULING IN CLUSTER AND GRID ENVIRONMENTS"、[online]、2009年5月、[平成30年1月5日検索]、インターネット<URL:http://www.cs.wayne.edu/~weisong/papers/yu08-dissertation.pdf>
スケジューリング技術においては、単位時間ごとに実行完了するジョブの数(以下、スループットと呼ぶ)を最大化し、全てのジョブが実行完了するまでにかかる時間(以下、処理完了時間と呼ぶ)を最小化するように、各ジョブに対してリソースが割り当てられることが好ましい。例えば、複数の処理対象のジョブが存在する場合、1つのジョブにリソースを集中させると、スループットは向上するが、処理完了時間は長くなる場合がある。一方、複数のジョブを全て並列に処理すると、処理完了時間は短くなるが、スループットは低下する場合がある。
本発明が解決しようとする課題は、短い処理完了時間で高いスループットを得るワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器を提供することである。
実施形態によれば、ワークフロースケジューリングシステムは、各々が1以上のタスクを含む複数のワークフローを複数の計算機資源を含む1以上の計算単位によって並列に処理する場合におけるタスクの実行順を計画する。前記ワークフロースケジューリングシステムは、前記複数のワークフローのうち1以上のワークフローに含まれる1以上のタスクの集合であるタスクグループごとに、タスクが同時に実行されるワークフローの数が前記複数の計算単位の数以下の第1個数までに制限されるように制御を行う制御手段を備える。
第1の実施形態に係る計算機システムの一例を示すブロック図。 第1の実施形態に係るWFDAGの一例を示す図。 第1の実施形態に係るタスクグループ定義の一例を示す図。 第1の実施形態に係るマルチワークフロースケジューリングシステムの一例を示す図。 第1の実施形態に係るリソースプールの一例を示す図。 第1の実施形態に係るスケジューリング処理の一例を示す図。 第1の実施形態に係るスケジューリング結果の第1の例を示す図。 第1の実施形態に係るスケジューリング結果の第2の例を示す図。 第2の実施形態に係る拡大WFDAGの一例を示す図。 第2の実施形態に係るマルチワークフロースケジューリングシステムの一例を示す図。 第2の実施形態に係るスケジューリング処理の一例を示す図。 第3の実施形態に係るマルチワークフロースケジューリングシステムの一例を示す図。 第3の実施形態に係るスケジューリング処理の一例を示す図。 第4の実施形態に係る初段ワークフロースケジューリングタスクの処理の第1の例を示すフローチャート。 第4の実施形態に係る終段ワークフロースケジューリングタスクの処理の第1の例を示すフローチャート。 第4の実施形態に係る中段ワークフロースケジューリングタスクの処理の第1の例を示すフローチャート。 第4の実施形態に係る初段ワークフロースケジューリングタスクの処理の第2の例を示すフローチャート。 第4の実施形態に係る終段ワークフロースケジューリングタスクの処理の第2の例を示すフローチャート。 第4の実施形態に係る中段ワークフロースケジューリングタスクの処理の第2の例を示すフローチャート。 第5の実施形態に係る電子機器の一例を示すブロック図。 第5の実施形態に係る電子機器に設けられるノードモジュール(NM)の構成を示すブロック図。
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
[第1の実施形態]
本実施形態においては、計算機システムの構成、及び、当該計算機システム上で動作するマルチワークフロースケジューリングシステムが実行するスケジューリング処理について説明する。
本実施形態において、計算機システムが処理するジョブの処理手順は、ワークフロー(WF:Work Flow)により表されるものとする。ワークフローとは、特定の初期入力ファイル集合を入力とし、特定の最終出力ファイル集合を出力するまでの一連の処理手順である。例えば、計算機システムが処理する1つのジョブは、1つのワークフローにより表される。ワークフローは、例えば、snakemakeプログラムなどを用いて実行される。Snakemakeについては、「Johannes Koester、“Welcome to Snakemake’s documentation!”、[online]、2016年、[平成30年1月5日検索]、インターネット<https://snakemake.readthedocs.io/en/stable/>」などに開示されているため、ここではその詳しい説明については省略する。
また、本実施形態において、ワークフローに含まれる処理要素をタスクと呼ぶ。各タスクは、後述する計算ノード上で実行される。タスクは初期入力ファイルもしくは中間ファイルを入力され、又は、最終出力ファイルもしくは中間ファイルを出力する。
図1は、本実施形態に係る計算機システム1の一例を示すブロック図である。
計算機システム1は、第1ノードFNと、共有ファイルシステムSFSと、複数の計算ノードCNを含む。第1のノードFN、共有ファイルシステムSFS及び複数の計算ノードCNは、それぞれ通信可能に接続されている。
第1ノードFNは、例えば計算機システム1全体の制御を行う電子機器である。また、第1ノードFNは、計算機システム1のユーザインタフェースを備える。例えば、ユーザは、第1ノードFNに対し計算機システム1に処理させたいワークフローを入力し、第1のノードFNを介して当該ワークフローに対する処理結果を得る。
第1ノードFNは、記憶装置2、CPU(Central Processing Unit)3、主記憶装置としてのRAM(Random Access Memory)4を含む。記憶装置2、CPU3、RAM4は、それぞれ内部バスにより通信可能に接続されている。記憶装置2は、例えばハードディスク、SSD(Solid State Drive)、フラッシュメモリなどにより記憶領域を構成する。また、記憶装置2は、プログラムPGを含む。第1ノードFNは、CPU3が記憶装置2に格納されたプログラムPGを実行することにより、後述するマルチワークフロースケジューリングシステムとして動作する。
なお、本実施形態において、CPU3は、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)などの他のプロセッサでもよい。
共有ファイルシステムSFSは、第1ノード及び複数の計算ノードCNが共有する記憶装置である。共有ファイルシステムSFSは、各タスクの処理過程において必要な入力ファイル及び出力ファイルを格納する。
計算ノードCNは、例えば、CPU5、RAM6などのリソースを含む電子機器である。CPU5は、例えば少なくとも1つ以上のコア7を含む。計算ノードCNは、プログラムPGの指示に基づき、計算ノードCNに含まれるリソースを用いてワークフローに対する処理を実行する。
1つの計算機システム1は、複数の計算ノードCNを含んでいてもよい。この場合、計算機システム1は、例えば計算機クラスターを構成する。
ここで、計算機クラスターとは、複数の計算ノードCNを結合し、ひとまとまりとしたシステムである。1つの計算機クラスターは、少なくとも1つ以上の論理ユニット(LU:Logical Unit)を有する。各論理ユニットLUは、少なくとも1つ以上の計算ノードCNを含む。
計算ノードCNが複数存在する場合、それぞれの計算ノードCNのCPU5に含まれるコア7の数は、計算ノードCNごとに異なってもよい。
なお、1つの電子機器は、複数の計算ノードCNを含んでいてもよい。1つの論理ユニットLUに含まれる計算ノードCNは、それぞれ異なる電子機器に含まれていてもよい。例えば、図1に示すように、異なる電子機器である2つの計算ノードCNを1つの論理ユニットLUとすることができる。また、1つの論理ユニットは、1つの電子機器の中に複数含まれてもよい。すなわち、1つの電子機器に含まれる複数の計算ノードCNにより、複数の論理ユニットLUが構成されてもよい。
また、上述の各装置は、例えば切替装置SWに接続される。例えば、第1ノードFNは、切替装置SWを操作して計算機システム1に含まれる電子機器間の接続を切り替えることで、任意の電子機器間における通信を可能にする。
第1ノードFNにワークフローが入力されると、プログラムPGは、当該ワークフローに含まれる各タスクを少なくとも1つ以上の計算ノードCNのコア7に割り当てる。計算ノードCNは、割り当てられたタスクを処理する。当該ワークフローに含まれるタスクが全て処理されると、当該ワークフローの処理結果が得られる。
なお、本実施形態において、あるタスクに対して特定の計算ノード上のリソースを割当てる処理をタスクスケジューリングと呼ぶ。
図2は、本実施形態に係るWFDAG(Work Flow Directed Acyclic Graph)の一例を示す図である。
WFDAGは、ワークフローの処理要素であるタスクを頂点とし、タスク間の入出力ファイルによる依存関係を辺とする有向非巡回グラフである。WFDAGの各頂点(すなわち、各タスク)は、WFDAG内で固有の識別子を持つ。WFDAGの任意の2つの頂点(頂点a及び頂点b)について、頂点aから頂点bへの経路、又は、頂点bから頂点aへの経路が存在しない場合に、頂点aのタスクと頂点bのタスクは並列して(すなわち、同時に)実行可能である。
WFDAGは、部分グラフである部分DAG(Sub Directed Acyclic Graph)を含む。部分DAGが2つ以上の頂点を含む場合、部分DAGの任意の2つの頂点(頂点a及び頂点b)は、部分DAG内で頂点aから頂点bもしくは頂点bから頂点aへの経路が存在するか、又は、部分DAG及びWFDAG内で頂点aから頂点bもしくは頂点bから頂点aの経路が存在しないかのいずれかとなる。
例えば、図2の例において、ワークフローWF1は、タスク名「T1」のタスクt11、タスク名「T2」のタスクt21、タスク名「T3」のタスクt31、及び、タスク名「T4」のタスクt41を含む。同様に、ワークフローWF2は、タスク名「T1」のタスクt12、タスク名「T2」のタスクt22、タスク名「T3」のタスクt32、及び、タスク名「T4」のタスクt42を含む。タスクt11及びタスクt12、タスクt21及びタスクt22、タスクt31及びタスクt32、タスクt41及びタスクt42は同じタスクである。ワークフローWF1において、タスクt11、タスクt21とタスクt31、タスクt41は、それぞれワークフローWF1を示すWFDAGの部分DAGである。同様に、ワークフローWF2において、タスクt12、タスクt22とタスクt32、タスクt42は、それぞれワークフローWF2を示すWFDAGの部分DAGである。
本実施形態において、ワークフローに含まれる各タスクは、例えば以下の4つの状態「実行可能待ち状態」、「実行可能状態」、「実行中状態」及び「実行終了状態」をとる。実行可能待ち状態は、タスクの実行に必要な入力ファイルが揃っていない状態である。実行可能状態は、タスクの実行に必要な入力ファイルが全て揃っており、かつ、タスクが実行中状態及び実行終了状態でない状態である。すなわち、実行可能状態は、実行直前の状態である。実行中状態は、タスクが実行中である状態を示す。実行終了状態は、タスクの実行が終了した状態を示す。
図3は、本実施形態に係るタスクグループ定義表の一例を示す図である。
本実施形態において、部分DAGに含まれるタスクの集合をタスクグループ(TG:Task Group)と呼ぶ。異なるワークフローに属する同じタスクは、同一タスクグループに属することができる。
タスクグループ定義表は、タスクとタスクグループとを関連付けるデータである。図3は、図2のワークフローWF1,WF2に含まれるタスクグループの例を示している。計算機システム1は、タスクグループ定義表を、例えば共有ファイルシステムSFS又はRAM4などに格納する。
図2の例において、ワークフローWF1の部分DAGに含まれるタスクt11と、ワークフローWF2の部分DAGに含まれるタスクt12は、タスク名「T1」の同じタスクであるため、同じタスクグループに含まれることができる。すなわち、タスクグループTG1は、タスク名「T1」のタスクを含む。同様に、タスクグループTG2は、タスク名「T2」及び「T3」のタスクを含む。同様に、タスクグループTG4は、タスク名「T4」のタスクを含む。
なお、図2に示すワークフローWF1,WF2において、以下のように別のタスクグループが定義されてもよい。例えば、ワークフローWF1の第1の部分DAGはタスクt1を含むとし、第2の部分DAGはタスクt21,t31,t41を含むとする。同様に、ワークフローWF2の第1の部分DAGはタスクt12を含むとし、第2の部分DAGはタスクt22,t32,t42を含むとする。この場合、ワークフローWF1及びワークフローWF2双方において、タスク名「T2」,「T3」及び「T4」により構成される部分DAGが存在するため、当該部分DAGを同じタスクグループとすることができる。すなわち、この例においては、タスクグループTG1は、タスク名「T1」のタスクを含み、タスクグループTG2は、タスク名「T2」,「T3」及び「T4」のタスクを含む。
以下では、マルチワークフロータスクスケジューリングについて説明する。マルチワークフロータスクスケジューリングとは、例えばP個(Pは複数)のワークフローを処理する際、各ワークフローに含まれる各タスクに対し、計算機システム(すなわち、計算機クラスター)内の所定の計算ノードCNのリソースを割当て、各タスクを所定の順番で実行すること、又は、当該実行計画を生成することを指す。
ところで、一般的に計算機システムの性能は、上述のようにスループット及び処理完了時間により表される。本実施形態では、計算機システム1において、所定時間あたりに処理完了するワークフローの数(以下、定常処理スループットと呼ぶ)及び全てのワークフローの処理が完了するまでの時間(以下、全処理完了時間と呼ぶ)が、それぞれ以下で説明する所定の条件を満たす。
ここで、1つの論理ユニットLUを用いてワークフローの全タスクを処理するのにかかる最大時間をT_sumとする。T_sumは、1つの論理ユニットLUを用いてタスクグループiに属する全タスクを処理するのにかかる時間T(i)、及び、タスクグループの総数Gを用いて、下記の式(1)により表される。なお、式(1)においては、タスクグループごとに割り当てられるリソースは、互いに重複しないものとする。
Figure 2019121240
計算機システム1に含まれる論理ユニットLUの数がN_luである場合、本実施形態に係る計算機システム1の定常処理スループットは、例えば、下記の式(2)で示される1つのタスクグループの処理時間の最大値T_maxを用いて、T_max時間あたりN_lu個以上となる。
Figure 2019121240
また、ワークフローの数P、論理ユニットLUの数N_lu、1つのタスクグループの処理時間の最大値T_max、及び、ワークフローの全タスクを処理するのにかかる最大時間T_sumを用いて、本実施形態に係る計算機システム1の全処理完了時間は、例えば、下記の式(3)で示される値以下となる。換言すれば、本実施形態における全処理完了時間の目標性能は、式(3)で示される値である。
Figure 2019121240
式(3)は、ワークフローの処理結果が最初に出力されるまでの時間がT_sumであり、その後は、論理ユニットLUの数N_luに基づいて算出される所定の時間ごとにワークフローの処理結果が得られることを示している。
以下では、一般的なマルチワークフロータスクスケジューリングの第1乃至第3の例について説明する。
マルチワークフロータスクスケジューリングの第1の例においては、複数のワークフローは、計算機システムにより区別されずに処理される(以下、この方式をフラットスケジューリングと呼ぶ)。フラットスケジューリングにおいては、任意の時点でワークフローの数P個のワークフローを同時に処理する。この結果、全てのワークフローの処理結果が同時に得られるものの、定常処理スループットを満たさない。
より具体的には、例えば、ワークフローの数P=4、論理ユニットLUの数N_lu=1、1つのタスクグループの処理時間の最大値T_max=T時間、タスクグループの総数G=3とする。各ワークフローに含まれるタスクの種類及びタスクグループの定義は、図2及び図3で説明したものと同様である。また、1つの論理ユニットLUは、2つの計算ノードを含み、1つの計算ノードは2つのコア7を含むとする。各タスクが1つのコア7を用いて処理時間Tで処理されるとすると、フラットスケジューリングにおける全処理完了時間は4Tであり、4T経過時点で全てのワークフローの処理結果をが得られる。
ここで、式(3)を用いて計算される全処理完了時間は6Tである。したがって、フラットスケジューリングの全処理完了時間は、式(3)の値以下となり、全処理完了時間の目標性能を満たす。一方、定常処理スループットは1ワークフロー/T時間となる。上述のフラットスケジューリングでは、4T経過時点までワークフローの処理結果は出力されないため、定常処理スループットの目標性能を満たさない。
マルチワークフロータスクスケジューリングの第2の例においては、上述のフラットスケジューリングを制御するタスクスケジューラに対し、1つのタスクグループの処理時間の最大値T_maxの間に入力するワークフローの数が論理ユニットLUの数N_lu個以下となるように制御する。しかしながら、この第2の例においては、集中制御が必要となるため、例えばネットワークを経由して複数のシステム上に分散したタスクスケジューラ(以下、分散タスクスケジューラと呼ぶ)への適用が難しい。また、種類の異なるワークフローが混在する場合、1つのタスクグループの処理時間の最大値T_maxは、処理量の大きいワークフローに依存するため、処理量の小さいワークフローの割合が高い場合にシステムの利用率が下がってしまう。
マルチワークフロータスクスケジューリングの第3の例においては、タスクスケジューラは、各タスクのワークフロー定義(WFDAG)を用いて、タスクごとの優先度をリアルタイムに計算し、実行可能なタスクの中からランクの高い順にリソースを割当てる(非特許文献1参照)。しかしながら、この第3の例においては、タスクスケジューラの計算量がワークフロー数及びワークフロー定義に依存してしまう。
そこで、本実施形態においては、以下のようにワークフロースケジューラとタスクスケジューラを用いることにより、2段階のマルチワークフロータスクスケジューリングを行う。
第1の段階において、ワークフロースケジューラは、タスクグループごとに、実行中状態であるタスクを含むワークフローの種類数が論理ユニットLUの数N_lu以下となるように制御する。この制御のために、計算機システム1は、タスクグループ毎にセマフォを定義する。
ここで、各セマフォは、例えば、同時に実行可能なワークフローの数を示すセマフォ変数と、処理待ちのワークフローを管理するセマフォキューとを含む。各セマフォカウンタの初期値は、論理ユニットLUの数N_luである。
ワークフロースケジューラは、あるワークフローに含まれるタスクグループが実行可能状態になったとき、当該タスクグループのセマフォに対してP命令を発行する。当該P命令を受信したセマフォは、セマフォ変数を1つ減らす。ワークフロースケジューラは、当該タスクグループの実行可能タスクをタスクスケジューラに送信する。
ワークフロースケジューラは、あるワークフローに含まれるタスクグループが実行終了状態になったとき、当該タスクグループのセマフォに対してV命令を発行する。当該V命令を受信したセマフォは、セマフォ変数を1つ増やす。
なお、セマフォ変数が負となる場合、セマフォキューには処理待ちのワークフローが存在することを表す。
本実施形態においては、セマフォキューの代わりに、ワークフローの優先度別にFIFO(First In First Out)が設けられてもよい。この場合、計算機システム1は、当該優先度に基づいてデキューするFIFOを選択してもよい。
第2の段階において、タスクスケジューラは、ワークフロースケジューラより受信した実行可能タスクに対し、所定のリソースを割当てることにより当該タスクを実行する。なお、各タスクグループに対して割り当てられるリソースは、互いに重複しないものとする。
また、論理ユニットの数N_lu=1の場合は、上述のセマフォに代えてミューテックスを使用可能である。セマフォとミューテックスの使用例の詳細については、第4の実施形態において後述する。
本実施形態において、計算機システム1は、ワークフロースケジューラ及びタスクスケジューラを用いたマルチワークフロータスクスケジューリングにより、T_max時間あたりN_lu個以上の定常スループット、及び、式(3)で示される値以下の全処理完了時間を得る。また、本実施形態に係るマルチワークフロータスクスケジューリングにおいては、計算量がワークフロー数及びワークフロー定義に依存しない。また、種類の異なるワークフローが含まれる場合でもリソース利用率が低下しない。さらに、分散タスクスケジューラにも適用可能である。
図4は、本実施形態に係るマルチワークフロースケジューリングシステムの一例を示す図である。本実施形態において、当該マルチワークフロースケジューリングシステムは、例えばプログラムPGにより実現される。
マルチワークフロースケジューリングシステムは、ワークフローマネージャWFM(Work Flow Manager)、ワークフロースケジューラWFS(Work Flow Scheduler)、タスクスケジューラTS(Task Scheduler)、リソースマネージャRM(Resource Manager)、計算ノードCNを含む。
ワークフローマネージャWFMは、WFDAG情報に基づき、各ワークフローに含まれるタスクのタスク状態を管理する。ワークフローマネージャWFMは、ワークフロースケジューラWFSに対して各ワークフローの各実行可能タスクに関する情報を含むタスク実行要求R1を送信する。
タスク実行要求R1は、例えば、ワークフロースケジューラWFS内でタスクを一意に識別可能なタスク識別子、ワークフロー内でタスクを一意に識別可能なタスク名、タスク実行時に計算ノードCN上で実行されるスクリプトなどを含む。
なお、タスク実行要求R1は、リソース要求量を指定可能であってもよい。タスク実行要求R1の送信先がリソース要求指定表にアクセス可能な場合には、当該リソース要求量の指定は省略可能である。ここで、リソース要求指定表は、タスク名ごとに当該タスクの処理に用いるリソース要求量を指定したデータである。例えば、リソース要求量がCPUコア数で表される場合、リソース要求指定表には、タスク名とCPUコア数とが関連付けられる。リソース要求量は、例えば、最小CPUコア数、最大CPUコア数、最小メモリ量(単位:MB)、最大メモリ量(単位:MB)、最小I/Oリード速度(単位:MBps)、最大I/Oリード速度(単位:MBps)、最小I/Oライト速度(単位:MBps)、最大I/Oライト速度(単位:MBps)などのうち少なくとも1つ以上の項目を含む。計算機システム1は、リソース要求指定表を、例えば共有ファイルシステムSFS又はRAM4などに格納する。
ワークフローマネージャWFMは、例えば上述のsnakemakeプログラムにより実装される。また、1つのマルチワークフロースケジューリングシステム内には、複数のワークフローマネージャWFMが存在してもよい。
ワークフロースケジューラWFSは、上述のように、例えばタスクグループ毎にセマフォ又はミューテックスを用いたワークフロースケジューリングを実行する。ワークフロースケジューラWFSは、ワークフローマネージャWFMより受信したタスク実行要求R1で指定されたタスクの中から実行するタスク(以下、実行タスクと呼ぶ)を選択する。ワークフロースケジューラWFSは、タスクスケジューラTSに対して実行タスクに対するタスク実行要求R2を送信する。
ワークフロースケジューラWFSは、例えば上述のsnakemakeプログラムのclusterオプションで指定されるクラスターコマンドである。また、1つのマルチワークフロースケジューリングシステム内には、複数のワークフロースケジューラWFSが存在してもよい。また、例えば、各ワークフロースケジューラWFSは、複数のワークフローマネージャWFMからのタスク実行要求R1を受信してもよい。
なお、ワークフロースケジューラWFSは、複数のOS(Operating System)上に存在してもよい。換言すれば、ワークフロースケジューラWFSは、分散システム上で動作可能である。この場合、各ワークフロースケジューラWFSは、分散ロックマネージャ(DLM:Distributed Lock Manager)の機能をさらに備えてもよい。この分散ロックマネージャは、分散システムにおいて分散セマフォ及び分散ミューテックスとして機能する。すなわち、分散ロックマネージャは、各ワークフロースケジューラWFSが管理する各セマフォ及びミューテックスの代わりとなる。
タスクスケジューラTSは、リソースマネージャRMから利用可能リソース情報R5を受信する。利用可能リソース情報R5は、各計算ノードCNで現在利用可能なリソースの総和を示す情報である。
タスクスケジューラTSは、ワークフロースケジューラWFSからタスク実行要求R2を受信すると、タスク実行要求R2で指定されたタスクに対し、利用可能リソース情報R5を参照して、当該タスクが所属するタスクグループTGのリソースプールRP(Resource Pool)から所定の計算ノードCNに所定のリソースを割当てる。また、タスクスケジューラTSは、リソースマネージャRMに対しタスク実行依頼R3を送信する。
リソースプールRPは、計算ノードCN及びリソースを2項組とする集合である。リソースプールRPの詳細については、図5を用いて後述する。
タスク実行依頼R3は、例えば、タスクスケジューラTS内でタスクを一意に識別可能なタスク識別子、ワークフロー内でタスクを一意に識別可能なタスク名、タスク実行時に計算ノードCN上で実行されるスクリプト、タスクスケジューラTSがタスクに割当てたリソースを示す割当リソース情報などを含む。
なお、1つのマルチワークフロースケジューリングシステム内には、複数のタスクスケジューラTSが存在してもよい。各タスクスケジューラTSは複数のワークフロースケジューラWFSからタスク実行要求R2を受信してもよい。
タスクスケジューラTSは、例えば、Mesos対応スケジューラ(Fenzoスケジューラ)などである。Fenzoスケジューラについては、「GitHub,Inc.、“Home Netflix/Fenzo Wiki”、[online]、2016年10月14日、[平成30年1月5日検索]、インターネット<https://github.com/Netflix/Fenzo/wiki>」などに開示されているため、ここではその詳しい説明については省略する。
リソースマネージャRMは、タスクスケジューラTSからタスクに対するタスク実行依頼R3を受信すると、当該タスク実行依頼R3に含まれる割当リソース情報に基づき、リソース割当て状態を更新する。
リソースマネージャRMは、当該タスク実行依頼R3に含まれる割当リソース情報で指定された計算ノードCNに対してタスク実行指示R4を送信する。
タスク実行指示R4は、例えば、リソースマネージャRM内でタスクを一意に識別可能なタスク識別子、ワークフロー内でタスクを一意に識別可能なタスク名、タスク実行時に計算ノードCN上で実行されるスクリプト、割当リソース情報などを含む。
リソースマネージャRMは、各計算ノードCNからリソース総量情報R6又はタスク実行完了通知R7を受信すると、リソース割当て状態を更新する。また、リソースマネージャRMは、利用可能リソース情報R5をタスクスケジューラTSに送信する。
リソース総量情報R6は、計算ノードCNが持つ最大使用可能リソース量を示す情報である。
タスク実行完了通知R7は、例えば、リソースマネージャRM内でタスクを一意に識別可能なタスク識別子、タスクの実行結果などを含む。タスクの実行結果は、例えば、「成功」「失敗」「中止」などである。
リソースマネージャRMは、例えば、Mesos Masterプログラムなどである。Mesos Masterプログラムについては、「The Apache Software Foundation、“Apache Mesos - Architecture”、[online]、2017年、[平成30年1月5日検索]、インターネット<http://mesos.apache.org/documentation/latest/architecture/>」などに開示されているため、ここではその詳しい説明については省略する。
計算ノードCNは、図1を用いて上述したように、CPUモジュール及びメモリモジュールを備える。計算ノードCNは、リソース総量情報R6をリソースマネージャRMに送信する。
計算ノードCNは、リソースマネージャRMからタスク実行指示R4を受信すると、タスク実行指示R4で指定されたタスクを、タスク実行指示R4で指定されたリソースを使用して実行する。なお、当該タスクの実行が行われる計算ノードCNは、タスク実行指示R4で指定される。
計算ノードCNは、当該タスクの実行が終了すると、リソースマネージャRMに対してタスク実行完了通知R7を送信する。
なお、計算ノードCNは複数あってもよい。複数の計算ノードCNは、計算機クラスターを構成する。また、タスク実行はDockerコンテナ上で行ってもよい。Dockerコンテナについては、「Docker Inc.、“Docker - Build, Ship, and Run Any App, Anywhere”、[online]、2017年、[平成30年1月5日検索]、インターネット<https://www.docker.com/>」などに開示されているため、ここではその詳しい説明については省略する。
図4の例において、プログラムPGは、例えばワークフローマネージャWFM、ワークフロースケジューラWFS、タスクスケジューラTS、リソースマネージャRMを含む。プログラムPGは、計算ノードCN上で動作してもよい。すなわち、計算ノードCNのCPU7は、プログラムPGを実行することにより、マルチワークフロースケジューリングシステムとして動作してもよい。
図5は、本実施形態に係るリソースプールの一例を示す図である。より具体的には、図5は、図2及び図3で説明したようにタスクグループが定義される場合における、各タスクグループのリソースプールを示している。
例えば、リソースがCPUコア数である場合、リソースプールは、“{(論理ユニット番号.計算ノード番号, CPUコア数)}”と表される。“論理ユニット番号.計算ノード番号”を計算ノードIDと呼ぶ。図5の例では、タスクグループTG1及びTG3のリソースプールは、“{(1.1, 1)}”である。これは、論理ユニット番号「1」の論理ユニットLUの計算ノードcn1のコアを1つ使用することを表している。同様に、タスクグループTG2のリソースプールは、“{(1.2, 2)}”である。これは、論理ユニット番号「1」の論理ユニットLUの計算ノードcn2のコアを2つ使用することを表している。
本実施形態に係るマルチワークフロースケジューリングシステムにおいては、各タスクグループに対して排他的にリソースプールを割り当てることが好ましい。
図6は、本実施形態に係るスケジューリング処理の一例を示す図である。
計算ノードCNは、リソースマネージャRMに対してリソース総量情報R6を送信する(ステップS101)。リソースマネージャRMは、受信したリソース総量情報R6に基づいてリソース割当て状態を更新し、現在の利用可能リソース情報R5をタスクスケジューラTSへ送信する(ステップS102)。
ワークフローマネージャWFMは、ワークフロースケジューラWFSに対して実行可能なタスクの情報を含むタスク実行要求R1を送信する(ステップS103)。
ワークフロースケジューラWFSは、タスク実行要求R1に含まれるタスク識別子(又はタスク名)の中から、実行タスクを選択する(ステップS104)。ワークフロースケジューラWFSは、タスクスケジューラTSに対して実行タスクの情報を含むタスク実行要求R2を送信する(ステップS105)。
タスクスケジューラTSは、タスク実行要求R2に含まれる実行タスクに対し、利用可能リソース情報R5に基づいて利用可能リソースを割り当てる(ステップS106)。タスクスケジューラTSは、リソースマネージャRMに対して割当リソース情報を含むタスク実行依頼R3を送信する(ステップS107)。
リソースマネージャRMは、タスク実行依頼R3に含まれる割当リソース情報に基づき、リソース割り当て状態を更新する(ステップS108)。リソースマネージャRMは、受信した割当リソース情報及び/又は自身が管理するリソース割り当て状態に基づき、タスクスケジューラTSに対して利用可能リソース情報R5を送信する(ステップS109)。また、リソースマネージャRMは、割当リソース情報で指定された計算ノードCNに対してタスク実行指示R4を送信する(ステップS110)。
計算ノードCNは、受信したタスク実行指示R4に基づき、タスクを実行する(ステップS111)。計算ノードCNは、タスク実行完了後に、リソースマネージャRMに対してタスク実行完了通知R7を送信する(ステップS112)。
リソースマネージャRMは、受信したタスク実行完了通知R7に基づいて、リソース割り当て状態を更新する(ステップS113)。リソースマネージャRMは、更新したリソース割り当て状態に基づき、タスクスケジューラTSに対して利用可能リソース情報R5を送信する(ステップS114)。
なお、ステップS101,S102の処理は、ステップ103の前に行われなくてもよいが、ステップS106の処理の前に行われることが好ましい。ステップS101,S102の処理は、ステップS103〜S105の処理と非同期に行われてもよい。
図7は、本実施形態に係るスケジューリング結果の第1の例を示す図である。より具体的には、図7は、上述の2段階のマルチワークフロースケジューリングシステムを用いてタスクスケジューリングを行った結果を示す。
ワークフロースケジューリング結果W1は、タスクグループごと、及び、時間帯ごとに処理対象となったワークフローを示している。タスクスケジューリング結果X1は、ワークフローごとに各時間帯において処理されたタスクIDと、処理に用いた計算ノードID及びリソース数(ここではCPUのコア数)を示す。ここで、タスク名「T1」のタスクIDはt1、タスク名「T2」のタスクIDはt2、タスク名「T3」のタスクIDはt3、タスク名「T4」のタスクIDはt4である。処理完了ワークフローY1は、各時間帯終了時に計算完了したワークフローを示す。
処理結果Z11〜Z16は、処理時間帯を0〜6Tとしたときの、時間T経過ごとのワークフロースケジューリング結果W1、タスクスケジューリング結果X1及び処理完了ワークフローY1を指す。
図7においては、例えば、ワークフローの数P=4、論理ユニットLUの数N_lu=1、1つのタスクグループの処理時間の最大値T_max=T時間、タスクグループの総数G=3とする。各ワークフローに含まれるタスクの種類、タスクグループの定義、リソースプールは、図2、図3及び図5で説明したものと同様である。また、1つの論理ユニットLUは、2つの計算ノードを含み、1つの計算ノードは2つのコア7を含むとし、各タスクのリソース要求量は1(すなわち、1つのタスクの処理に1個のCPUコアが必要)であるとする。
ワークフロースケジューラWFSは、任意の時点で各タスクグループTGにおいてN_lu個(すなわち、1個)のワークフローが処理されるように制御する。各時間帯のワークフロースケジューリング結果W1によれば、タスクグループTG1〜TG3で処理されるワークフローの数は1個となっている。
より具体的には、処理結果Z11では、まずワークフロー「1」かつタスクグループTG1のタスクID t1のタスクに対して、計算ノードID (1.1)のCPUコア7が1つ割り当てられる。すると、他のワークフローにおいては、タスクグループTG1のタスクを処理できないため、他のリソースは未使用状態となる。
次に、処理結果Z12では、ワークフロー「1」かつタスクグループTG2のタスクID t2,t3のタスクに対して、計算ノードID (1.2)のCPUコア7が1つずつ割り当てられる。他のワークフローのうち1つのワークフローにおいて、タスクグループTG1のタスクを処理可能であるため、例えば、ワークフロー「2」かつタスクグループTG1のタスクID t1のタスクに対して、計算ノードID (1.1)のCPUコア7が1つ割り当てられる。
さらに、処理結果Z13では、ワークフロー「1」かつタスクグループTG3のタスクID t4のタスクに対して、計算ノードID (1.1)のCPUコア7が1つ割り当てられる。他のワークフローのうち1つのワークフローにおいて、タスクグループTG1のタスクを処理可能であるため、例えば、ワークフロー「3」かつタスクグループTG1のタスクID t1のタスクに対して、計算ノードID (1.1)のCPUコア7が1つ割り当てられる。また、他のワークフローのうち1つのワークフローにおいて、タスクグループTG2のタスクを処理可能であるため、例えば、ワークフロー「2」かつタスクグループTG2のタスクID t2,t3のタスクに対して、計算ノードID (1.2)のCPUコア7が1つずつ割り当てられる。
処理結果Z13においては、ワークフロー「1」の処理が完了したため、処理完了WFとして出力されている。同様に、処理結果Z14〜Z15において、ワークフロー「1」〜「4」の処理結果が、時間Tを経過するごとに1つずつ出力され、処理時間6Tで全てのワークフローの処理が完了している。すなわち、定常スループットは「1ワークフロー/T時間」であり、全処理時間は6T時間となっている。
ここで、式(3)を用いて計算される全処理完了時間は6Tである。また、式(2)を用いて計算されるT_max時間あたりの定常処理スループットは1ワークフロー/T時間となる。したがって、当該処理結果は、全処理完了時間及び定常処理スループット両方の目標性能を満たす。
図8は、本実施形態に係るスケジューリング結果の第2の例を示す図である。より具体的には、図8は、図7の例で論理ユニットLUの数N_lu=2とした場合の、タスクスケジューリング結果を示す。
図8においては、図7と同様に、時間帯ごとのワークフロースケジューリング結果W2、タスクスケジューリング結果X2、処理完了ワークフローY2を示す。また、処理結果Z21〜Z24は、処理時間帯を0〜4Tとしたときの、時間T経過ごとのワークフロースケジューリング結果W2、タスクスケジューリング結果X2及び処理完了ワークフローY2を指す。
図8の例では、各ワークフローに含まれるタスクの種類、タスクグループの定義、ワークフローの数P、1つのタスクグループの処理時間の最大値T_max、タスクグループの総数G、各タスクのリソース要求量、各論理ユニットLUの構成は、図7の例と同様である。また、タスクグループTG1に割り当てられるリソースプールは、“{(1.1, 1), (2.1 ,1)}”であり、タスクグループTG2に割り当てられるリソースプールは、“{(1.2, 2), (2.2 ,2)}”であり、タスクグループTG3に割り当てられるリソースプールは、“{(1.1, 1), (2.1 ,1)}”であるとする。
ワークフロースケジューラWFSは、任意の時点で各タスクグループTGにおいてN_lu個(すなわち、2個)のワークフローが処理されるように制御する。各時間帯のワークフロースケジューリング結果W2によれば、タスクグループTG1〜TG3で処理されるワークフローの数は2個となっている。図8の例では、図7の例に比べて一度に処理できるワークフローの数が増加している。したがって、図7の例に比べて全処理完了時間は減少し、定常処理スループットは増加する。
処理結果Z23においては、ワークフロー「1,2」の処理が完了したため、処理完了WFとして出力されている。同様に、処理結果Z24において、ワークフロー「3,4」の処理結果が出力され、処理時間4Tで全てのワークフローの処理が完了している。すなわち、定常スループットは「2ワークフロー/T時間」であり、全処理時間は4T時間となっている。
ここで、式(3)を用いて計算される全処理完了時間は4Tである。また、式(2)を用いて計算されるT_max時間あたりの定常処理スループットは2ワークフロー/T時間となる。したがって、当該処理結果は、全処理完了時間及び定常処理スループット両方の目標性能を満たす。
[第2の実施形態]
本実施形態においては、上記第1の実施形態の変形例について説明する。本実施形態では、第1の実施形態で定義したWFDAGの拡大グラフである拡大WFDAG(Super WFDAG)について説明する。
拡大WFDAGにおいては、第1の実施形態で説明した処理要素であるタスク(以下、通常タスクと呼ぶ)に加え、ワークフロースケジューリングを実行するためのタスク(以下、ワークフロースケジューリングタスクと呼ぶ)が用いられる。通常タスクは、ワークフロースケジューリングタスクにより実行タイミングが制御される。
図9は、図2のワークフローWF1,2それぞれに対しワークフロースケジューリングタスクを加えた拡大WFDAGの例を示す。
ワークフロースケジューリングタスクは、各タスクグループの入口及び出口に配置される。タスクグループの入口に配置されるワークフロースケジューリングタスクは、当該タスクグループのセマフォに対してP命令を実行する。また、タスクグループの出口に配置されるワークフロースケジューリングタスクは、当該タスクグループのセマフォに対してV命令を実行する。
なお、前のタスクグループの出口のワークフロースケジューリングタスクと次のタスクグループの入り口のワークフロースケジューリングタスクは隣接するため、これらは1つのノードに縮約されてもよい(以下、縮約ワークフロースケジューリングタスクと呼ぶ)。縮約ワークフロースケジューリングタスクは、前段タスクグループTGのセマフォに対してV命令実行し、後段タスクグループTGのセマフォに対してP命令を実行する。
図9に示すように、ワークフローごとに、以下の3種類のワークフロースケジューリングタスクが存在する。例えば、ワークフローWF1の入口には初段ワークフロースケジューリングタスクtwf10が配置され、ワークフローWF1の出口には終段ワークフロースケジューリングタスクtwf13が配置される。また、各タスクグループ間には中段ワークフロースケジューリングタスクtwf11,twf12が配置される。各中段ワークフロースケジューリングタスクは、例えば縮約ワークフロースケジューリングタスクである。
拡大WFDAGで記述される複数のワークフローが存在する場合、同じタスク名を持つワークフロースケジューリングタスクは、セマフォリソースを共有する。例えば、ワークフローWF1,WF2に含まれる初段ワークフロースケジューリングタスクtwf10,twf20、中断ワークフロースケジューリングタスクtwf11,twf21、中断ワークフロースケジューリングタスクtwf12,twf22、終段ワークフロースケジューリングタスクtwf13,twf23は、それぞれセマフォリソースを共有する。
ワークフロースケジューリングタスクは通常タスクと同様に、実行可能状態になるとタスクスケジューラTSに入力され、実行される。ただし、ワークフロースケジューリングタスクに対するワークフロースケジューリングは行われない。また、ワークフロースケジューリングタスクはどのタスクグループTGにも属さない。
なお、ワークフロースケジューリングタスクに割り当てられるリソースは、各タスクグループTGに割当てられるリソースと区別されてもよい。
また、論理ユニットLUの数N_lu=1の場合、セマフォに代えてミューテックスを使用可能である。
図10は、本実施形態に係るマルチワークフロースケジューリングシステムの一例を示す図である。本実施形態に係るマルチワークフロースケジューリングシステムは、拡大WFDAGで記述されるワークフローを処理する。なお、図4と重複する構成については、説明を省略する。
マルチワークフロースケジューリングシステムは、ワークフローマネージャWFM、統合タスクスケジューラWFTS、リソースマネージャRM、計算ノードCNを含む。
ワークフローマネージャWFMは、拡大WFDAG情報に基づき、各ワークフローに含まれるタスクのタスク状態を管理する。ワークフローマネージャWFMは、統合タスクスケジューラWFTSに対して各ワークフローの実行可能タスクのタスク実行要求R1を送信する。
ワークフローマネージャWFMは、図4のワークフローマネージャWFMと同様に、例えばsnakemakeプログラムにより実装される。また、1つのマルチワークフロースケジューリングシステム内には、複数のワークフローマネージャWFMが存在してもよい。
なお、ワークフローマネージャWFMは、タスクグループ定義表(図3参照)に基づき、WFDAG情報から拡大WFDAG情報を自動生成してもよい。
統合タスクスケジューラWFTSは、図4におけるワークフロースケジューラWFS及びタスクスケジューラTSを統合したスケジューラである。
統合タスクスケジューラWFTSは、リソースマネージャRMから利用可能リソース情報R5を受信する。
統合タスクスケジューラWFTSは、ワークフローマネージャWFMからタスク実行要求R1を受信すると、タスク実行要求R1で指定されたタスクの中から実行タスクを選択し、利用可能リソース情報R5を参照して、当該実行タスクに対し所定の計算ノードCNの所定のリソースを割当てる。なお、リソースの割り当ての際、統合タスクスケジューラWFTSは、ワークフロースケジューリングタスクにはワークフロースケジューリングタスクに対応するリソースプールRPを、通常タスクにはタスクが所属するタスクグループTGに対応するリソースプールRPを参照してもよい。
その後、統合タスクスケジューラWFTSは、リソースマネージャRMに対しタスク実行依頼R3を送信する。
なお、1つのマルチワークフロースケジューリングシステム内には、複数の統合タスクスケジューラWFTSが存在してもよい。各統合タスクスケジューラWFTSは、複数のワークフローマネージャWFMを扱ってもよい。
統合タスクスケジューラは、例えば、上述のFenzoスケジューラなどである。
リソースマネージャRM及び計算ノードCNは、図4と同様であるため、説明を省略する。
なお、統合タスクスケジューラWFTSが複数のOS上に存在する場合(すなわち、分散システム上で動作する場合)、各計算ノードCNは、分散ロックマネージャ(DLM)の機能をさらに備えてもよい。分散ロックマネージャは、例えば分散ファイルロックコマンドを提供し、分散セマフォ及び分散ミューテックスは分散ファイルロックコマンドにより実現される。
図11は、本実施形態に係るスケジューリング処理の一例を示す図である。
ステップS201〜S203の処理は、図6のステップS101〜S103の処理と同様であるため、説明を省略する。なお、ステップS201,S202の処理は、ステップ203の前に行われなくてもよいが、ステップS204の処理の前に行われることが好ましい。ステップS201,S202の処理は、ステップS203の処理と非同期に行われてもよい。
統合タスクスケジューラWFTSは、ワークフローマネージャWFMよりタスク実行要求R1を受信すると、当該タスク実行要求R1に含まれるタスク識別子(又はタスク名)により、各タスクがワークフロースケジューリングタスクであるか通常タスクであるかを識別する。統合タスクスケジューラWFTSは、ワークフロースケジューリングタスクに対してリソースを割り当て(ステップS204)、さらに、通常タスクに対してリソースを割り当てる(ステップS205)。なお、ステップS204及びステップS205の処理順は逆でもよい。
統合タスクスケジューラWFTSは、ワークフロースケジューリングタスク及び通常タスクの中から、実行タスクを選択し、リソースマネージャRMに対して当該実行タスクへの割当リソース情報を含むタスク実行依頼R3を送信する(ステップS206)。
ステップS207〜S213の処理は、図4のステップS108〜S114の処理と同様であるため、説明を省略する。
[第3の実施形態]
本実施形態においては、上記第1及び第2の実施形態の変形例について説明する。本実施形態では、図4におけるワークフローマネージャWFM及びワークフロースケジューラWFSを統合した統合ワークフローマネージャWFMS(Work Flow Manager and Scheduler)を用いる。
図12は、本実施形態に係るマルチワークフロースケジューリングシステムの一例を示す図である。本実施形態に係るマルチワークフロースケジューリングシステムにおいては、第2の実施形態と同様に、拡大WFDAGで記述されるワークフローを処理する。なお、図4及び図10と重複する構成については、説明を省略する。
マルチワークフロースケジューリングシステムは、統合ワークフローマネージャWFMS、タスクスケジューラTS、リソースマネージャRM、計算ノードCNを含む。
統合ワークフローマネージャWFMSは、拡大WFDAG情報に基づき、各ワークフローに含まれるタスクのタスク状態を管理する。統合ワークフローマネージャWFMSは、各ワークフローの実行可能タスクが通常タスクである場合に、実行可能タスクの中から実行タスクを選択し、タスク実行要求R2をタスクスケジューラTSに送信する。一方、実行可能タスクがワークフロースケジューリングタスクである場合に、当該ワークフロースケジューリングタスクを実行する。
統合ワークフローマネージャWFMSは、図4のワークフローマネージャWFMと同様に、例えばsnakemakeプログラムにより実装される。また、1つのマルチワークフロースケジューリングシステム内には、複数の統合ワークフローマネージャWFMSが存在してもよい。
統合ワークフローマネージャWFMSは、タスクグループ定義表(図3参照)に基づき、WFDAG情報から拡大WFDAG情報を自動生成してもよい。
なお、統合ワークフローマネージャWFMSが複数のOS上に存在する場合(すなわち、分散システム上で動作する場合)、各統合ワークフローマネージャWFMSは、分散ロックマネージャ(DLM)の機能をさらに備えてもよい。分散ロックマネージャは、例えば分散ファイルロックコマンドを提供し、分散セマフォ及び分散ミューテックスは分散ファイルロックにより実現される。
タスクスケジューラTS、リソースマネージャRM及び計算ノードCNは図4と同様であるため、説明を省略する。
図13は、本実施形態に係るスケジューリング処理の一例を示す図である。
ステップS301,S302の処理は、図6のステップS101,S102の処理と同様であるため、説明を省略する。なお、ステップS301,S302の処理は、ステップ305の前に行われなくてもよいが、ステップS306の処理の前に行われることが好ましい。ステップS301,S302の処理は、ステップS303〜S305の処理と非同期に行われてもよい。
統合ワークフローマネージャWFMSは、各ワークフローに含まれるタスクのタスク状態を管理し、ワークフロースケジューリングタスクが実行可能である場合に、当該ワークフロースケジューリングタスクを実行する(ステップS303)。また、統合ワークフローマネージャWFMSは、通常タスクの中から実行タスクを選択し(ステップS304)、タスクスケジューラTSに対して実行タスクの情報を含むタスク実行要求R2を送信する(ステップS305)。
ステップS306〜S314の処理は、図4のステップS106〜S114の処理と同様であるため、説明を省略する。
[第4の実施形態]
本実施形態においては、第1乃至第3の実施形態で説明したセマフォ及びミューテックスの実現方法について説明する。本実施形態においては、例えば、Linux(登録商標)のflockコマンドを用いたファイルロックにより、セマフォ及びミューテックスを実現する。
ここで、flockコマンドの書式は、例えば「flock [ファイル名] -c “スクリプト名”」である。各ワークフロースケジューリングタスクは、当該コマンドを実行することにより、[ファイル名]に対するファイルロックを取得する。また、ファイルロックの取得と同時に、“スクリプト名”で指定されるスクリプトが実行される。
なお、ファイルロックが取得できない場合、ワークフロースケジューリングタスクは、例えばファイルロック取得待ち用のキューに格納される。また、スクリプトの実行が完了すると当該ファイルロックは解除される。
タスクグループごとに、ctrファイル、queファイル、sigファイル以下のファイルが定義され、例えば共有ファイルシステムSFSに格納される。
ctrファイルは、セマフォカウンタの操作に用いられるファイルである。ctrファイルは、セマフォカウンタ値を格納する。なお、セマフォカウンタ値の初期値は、例えば、論理ユニットLUの数N_luである。なお、セマフォに代えてミューテックスが用いられる場合、セマフォカウンタは不要であるため、ctrファイルは省略可能である。
queファイルは、ファイルロック取得待ちのためのキューの操作に用いられるファイルである。
sigファイルは、子タスクの処理が全て終了したことを通知する際に用いられるファイルである。
本実施形態においては、共有ファイルシステムSFSとして、OCFS2(Oracle Cluster File System ver.2)が用いられてもよい。OCFS2においては、例えば複数の計算ノードCNより同時に共有ファイルシステムSFS上のファイルにアクセスされた時などに排他制御を行うために、分散ロックマネージャ(DLM)を使用した分散ファイルロック機構が提供される。OCFS2においては、上述のflockコマンドを用いることにより、OCFS2上の当該分散ファイルロック機構にアクセス可能である。すなわち、OCFS2上では、flockコマンドにより分散セマフォ及び分散ミューテックスが実現される。
図14は、セマフォを用いた場合の初段ワークフロースケジューリングタスクの処理を例示するフローチャートである。以下のステップS501〜S503の処理は、セマフォに対するP命令に相当する。
ステップS501において、初段ワークフロースケジューリングタスクは、例えばflockコマンド「flock ctr[i] -c “スクリプト1”」を実行する。整数iは、拡大WFDAG内の子タスクのタスクグループ番号を示しており、ctr[i]は、整数iに対応するタスクグループのctrファイルを示す。
スクリプト1において、初段ワークフロースケジューリングタスクは、ctrファイルに格納されているセマフォカウンタ値を読み出し、当該セマフォカウンタ値を1だけ減少させる。減少後の当該セマフォカウンタ値は、ファイル「status」にも格納される。初段ワークフロースケジューリングタスクは、当該セマフォカウンタ値をctrに書き込む。
ステップS502において、初段ワークフロースケジューリングタスクは、catコマンドを用いて、ステップS501で生成したファイル「status」の値を確認する。catコマンドは、指定されたファイルの内容を読み出すコマンドである。ファイル「status」の値が0以下の場合、処理は終了する。ファイル「status」の値が1以上の場合、処理はステップS503へ進む。
なお、ファイル「status」の値が負である場合、論理ユニットLUの数N_lu個のワークフローにおいて、当該タスクグループ内のタスクが実行中状態である。したがって、この場合はqueファイルに対するロックが必要となる。なお、ファイル「status」の値が負の場合は、1以上のワークフローがqueファイルのロック解除待ち状態となる。
ステップS503において、初段ワークフロースケジューリングタスクは、例えばflockコマンド「flock que[i] -c “スクリプト2”」を実行する。que[i]は、整数iに対応するタスクグループのqueファイルを示す。
スクリプト2は、子タスクの処理が全て完了したか否かを検知する。スクリプト2において、初段ワークフロースケジューリングタスクは、定期的に、sigファイルが生成されているか否かを確認する。sigファイルが生成された場合、初段ワークフロースケジューリングタスクは、当該sigファイルを削除して終了する。sigファイルが生成さていない場合、初段ワークフロースケジューリングタスクは、当該sigファイルが生成されるまで待機する。なお、sigファイルの生成については、図15で説明する。
図15は、セマフォを用いた場合の終段ワークフロースケジューリングタスクの処理を例示するフローチャートである。以下のステップS601の処理は、セマフォに対するV命令に相当する。
ステップS601において、終段ワークフロースケジューリングタスクは、例えばflockコマンド「flock ctr[i] -c “スクリプト3”」を実行する。ctr[i]は、整数iに対応するタスクグループのctrファイルを示す。
スクリプト3において、終段ワークフロースケジューリングタスクは、ctrファイルに格納されているセマフォカウンタ値を読み出し、当該セマフォカウンタ値を1だけ増加させる。増加後の当該セマフォカウンタ値が1以下であれば、sigファイルを生成し、当該sigファイルが削除されるまで待つ。
なお、増加後のセマフォカウンタ値が1以下である場合、queファイルのロック解除待ち状態のワークフローが存在する。このため、終段ワークフロースケジューリングタスクは、sigファイルを生成することにより、上述のスクリプト2を実行中のワークフローに対して処理完了を知らせる。その後、スクリプト2においてsigファイルが削除され、スクリプト2の終了によりqueファイルのロック解除後、キューの先頭のワークフローがロック解除を受ける。
図16は、セマフォを用いた場合の中段ワークフロースケジューリングタスクの処理を例示するフローチャートである。中断ワークフロースケジューリングタスクは、上述のように、終段ワークフロースケジューリングタスクと初段ワークフロースケジューリングタスクとを組み合わせることにより生成される。
したがって、中断ワークフロースケジューリングタスクにおいては、まず図15で示したセマフォに対するV命令相当の処理(ステップS601)が実行され、次に、図14で示したセマフォに対するV命令相当の処理(ステップS501〜S503)が実行される
図17は、ミューテックスを用いた場合の初段ワークフロースケジューリングタスクの処理を例示するフローチャートである。
ステップS701において、初段ワークフロースケジューリングタスクは、例えばflockコマンド「flock que[i] -c “スクリプト4”」を実行する。
スクリプト4において、初段ワークフロースケジューリングタスクは、定期的に、sigファイルが生成されているか否かを確認する。sigファイルが生成された場合、初段ワークフロースケジューリングタスクは、当該sigファイルを削除して終了する。sigファイルが生成さていない場合、初段ワークフロースケジューリングタスクは、当該sigファイルが生成されるまで待機する。
図18は、ミューテックスを用いた場合の終段ワークフロースケジューリングタスクの処理を例示するフローチャートである。
ステップS801において、終段ワークフロースケジューリングタスクは、例えばsigファイルを削除する旨のコマンド「rm sig[i]」を実行する。sig[i]は、整数iに対応するタスクグループのsigファイルを示す。
図19は、ミューテックスを用いた場合の中断ワークフロースケジューリングタスクの処理を例示するフローチャートである。
図17と同様、中断ワークフロースケジューリングタスクは、終段ワークフロースケジューリングタスクと中断ワークフロースケジューリングタスクとを組み合わせたタスクである。すなわち、中断ワークフロースケジューリングタスクにおいては、まずステップS801の処理が実行され、次に、ステップS701の処理が実行される。
以上説明した本実施形態においては、所定のファイルシステム及びOSのファイルロックコマンドを用いてセマフォ及びミューテックスを実現する。これにより、簡便に排他制御を実装可能となる。
[第5の実施形態]
本実施形態においては、第1乃至第4の実施形態で説明したマルチワークフロースケジューリングシステムが搭載される電子機器の具体例を例示する。
図20は、本実施形態に係る電子機器の一例を示すブロック図である。この電子機器は、例えば、ストレージシステムSSとして実現され得る。このストレージシステムSSは、例えば、ネットワーク経由で接続されるクライアント装置Dからの要求に応じて、データの書き込み、データの読み出し、データの更新、データの削除などを実行するファイルサーバとして機能する。図20に示すように、ストレージシステムSSは、ネットワークスイッチ10、複数のコネクションユニット(CU)20、および複数のノードモジュール(NM)30を備えている。
NM30は、ノードコントローラ(NC)31と、一つ以上のNAND型フラッシュメモリ32とを有している。NC31は、NAND型フラッシュメモリ32に対するアクセス制御と、データの転送制御とを実行する。NC31は、例えば4系統の入出力ポートを有しており、NC31同士を接続することにより、複数のNM30を、例えばマトリックス状に相互に接続することができる。複数のNM30を相互に接続することにより、ストレージシステムSSは、大容量のデータ記憶領域40を論理的に構築する。
CU20は、クライアント装置Dからの要求に応じて、前述のように構築されたデータ記憶領域40に対するデータの入出力処理(データの更新、データの削除を含む)を実行する。より詳細には、クライアント装置Dからの要求に対応する、複数のNM30の中の目的のNM30に対してデータの入出力命令を発行する。以下、CU20からNM30へ発行されるデータの入出力命令を、コマンドと称することがある。
CU20は、CPU21、RAM22およびNMインタフェース23を有している。CU20の各機能は、RAM22に格納され、CPU21によって実行されるプログラムにより実現される。NMインタフェース23は、NM30、より詳細には、NC31との間の通信を実行する。NMインタフェース23は、複数のNM30の中のいずれか1つのN
M30のNC31と接続されている。つまり、CU20は、NMインタフェース23を介して、複数のNM30の中のいずれか1つのNM30と直接的に接続され、NM30のNC31を介して、その他のNM30と間接的に接続される。CU20と直接的に接続されるNM30は、CU20毎に異なっている。
前述したように、CU20は、複数のNM30の中のいずれか一つのNM30と直接的に接続される。したがって、CU20が、直接的に接続されるNM30以外のNM30に対してデータの入出力命令を発行する場合においても、その入出力命令は、まず、直接的に接続されるNM30へ転送される。その後、その入出力命令は、各NM30のNC31を介して目的のNM30まで転送される。
例えば、NM30がマトリックス状に相互に接続される場合、行番号と列番号との組合せで各NM30に識別子(M,N)が付されるものと想定すると、NC31は、自NM30の識別子と、入出力命令の送り先として指定される識別子とを比較することにより、第1に、その入出力命令が自NM30宛てか否かを判断できる。自NM30宛てでない場合、NC31は、自NM30の識別子と、入出力命令の送り先として指定される識別子との関係、より詳細には、行番号、列番号それぞれの大小関係から、第2に、隣接するNM30の中のいずれのNM30へ転送すべきかを判断できる。入出力命令を目的のNM30まで転送する手法については、特定の手法に限定されるものではなく、既知のいずれの手法も採用し得る。本来であれば転送先として選ばれることがないNM30への経路も、予備経路として使用され得る。
また、NM30による、入出力命令に応じた入出力処理の結果、すなわち、NAND型フラッシュメモリ32に対するアクセスの結果も、前述した入出力命令の転送と同様、NC31の働きにより、他のNM30をいくつか経由して入出力命令の発行元であるCU20まで転送される。例えば、入出力命令の発行元の情報として、CU20が直接的に接続されるNM30の識別子を含ませることで、この識別子を処理結果の転送先として指定することができる。
さらに、NC31は、割り込み要求信号を転送するための入出力ポートを別途例えば4系統有しており、前述した入出力命令および処理結果と同様、NM30からCU20までの割り込み要求信号の転送経路が動的に決定される。
ネットワークスイッチ10は、クライアント装置Dからの要求を受け付け、その要求を複数のCU20のいずれかに転送する。典型的には、ネットワークスイッチ10は、複数のCU20の負荷が均等となるように、クライアント装置Dからの要求を複数のCU20へ振り分ける。なお、ここでは、ネットワークスイッチ10を設ける例を示しているが、複数のCU20の中の1つのCU20がマスタとして動作して、ネットワークスイッチ10の役割を担ってもよい。ネットワークスイッチ10は、CU20から受領した処理結果をクライアント装置Dへ返送する。
図21は、NM30の構成(NC31の詳細な構成)の一例を示す図である。
前述したように、NM30は、NC31と、一つ以上のNAND型フラッシュメモリ32とを有している。NC31は、図21に示されるように、CPU311、RAM312、I/Oコントローラ313およびNANDインタフェース314を有している。NC31の各機能は、RAM312に格納され、CPU311によって実行されるプログラムにより実現される。I/Oコントローラ313は、CU20(より詳細には、NMインタフェース23)または他のNM30(より詳細には、NC31)との間の通信を実行する。NANDインタフェース314は、NAND型フラッシュメモリ32に対するアクセスを実行する。
ところで、図1に示す計算機システム1は、図20,21を用いて説明したストレージシステムSS及びクライアント装置Dを用いて柔軟に構成され得る。例えば、第1ノードFNはクライアント装置Dであり、切替装置SWはネットワークスイッチ10であり、計算ノードCNはCU20であってもよい。また、複数のCU20のうちいずれか1つが第1ノードFNの役割を担い、他のCU20が計算ノードCNとして動作してもよい。
また、第1のノードFNは省略可能でもよい。この場合、第1ノードFNの動作を、複数のCU20が分担してもよい。すなわち、プログラムPGに含まれるワークフローマネージャWFM、ワークフロースケジューラWFS、タスクスケジューラTS、リソースマネージャRMなどの各機能は、複数のCU20のCPU21で分散して実行されてもよい。
すなわち、ストレージシステムSS及びクライアント装置Dが一体となって計算機システム1を構成してもよく、ストレージシステムSSのみで計算機システム1を構成してもよい。
以上説明したように、各実施形態によれば、計算機システム1は、マルチワークフロースケジューリングシステムを実現するためのプログラムPGと、少なくとも1つ以上の計算ノードCNと、共有ファイルシステムSFSとを含む。論理ユニットLUは、少なくとも1つ以上の計算ノードCNを含む計算単位である。プログラムPGは、ワークフローマネージャWFMと、ワークフロースケジューラWFSと、タスクスケジューラTSと、リソースマネージャRMとを含む。このような構成において、ワークフロースケジューラWFSは、タスクグループごとに、タスクが同時に実行されるワークフローの数が複数の論理ユニットLUの数以下に制限されるように、計算ノードへのタスクの割り当てを行う。これにより、単位時間当たりに論理ユニットLUの数の定常処理スループットを確保し、かつ全処理時間を抑えることができる。さらに、処理量がワークフロー数及びワークフローの定義に依存せず、異種ワークフローにも対応可能である。
また、第2及び第3の実施形態に係るマルチワークフロースケジューリングシステムにおいては、通常タスクに加え、ワークフロースケジューリングタスクが定義される。これにより、統合ワークフローマネージャWFMS又は統合タスクスケジューラWFTSは、セマフォ又はミューテックスによるワークフロー処理の排他制御を、タスクとして実行可能となるため、計算機システム1の処理効率を高めることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…計算機システム、2…記憶装置、3,5…CPU、4,6…RAM、7…コア、CN…計算ノード、FS…共有ファイルシステム、LU…論理ユニット、WFMS…統合ワークフローマネージャ、WFM…ワークフローマネージャ、WFTS…統合タスクスケジューラ、WFS…ワークフロースケジューラ、TS…タスクスケジューラ、RM…リソースマネージャ、CN…計算ノード。

Claims (15)

  1. 各々が1以上のタスクを含む複数のワークフローを複数の計算機資源を含む1以上の計算単位によって並列に処理する場合におけるタスクの実行順を計画するワークフロースケジューリングシステムであって、
    前記複数のワークフローのうち1以上のワークフローに含まれる1以上のタスクの集合であるタスクグループごとに、タスクが同時に実行されるワークフローの数が前記計算単位の数以下の第1個数までに制限されるように制御を行う制御手段
    を備えるワークフロースケジューリングシステム。
  2. 前記タスクグループは、前記複数のワークフローのうちの異なるワークフローにそれぞれ含まれる1以上のタスクの集合である
    請求項1に記載のワークフロースケジューリングシステム。
  3. 前記タスクグループは、同一ワークフロー内の一連のタスクを含む
    請求項1又は請求項2に記載のワークフロースケジューリングシステム。
  4. 前記タスクグループは、同一ワークフロー内で並列して処理可能なタスクを含む
    請求項1又は請求項2に記載のワークフロースケジューリングシステム。
  5. 前記ワークフローの構成情報に基づいて前記タスクの状態を管理し、前記タスクのうち実行可能な1以上の第1タスクを選択する管理手段を備え、
    前記制御手段は、前記第1タスクの中から実行対象とする1以上の第2タスクを選択する第1計画手段を含み、
    前記第2タスクに対して所定の前記計算機資源を割り当てる第2計画手段を備える
    請求項1乃至請求項4のいずれか一項に記載のワークフロースケジューリングシステム。
  6. 前記制御手段は、前記タスクグループごとにセマフォ又はミューテックスを用いて前記制御を行う
    請求項1乃至請求項5のいずれか一項に記載のワークフロースケジューリングシステム。
  7. 前記制御手段は、前記タスクグループごとに、分散ロックマネージャにより構成された分散セマフォ、又は、前記分散ロックマネージャにより構成された分散セマフォを用いて前記制御を行う
    請求項1乃至請求項5のいずれか一項に記載のワークフロースケジューリングシステム。
  8. 前記計算機資源は、1以上の主記憶装置と1以上のプロセッサを備える
    請求項1乃至請求項5のいずれか一項に記載のワークフロースケジューリングシステム。
  9. 前記タスクの処理前及び前記タスクの処理後に前記制御手段を実行するための制御タスクを前記ワークフローに加えた拡大ワークフローの構成情報に基づいて、前記タスク及び前記制御タスクの状態を管理し、前記タスク及び前記制御タスクのうち実行可能な1以上の第1タスクを選択する管理手段と、
    前記第1タスクのうち実行対象とする1以上の第2タスクに対して所定の前記計算機資源を割り当てる計画手段と、
    を備える
    請求項1乃至請求項4のいずれか一項に記載のワークフロースケジューリングシステム。
  10. 前記計画手段は、前記第2タスクが前記制御タスクである場合には、前記第2タスクに対して前記計算機資源のうち第1計算機資源を割り当て、前記第2タスクが前記制御タスクでない場合には、前記第2タスクに対して前記計算機資源のうち前記第1計算機資源と重複しない第2計算機資源を割り当てる
    請求項9に記載のワークフロースケジューリングシステム。
  11. 前記制御タスクは、分散ロックマネージャを用いて実装される分散ファイルロックコマンドを用いて分散セマフォ又は分散ミューテックスを操作するスクリプトを、前記計算機資源により構成される所定の計算ノードに実行させる
    請求項9又は請求項10に記載のワークフロースケジューリングシステム。
  12. 前記分散ロックマネージャは、OCFS2フォーマットのファイルシステムにより提供される
    請求項11に記載のワークフロースケジューリングシステム。
  13. 前記タスクの処理前及び前記タスクの処理後に前記制御手段を実行するための制御タスクを前記ワークフローに加えた拡大ワークフローの構成情報に基づいて、前記タスク及び前記制御タスクの状態を管理し、実行可能な前記制御タスクを実行し、前記タスクのうち実行対象とする1以上の第1タスクを選択する管理手段と、
    前記第1タスクに対して所定の前記計算機資源を割り当てる計画手段と、
    を備える
    請求項1乃至請求項4のいずれか一項のワークフロースケジューリングシステム。
  14. 各々が1以上のタスクを含む複数のワークフローを複数の計算機資源を含む1以上の計算単位によって並列に処理する場合におけるタスクの実行順を計画するワークフロースケジューリング方法であって、
    ワークフローの構成情報に基づいて前記タスクの状態を管理し、前記タスクのうち実行可能な1以上の第1タスクを選択することと、
    前記第1タスクの中から実行対象とする1以上の第2タスクを選択することと、
    前記複数のワークフローのうち1以上のワークフローに含まれる1以上の前記タスクの集合であるタスクグループごとに、前記第2タスクが同時に実行されるワークフローの数が前記計算単位の数以下の第1個数までに制限されるように制御を行うことと
    前記第2タスクに対して所定の前記計算機資源を割り当てることと、
    を備えるワークフロースケジューリング方法。
  15. 各々が1以上のタスクを含む複数のワークフローを並列に処理可能な計算機資源と、
    ワークフローの構成情報に基づいて前記タスクの状態を管理し、前記タスクのうち実行可能な1以上の第1タスクを選択する管理手段と、
    前記第1タスクの中から実行対象とする1以上の第2タスクを選択する第1計画手段と、
    前記複数のワークフローのうち1以上のワークフローに含まれる1以上の前記タスクの集合であるタスクグループごとに、前記第2タスクが同時に実行されるワークフローの数が複数の前記計算機資源からなる所定の計算単位の数以下の第1個数までに制限されるように制御を行う制御手段と、
    前記第2タスクに対して所定の前記計算機資源を割り当てる第2計画手段と、
    を備える電子機器。
JP2018001411A 2018-01-09 2018-01-09 ワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器 Pending JP2019121240A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018001411A JP2019121240A (ja) 2018-01-09 2018-01-09 ワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器
US16/120,404 US10866832B2 (en) 2018-01-09 2018-09-03 Workflow scheduling system, workflow scheduling method, and electronic apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018001411A JP2019121240A (ja) 2018-01-09 2018-01-09 ワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器

Publications (1)

Publication Number Publication Date
JP2019121240A true JP2019121240A (ja) 2019-07-22

Family

ID=67140185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018001411A Pending JP2019121240A (ja) 2018-01-09 2018-01-09 ワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器

Country Status (2)

Country Link
US (1) US10866832B2 (ja)
JP (1) JP2019121240A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783123A (zh) * 2020-12-30 2021-05-11 北京理工大学 一种工作流调度执行单元控制方法和控制器
WO2022158012A1 (ja) * 2021-01-25 2022-07-28 株式会社日立製作所 ワークフロー管理システム、放射線治療システム及びワークフロー管理方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019222031A1 (en) * 2018-05-12 2019-11-21 Schlumberger Technology Corporation Seismic data interpretation system
CN110955508B (zh) * 2019-11-28 2021-04-13 广州鼎甲计算机科技有限公司 基于分布式架构的异步任务调度方法、装置和计算机设备
WO2022109351A1 (en) * 2020-11-20 2022-05-27 Okta, Inc. Server-based workflow management using priorities
JP2022105439A (ja) * 2021-01-04 2022-07-14 富士通株式会社 情報処理装置、スケジュール特定方法およびスケジュール特定プログラム
US20220366331A1 (en) * 2021-05-14 2022-11-17 Sap Se Persona-driven assistive suite

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370325B1 (en) * 1999-02-19 2008-05-06 Lucent Technologies Inc. Eager evaluation of tasks in a workflow system
US9329899B2 (en) * 2013-06-24 2016-05-03 Sap Se Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads
US10223163B2 (en) * 2016-07-14 2019-03-05 Microsoft Technology Licensing, Llc Workflow-based object destruction
US10685034B2 (en) * 2017-10-17 2020-06-16 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing concurrent dataflow execution with write conflict protection within a cloud based computing environment
JP6906434B2 (ja) 2017-11-28 2021-07-21 キオクシア株式会社 電子機器およびファイル管理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783123A (zh) * 2020-12-30 2021-05-11 北京理工大学 一种工作流调度执行单元控制方法和控制器
CN112783123B (zh) * 2020-12-30 2021-11-19 北京理工大学 一种工作流调度执行单元控制方法和控制器
WO2022158012A1 (ja) * 2021-01-25 2022-07-28 株式会社日立製作所 ワークフロー管理システム、放射線治療システム及びワークフロー管理方法

Also Published As

Publication number Publication date
US10866832B2 (en) 2020-12-15
US20190213040A1 (en) 2019-07-11

Similar Documents

Publication Publication Date Title
JP2019121240A (ja) ワークフロースケジューリングシステム、ワークフロースケジューリング方法及び電子機器
US8516461B2 (en) Method to dynamically distribute a multi-dimensional work set across a multi-core system
US9092266B2 (en) Scalable scheduling for distributed data processing
CN101727357B (zh) 用于分配计算中心中资源的方法和装置
JP2000194674A (ja) 分散ジョブ統合管理システム
JP2007041720A (ja) ジョブステップ実行プログラムおよびジョブステップ実行方法
US20100121904A1 (en) Resource reservations in a multiprocessor computing environment
CN113382077B (zh) 微服务调度方法、装置、计算机设备和存储介质
US20120059938A1 (en) Dimension-ordered application placement in a multiprocessor computer
JPWO2005116832A1 (ja) 分散処理環境におけるジョブの実行を制御するためのコンピュータシステム、方法及びプログラム
JP2008226023A (ja) ジョブ割当装置、及びジョブ割当方法
CN110134533B (zh) 一种可批量调度数据的系统及方法
CN117435324A (zh) 基于容器化的任务调度方法
JP6855960B2 (ja) 並列処理装置、および並列処理装置の保守方法
US20100122261A1 (en) Application level placement scheduler in a multiprocessor computing environment
JP3429582B2 (ja) マルチプロセッサシステム
JP2007102332A (ja) 負荷分散システム及び負荷分散方法
CN109450913A (zh) 一种基于策略的多节点注册调度方法
US20100122254A1 (en) Batch and application scheduler interface layer in a multiprocessor computing environment
Sudarsan et al. Design and performance of a scheduling framework for resizable parallel applications
JP2012038275A (ja) 取引計算シミュレーションシステム、方法及びプログラム
US8402465B2 (en) System tool placement in a multiprocessor computer
Plauth et al. CloudCL: distributed heterogeneous computing on cloud scale
US8762536B2 (en) Compact node ordered application placement in a multiprocessor computer
CN101169742B (zh) 用于大规模并行处理系统的资源保留

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830