(57)【要約】【課題】  排他資源を利用するジョブが複数ある場合であっても、排他資源のロック待ちを極力回避してジョブネットワーク全体の実行時間をより短くする。【解決手段】  ジョブを管理するマネージャ装置と、ジョブを実行する１以上のエージェント装置と、を備え、マネージャ装置は、エージェント装置のキューにキューイングされている全てのジョブの中から、排他資源のロックが解放されてから最も早く排他資源の利用を開始することができるジョブを特定して優先実行させ、エージェント装置は、排他資源を利用するジョブが優先実行されることなくキューにて実行順を迎えた場合、ジョブの実行位置を、キューに空きができたら次に実行される位置に留め置き、先に後続のジョブを実行させる。【選択図】  図１
2019179280.tif 000002
【特許請求の範囲】
【請求項１】
ジョブを管理するマネージャ装置と、
前記ジョブを実行する１以上のエージェント装置と、を備え、
前記マネージャ装置は、前記エージェント装置のキューにキューイングされている全ての前記ジョブの中から、排他資源のロックが解放されてから最も早く前記排他資源の利用を開始することができる前記ジョブを特定して優先実行させ、
前記エージェント装置は、前記排他資源を利用する前記ジョブが前記優先実行されることなく前記キューにて実行順を迎えた場合、前記ジョブの実行位置を、前記キューに空きができたら次に実行される位置に留め置き、先に後続の前記ジョブを実行させる
ことを特徴とするジョブ実行管理システム。
【請求項２】
前記マネージャ装置は、
全ての前記エージェント装置のそれぞれの前記キューにキューイングされている前記ジョブの中で前記排他資源を利用する全ての前記ジョブを抽出し、
抽出した前記ジョブが所属する前記キューにおいて現在実行中の前記ジョブの残り必要時間を算出し、前記残り必要時間から、前記ロックを獲得できないまま待ち合わせさせられている時間である超過時間を差し引くことにより補正後の前記残り必要時間を算出し、
それぞれの前記キューの、補正後の前記残り必要時間同士を比較し、最も先に空きができる前記キューを決定し、
最も先に空きができる前記キューをもつ前記エージェント装置に対して、当該キューにおいて前記排他資源を利用する前記ジョブの中で最も先にキューイングされている前記ジョブの実行位置を、当該キューに空きができたら次に実行される位置に変更する旨を指示する
ことを特徴とする請求項１記載のジョブ実行管理システム。
【請求項３】
前記残り必要時間は、前記エージェント装置で前記ジョブが開始されてから完了するまでの時間の予想値である予想実行時間から当該ジョブの実行が始まってからの経過時間を差し引いた時間であることを特徴とする請求項２記載のジョブ実行管理システム。
【請求項４】
前記超過時間は、前記ジョブがキューイングされてからの経過時間から予想開始時間を差し引いた時間であることを特徴とする請求項２または３記載のジョブ実行管理システム。
【請求項５】
ジョブを管理するマネージャ装置と、前記ジョブを実行する１以上のエージェント装置と、を備えるジョブ実行管理システムであって、
前記マネージャ装置は、前記エージェント装置のキューにキューイングされている全ての前記ジョブの中から、排他資源のロックが解放されてから最も早く前記排他資源の利用を開始することができる前記ジョブを特定して優先実行させ、
前記エージェント装置は、前記排他資源を利用する前記ジョブが前記優先実行されることなく前記キューにて実行順を迎えた場合、前記ジョブの実行位置を、前記キューに空きができたら次に実行される位置に留め置き、先に後続の前記ジョブを実行させる
ことを特徴とするジョブ実行管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ実行管理システム、およびジョブ実行管理方法に関する。
【背景技術】
【０００２】
運用管理分野において、ジョブの実行を管理するジョブ実行管理システムが知られている。ジョブとは、業務などのある目的のために定義された処理手続きのことである。また、ジョブは、例えば、ＵＮＩＸ（登録商標）におけるシェルスクリプトまたはＷｉｎｄｏｗｓ（登録商標）におけるバッチスクリプトで記述される、単一または連続的なプログラムのことである。ジョブ実行管理システムは、１つ以上のジョブの実行順序を示すジョブネットワークとそのバッチジョブを処理するためのプログラム群とを含む。
【０００３】
ジョブ実行管理システムは、一般的には、マネージャ装置が、ジョブの定義情報の管理およびジョブネットワークのフロー制御を実行し、エージェント装置に実際のジョブを実行させるシステムである。
【０００４】
ジョブを実行する場合、ＣＰＵ（Central Processing Unit）、メモリ、およびディスク装置などの資源を消費するため、同時に実行できるジョブ数に制限を設け、資源への負荷がかからないようにする実行数制限が実行されている。この実行数制限には、キューが用いられることが多い。キューはいわゆる待ち行列のことであり、ジョブの実行投入速度と実行完了速度が異なる場合に発生する実行待ち状態を制御するための仕組みである。例えば、マネージャ装置から依頼のあったジョブをエージェント装置で実行する際にすでにそのエージェント装置上で他のジョブが実行されていると複数のジョブが同時に実行されることになるため、資源がひっ迫する虞がある。そこで、実行数制限は、同時に実行してもよいジョブの数を制限し、キューの中で順番待ちさせ、その順番が来たら実行させることで資源の枯渇を防いでいる。
【０００５】
しかしながら、ＣＰＵやメモリのように複数のジョブで共有可能な資源だけでなく、共有できない資源、換言すれば、いずれかのジョブにより占有される資源（以下、「排他資源」と呼ぶ）がある。排他資源は、例えば、印刷処理におけるプリンタ、データバックアップ処理におけるバックアップ先の領域やテープ装置、あるいは、地理的に離れた別のデータセンタ内にあるサーバへのデータ送信処理における巨大なデータの送信自体である。なお、巨大なデータの送信に関して、ネットワーク通信自体は共有可能であるが、巨大なデータの送信はネットワークをその送信期間中に実質的に占有することになるので、巨大なデータの送信は、排他資源と見なすことができる。他にも、ジョブの中で利用するアプリケーションの要件によっては排他資源の利用が必要なものがあり得る。
【０００６】
特許文献１には、タスク間での実行順序制御を行う場合に、余裕時間に基づいて実行スケジューリングを最適化する技術が記載される。余裕時間とは、共有資源の占有時間長が既知のタスクＣが、実行開始予定時刻が決まっているタスクＡと共有する資源を占有した場合、タスクＣが資源を解放してからタスクＡが実行開始されるまでの時間的な余裕を示すものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−１３１８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
同一の排他資源を利用するジョブが同時に稼働しようとすると競合が発生し、どちらか一方のジョブは待ち合わせしなければならなくなる。このような待ち合わせは処理のボトルネックとなるため、ジョブネットワークのフロー全体の処理時間が伸びることに繋がる。そこで、ジョブ実行管理システムには、ジョブが排他資源をロックして利用できるようにするためのロック制御が必要となる。
【０００９】
なお、以降で説明するロック制御は、全て「待ち合わせ可能な排他ロック」であるとする。ロックを要求対象となる排他資源が既に他者にロックされていた場合、それを拒否するのではなく、ロックの順番待ち状態にして、順番が来たらロックさせる方式である。また、ロックの種類にはさらに「共有ロック」と「排他ロック」があるが、ここでは「排他ロック」を対象とする。よって、「待ち合わせ可能な排他ロック」が対象とされる。
【００１０】
既存のロック制御の例として、以下の第１〜第３方式が挙げられる。
【００１１】
第１方式は、例えば、エージェント装置に対してあるジョブの実行依頼が行われ、そのジョブがキューイングされた時点で、すなわち、未だジョブが実行されていない時点でロックを獲得する方式である。第１方式の場合、キューの中での順番待ちの最中にロックが獲得できるため、ジョブの実行順が回ってきた段階で即座に排他資源を利用してそのジョブの実行を開始することができる。一方で、第１方式の場合、順番が回ってくるよりも前に排他資源をロックしてしまうため、先行してキューイングされているジョブの実行に時間がかかった場合、別のキューに存在する、すぐにでも実行可能な同一排他資源を利用したいジョブは、ロック待ちの状態となってしまう。
【００１２】
第２方式は、第１方式とは逆に、キューの中で順番待ちを行い、キューに空きができてジョブが実行できる状態になってから必要な排他資源をロックする方式である。第２方式では、第１方式のようなロック待ち状態は発生しない。しかしながら、すぐにロックが獲得できず待ち合わせしてしまうような場合、そのジョブはすぐに実行開始とはならない。また、そのジョブは既に実行状態になっているため、該当するキューの実行数の制限枠を浪費していることになってしまう。すなわち、第２方式の場合、ロック待ちだが実行されていないジョブが存在することにより、そのキューに並んでいる後続のジョブの実行が阻害されてしまうことがなる。
【００１３】
一方、第３方式は、実行順が回ってきた段階でロックを行う方式である。具体的には、第３方式は、ロックを所望するジョブがすぐにロックできなかった場合にロック要求したまま後続のジョブを先に実行させるとともに、当該ジョブに関してはキュー内の「次に実行順が回ってくる位置」を保つ方式である。第３方式において、ロックが獲得できるまで上記処理が繰り返し実行される。第３方式の場合、すぐにロックが出来ずロック待ちになってしまう場合には、後続ジョブに実行順を譲るので、それによって後続ジョブの実行が全て阻害されてしまうことはない。すなわち、第３方式によって、第２方式のデメリットは解消される。しかしながら、第３方式の場合、ロックを獲得したまま後続ジョブを先に実行させることになるので、先に実行させたジョブが長時間実行中となってしまうジョブであった場合、それによって第１方式の同様のデメリット（すなわち、ロック待ち）が発生してしまう虞がある。
【００１４】
このように、既存のロック制御は、排他資源をロックするタイミングがそれぞれ異なるが、いずれも何らかの問題を有しており、いずれも最適な方式とは言い難い。
【００１５】
特許文献１において、タスクは「割り込み可能」が前提となっているが、排他資源を利用するジョブは割り込み不可である場合もある。従って、特許文献１の技術を、上記の如きジョブを管理するジョブ実行管理システムにそのまま適用させることはできない。
【００１６】
本発明は、上記課題を解決するためになされたものであり、排他資源を利用するジョブが複数ある場合であっても、排他資源のロック待ちを極力回避してジョブネットワーク全体の実行時間をより短くすることができる技術を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明のジョブ実行管理システムは、ジョブを管理するマネージャ装置と、前記ジョブを実行する１以上のエージェント装置と、を備え、前記マネージャ装置は、前記エージェント装置のキューにキューイングされている全ての前記ジョブの中から、排他資源のロックが解放されてから最も早く前記排他資源の利用を開始することができる前記ジョブを特定して優先実行させ、前記エージェント装置は、前記排他資源を利用する前記ジョブが前記優先実行されることなく前記キューにて実行順を迎えた場合、前記ジョブの実行位置を、前記キューに空きができたら次に実行される位置に留め置き、先に後続の前記ジョブを実行させる。
【００１８】
本発明のジョブ実行管理方法は、ジョブを管理するマネージャ装置と、前記ジョブを実行する１以上のエージェント装置と、を備えるジョブ実行管理システムであって、前記マネージャ装置は、前記エージェント装置のキューにキューイングされている全ての前記ジョブの中から、排他資源のロックが解放されてから最も早く前記排他資源の利用を開始することができる前記ジョブを特定して優先実行させ、前記エージェント装置は、前記排他資源を利用する前記ジョブが前記優先実行されることなく前記キューにて実行順を迎えた場合、前記ジョブの実行位置を、前記キューに空きができたら次に実行される位置に留め置き、先に後続の前記ジョブを実行させることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、排他資源を利用するジョブが複数ある場合であっても、排他資源のロック待ちを極力回避してジョブネットワーク全体の実行時間をより短くすることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態に係るジョブ実行管理システムの構成例を示すブロック図である。
【図２】図１に示すジョブ実行管理システムの動作例（ジョブ実行管理方法）を示すフローチャートである。
【図３】本発明の第２の実施形態に係るジョブ実行管理システムの構成例を示すブロック図である。
【図４】図３に示すジョブ実行管理システムで実行される第１制御（優先実行）をイメージ化した図である。
【図５】第１制御の一例を示すフローチャートである。
【図６】第２制御の一例を示すフローチャートである。
【図７】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第１の図である。
【図８】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第２の図である。
【図９】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第３の図である。
【図１０】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第４の図である。
【図１１】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第５の図である。
【図１２】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第６の図である。
【図１３】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第７の図である。
【図１４】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第８の図である。
【図１５】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第９の図である。
【図１６】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第１０の図である。
【図１７】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第１１の図である。
【図１８】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第１２の図である。
【図１９】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第１３の図である。
【図２０】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第１４の図である。
【図２１】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第１５の図である。
【図２２】第１の実施形態で実行される優先制御の具体例を説明するためのキュー状態を示す第１６の図である。
【図２３】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第１７の図である。
【図２４】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第１８の図である。
【図２５】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第１９の図である。
【図２６】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第２０の図である。
【図２７】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第２１の図である。
【図２８】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第２２の図である。
【図２９】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第２３の図である。
【図３０】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第２４の図である。
【図３１】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第２５の図である。
【図３２】本発明を適用していない関連技術の方式（第３方式）でジョブを実行した場合の動作を説明するためのキュー状態を示す第２６の図である。
【発明を実施するための形態】
【００２１】
［第１の実施形態］
（構成の説明）
図１は、本発明の第１の実施形態に係るジョブ実行管理システム１００の構成例を示すブロック図である。
【００２２】
ジョブ実行管理システム１００は、ジョブを管理するマネージャ装置１０２と、ジョブを実行する１以上のエージェント装置１０４と、を備える。
【００２３】
マネージャ装置１０２は、エージェント装置１０４のキューにキューイングされている全てのジョブの中から、排他資源のロックが解放されてから最も早く排他資源の利用を開始することができるジョブを特定して優先実行させる。
【００２４】
エージェント装置１０４は、排他資源を利用するジョブが優先実行されることなくキューにて実行順を迎えた場合、当該ジョブの実行位置を、キューに空きができたら次に実行される位置に留め置き、先に後続のジョブを実行させる。
（動作の説明）
図２は、図１に示すジョブ実行管理システム１００の動作例（ジョブ実行管理方法）を示すフローチャートである。
【００２５】
マネージャ装置１０２は、エージェント装置１０４のキューにキューイングされている全てのジョブの中から、排他資源のロックが解放されてから最も早く排他資源の利用を開始することができるジョブを特定して優先実行させる（ステップＳ５０）。
【００２６】
エージェント装置１０４は、排他資源を利用するジョブが優先実行されることなくキューにて実行順を迎えた場合、当該ジョブの実行位置を、キューに空きができたら次に実行される位置に留め置き、先に後続の前記ジョブを実行させる（ステップＳ５１）。
（効果の説明）
以上説明した第１の実施形態によれば、排他資源を利用するジョブが複数ある場合に、その排他資源のロック待ちを極力回避してジョブネットワーク全体の実行時間をより短くすることができる。もちろん、その場合、ユーザが意図的にジョブのスケジューリング時間を調整して実行タイミングが重ならないように調整する必要はない。
【００２７】
なお、マネージャ装置１０２およびエージェント装置１０４の構成／動作、および優先実行については、以下の第２の実施形態にて詳細に説明する。
［第２の実施形態］
（構成の説明）
図３は、本発明の第２の実施形態に係るジョブ実行管理システム１の構成例を示すブロックである。なお、一般的なジョブ実行管理システムにおいては、スケジュールに従ってジョブネットワークの起動やそのフロー制御を行う制御手段が存在することが一般的である。しかしながら、そのような制御手段は、本実施形態とは直接関連しないため、以下の説明では省略する。
【００２８】
ジョブ実行管理システム１は、ジョブの定義情報の管理およびジョブネットワークのフロー制御を主に実行するマネージャ装置２と、ジョブを実行するエージェント装置３と、を備える。なお、図３では、エージェント装置３が「３台」の場合が例示されているが、エージェント装置３の数は「２台以下」であってもよいし、「４台以上」であってもよい。
【００２９】
マネージャ装置２は、ジョブ実行制御部１０と、ジョブ定義情報ＤＢ１１と、排他資源管理ＤＢ１３と、を備える。なお、ＤＢは、DataBaseの略である。
【００３０】
ジョブ定義情報ＤＢ１１は、ジョブ毎に、ジョブ名やスクリプト、ジョブの実行開始から実行終了までの予想時間である予想実行時間、排他資源の名称または識別情報（以下、これらを排他資源名とも呼ぶ）などの情報を、ジョブ定義情報として記録する。
【００３１】
排他資源は、例えば、印刷処理におけるプリンタ、データバックアップ処理におけるバックアップ先の領域やテープ装置、あるいは、地理的に離れた別のデータセンタ内にあるサーバへのデータ送信処理における巨大なデータの送信自体である。もちろん、排他資源は、上記に限定されることはない。
【００３２】
排他資源管理ＤＢ１３は、ジョブ実行管理システム１にて使用可能な全ての排他資源名、それら排他資源のロックの有無、ロックされている場合にはロックしているジョブ名、そしてロック待ちとなっているジョブ名などを記録する。
【００３３】
ジョブ実行制御部１０は、ジョブ定義情報ＤＢ１１からジョブ定義情報を読み出し、エージェント装置３に対して、ジョブの実行依頼（キューイングの開始）を送信する。ジョブ実行制御部１０は、エージェント装置３からロック獲得要求およびロック解放要求を受信し、これらの要求を排他資源管理ＤＢ１３に登録する。
【００３４】
ジョブ実行制御部１０は、排他資源名で表される排他資源のロックを制御するロック制御機能を有する。ロック制御機能は、排他資源を扱う個々のアプリケーション（エージェント装置３）が有している必要性はなく、マネージャ装置２のみが有していれば良い。この場合、「どの排他資源を利用するか」という情報が、ジョブ定義情報ＤＢ１１にパラメータとして予め定義される。なお、排他資源名は、単なる文字列情報でよい。例えば、排他資源がプリンタＺである場合、「Ｚ」という文字列情報でロックを要求することを予め取り決めておき、ジョブ実行制御部１０は、「Ｚ」とのロック要求を受信した場合に排他制御を行う。
【００３５】
エージェント装置３は、ジョブ実行制御部２０を備える。ジョブ実行制御部２０は、マネージャ装置２から実行を依頼されたジョブのキュー制御及び実行を行う。ジョブ実行制御部２０は、マネージャ装置２に対してジョブの実行結果を返却する。ジョブ実行制御部２０は、マネージャ装置２に対して、排他資源を使用するジョブが実行される際に「ロック獲得要求」を送信し、当該ジョブの実行が完了した際に「ロック解放要求」を送信する。
【００３６】
そして、ジョブ実行管理システム１では、排他資源を利用するジョブの無駄なロック待ち時間を短くするために、優先制御が実行される。優先制御は、ジョブ実行制御部１０による第１制御（優先実行）と、ジョブ実行制御部２０による第２制御と、を含む。
【００３７】
第１制御は、以下の制御（１）〜（４）を有する。
（１）対象の排他資源を利用するジョブの抽出
ジョブ実行制御部１０は、各エージェント装置３にキューイングされているジョブの内、対象の排他資源を利用するジョブを全て抽出する。当該ジョブが同一キュー内に複数存在する場合、ジョブ実行制御部１０は、先行してキューイングされたもののみを対象とする。
（２）残り必要時間の算出
ジョブ実行制御部１０は、制御（１）のジョブがキューイングされているそれぞれのキューにおいて、そのキューで現在実行中のジョブが終了するのに必要な「残り必要時間」を計算する。残り必要時間の計算は、対象のキュー全てで実施される。
【００３８】
残り必要時間は、例えば、実行中のジョブの予想実行時間と、ジョブの実行が始まってからの経過時間とから計算することができる。例えば、残り必要時間は、以下の（式１）で計算することが可能である。
【００３９】
残り必要時間＝予想実行時間−経過時間      （式１）
なお、ジョブの実行時間とは、エージェント装置３上でジョブが開始されてから完了するまでの時間である。そして、予想実行時間は、上記実行時間の予想値である。予測実行時間は、たとえば、過去の実績を用いて見積もることができる。ジョブ実行管理システム１は、日次、週次、あるいは月次といった形で同じ処理を実行させることを特徴とするシステムであるため、前回の実績を参考にすることができるのである。また、入力データ量に応じて処理時間が大きくなる特徴を持つようなジョブの場合、その入力データ量と処理時間との関係性を数式化したデータを用いて、ジョブ実行制御部１０は、今回実行しようとしているジョブの入力データ量から予想実行時間を見積もることも可能である。
【００４０】
ジョブ実行制御部１０は、たとえば、ジョブ定義情報ＤＢ１１を参照して、予想実行時間を取得する。また、ジョブ実行制御部１０は、たとえば、各エージェント装置３に問い合わせすることで、それぞれのジョブの経過時間を取得する。
（３）最も先に空きができるキューの決定
ジョブ実行制御部１０は、制御（２）の算出結果である、各キューの残り必要時間同士を比較し、最も先に空きができるキューを決定する。
（４）ジョブの実行優先度の変更
ジョブ実行制御部１０は、制御（３）で決定されたキューにキューイングされている、対象の排他資源を利用するジョブのうちで最も先にキューイングされているジョブの実行位置を、該当キュー内において「キューに空きができたら次に実行される位置」に変更する。キューイングされたジョブが１つの場合、最も先にキューイングされたジョブは、その１つのジョブである。
【００４１】
図４は、第１制御をイメージ化した図である。
【００４２】
上記制御（１）〜（４）を排他資源に空きができる毎に実行することで、排他資源を利用するジョブを優先的に実行させ、かつ、排他資源のロック待ちが極力発生しないようにすることができる。上記制御（１）〜（４）の処理は、「排他資源に空きができた時点で、次に最も早くその排他資源を利用して実行開始できるジョブを探し、そのジョブを優先実行させる」処理と要約することができる。
【００４３】
なお、排他資源を利用するジョブに対して第１制御が実行されることなくキューの実行順を迎えた場合、ジョブ実行制御部２０において第２制御が実行される。
【００４４】
第２制御は、上記の制御（１）〜（４）が行われることなく排他資源を利用するジョブがキュー内にて実行順を迎えた場合に、当該ジョブの実行位置を「キューに空きができたら次に実行される位置」に留め置き、先に後続のジョブを実行させる制御である。
【００４５】
第２制御により、排他資源のロック待ちになったジョブによって、該当キュー内の後続のジョブの実行が阻害されることを防ぐことができる。
【００４６】
ただし、第２制御を実行する場合、制御（３）および制御（４）の決定に漏れ続けてしまう可能性がある。これを回避するため、制御（３）の判断を左右する制御（２）の計算に補正値が導入される。この補正値は、超過時間（対象のジョブがエージェント装置３にキューイングされた時点からの予想開始時間としたときの超過時間）である。例えば、ジョブがキューイングされた時点で、先にキューイングされていたジョブの予想実行時間からあとどれぐらい待てばキューイングされたジョブの実行が開始されるのかを計算することができる。超過時間は、キューイング時刻を起点とした時の予想開始時間であり、この予想開始時間を超えても実行されていない、すなわち、他のキューの優先制御によってロックを獲得できないまま待ち合わせさせられている時間である。そこで、ジョブ実行制御部１０は、制御（２）で算出された「残り必要時間」を制御（３）での比較対象とするのではなく、「残り必要時間」から「超過時間」を差し引いた値（すなわち、補正された値）を制御（３）での比較対象とする。
【００４７】
なお、予想開始時間は、たとえば、以下の（式２）により求めることができる。
【００４８】
予想開始時間＝キューイング済みの未実行のジョブの予想実行時間の総和＋現在実行中のジョブの予想実行時間−そのジョブの実行経過時間              （式２）
また「超過時間」は、以下の（式３）により求めることができる。
【００４９】
超過時間＝キューイングされてからの経過時間−予想開始時間      （式３）
以下に、第１制御の具体例が示される。制御（２）の計算結果として「残り必要時間」を計算した際、キューＡが２０秒、キューＢが３０秒、キューＣが４０秒であったと仮定する。補正値なしで考慮すれば、最も早く空きができるキューは、キューＡとなる。しかしながら、キューＣにキューイングされているジョブＣ０は、制御（１）〜（４）の対象とならずにキューの先頭に到達したが、排他資源も他ジョブがロック中で利用できなかったため、制御（５）により後続のジョブを先に実行させているとする。そして、その待ち時間（超過時間）が、たとえば、３０秒であった場合、キューＣの補正後の「残り必要時間」は、４０−３０＝１０秒となる。従って、制御（３）および制御（４）により決定される、次に実行すべきジョブは、キューＣにキューイングされてロック待ちとなっているジョブＣ０となる。
（動作の説明）
（一般的動作の説明）
図５は、第１制御の一例を示すフローチャートである。
【００５０】
本フローチャートに示される処理は、排他資源管理ＤＢ１３に登録されたいずれかの排他資源のロックが解放された場合、または、排他資源名が設定されたジョブについて、エージェント装置３に対してジョブ実行依頼が行われた場合に実行される。
【００５１】
なお、対象となる排他資源は、前者の場合はロックが解放された排他資源であり、後者の場合は実行依頼が行われたジョブに設定された排他資源である。以下の説明では、この排他資源名はＺとされる。
【００５２】
ジョブ実行制御部１０は、各エージェント装置３のジョブ実行制御部２０に対して問い合わせを行い、各エージェント装置３のキューにキューイングされているジョブの内、排他資源Ｚを利用する全てのジョブＸ１を抽出する（ステップＳ１）。同一キューに排他資源Ｚを利用するジョブが複数存在する場合は先行してキューイングされたもののみを対象とする。
【００５３】
ジョブＸ１が１つも存在しない場合（ステップＳ１においてＮｏ）、本フローチャートの処理は終了となる。
【００５４】
ジョブＸ１が１つ以上存在する場合（ステップＳ１においてＹｅｓ）、ジョブ実行制御部１０は、ジョブＸ１が所属する各キューにおいて現在実行中のジョブの残り必要時間Ｘ２を算出する（ステップＳ２）。残り必要時間Ｘ２の算出方法は上述したとおりである。
【００５５】
ジョブ実行制御部１０は、残り必要時間Ｘ２を補正して、補正後の残り必要時間Ｘ３を算出する（ステップＳ３）。具体的には、ジョブ実行制御部１０は、ジョブＸ１の予想開始時間に対する超過時間を計算する。予想開始時間および超過時間の計算方法は上述したとおりである。そして、ジョブ実行制御部１０は、残り必要時間Ｘ２から超過時間を差し引くことで、補正後の残り必要時間Ｘ３を算出する。
【００５６】
ジョブ実行制御部１０は、各キューの、補正後の残り必要時間Ｘ３同士を比較し、最も先に空きができるキューＸ４を決定する（ステップＳ４）。ジョブ実行制御部１０は、キューＸ４をもつエージェント装置３のジョブ実行制御部２０に対して、ジョブの位置を変更する旨の指示を送信する。
【００５７】
ジョブ実行制御部２０は、上記指示に基づいて、キューＸ４において、排他資源Ｚを利用するジョブの中で最も先にキューイングされたジョブの位置を、「次に実行できる位置」に変更する（ステップＳ５）。
【００５８】
図６は、第２制御の一例を示すフローチャートである。
【００５９】
ジョブ実行制御部２０は、排他資源を利用するジョブが優先実行されることなく（第１制御が実行されることなく）キューにて実行順を迎えたか否かを判定する（ステップＳ１０）。排他資源を利用するジョブが優先実行されることなくキューにて実行順を迎えた場合（ステップＳ１０のＹｅｓ）、ジョブ実行制御部２０は、当該ジョブの実行位置を「キューに空きができたら次に実行される位置」に留め置き、先に後続のジョブを実行させる（ステップＳ１１）。
【００６０】
第１制御が実行されることなくジョブがキューの実行順を迎えていない場合（ステップＳ１０においてＮｏ）、およびステップＳ１１の処理が完了した場合、本フローチャートの処理は終了する。
（具体的動作の説明）
以下、図７〜図３２を用いて優先制御を具体的に説明する。なお、図７〜図３２の内の図７〜図２２は本実施形態を説明するための図であり、図２３〜図３２は本発明を適用していない関連技術の方式を説明するための図である。
【００６１】
説明の前提は以下のとおりである。
・３台のエージェント装置３があり、それぞれのエージェント装置３には１つだけキュー（キューＡ、Ｂ、Ｃ）があるものとする。
・開始時点で、図７に示したようなジョブのキューイングが行われているものとする。図７は、下に行くほど先行してキューイングされたジョブであること、および二重線より下に書かれたジョブが実行状態となっているジョブであることを示している。
・図７において、ジョブ欄における太字は、排他資源Ｚが設定されたジョブを表す（ジョブＡ５、Ｂ２、Ｃ５）
・図７において、「予想」は、予想実行時間を簡略化したものである。
・図７において、「超過」は、超過時間を簡略化したものである。
・説明をより明りょうなものとするため、ステップＳ１の抽出は完了し、その結果として図７に示すキューＡ、キューＢ、キューＣが常にヒットしていることとする。
・６０秒後にキューＡにジョブＡ７（予想実行時間：２０秒）、１００秒後にキューＣにジョブＣ６（予想実行時間：２０秒）が追加で投入されるとする。
■開始時
開始時点（図７）の状態で排他資源Ｚに空きが出来たため、優先制御が実行される。ステップＳ２の結果としての残り必要時間は、それぞれＡ＝１０、Ｂ＝８０、Ｃ＝２０である。そして、超過時間は全て０のため、残り必要時間は補正されない。従って、最も早く実行できるキューは、キューＡとなる。そして、キューＡにあるジョブＡ５がジョブＡ１の直後に移動される（図８）。
■開始から１０秒後
１０秒後、ジョブＡ１が完了し、排他資源Ｚを利用するジョブＡ５が実行開始される（図９）。
■開始から３０秒後
図９の状態から２０秒後、ジョブＡ５が完了して、排他資源Ｚのロックが解放される。このとき、また優先制御が実行される（図１０）。
【００６２】
この場合、比較対象はジョブＢ２とジョブＣ５である。超過時間はないため補正なく、最も早く実行されるキューは、キューＣである。従って、ジョブＣ５は、ジョブＣ２の直後に移動される（図１１）。
■開始から５０秒後
図１１の状態から２０秒後、ジョブＣ２が完了し、排他資源Ｚを利用するジョブＣ５の実行が開始される（図１２）。
■開始から６０秒後
図１２の状態から１０秒後、キューＡに新たにＡ７（予想実行時間：２０秒）がキューイングされる（図１３）。
■開始から８０秒後
図１３の状態から２０秒後、ジョブＢ１が完了する。このとき、次に実行すべきジョブＢ２は排他資源Ｚを利用するジョブのため、競合が発生してしまう。そのため、ジョブ実行制御部２０は、排他資源Ｚのロック獲得を要求し（ロック待ち）、先に後続のジョブＢ３を実行開始させる（図１４）。
■開始から９０秒後
図１４の状態から１０秒後、ジョブＣ５が完了して、排他資源Ｚのロックが解放される。このとき、また優先制御が実行される（図１５）。
【００６３】
この場合、比較対象はジョブＡ７とジョブＢ２である。そして、ジョブＢ２には超過時間がある。これを加味すると、補正後の残り必要時間は、それぞれキューＡ＝０、キューＢ＝３０−１０＝２０となり、キューＡの方が小さい。よってジョブＡ７の位置が移動される。この場合、実行中のジョブがないため、そのままジョブＡ７の実行が開始される（図１６）。
■開始から１００秒後
図１６の状態から１０秒後、キューＣに新たにＣ６（予想実行時間：２０秒）がキューイングされる（図１７）。
■開始から１１０秒後
図１７の状態から１０秒後、ジョブＡ７が完了し、排他資源Ｚのロックが解放される。このとき、また優先制御が実行される（図１８）。
【００６４】
この場合、比較対象はジョブＢ２とジョブＣ６である。そして、Ｂ２には超過時間がある。これを加味すると、補正後の残り必要時間は、キューＢ＝１０−３０＝−２０、キューＣ＝０となり、キューＢのほうが小さい。よってジョブＢ２の位置が移動される。この場合、ジョブＢ２は、既に「次に実行される位置」にいるため、移動処理は不要となる。また、キューＣは優先制御の対象とならなかったため、順番通りＣ４が実行開始される（図１９）。
■開始から１２０秒後
図１９の状態から１０秒後、ジョブＢ３が完了し、排他資源Ｚを利用するジョブＢ２が実行開始される（図２０）。
■開始から１６０秒後
図２０の状態から４０秒後、ジョブＣ４が完了する。このとき、次に実行すべきジョブＣ６は排他資源Ｚを利用するジョブのため、競合が発生してしまう。そのため、ジョブ実行制御部２０は、排他資源Ｚのロック獲得を要求する。なお、キューＣでは後続で実行できるジョブが存在しないため、キューＣは、ジョブＣ６が「次に実行すべき位置」に滞在したまま、何もジョブを実行しないキューとなる（図２１）。
■開始から１７０秒後
図２１の状態から１０秒後、ジョブＢ２が完了し、排他資源Ｚのロックが解放される。排他資源ＺはすでにジョブＣ６のロック待ちとなっているため、ジョブＣ６がロックを獲得し、実行状態に遷移する（図２２）。
■開始から１９０秒後
図２２の状態から２０秒後、ジョブＣ６が実行完了し、全てのジョブの実行が完了する。
【００６５】
以上説明したように、本実施形態において、すべてのジョブは、合計１９０秒で実行完了する。
【００６６】
次に、本実施形態の効果を示すため、本発明を適用していない関連技術の方式でジョブを実行した場合の動作と合計実行時間とについて説明する。本方式としては、最もデメリットが少ないとされる、第３方式（［発明が解決しようとする課題］参照）を採用する。なお、前提条件は上で説明したものと同じとする。また、「超過」列の代わりに「ロック」列を記載しており、ここには排他資源Ｚのロック獲得の待ち合わせ順が記載される。この値が１になっているジョブが現在排他資源Ｚをロック中であることが示されている。
■開始時点
開始時点は図７であり、この状態からキューイングされている順に従って実行していく。
■開始から６０秒後
図７の状態から６０秒後、キューＡに新たにジョブＡ７（予想実行時間：２０秒）がキューイングされる（図２３）。
■開始から７０秒後
図２３の状態から１０秒後、ジョブＡ４が完了する。後続のジョブＡ５は排他資源Ｚを必要とするジョブのためロックを要求するが、排他資源Ｚをロックしているジョブは他にないためロックが獲得でき、そのまま実行が開始される（図２４）。
■開始から８０秒後
図２４の状態から１０秒後、ジョブＢ１が完了する。このとき、次に実行すべきジョブＢ２は排他資源Ｚを利用するジョブのため、競合が発生してしまう。そのため、排他資源Ｚのロック獲得要求が実行され、後続のジョブＢ３の実行が先に開始される（図２５）。
■開始から９０秒後
図２５の状態から１０秒後、ジョブＡ５が完了し、排他資源Ｚのロックが解放される。排他資源Ｚは既にジョブＢ２がロック要求をしているため、ジョブＢ２が排他資源Ｚのロックを獲得する（図２６）。
■開始から１００秒後
図２６の状態から１０秒後、キューＣに新たにＣ６（予想実行時間：２０秒）がキューイングされる（図２７）。
■開始から１１０秒後
図２７の状態から１０秒後、ジョブＡ６が完了する。後続のジョブＡ７は排他資源Ｚを利用するジョブのため、ロック要求を行うが、ジョブＢ２が既にロックを獲得しているため、待ち合わせが発生する。なお、キューＡでは後続で実行できるジョブが存在しない。従って、キューＡは、何もジョブを実行しないキューとなる（図２８）。
■開始から１２０秒後
図２８の状態から１０秒後、ジョブＢ３及びジョブＣ４が完了する。後続のジョブＢ２は排他資源Ｚを利用するジョブであるが、既にロック獲得済みのため、そのまま実行開始される。また、後続のジョブＣ５も同じく排他資源Ｚを利用するジョブであり、ロックを要求するが、他ジョブが既にロック済みのため、待ち合わせが発生する。また、ジョブＣ５の後続のジョブＣ６も排他資源Ｚを利用するジョブのため、先行させて実行させることもできないため、このままとなり、キューＣは、何も実行できないキューとなる（図２９）。
■開始から１７０秒後
図２９の状態から５０秒後、ジョブＢ２が完了し、排他資源Ｚのロックが解放される。続いて、ジョブＡ７が排他資源Ｚのロックを獲得し、実行開始される（図３０）。
■開始から１９０秒後
図３０の状態から２０秒後、ジョブＡ７が完了し、排他資源Ｚのロックが解放される。続いて、ジョブＣ５が排他資源Ｚのロックを獲得し、実行開始される（図３１）。
■開始から２３０秒後
図３１の状態から４０秒後、ジョブＣ５が完了し、排他資源Ｚのロックが解放される。続いて、ジョブＣ６が排他資源Ｚのロックを獲得し、実行開始される（図３２）。
■開始から２５０秒後
図３２の状態から２０秒後、ジョブＣ６が完了し、全てのジョブの実行が完了する。
（効果の説明）
以上説明したように、第３方式において、すべてのジョブは、合計２５０秒で実行完了する。
【００６７】
本実施形態と第３方式とを比較すると、２５０−１９０＝６０秒の差がある。すなわち、本実施形態によれば、本実施形態よりも前に使用されている方式の中で最もデメリットが少ないとされる第３方式よりも、ジョブ全体の実行時間が約２５％改善されていることがわかる。すなわち、以上説明した第２の実施形態によれば、排他資源を利用するジョブが複数ある場合に、その排他資源のロック待ちを極力回避してジョブネットワーク全体の実行時間をより短くすることができる。もちろん、その場合、ユーザが意図的にジョブのスケジューリング時間を調整して実行タイミングが重ならないように調整する必要はない。
【００６８】
以上、各実施形態を用いて本発明を説明したが、本発明の技術的範囲は、上記各実施形態の記載に限定されない。上記各実施形態に多様な変更又は改良を加えることが可能であることは当業者にとって自明である。従って、そのような変更又は改良を加えた形態もまた本発明の技術的範囲に含まれることは説明するまでもない。また、以上説明した各実施形態において使用される、数値や各構成の名称等は例示的なものであり適宜変更可能である。
【符号の説明】
【００６９】
１  ジョブ実行管理システム
２  マネージャ装置
３  エージェント装置
１０  ジョブ実行制御部
１１  ジョブ定義情報ＤＢ
１３  排他資源管理ＤＢ
２０  ジョブ実行制御部
１００  ジョブ実行管理システム
１０２  マネージャ装置
１０４  エージェント装置
【図１】
2019179280.tif 000003
【図２】
2019179280.tif 000004
【図３】
2019179280.tif 000005
【図４】
2019179280.tif 000006
【図５】
2019179280.tif 000007
【図６】
2019179280.tif 000008
【図７】
2019179280.tif 000009
【図８】
2019179280.tif 000010
【図９】
2019179280.tif 000011
【図１０】
2019179280.tif 000012
【図１１】
2019179280.tif 000013
【図１２】
2019179280.tif 000014
【図１３】
2019179280.tif 000015
【図１４】
2019179280.tif 000016
【図１５】
2019179280.tif 000017
【図１６】
2019179280.tif 000018
【図１７】
2019179280.tif 000019
【図１８】
2019179280.tif 000020
【図１９】
2019179280.tif 000021
【図２０】
2019179280.tif 000022
【図２１】
2019179280.tif 000023
【図２２】
2019179280.tif 000024
【図２３】
2019179280.tif 000025
【図２４】
2019179280.tif 000026
【図２５】
2019179280.tif 000027
【図２６】
2019179280.tif 000028
【図２７】
2019179280.tif 000029
【図２８】
2019179280.tif 000030
【図２９】
2019179280.tif 000031
【図３０】
2019179280.tif 000032
【図３１】
2019179280.tif 000033
【図３２】
2019179280.tif 000034