JP6369170B2 - 実行時間推定装置及び方法 - Google Patents

実行時間推定装置及び方法 Download PDF

Info

Publication number
JP6369170B2
JP6369170B2 JP2014136433A JP2014136433A JP6369170B2 JP 6369170 B2 JP6369170 B2 JP 6369170B2 JP 2014136433 A JP2014136433 A JP 2014136433A JP 2014136433 A JP2014136433 A JP 2014136433A JP 6369170 B2 JP6369170 B2 JP 6369170B2
Authority
JP
Japan
Prior art keywords
workflow
exclusion
execution time
instance
execution
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
JP2014136433A
Other languages
English (en)
Other versions
JP2016015001A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014136433A priority Critical patent/JP6369170B2/ja
Priority to US14/730,600 priority patent/US20160004566A1/en
Publication of JP2016015001A publication Critical patent/JP2016015001A/ja
Application granted granted Critical
Publication of JP6369170B2 publication Critical patent/JP6369170B2/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/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

Description

本発明は、複数のワークフローを実行する場合における実行時間の推定技術に関する。
データセンタには、多数のIT(Information Technology)機器(サーバ、ストレージ、ネットワークなど)が設置されており、それらはハードウエアだけではなくOS(Operating System)、ミドルウエア及びアプリケーションプログラムの組み合わせにて所望の処理を行うようになっている。また、データセンタでは、複数のIT機器を組み合わせた複数の業務システムが稼働しており、多数のIT機器及び業務システムに対して監視や保守作業が行われている。
このようなデータセンタにおける運用作業を自動化するための技術が存在しており、ある技術においては、業務システムに対する作業手順を記述したワークフローを設計して自動実行をすることで、業務の効率化を図っている。図1に示すように、スタート(Start)から、エンド(End)までに、行うべき作業に対応し且つ予め用意された部品を並べて、実行させるようになっている。
しかし、運用プロセス(ワークフローにパラメタなどの情報を与えて起動することで生成されたインスタンスのことを運用プロセスと呼ぶ)の同時実行や、複雑なワークフローでの分岐などにより、運用プロセスの実行がスケジュール通りに終了できず、後続業務(たとえば、オンライン業務開始)に影響を与えることがある。具体的には、後続業務の開始遅延が発生する。
このように運用プロセスをスケジュール通り実行しないと後続業務に影響を与えるため、運用プロセスの終了時刻を事前に正しく導出することが求められている。
例えば、人の作業をワークフロー化して、実行中の運用プロセスが目標時刻までに終了するかを予測する技術が存在している。このような予測では、作業時間の推測値を定義した情報や過去実施した同一の作業の遂行実績時間の情報を用いて、終了時刻を単純計算で求めるだけである。遂行実績時間については、その計測に時間や手間が掛かるだけではなく、あくまで過去の実績に過ぎず、環境が変わったりすれば異なる結果が得られるようになるため、正確性に欠けるという問題もある。
また、従来の技術では、運用プロセスの重要な特性が考慮されていない。すなわち、運用モジュール(ワークフローに含まれる部品を実際に動作させたときに、実行時間が推定される対象を運用モジュールと呼ぶ)の実行時間は、実行されるサーバの状況により変動するが、最小値及び最大値は求めることは可能である。よって、運用プロセスが1つしかない場合には、運用モジュールの実行時間の最小値及び最大値から、運用プロセスの実行時間の最小値及び最大値を算出することはできる。
しかしながら、複数の運用プロセスを実行する場合には、複数の運用プロセスの間で、排他条件が存在する場合がある。このような場合、排他待ち時間は、排他がいつ解消するかにより定まるが、排他条件が多重的に設定されていると複数の排他条件が相互に影響を及ぼして排他の解消がいつ発生するかは、排他を直接発生させた他の運用プロセスだけでは分からない。すなわち、排他待ち時間は、容易に推定できない。
また、排他の発生は、複数の運用プロセスの実行タイミングにも依存するが、そのような問題についても従来の技術では対処できていない。
特開平8−190584号公報 特開2008−84083号公報 特開2009−169787号公報 特表2003−526158号公報
従って、本発明の目的は、一側面によれば、複数のワークフローを実行する際において排他条件が定義されている場合にも正確に実行時間を推定するための技術を提供することである。
本発明の実行時間推定装置は、1又は複数のモジュールを各々含む複数のプロセスを実行する場合における実行時間を推定する実行時間推定装置である。そして、この実行時間推定装置は、(A)複数のプロセスについて排他実行に関する条件と、複数のプロセスに係る各モジュールの実行時間の範囲に関するデータとを格納する格納部と、(B)(b1)複数のプロセスの各々について、当該プロセスに含まれるモジュールの順番で格納部に格納された各モジュールの実行時間の範囲に応じた1又は複数のケースを生成する処理と、(b2)格納部に格納された上記条件に基づく複数のプロセスに係る複数のケース間における排他待ちの発生の有無を判定する第1の判定処理と、(b3)排他待ちの発生があると判定された場合には当該排他待ちが発生したプロセスのケースに排他待ちを設定する処理とを含むケース処理を仮想的に時間進展させつつ実行することで、複数のプロセスを実行する場合における実行時間を推定する推定部とを有する。この場合、上記第1の判定処理は、排他待ちが発生する可能性の有無を判定する第2の判定処理と、第2の判定処理の処理結果に基づき、排他待ちの発生の有無を判定する処理とを含む。そして、上記第1の判定処理において、第2の判定処理において排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性があるケースに対して再帰的に第2の判定処理を実行する。
一側面によれば、複数のワークフローを実行する際において排他条件が定義されている場合にも正確に実行時間を推定できるようになる。
図1は、ワークフローの一例を示す図である。 図2は、本発明の実施の形態に係る情報処理装置の機能ブロック図である。 図3は、実行制御部のメインの処理フローを示す図である。 図4は、処理結果の出力例を示す図である。 図5は、見積もり処理の処理フローを示す図である。 図6は、開始管理テーブルの一例を示す図である。 図7は、運用プロセス状態管理部のメインの処理フローを示す図である。 図8は、更新処理の処理フローを示す図である。 図9は、ワークフローの第1の例を示す図である。 図10は、ワークフローの第1の例についての排他管理テーブルを示す図である。 図11は、ワークフローの第1の例についての実行時間管理テーブルを示す図である。 図12は、ワークフローの第1の例についてt=0におけるインスタンス管理テーブルの状態を示す図である。 図13は、ワークフローの第1の例についてt=1におけるインスタンス管理テーブルの状態を示す図である。 図14は、インスタンス管理テーブルの状態を模式的に示す図である。 図15は、ワークフローの第1の例についてt=2におけるインスタンス管理テーブルの状態を示す図である。 図16は、インスタンス管理テーブルの状態を模式的に示す図である。 図17は、インスタンス管理テーブルの状態を模式的に示す図である。 図18は、インスタンス管理テーブルの状態を模式的に示す図である。 図19は、状態確定処理の処理フローを示す図である。 図20は、待ち状態確認処理の処理フローを示す図である。 図21は、ワークフローの第2の例を示す図である。 図22は、ワークフローの第2の例についての排他管理テーブルを示す図である。 図23は、ワークフローの第2の例についての実行時間管理テーブルを示す図である。 図24は、ワークフローの第2の例についてt=0におけるインスタンス管理テーブルの状態を示す図である。 図25は、ワークフローの第2の例についてt=1におけるインスタンス管理テーブルの状態を示す図である。 図26は、インスタンス管理テーブルの状態を模式的に示す図である。 図27は、ワークフローの第2の例についてt=2におけるインスタンス管理テーブルの状態を示す図である。 図28は、インスタンス管理テーブルの状態を模式的に示す図である。 図29は、ワークフローの第3の例を示す図である。 図30は、ワークフローの第3の例についての排他管理テーブルを示す図である。 図31は、ワークフローの第3の例についての実行時間管理テーブルを示す図である。 図32は、ワークフローの第2の例についての開始時間管理テーブルを示す図である。 図33は、ワークフローの第3の例についてt=0におけるインスタンス管理テーブルの状態を示す図である。 図34は、ワークフローの第3の例についてt=1におけるインスタンス管理テーブルの状態を示す図である。 図35は、インスタンス管理テーブルの状態を模式的に示す図である。 図36は、ワークフローの第3の例についてt=2におけるインスタンス管理テーブルの状態を示す図である。 図37は、インスタンス管理テーブルの状態を模式的に示す図である。 図38は、ワークフローの第3の例についてt=3におけるインスタンス管理テーブルの状態を示す図である。 図39は、インスタンス管理テーブルの状態を模式的に示す図である。 図40は、ワークフローの第3の例についてt=4におけるインスタンス管理テーブルの状態を示す図である。 図41は、インスタンス管理テーブルの状態を模式的に示す図である。 図42は、ワークフローの第4の例を示す図である。 図43は、ワークフローの第4の例の実行を模式的に示す図である。 図44は、コンピュータの機能ブロック図である。
図2に、実行時間推定装置として動作し、本実施の形態に係る情報処理装置100の構成例を示す。本実施の形態に係る情報処理装置100は、実行制御部110と、データベース120と、同時に実行される運用プロセス毎に起動される運用プロセス状態管理部130(図2では運用プロセス状態管理部130A乃至130C)とを有する。また、情報処理装置100は、表示装置や印刷装置、ネットワークに接続された他のコンピュータである出力装置200と接続されている。
実行制御部110は、データベース120に格納されているデータに基づき、運用プロセス状態管理部130A乃至130Cの起動や処理などを制御し、処理結果を出力装置200に出力する。
運用プロセス状態管理部130A乃至130Cは、担当するワークフローの運用プロセスの状態を、実行制御部110からの指示に基づき時間を進展させつつ、データベース120に格納されているデータに基づき遷移させる等して管理する。
データベース120は、ワークフローに含まれる部品毎に実行時間のデータ(実行時間管理テーブル)を格納している。また、データベース120は、ワークフロー間の排他条件についてのデータ(例えば排他管理テーブル)をも格納している。さらに、データベース120は、ワークフローの運用プロセスの実行タイミングについてのデータ(例えば開始管理テーブル)をも格納している。さらに、データベース120は、運用プロセスの状態を管理するためのデータ(例えばインスタンス管理テーブル)をも格納している。
本実施の形態では、複数の運用プロセスを並行して動作させた場合に、運用モジュールの実行時間の予想範囲(最短時間から最長時間)に、排他待ちが発生するケースと発生しないケースがないかを、両方とも確認して、それぞれについて実行時間を導出する。また、運用プロセスに分岐がある場合は、終了時刻は1つに定まらないため、網羅的に実行パターンを求めることで解決する。さらに、人の作業は、すぐに実施される場合と、終了期限ぎりぎりまで何もされない場合等が存在する。従って、人の作業についても、終了時間を最短時間から最長時間までの範囲として設定する。
このように、本実施の形態では、複数の運用プロセスを同時に動作させた場合を、生じ得る実行パターンのそれぞれについてシミュレーションを行う。このシミュレーションにおいては、生じ得る実行パターンのそれぞれについて運用プロセスのインスタンスを生成させて、そのインスタンスの状態の変化を、時間の進展に伴い確認してゆく。
上でも述べたように、複数の運用プロセスは、排他条件に基づき、互いに関連しながら動作する。排他待ちは、運用プロセスAが、運用プロセスBの終了を待ち、運用プロセスBは、運用プロセスCの終了を待つといったように、多重に発生する可能性があるので、排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性のある運用プロセスに対して、さらに排他待ちが発生する可能性があるか否かを再帰的に判定するようにする。
これによって、排他待ちの解消を適切に検出することができるので、結果として待ち時間が正しく想定されるようになって、正しく実行時間を見積もることができるようになる。
このように生じ得る実行パターンのそれぞれについてシミュレーションを実行するので、各運用モジュール等の実行時間の予測範囲が設定されれば、実行実績が無いような運用プロセスの組み合わせについても、実行時間を推定することができるようになる。
次に、図3乃至図43を用いて、情報処理装置100の動作内容について説明する。
まず、実行制御部110の動作について、図3を用いて説明する。
実行制御部110は、ユーザから予測依頼を受け付ける(図3:ステップS1)。予測依頼には、並行して実行されるワークフローの指定が含まれる。
また、実行制御部110は、予測依頼に含まれるワークフローに応じて、運用プロセス状態管理部130を起動させる(ステップS3)。例えば3つのワークフローを並行して実行する場合には、それぞれに対して1つの運用プロセス状態管理部130を起動させる。
そして、実行制御部110等は、見積もり処理を実行する(ステップS5)。見積もり処理については、以下に詳細に説明する。
そして、見積もり処理の結果として、実行制御部110は、データベース120に格納されているデータから、見積もり結果を、出力装置200に対して出力する(ステップS7)。
本実施の形態では、インスタンス管理テーブルに、各運用プロセスについての最短実行時間に相当するデータと最長実行時間に相当するデータとが登録されるようになる。開始時刻が設定されれば、最短終了時刻最長終了時刻も算出される。
例えば、ワークフローAとワークフローBとを同時に実行させた場合の見積もり結果の例を図4に示す。図4の例では、ワークフローAを9:00に開始し、ワークフローBを9:10に開始する。そうした場合、ワークフローAについては、最短実行時間が0:27で最短終了時刻は9:27、最長実行時間が0:30で最長終了時刻は9:30となる。一方、ワークフローBについては、最短実行時間が0:21で最短終了時刻は9:31、最長実行時間0:40で最長終了時刻が9:50となる。このような結果を示せば、ワークフローA及びBを同時実行した場合には、遅くても9:50に実行が終了することが分かる。
次に、見積もり処理について図5を用いて説明する。
まず、実行制御部110は、時刻tを0に設定する(図5:ステップS11)。
そして、実行制御部110は、起動させた運用プロセス状態管理部130から運用プロセスの全てのインスタンスが完了したという通知を受けたか否かで処理を終了させるか否かを判断する(ステップS13)。
処理を終了させない場合には、実行制御部110は、t単位時間後の状態を取得するように、運用プロセス状態管理部130に対して予測指示を行う(ステップS15)。ここで、実行制御部110は、データベース120に格納されている開始管理テーブルを参照して、開始時刻以降となったワークフローについての運用プロセス状態管理部130に予測指示を出力する。また、全てのインスタンスが完了したとの通知を受けた運用プロセス状態管理部130については、指示を行わない。
開始管理テーブルは、例えば図6に示すようなデータである。図6の例では、ワークフローAについては、9:00に実行を開始し、ワークフローBについては、9:10に実行を開始する。このようなデータの場合には、ワークフローBをワークフローAの実行開始から10分たつまではステップS15の予測指示を行わない。
そして、実行制御部110は、tを1インクリメントし(ステップS17)、処理はステップS13に戻る。このような処理を実行すれば、各時刻における運用プロセスの状態を運用プロセス状態管理部130の各々に記録させることができるようになる。終了させる場合には、実行制御部110は、各運用プロセス状態管理部130に終了指示を出力する(ステップS19)。
次に、図7乃至図43を用いて、運用プロセス状態管理部130の処理内容について説明する。
まず、運用プロセス状態管理部130は、実行制御部110から指示を受け取ったか否かを判断する(図7:ステップS21)。指示を受け取っていない場合には、処理はステップS21に戻って指示の受信を待つ。
一方、指示を受信した場合には、運用プロセス状態管理部130は、終了指示であるか否かを判断する(ステップS23)。何らかの理由で実行制御部110が、見積もり処理を途中で終了させる場合には、終了指示がなされる場合がある。終了指示がなされた場合には、処理は終了する。
一方、終了指示ではない場合には、指示は予測指示となるので、運用プロセス状態管理部130は、t単位時間後の状態を登録するように、インスタンス管理テーブルの更新処理を実行する(ステップS25)。この更新処理が完了すると、運用プロセス状態管理部130は、担当する運用プロセスについてのインスタンスが全て完了となったか否かを判断する(ステップS27)。少なくとも1つのインスタンスについて動作中又は待機中であれば、処理はステップS21に戻る。
一方、全てのインスタンスが完了となった場合には、運用プロセス状態管理部130は、完了を実行制御部110に通知する(ステップS29)。そして、処理は終了する。
このような処理によって、インスタンス管理テーブルを単位時間毎に更新できるようになる。
次に、更新処理について、図8乃至図43を用いて説明する。まず、運用プロセス状態管理部130は、インスタンス管理テーブルにおいてt=t−1で未完了のインスタンスのうち、未処理のインスタンスを1つ特定する(図8:ステップS30)。
次に、運用プロセス状態管理部130は、指定時刻(t単位時間後の時刻)において、特定されたインスタンスが未完了の場合が存在するか否かを判断する(ステップS31)。
運用モジュールの実行時間が、例えば1単位時間又は2単位時間というように設定されていれば、t−1単位時間後にその運用モジュールの実行時間(以下、経過時間と呼ぶ)が1単位時間であるとすると、その運用モジュールの動作が完了する場合と、もう1単位時間だけ動作する場合とに分かれる。このような場合には、指定時刻において未完了の場合が存在すると判断される。
ステップS31の条件を満たす場合には、運用プロセス状態管理部130は、特定されたインスタンスについて、運用モジュールが未完了であることを表すレコードを、データベース120におけるインスタンス管理テーブルに登録する(ステップS33)。
一方、ステップS31の条件が満たされない場合には、処理はステップS35に移行する。
さらに、運用プロセス状態管理部130は、指定時刻について状態確定処理を実行する(ステップS35)。状態確定処理は、排他待ちの状態を確認するための処理であるので、後に詳しく述べる。
その後、運用プロセス状態管理部130は、ステップS35の処理結果に基づき、特定されたインスタンスについて、指定時刻に、排他待ちが発生するか否かを判断する(ステップS37)。
排他待ちが発生したと判断された場合には、運用プロセス状態管理部130は、特定されたインスタンスについて、排他待ちが発生したことを表すレコードを、データベース120におけるインスタンス管理テーブルに登録する(ステップS39)。
一方、排他待ちが発生しないと判断された場合には、処理はステップS41に移行する。
さらに、運用プロセス状態管理部130は、指定時刻に、特定されたインスタンスについて、次の運用モジュールに遷移する場合があるか否かを判断する(ステップS41)。具体的には、t=t−1においてある運用モジュールの動作が完了する場合が存在するか否かを判断する。なお、次の運用モジュールは、終了(END)をも含む。
ステップS41の条件を満たす場合には、運用プロセス状態管理部130は、特定されたインスタンスについて、現在の運用モジュール(又はスタート)から次の運用モジュールに遷移することを表すレコードを、データベース120におけるインスタンス管理テーブルに登録する(ステップS43)。そして処理はステップS45に移行する。一方、ステップS41の条件を満たさない場合にも処理はステップS45に移行する。そして、運用プロセス状態管理部130は、インスタンス管理テーブルにおいてt=t−1において、未処理の未完了インスタンスが存在しているか否かを判断する(ステップS45)。未処理の未完了インスタンスが存在する場合には、処理はステップS30に戻る。一方、未処理の未完了インスタンスが存在しない場合には、処理は呼び出し元の処理に戻る。
ここで、処理内容を分かりやすくするため、簡単な例を説明してゆくものとする。具体的には、1つのワークフローを実行する場合を例に説明する。図9に示すようなワークフローを想定する。すなわち、開始後に部品1を実行するが、その後、人による作業3と、部品2とを並行して実行して、それぞれその後終了するものである。なお、部品1にはServiceAについての排他が設定されており、部品1及び2についてHostAについての排他も設定されている。
このような場合、データベース120には、図10に示すような排他管理テーブルが格納される。図10の例では、ワークフロー番号と、排他資源名(HostAやServiceAなど)と、排他開始番号(すなわち部品番号)及び排他終了番号(すなわち部品番号)とが登録されるようになっている。
また、データベース120には、図11に示すような実行時間管理テーブルが格納される。図11の例では、各部品番号について、最短時間と最長時間とが登録されるようになっている。この例では、どの部品も、1秒(説明を簡単にするため具体例においては1秒が1単位時間とする)乃至2秒の実行時間ということになる。なお、人による作業の場合には、別途実行時刻を定義するようにしても良い。すなわち、終了タイミングが他の部品の実行後というような設定を別途行うようにしても良い。
なお、データベース120には、開始管理テーブルを格納しているが、この例ではワークフローが1つだけなので、ここでは用いられないため説明を省略する。
まず、t=0の場合、インスタンス管理テーブルは、図12のような状態となる。図12に示すように、インスタンス管理テーブルには、レコードの識別番号と、総時間と、ワークフロー番号と、実行中の部品番号と、当該部品についての経過時間と、1秒後のレコード番号と、1秒前のレコード番号と、排他待ちを生じさせているレコード番号である待ち番号と、状態確定処理において特定された待ち状態とが登録されるようになっている。t=0では、ステップS43において、ワークフロー1の部品1の処理が開始していない状態が、登録される。すなわち、1つのインスタンスのみが存在する。
t=1となると、インスタンス管理テーブルは、図13に示すような状態となる。レコード番号「2」についてのレコードは、部品1の処理が未完了の場合のインスタンスを表しており、ステップS33で生成され、経過時間が「1」となる。さらに、部品1の処理が1秒で完了したとすると、部品2に遷移する場合と、部品3に遷移する場合とが生ずる。従って、ステップS43において、レコード番号「3」のレコード及びレコード番号「4」のレコードが生成される。
なお、これらのレコードにおいては、1秒前のレコード番号が「1」と設定され、レコード番号「1」のレコードにおいては、1秒後のレコード番号が「2,3,4」と設定される。以下では説明を省略するが、1秒前のレコード番号と1秒後のレコード番号とを登録することで、状態遷移を双方向で辿ることができるようになる。
このようなインスタンス管理テーブルの状態を模式的に示せば、図14のようになる。なお、レコード「1」のインスタンスが、3つのインスタンスに分岐したことになる。
t=2となると、インスタンス管理テーブルは、図15に示すような状態となる。レコード番号「2」のレコードで表されるインスタンスについては、部品1の処理が完了することになるので、ステップS43で次の運用モジュールに遷移することを表すレコードが登録される。この場合、ワークフロー1の構造から、部品2に遷移する場合と部品3に遷移する場合とがあることが分かるので、レコード番号「5」及び「6」のレコードが生成される。遷移したばかりなので、経過時間は「0」となる。
これらのレコードで表される状態を模式的に示せば、図16に示すようになる。このように、部品1が2秒かかった後に、部品2に遷移したケース(レコード「5」)と、部品3に遷移したケース(レコード「6」)とが発生する。
また、レコード番号「3」のレコードで表されるインスタンスについては、部品2の処理が1秒で完了して終了する場合と、部品2の処理が継続する場合とが発生する。前者の場合には、ステップS43でレコード番号「7」のレコードが生成され、後者の場合には、ステップS33でレコード番号「8」のレコードが生成されることになる。
これらのレコードで表される状態を模式的に示せば、図17に示すようになる。このように、部品2の処理が1秒で完了して終了するケース(レコード「7」)と、部品2の処理がもう1秒継続するケース(レコード「8」)とが発生する。
さらに、レコード番号「4」のレコードで表されるインスタンスについては、部品3の処理が1秒で完了して終了する場合と、部品3の処理が継続する場合とが発生する。前者の場合には、ステップS43でレコード番号「9」のレコードが生成され、後者の場合には、ステップS33でレコード番号「10」のレコードが生成されることになる。
これらのレコードで表される状態を模式的に示せば、図18に示すようになる。このように、部品3の処理が1秒で完了して終了するケース(レコード「9」)と、部品3の処理がもう1秒継続するケース(レコード「10」)とが発生する。
このようにt=2では6つのインスタンスに分岐したことになる。これ以降の時刻に関する説明については、同様であるから省略する。
次に、排他待ちが発生する場合について図19乃至図43を用いて説明する。ここでステップS35の処理内容について、図19及び図20を用いて説明する。
運用プロセス状態管理部130は、処理対象のインスタンスの状態を特定する(図19:ステップS51)。
具体的には、インスタンス管理テーブルにおいて、t=t−1におけるインスタンスのレコードの待ち番号及び待ち状態のデータを読み出す。初期的には何も登録されていないので、開始管理テーブル及び排他管理テーブルから、排他条件を特定して、排他条件から排他待ちが発生するか否かを判断する。なお、新たな排他待ちが発生する場合もあるので、排他管理テーブルから排他条件を特定して、t=t−1で生存している他のインスタンスと新たな排他が発生していないかを確認する処理をも行う。
次に、運用プロセス状態管理部130は、待ち状態確認処理を実行する(ステップS53)。待ち状態確認処理については、後に詳細に説明する。
そして、運用プロセス状態管理部130は、検出された待ち状態から、処理対象のインスタンスについて待ち状態を確定させる(ステップS55)。具体的には、指定時刻(t単位時間後の時刻)において、待ちが解消した場合と、待ちが発生している場合とを特定する。待ちが解消した場合には、待ちが解消することで、実行が開始するので次の運用モジュールに遷移することになる。待ちが発生している場合には、どのようなインスタンスによって待ちが生じさせられているのかを特定する。
次に、待ち状態確認処理について、図20を用いて説明する。
運用プロセス状態管理部130は、処理対象のインスタンスが待ちになる可能性があるか否かを確認する(ステップS61)。インスタンス管理テーブルにおいて、着目しているレコードに待ち番号が登録されているか否かを判断する。
待ちになる可能性がなければ(ステップS63:Noルート)、呼び出し元の処理に戻る。
一方、待ちになる可能性があれば(ステップS63:Yesルート)、運用プロセス状態管理部130は、排他を先にとっている運用プロセスのインスタンスに関する時刻tのレコードを特定する(ステップS65)。そして、運用プロセス状態管理部130は、排他を先にとった運用プロセスのインスタンスについて、待ち状態確認処理を再帰的に実行する(ステップS67)。そして呼び出し元の処理に戻る。
このようにすることで、排他の可能性なしと判定されるまで、排他関係を確認する。
例えば、図21に示すような具体例を考察する。図21の例では、ワークフロー1乃至3を並行して実行する場合を想定しており、ワークフロー1には部品1が含まれ、ワークフロー2には部品2が含まれ、ワークフロー3には部品3が含まれる。排他条件としては、部品1乃至3は、それぞれHostBへの排他が設定されている。従って、排他管理テーブルは、図22に示すような状態となる。すなわち、各ワークフローの部品には、排他資源名としてHostBが設定されている。
また、図23に示すような実行時間管理テーブルがデータベース120に格納されているものとする。図23の例では、どの部品も実行時間は1秒と簡素化されている。
なお、この例でも開始時刻は同じになっているものとして、開始時刻テーブルについては説明を省略する。
図22に示すような排他管理テーブルの場合には、ワークフロー1に着目すれば、排他条件がワークフロー2及び3と重複しており、ワークフロー2とワークフロー3とで待ち合せが発生する可能性がある。
t=0では、図24に示すようなインスタンス管理テーブルの状態となる。どのワークフローについても、ステップS43で、最初の部品の処理に遷移した状態となる。なお、初期的には状態確定処理においては、待ちが特定されないものとする。
t=1では、図25に示すようなインスタンス管理テーブルの状態となる。
レコード番号「1」のレコードで表されるインスタンスについては、部品1の実行時間は1秒なので、実行していれば未完了となることはないので、ステップS33でレコードは登録されない。状態確定処理においては、ステップS51で、排他管理テーブルから、他のワークフローについて設定されている排他条件から、排他待ちが発生するか否かを判断する。図22に示す排他管理テーブルの場合、ワークフロー1が最初に実行されれば待ちは発生しない。一方、ワークフロー2の部品2及びワークフロー3の部品3と排他の関係にあることが把握される。従って、ワークフロー2の排他待ちと、ワークフロー3の排他待ちとが生ずる。但し、ワークフロー2の排他待ちの場合には、ワークフロー2自体がワークフロー3を排他待ちの場合もある。同様に、ワークフロー3の排他待ちの場合には、ワークフロー3自体がワークフロー2を排他待ちの場合もある。このような状態を特定する。なお、t=0のレコード番号「1」のレコードには待ち番号が登録されていないので、待ちの可能性はないと判断される。
従って、ステップS39では、ワークフロー2を待つ場合のインスタンスのレコード(レコード番号「5」)と、ワークフロー3を待つ場合のインスタンスのレコード(レコード番号「6」)とを生成する。上で述べたように、ワークフロー2を待つ場合であっても、ワークフロー2のみを待つ場合とワークフロー2がワークフロー3を待つ場合もあるので、その状態を待ち状態の列に登録する。「2−>3」はワークフロー2がワークフロー3を待つ状態を表している。同様に、ワークフロー3を待つ場合であっても、ワークフロー3のみを待つ場合とワークフロー3がワークフロー2を待つ場合もあるので、その状態を待ち状態の列に登録する。
また、ステップS43では、ワークフロー1の部品1が最初に実行して処理が終了するインスタンスについてのレコード(レコード番号「4」)を、インスタンス管理テーブルに登録する。
t=1におけるワークフロー1についてのインスタンスの状態を模式的に示せば図26のようになる。
この具体例においては、ワークフロー2についてのレコード「2」及びワークフロー3についてのレコード「3」についても、同様の判断が行われる。
ワークフロー2については、レコード「8」及び「9」が、ステップS39で生成され、レコード「7」がステップS43で生成される。レコード「8」は、ワークフロー1を待つインスタンスを示すが、ワークフロー1のみを待つ状態とワークフロー1がワークフロー3を待つ状態とを含む。同様に、レコード「9」は、ワークフロー3を待つインスタンスを示すが、ワークフロー3のみを待つ状態とワークフロー3がワークフロー1を待つ状態とを含む。
さらに、ワークフロー3については、レコード「11」及び「12」が、ステップS39で生成され、レコード「10」がステップS43で生成される。レコード「11」は、ワークフロー1を待つインスタンスを示すが、ワークフロー1のみを待つ状態とワークフロー1がワークフロー2を待つ状態とを含む。同様に、レコード「12」は、ワークフロー2を待つインスタンスを示すが、ワークフロー2のみを待つ状態とワークフロー2がワークフロー1を待つ状態とを含む。
次に、t=2では、図27に示すようなインスタンス管理テーブルの状態となる。t=2では、レコード「5」「6」「8」「9」「11」「12」が処理対象となる。
レコード「5」のインスタンスに着目すると、まだ実行を開始していないので、ステップS33で未完了であることを表すレコードは登録されない。
一方、待ち状態の列に、1秒前の状態が登録されているので、ステップS51でこの状態を特定する。ステップS61では、待ち番号の列にレコード「2」が登録されているので、ステップS63で排他待ちの可能性があると判断される。そうすると、レコード「2」における1秒後番号の列に「7,8,9」が登録されているので、ステップS65でこれらのレコードを特定する。ステップS67においては、特定された3レコードの各々について、再帰的に待ち状態確認処理を実行する。
レコード「7」に着目すると、終了しているので待ちの可能性はない、すなわち待ちが解消している。レコード「8」に着目すると、待ち番号の列に「1」が登録されていることが分かる。しかしながら、現在の処理対象レコードがワークフロー1についてのレコードなので、レコード「8」については考慮せず、排他待ちの可能性無しと判断される。レコード「9」に着目すると、待ち番号の列に「3」が登録されていることが分かる。ここで、ステップS63で排他待ちの可能性が検出される。
そうすると、ステップS65で、レコード「3」を参照して、1秒後番号の列に登録されているレコード「10」「11」「12」を特定する。そして、これらのレコードの各々について、ステップS67において、再帰的に待ち状態確認処理を実行する。
レコード「10」に着目すると、終了しているので待ちの可能性はない。すなわち待ちが解消している。レコード「11」に着目すると、待ち番号の列に「1」が登録されていることが分かる。しかしながら、元々ワークフロー1についての排他待ちを判断しているので、レコード「11」については考慮せず、排他待ちの可能性無しと判断される。レコード「12」に着目すると、待ち番号の列に「2」が登録されていることが分かる。しかしながら、ワークフロー2についてのレコード「9」が処理対象レコードであるから、レコード「12」については考慮せず、排他待ちの可能性無しと判断される。このようにレコード「9」についてのインスタンスの排他待ちは解消している。
そうすると、処理はステップS55に戻って、レコード「5」については、レコード「7」からして待ちが解消している場合と、レコード「9」からしてワークフロー2を待つ場合とがある。但し、ワークフロー2を待つ場合については、ワークフロー2のみを待つ状態と、ワークフロー2がワークフロー3を待つ状態とが存在するが、後者については解消しているので、前者のみとなる。従って、レコード「5」については、ワークフロー2についてのレコード「9」のインスタンス待ちが確定する。なお、レコード「7」について待ちが解消している状態も特定されている。
よって、レコード「7」からして待ちが解消していて部品1が実行されて処理が完了した場合を表すレコード「13」がステップS43でインスタンス管理テーブルに登録される。同様に、レコード「9」を待つ状態を表すレコード「14」も、ステップS39でインスタンス管理テーブルに登録される。なお、レコード「14」の待ち状態の列には、上で述べたようにワークフロー2のみを待つことになっているのでワークフロー「2」が登録される。
以上述べたレコード「5」について処理をまとめると図28に示すようになる。すなわち、ワークフロー2の部品2の完了を待っていたがワークフロー2の部品2の実行が完了したので、ワークフロー1の部品1の実行を行って終了したことを表すレコード「13」が生成される。また、ワークフロー3を待っていたワークフロー2がまだ完了していないので、ワークフロー2の完了待ちとなっているレコード「14」も生成される。
このような処理は、レコード「6」「8」「9」「11」「12」の各々についても実行される。
レコード「6」については、レコード「10」からして待ちが解消している場合と、レコード「12」からしてワークフロー3を待つ場合がある。但し、ワークフロー3を待つ場合については、ワークフロー3のみを待つ状態と、ワークフロー3がワークフロー2を待つ状態とが存在するが、後者については解消しているので、前者のみとなる。従って、ワークフロー3についてのレコード「12」のインスタンス待ちが確定する。なお、レコード「10」について待ちが解消している状態も特定されている。
よって、レコード「10」からして待ちが解消していて部品1が実行されて処理が完了した場合を表すレコード「15」がステップS43でインスタンス管理テーブルに登録される。同様に、レコード「12」を待つ状態を表すレコード「16」も、ステップS39でインスタンス管理テーブルに登録される。なお、レコード「16」の待ち状態の列には、上で述べたようにワークフロー3のみを待つことになっているのでワークフロー「3」が登録される。
レコード「8」については、レコード「4」からして待ちが解消している場合と、レコード「6」からしてワークフロー1を待つ場合がある。但し、ワークフロー1を待つ場合については、ワークフロー1のみを待つ状態と、ワークフロー1がワークフロー3を待つ状態とが存在するが、後者については解消しているので、前者のみとなる。従って、ワークフロー1についてのレコード「6」のインスタンス待ちが確定する。なお、レコード「4」について待ちが解消している状態も特定されている。
よって、レコード「4」からして待ちが解消していて部品2が実行されて処理が完了した場合を表すレコード「17」がステップS43でインスタンス管理テーブルに登録される。同様に、レコード「6」を待つ状態を表すレコード「18」も、ステップS39でインスタンス管理テーブルに登録される。なお、レコード「18」の待ち状態の列には、上で述べたようにワークフロー1のみを待つことになっているのでワークフロー「1」が登録される。
レコード「9」については、レコード「10」からして待ちが解消している場合と、レコード「11」からしてワークフロー3を待つ場合がある。但し、ワークフロー3を待つ場合については、ワークフロー3のみを待つ状態と、ワークフロー3がワークフロー1を待つ状態とが存在するが、後者については解消しているので、前者のみとなる。従って、ワークフロー3についてのレコード「11」のインスタンス待ちが確定する。なお、レコード「10」について待ちが解消している状態も特定されている。
よって、レコード「10」からして待ちが解消していて部品2が実行されて処理が完了した場合を表すレコード「19」がステップS43でインスタンス管理テーブルに登録される。同様に、レコード「11」を待つ状態を表すレコード「20」も、ステップS39でインスタンス管理テーブルに登録される。なお、レコード「20」の待ち状態の列には、上で述べたようにワークフロー3のみを待つことになっているのでワークフロー「3」が登録される。
レコード「11」については、レコード「4」からして待ちが解消している場合と、レコード「5」からしてワークフロー1を待つ場合がある。但し、ワークフロー1を待つ場合については、ワークフロー1のみを待つ状態と、ワークフロー1がワークフロー2を待つ状態とが存在するが、後者については解消しているので、前者のみとなる。従って、ワークフロー1についてのレコード「5」のインスタンス待ちが確定する。なお、レコード「4」について待ちが解消している状態も特定されている。
よって、レコード「4」からして待ちが解消していて部品3が実行されて処理が完了した場合を表すレコード「21」がステップS43でインスタンス管理テーブルに登録される。同様に、レコード「5」を待つ状態を表すレコード「22」も、ステップS39でインスタンス管理テーブルに登録される。なお、レコード「22」の待ち状態の列には、上で述べたようにワークフロー1のみを待つことになっているのでワークフロー「1」が登録される。
レコード「12」については、レコード「7」からして待ちが解消している場合と、レコード「8」からしてワークフロー2を待つ場合がある。但し、ワークフロー2を待つ場合については、ワークフロー2のみを待つ状態と、ワークフロー2がワークフロー1を待つ状態とが存在するが、後者については解消しているので、前者のみとなる。従って、ワークフロー2についてのレコード「8」のインスタンス待ちが確定する。なお、レコード「7」について待ちが解消している状態も特定されている。
よって、レコード「7」からして待ちが解消していて部品3が実行されて処理が完了した場合を表すレコード「23」がステップS43でインスタンス管理テーブルに登録される。同様に、レコード「8」を待つ状態を表すレコード「24」も、ステップS39でインスタンス管理テーブルに登録される。なお、レコード「24」の待ち状態の列には、上で述べたようにワークフロー2のみを待つことになっているのでワークフロー「2」が登録される。
以下の処理については説明を省略する。
さらに別の具体例について図29乃至図41を用いて説明する。図29にワークフローの構成例を示す。ワークフロー1は、部品1及び4を有している。ワークフロー2は、部品2を有する。ワークフロー3は、部品3を有する。ワークフロー1については、部品1及び4についてHostCに対する排他条件が設定されており、ワークフロー2については、部品2についてHostCに対する排他条件が設定されており、ワークフロー3については、部品3についてHostCに対する排他条件が設定されている。すなわち、排他管理テーブルについては、図30に示すような状態となる。排他資源が共通して設定されていることが分かる。
また、本具体例についての実行時間テーブルについては、図31に示すように、いずれの部品についても実行時間が1秒としている。
本具体例では、開始時刻がワークフローによって異なる。これは、データベース120において開始管理テーブルに規定される。本具体例では、図32に示すように、ワークフロー1は直ぐに実行を開始し、ワークフロー2については1秒後、ワークフロー3については2秒後に実行を開始するものとする。このような相対的時刻の指定でも良い。
t=0では、ワークフロー1を担当する運用プロセス状態管理部130にのみ予測指示がなされる。そうすると、図33に示すようなデータがインスタンス管理テーブルに登録される。
t=0では、ワークフロー1の実行がちょうど開始される状態であるから、排他待ちは発生せず、経過時間も0となる。
t=1では、ワークフロー2を担当する運用プロセス状態管理部130にも予測指示がなされるようになる。そうすると、図34に示すようなデータがインスタンス管理テーブルに登録される。
レコード「2」については、レコード「1」について1秒後を表す。具体的には、1秒で部品1の実行は完了するので、部品4への遷移を表すレコード「2」が、ステップS43で生成される。
さらに、レコード「3」については、ワークフロー2について、ステップS43で、最初の部品の処理に遷移した状態となる。なお、初期的には状態確定処理においては、待ちが特定されないものとする。
t=1の状態を模式的に示すと、図35に示すようになる。図35に示すように、ワークフロー1については、部品1の処理が完了して、部品4の処理に遷移している。ワークフロー2については、実行がなされていない。
t=2では、ワークフロー3を担当する運用プロセス状態管理部130にも予測指示がなされるようになる。そうすると、図36に示すようなデータがインスタンス管理テーブルに登録される。
レコード「2」の1秒後については、ワークフロー1の部品4の処理が完了するので、レコード「4」をステップS43で生成して、インスタンス管理テーブルに登録する。
また、レコード「3」についてステップS51で処理を行うと、ワークフロー2はワークフロー1について排他待ちの発生が検出される。なお、ワークフロー3についても排他待ちが発生し得るが、時刻t=1ではまだレコードが生成されていない状態であるから、ワークフロー3については排他待ちは発生しない。よって、t=2では、ワークフロー1についてのレコード「2」を待っていることを表すレコード「5」がステップS39で生成され、インスタンス管理テーブルに登録される。
さらに、レコード「6」については、ワークフロー3について、ステップS43で、最初の部品の処理に遷移した状態となる。なお、初期的には状態確定処理においては、待ちが特定されないものとする。
t=2の状態を模式的に示すと、図37に示すようになる。図37に示すように、ワークフロー1のインスタンスについては、部品1も部品4も処理が完了している。一方、ワークフロー2のインスタンスについては、ワークフロー1の排他待ちとなっている。
t=3では、図38に示すようなデータがインスタンス管理テーブルに登録される。
ワークフロー2についてのレコード「5」について処理を行うと、ワークフロー1の待ち状態であることが分かる。また、レコード「2」が待ち番号として登録されているので、待ち合わせの可能性が存在すると判断される。レコード「2」を参照して1秒後番号として「4」が特定される。レコード「4」はワークフロー1の部品4が完了したことを表している。以上のことから、ワークフロー1の排他待ちは解消と判断される。そうすると、ステップS43で、ワークフロー2の部品2の処理完了を表すレコード「7」がインスタンス管理テーブルに登録される。
さらに、ワークフロー3についてのレコード「6」についてステップS51で処理を行うと、ワークフロー2について排他待ちの発生が検出される。なお、ワークフロー1についても排他待ちが発生し得るが、時刻t=2では既に処理が完了しているので、ワークフロー1については排他待ちは発生しない。よって、t=3では、ワークフロー2についてのレコード「5」を待っていることを表すレコード「8」がステップS39で生成され、インスタンス管理テーブルに登録される。
t=3についての状態を模式的に示すと図39に示すような状態となる。レコード「7」は、ワークフロー2について開始時刻「1」から1秒間待った後、部品2が実行されたことを表している。一方、レコード「8」は、ワークフロー3について開始時刻「2」から1秒間、ワークフロー2の排他待ちとなっている。
t=4では、図40に示すようなデータがインスタンス管理テーブルに登録される。
ワークフロー3についてのレコード「8」について参照すると、ワークフロー2の待ち状態であることが分かる。また、レコード「5」が待ち番号として登録されているので、待ち合わせの可能性が存在すると判断される。レコード「5」を参照して1秒後番号として「7」が特定される。レコード「7」はワークフロー2の部品2が完了したことを表している。以上のことから、ワークフロー2の排他待ちは解消と判断される。そうすると、ステップS43で、ワークフロー3の部品3の処理完了を表すレコード「9」がインスタンス管理テーブルに登録される。
t=4についての状態を模式的に示すと図41に示すような状態となる。レコード「9」は、ワークフロー3について開始時刻「2」から1秒間待った後、部品3が実行されたことを表している。
このようして複数のワークフローが並行して実行される場合に、各ワークフローについてのインスタンスを、実行時間や分岐に応じて追加生成しつつ、他のワークフローに対する排他待ちを再帰的に辿ることで、適切な待ち時間を実行時間に反映させることができるようになる。
例えば、図42に示すワークフローのような複雑な排他関係が設定されている場合にも対処できる。図42の例では、ワークフローAの部品AとワークフローCの部品W及びYとに対して同じHostAが排他資源として設定されており、ワークフローBの部品BとワークフローCの部品Yとに対して同じHostYが排他資源として設定されている。さらに、ワークフローAの部品CとワークフローBの部品Cとに対して同じHostBが排他資源として設定されている。
このような場合に、図43に模式的に示すように、ワークフローCの部品Wの実行開始が早いと、ワークフローAの部品Aについては排他待ちとなる。ワークフローBの部品Bの実行がワークフローCの部品Yの実行よりも早い場合には、ワークフローCの部品Wの実行が完了しても部品Yの実行は待ちになる。そうすると、ワークフローAの部品Aは、ワークフローCの部品Wの排他待ちだったが、その後部品Yの排他待ちも多重に生ずる。このような多重の排他待ちについては、再帰的に待ち状態確認処理を実行することでインスタンス管理テーブルに登録されるレコードで表される。
その後、ワークフローBの部品Bの実行が完了すると、ワークフローCの部品Yの排他待ち解消が検出されて、ワークフローCの部品Yが実行される。ワークフローCの部品Yの実行が完了すると、ワークフローAの部品Aの排他待ち解消が検出されて、ワークフローAの部品Aが実行される。
ワークフローAの部品Aの実行が完了しても、部品Cについて、ワークフローBの部品Cについての排他待ちを検出する。その後、ワークフローBの部品Cの処理が完了すれば、ワークフローAの部品Cについて排他待ちの解消が検出されて、部品Cの実行がなされる。
図43では、実行時間が一定であることを想定して簡易に排他関係を示しているが、実行時間に範囲が設定されている場合には、各実行時間についてインスタンスが生成され、排他待ち状態も様々な状態となる。このような場合であっても、状況に応じたインスタンスを生成して、時間進展を行うことで、正確にシミュレーションが行われ、正確な実行時間を推定できるようになる。
なお、上では説明を省略しているが、実行時間の最短時間及び最長時間に主に着目するので、明らかに最短時間及び最長時間の算出に無関係となるインスタンスのレコードについては途中で破棄する場合もある。
さらに、上では各部品の実行時間は予め設定されることを前提としていたが、実際にワークフローが実行されるサーバなどの処理の能力などのパラメータから実行時間を推定するようにしても良い。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、処理フローについては処理結果が変わらない限り、処理順番を入れ替えたり、複数のステップを並列実行するようにしても良い。また、図2に示した情報処理装置100の機能ブロック構成についても一例であって、プログラムモジュール構成とは異なる場合もある。
さらに、情報処理装置100は、1台のコンピュータではなく複数台のコンピュータによって実施される場合もある。
なお、上で述べた情報処理装置100は、コンピュータ装置であって、図44に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態に係る実行時間推定装置は、1又は複数のモジュールを各々含む複数のプロセスを実行する場合における実行時間を推定する実行時間推定装置である。そして、この実行時間推定装置は、(A)複数のプロセスについて排他実行に関する条件と、複数のプロセスに係る各モジュールの実行時間の範囲に関するデータとを格納する格納部と、(B)(b1)複数のプロセスの各々について、当該プロセスに含まれるモジュールの順番で格納部に格納された各モジュールの実行時間の範囲に応じた1又は複数のケースを生成し、(b2)格納部に格納された上記条件に基づく複数のプロセスに係る複数のケース間における排他待ちの発生の有無を判定する第1の判定処理を実行し、排他待ちの発生があると判定された場合には当該排他待ちが発生したプロセスのケースに排他待ちを設定するケース処理を仮想的に時間進展させつつ実行することで、複数のプロセスを実行する場合における実行時間を推定する推定部とを有する。この場合、上記第1の判定処理は、排他待ちが発生する可能性の有無を判定する第2の判定処理と、第2の判定処理の処理結果に基づき、排他待ちの発生の有無を判定する処理とを含む。そして、上記第1の判定処理において、第2の判定処理において排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性があるケースに対して再帰的に第2の判定処理を実行する。
このように、実行時間の範囲が各モジュールに設定されるような場合には、実行時間に応じた1又は複数のケース(実施の形態におけるインスタンス)が随時(又は動的に)生成されるようになるため、排他待ちが発生する場合もあれば、排他待ちが発生しない場合も生ずる。さらに、ケースによっては排他待ちも多重に発生する場合も生ずる。上で述べたような処理を実行すれば、このような複雑な状況に対して対処できるため、正確に実行時間の推定を行うことができる。なお、複数の実行時間が推定されれば、その中で最短時間及び最長時間を特定する場合もある。これによって、複数のプロセスをある時刻までに終了させることができるか否かを正確に判定できるようになる。
上で述べたケース処理は、複数のプロセスのいずれかのプロセスにおいて分岐が存在する場合には、各分岐先について当該プロセスのケースを生成する処理を含むようにしても良い。これによって、様々なケースを取り扱うことができるようになる。
さらに、上で述べた格納部には、複数のプロセスの開始タイミングに関するデータがさらに格納されている場合がある。この場合、上で述べた推定部は、開始タイミングに応じて複数のプロセスの各々についてケースの生成を開始するようにしても良い。ワークフローによって開始タイミングのずれがあれば、排他待ちの有無に影響があるので、このように制御すれば、正確な実行時間の推定がなされるようになる。
また、上で述べた格納部には、複数のプロセスの少なくとも一部に含まれる、人手を要するモジュールについて実行タイミングについてのデータを含む場合もある。このような場合には、上で述べた推定部は、人手を要するモジュールへ遷移し且つ当該人手を要するモジュールを含むプロセスのケースを、実行タイミングまで待ち発生として取り扱うようにしても良い。人手を要するモジュールでも、他のモジュールと同様に実行時間のバリエーションで対処する場合もあれば、実行タイミングで規定される場合もある。
なお、上で述べたような処理をプロセッサ又はコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
1又は複数のモジュールを各々含む複数のプロセスを実行する場合における実行時間を推定する実行時間推定装置であって、
前記複数のプロセスについて排他実行に関する条件と、前記複数のプロセスに係る各モジュールの実行時間の範囲に関するデータとを格納する格納部と、
前記複数のプロセスの各々について、当該プロセスに含まれるモジュールの順番で前記格納部に格納された各前記モジュールの前記実行時間の範囲に応じた1又は複数のケースを生成する処理と、
前記格納部に格納された前記条件に基づく前記複数のプロセスに係る複数のケース間における排他待ちの発生の有無を判定する第1の判定処理と、
前記排他待ちの発生があると判定された場合には当該排他待ちが発生したプロセスのケースに排他待ちを設定する処理と
を含むケース処理を仮想的に時間進展させつつ実行することで、前記複数のプロセスを実行する場合における実行時間を推定する推定部と、
を有し、
前記第1の判定処理は、
前記排他待ちが発生する可能性の有無を判定する第2の判定処理と、
前記第2の判定処理の処理結果に基づき、前記排他待ちの発生の有無を判定する処理と、
を含み、
前記第1の判定処理において、
前記第2の判定処理において前記排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性があるケースに対して再帰的に前記第2の判定処理を実行する
実行時間推定装置。
(付記2)
前記ケース処理は、
前記複数のプロセスのいずれかのプロセスにおいて分岐が存在する場合には、各分岐先について当該プロセスのケースを生成する処理
をさらに含む付記1記載の実行時間推定装置。
(付記3)
前記格納部には、前記複数のプロセスの開始タイミングに関するデータがさらに格納されており、
前記推定部は、
前記開始タイミングに応じて前記複数のプロセスの各々についてケースの生成を開始する
付記1又は2記載の実行時間推定装置。
(付記4)
1又は複数のモジュールを各々含む複数のプロセスを実行する場合における実行時間を推定する実行時間推定方法であって、
前記複数のプロセスについて排他実行に関する条件と、前記複数のプロセスに係る各モジュールの実行時間の範囲に関するデータとを格納する格納部にアクセス可能なコンピュータが、
前記複数のプロセスの各々について、当該プロセスに含まれるモジュールの順番で、前記格納部に格納された各前記モジュールの前記実行時間の範囲に応じた1又は複数のケースを生成するケース処理を仮想的に時間進展させつつ実行し、
前記ケース処理の実行結果に基づき、前記複数のプロセスを実行する場合における実行時間を推定する
処理を実行し、
前記ケース処理の実行が、
前記仮想的な時間進展において、
前記格納部に格納された前記条件に基づく前記複数のプロセスに係る複数のケース間における排他待ちが発生する可能性の有無を判定する第1の判定処理を実行し、
前記第1の判定処理の実行において前記排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性があるケースに対して再帰的に前記第1の判定処理を実行し、
前記第1の判定処理の結果に基づき前記排他待ちの発生があると判定される場合には、当該排他待ちが発生したプロセスのケースに対して排他待ちを設定する
処理を含む実行時間推定方法。
(付記5)
1又は複数のモジュールを各々含む複数のプロセスを実行する場合における実行時間を推定する実行時間推定プログラムであって、
前記複数のプロセスについて排他実行に関する条件と、前記複数のプロセスに係る各モジュールの実行時間の範囲に関するデータとを格納する格納部にアクセス可能なコンピュータに、
前記複数のプロセスの各々について、当該プロセスに含まれるモジュールの順番で、前記格納部に格納された各前記モジュールの前記実行時間の範囲に応じた1又は複数のケースを生成するケース処理を仮想的に時間進展させつつ実行し、
前記ケース処理の実行結果に基づき、前記複数のプロセスを実行する場合における実行時間を推定する
処理を実行させ、
前記ケース処理の実行が、
前記仮想的な時間進展において、
前記格納部に格納された前記条件に基づく前記複数のプロセスに係る複数のケース間における排他待ちが発生する可能性の有無を判定する第1の判定処理を実行し、
前記第1の判定処理の実行において前記排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性があるケースに対して再帰的に前記第1の判定処理を実行し、
前記第1の判定処理の結果に基づき前記排他待ちの発生があると判定される場合には、当該排他待ちが発生したプロセスのケースに対して排他待ちを設定する
処理を含む実行時間推定プログラム。
110 実行制御部
120 データベース
130 運用プロセス状態管理部

Claims (5)

  1. 1又は複数のモジュールを各々含む複数のプロセスを実行する場合における実行時間を推定する実行時間推定装置であって、
    前記複数のプロセスについて排他実行に関する条件と、前記複数のプロセスに係る各モジュールの最短の実行時間から最長の実行時間までの範囲に関するデータとを格納する格納部と、
    前記複数のプロセスの各々について、当該プロセスに含まれるモジュールの順番で前記格納部に格納された各前記モジュールの前記最短の実行時間から最長の実行時間までの範囲に含まれる1又は複数の実行時間に応じた1又は複数のインスタンスを生成する処理と、
    前記格納部に格納された前記条件に基づき、前記複数のプロセスに係る複数のインスタンス間において、特定の資源を排他的に用いることができるようになるまで待つ排他待ちの発生の有無を判定する第1の判定処理と、
    前記排他待ちの発生があると判定された場合には当該排他待ちが発生したプロセスのインスタンスに排他待ちを設定する処理と
    を含むインスタンス処理を仮想的に時間進展させつつ実行することで、前記複数のプロセスを実行する場合における実行時間を推定する推定部と、
    を有し、
    前記第1の判定処理は、
    前記排他待ちが発生する可能性の有無を判定する第2の判定処理と、
    前記第2の判定処理の処理結果に基づき、前記排他待ちの発生の有無を判定する処理と、
    を含み、
    前記第1の判定処理において、
    前記第2の判定処理において前記排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性があるインスタンスに対して再帰的に前記第2の判定処理を実行する
    実行時間推定装置。
  2. 前記インスタンス処理は、
    前記複数のプロセスのいずれかのプロセスにおいて分岐が存在する場合には、各分岐先について当該プロセスのインスタンスを生成する処理
    をさらに含む請求項1記載の実行時間推定装置。
  3. 前記格納部には、前記複数のプロセスの開始タイミングに関するデータがさらに格納されており、
    前記推定部は、
    前記開始タイミングに応じて前記複数のプロセスの各々についてインスタンスの生成を開始する
    請求項1又は2記載の実行時間推定装置。
  4. 1又は複数のモジュールを各々含む複数のプロセスを実行する場合における実行時間を推定する実行時間推定方法であって、
    前記複数のプロセスについて排他実行に関する条件と、前記複数のプロセスに係る各モジュールの最短の実行時間から最長の実行時間までの範囲に関するデータとを格納する格納部にアクセス可能なコンピュータが、
    前記複数のプロセスの各々について、当該プロセスに含まれるモジュールの順番で、前記格納部に格納された各前記モジュールの前記最短の実行時間から最長の実行時間までの範囲に含まれる1又は複数の実行時間に応じた1又は複数のインスタンスを生成するインスタンス処理を仮想的に時間進展させつつ実行し、
    前記インスタンス処理の実行結果に基づき、前記複数のプロセスを実行する場合における実行時間を推定する
    処理を実行し、
    前記インスタンス処理の実行が、
    前記仮想的な時間進展において、
    前記格納部に格納された前記条件に基づく前記複数のプロセスに係る複数のインスタンス間において、特定の資源を排他的に用いることができるようになるまで待つ排他待ちが発生する可能性の有無を判定する第1の判定処理を実行し、
    前記第1の判定処理の実行において前記排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性があるインスタンスに対して再帰的に前記第1の判定処理を実行し、
    前記第1の判定処理の結果に基づき前記排他待ちの発生があると判定される場合には、当該排他待ちが発生したプロセスのインスタンスに対して排他待ちを設定する
    処理を含む実行時間推定方法。
  5. 1又は複数のモジュールを各々含む複数のプロセスを実行する場合における実行時間を推定する実行時間推定プログラムであって、
    前記複数のプロセスについて排他実行に関する条件と、前記複数のプロセスに係る各モジュールの最短の実行時間から最長の実行時間までの範囲に関するデータとを格納する格納部にアクセス可能なコンピュータに、
    前記複数のプロセスの各々について、当該プロセスに含まれるモジュールの順番で、前記格納部に格納された各前記モジュールの前記最短の実行時間から最長の実行時間までの範囲に含まれる1又は複数の実行時間に応じた1又は複数のインスタンスを生成するインスタンス処理を仮想的に時間進展させつつ実行し、
    前記インスタンス処理の実行結果に基づき、前記複数のプロセスを実行する場合における実行時間を推定する
    処理を実行させ、
    前記インスタンス処理の実行が、
    前記仮想的な時間進展において、
    前記格納部に格納された前記条件に基づく前記複数のプロセスに係る複数のインスタンス間において、特定の資源を排他的に用いることができるようになるまで待つ排他待ちが発生する可能性の有無を判定する第1の判定処理を実行し、
    前記第1の判定処理の実行において前記排他待ちが発生する可能性を検出すると、当該排他待ちを発生させる可能性があるインスタンスに対して再帰的に前記第1の判定処理を実行し、
    前記第1の判定処理の結果に基づき前記排他待ちの発生があると判定される場合には、当該排他待ちが発生したプロセスのインスタンスに対して排他待ちを設定する
    処理を含む実行時間推定プログラム。
JP2014136433A 2014-07-02 2014-07-02 実行時間推定装置及び方法 Expired - Fee Related JP6369170B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014136433A JP6369170B2 (ja) 2014-07-02 2014-07-02 実行時間推定装置及び方法
US14/730,600 US20160004566A1 (en) 2014-07-02 2015-06-04 Execution time estimation device and execution time estimation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014136433A JP6369170B2 (ja) 2014-07-02 2014-07-02 実行時間推定装置及び方法

Publications (2)

Publication Number Publication Date
JP2016015001A JP2016015001A (ja) 2016-01-28
JP6369170B2 true JP6369170B2 (ja) 2018-08-08

Family

ID=55017069

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014136433A Expired - Fee Related JP6369170B2 (ja) 2014-07-02 2014-07-02 実行時間推定装置及び方法

Country Status (2)

Country Link
US (1) US20160004566A1 (ja)
JP (1) JP6369170B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021262890A1 (en) * 2020-06-24 2021-12-30 Applied Materials, Inc. Sequencer time leaping execution

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097796A (ja) * 2015-11-27 2017-06-01 富士通株式会社 ワークフローの切替プログラム、切替方法及び切替装置
US10795935B2 (en) 2016-02-05 2020-10-06 Sas Institute Inc. Automated generation of job flow definitions
US10642896B2 (en) 2016-02-05 2020-05-05 Sas Institute Inc. Handling of data sets during execution of task routines of multiple languages
US10346211B2 (en) * 2016-02-05 2019-07-09 Sas Institute Inc. Automated transition from non-neuromorphic to neuromorphic processing
US10650045B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Staged training of neural networks for improved time series prediction performance
US10650046B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Many task computing with distributed file system
US20190026663A1 (en) * 2017-07-20 2019-01-24 Ca, Inc. Inferring time estimates in workflow tracking systems
US11429725B1 (en) * 2018-04-26 2022-08-30 Citicorp Credit Services, Inc. (Usa) Automated security risk assessment systems and methods
CN111813624B (zh) * 2020-06-29 2022-08-12 中国平安人寿保险股份有限公司 基于时长分析的机器人执行时长的预估方法及其相关设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392430A (en) * 1992-10-30 1995-02-21 International Business Machines Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system
JP3335488B2 (ja) * 1994-11-14 2002-10-15 株式会社日立製作所 性能予測装置及び方法
US5890134A (en) * 1996-02-16 1999-03-30 Mcdonnell Douglas Corporation Scheduling optimizer
US7406689B2 (en) * 2005-03-22 2008-07-29 International Business Machines Corporation Jobstream planner considering network contention & resource availability
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
WO2009101976A1 (ja) * 2008-02-15 2009-08-20 Nec Corporation プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム
US20090288031A1 (en) * 2008-05-16 2009-11-19 Microsoft Corporation Time block planning
US9021490B2 (en) * 2008-08-18 2015-04-28 Benoît Marchand Optimizing allocation of computer resources by tracking job status and resource availability profiles
US8381218B2 (en) * 2010-11-30 2013-02-19 Microsoft Corporation Managing groups of computing entities
US8957903B2 (en) * 2010-12-20 2015-02-17 International Business Machines Corporation Run-time allocation of functions to a hardware accelerator
US20140040913A1 (en) * 2011-07-26 2014-02-06 Andreas Wuttke Job plan verification
US20140137121A1 (en) * 2012-10-05 2014-05-15 Hitachi, Ltd. Job management system and job control method
US9400682B2 (en) * 2012-12-06 2016-07-26 Hewlett Packard Enterprise Development Lp Ranking and scheduling of monitoring tasks
JP2015185027A (ja) * 2014-03-25 2015-10-22 富士通株式会社 ジョブ判別プログラム、装置、及び方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021262890A1 (en) * 2020-06-24 2021-12-30 Applied Materials, Inc. Sequencer time leaping execution
US11437254B2 (en) 2020-06-24 2022-09-06 Applied Materials, Inc. Sequencer time leaping execution

Also Published As

Publication number Publication date
US20160004566A1 (en) 2016-01-07
JP2016015001A (ja) 2016-01-28

Similar Documents

Publication Publication Date Title
JP6369170B2 (ja) 実行時間推定装置及び方法
US11018955B2 (en) Change management optimization in cloud environment
JP5970617B2 (ja) 開発支援システム
US9606785B2 (en) Detecting deployment conflicts in heterogeneous environments
US8972956B2 (en) Application deployment in heterogeneous environments
US8370802B2 (en) Specifying an order for changing an operational state of software application components
US9262220B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
US8266622B2 (en) Dynamic critical path update facility
US8954579B2 (en) Transaction-level health monitoring of online services
US9250886B2 (en) Optimizing provisioning workflows in cloud computing
US9483314B2 (en) Systems and methods for fault tolerant batch processing in a virtual environment
US8171348B2 (en) Data consistency in long-running processes
US9317332B2 (en) Resolving deployment conflicts in heterogeneous environments
US10366084B2 (en) Optimizing pipelining result sets with fault tolerance in distributed query execution
US8612991B2 (en) Dynamic critical-path recalculation facility
US20080221857A1 (en) Method and apparatus for simulating the workload of a compute farm
US20100318859A1 (en) Production control for service level agreements
US20210240459A1 (en) Selection of deployment environments for applications
US9176791B2 (en) Computer-readable recording medium, exclusion control apparatus, and exclusion control method
JP5304972B1 (ja) 情報処理装置、情報処理方法、及びプログラム
JP5387083B2 (ja) ジョブ管理システムおよび方法
US8239870B2 (en) Scheduling execution of work units with policy based extension of long-term plan
JP2009282581A (ja) ビジネスプロセス実行装置およびビジネスプロセス実行方法
CN117667362B (en) Method, system, equipment and readable medium for scheduling process engine
US11307902B1 (en) Preventing deployment failures of information technology workloads

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180320

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180518

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180625

R150 Certificate of patent or registration of utility model

Ref document number: 6369170

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees