(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024125948
(43)【公開日】2024-09-19
(54)【発明の名称】ジョブ実行制御装置、ジョブ実行制御プログラムおよびジョブ実行制御方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20240911BHJP
【FI】
G06F9/50 120B
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023034100
(22)【出願日】2023-03-06
(71)【出願人】
【識別番号】591102095
【氏名又は名称】三菱電機ソフトウエア株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】弁理士法人クロスボーダー特許事務所
(72)【発明者】
【氏名】相馬 悠紀
(72)【発明者】
【氏名】長森 剛志
(72)【発明者】
【氏名】藤巻 剛
(72)【発明者】
【氏名】吉田 幸平
(72)【発明者】
【氏名】亀代 泰三
(57)【要約】
【課題】優先度の高い割込みジョブが発生した際に、1台以上サーバのどのサーバにも割込みジョブ実行のためのリソース空きがない場合にも、割込みジョブの実行可能な装置を提供する。
【解決手段】ジョブ実行制御装置10は、優先度の付与された複数のジョブを、3台のサーバで実行させる。ジョブ実行制御装置10は、実行が予定される実行予定ジョブの実行に必要なリソース量を有するサーバが3台のサーバのどれにも存在しない場合に、中断優先度ジョブを実行しているサーバを3台のサーバの中から特定する。なお中断優先度ジョブとは、必要なリソース量を実行中断により充足可能なジョブであり、かつ、実行中断が認められている優先度である中断優先度が付与されているジョブである。ジョブ実行制御装置10は、特定したサーバで実行中の中断優先度ジョブの実行を中断し、特定したサーバに実行予定ジョブを実行させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
処理の緊急性を示す優先度の付与された複数のジョブを、1台以上のサーバで実行させるジョブ実行制御装置において、
実行が予定される実行予定ジョブの実行に必要なリソース量を有するサーバが前記1台以上のサーバの中に存在しない場合に、前記必要なリソース量を実行中断により充足可能なジョブであり、かつ、実行中断が認められている優先度である中断優先度が付与されているジョブである中断優先度ジョブを実行しているサーバを前記1台以上のサーバの中から特定し、特定した前記サーバで実行中の前記中断優先度ジョブの実行を中断し、特定した前記サーバに前記実行予定ジョブを実行させる優先度管理部を備えるジョブ実行制御装置。
【請求項2】
前記優先度管理部は、
実行を中断した前記中断優先度ジョブの持つ前記中断優先度を、実行中断が認められていない優先度に変更する請求項1に記載のジョブ実行制御装置。
【請求項3】
前記中断優先度ジョブは、
実行を中断する場合に、中断時における処理途中の処理結果を、各サーバの共有する記憶領域に格納するとともに、前記処理結果の処理状態および前記処理結果の存在する前記記憶領域における位置情報を前記優先度管理部に送信し、
前記優先度管理部は、
実行が中断され、かつ、前記中断優先度から実行中断が認められていない前記優先度へ変更された前記中断優先度ジョブを再び実行するときに、前記中断優先度ジョブを再び実行するサーバを前記1台以上のサーバの中から決定し、決定したサーバに前記中断優先度ジョブの前記処理状態および前記位置情報を送信し、決定した前記サーバに前記中断優先度ジョブを再び実行させる請求項2に記載のジョブ実行制御装置。
【請求項4】
前記優先度管理部は、
前記中断優先度を持つ複数の実行予定ジョブがある場合に、前記1台以上のサーバの中に実行に必要なリソース量を持つサーバが存在する実行予定ジョブを、実行に必要なリソース量を持つ前記サーバに実行させる請求項1から請求項3のいずれか1項に記載のジョブ実行制御装置。
【請求項5】
処理の緊急性を示す優先度の付与された複数のジョブを、1台以上のサーバで実行させるジョブ実行制御装置であるコンピュータに、
実行が予定される実行予定ジョブの実行に必要なリソース量を有するサーバが前記1台以上のサーバの中に存在しない場合に、前記必要なリソース量を実行中断により充足可能なジョブであり、かつ、実行中断が認められている優先度である中断優先度が付与されているジョブである中断優先度ジョブを実行しているサーバを前記1台以上のサーバの中から特定し、特定した前記サーバで実行中の前記中断優先度ジョブの実行を中断し、特定した前記サーバに前記実行予定ジョブを実行させる優先度管理処理を実行させるジョブ実行制御プログラム。
【請求項6】
処理の緊急性を示す優先度の付与された複数のジョブを、1台以上のサーバで実行させるジョブ実行制御装置であるコンピュータが、
実行が予定される実行予定ジョブの実行に必要なリソース量を有するサーバが前記1台以上のサーバの中に存在しない場合に、前記必要なリソース量を実行中断により充足可能なジョブであり、かつ、実行中断が認められている優先度である中断優先度が付与されているジョブである中断優先度ジョブを実行しているサーバを前記1台以上のサーバの中から特定し、特定した前記サーバで実行中の前記中断優先度ジョブの実行を中断し、特定した前記サーバに前記実行予定ジョブを実行させるジョブ実行制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ジョブの実行を制御するジョブ実行制御装置に関する。
【背景技術】
【0002】
画像データを日次処理で大量に処理するシステムでは、いかに大量データを迅速に、効率的に処理できるかが重要である。さらに、日次処理に加え、優先度の高い画像処理を割込み実行する必要がある場合は、いかに割込み処理を迅速に処理しつつ、日次処理への影響を抑えるかが重要である。画像データを大量に処理するには、一般的にサーバ性能の向上、数量増加の対応がある。またコンピュータ処理効率を上げるため、投入する処理をジョブ管理し、リソースと対応付けて動作を制御するのが一般的である。
【0003】
従来技術(例えば特許文献1)のジョブ処理装置は、ジョブの同時実行数分のジョブユニットからなるジョブユニット部を有する。このジョブ処理装置は、ジョブの負荷に応じた数のジョブユニットをジョブに割当てることで、ジョブの実行に際し最適な負荷配分を行う。
また、このジョブ処理装置は、各ジョブユニットに、実行可能なジョブのレベルを示すジョブユニットレベルを設定し、高レベルのジョブユニットには優先順位の高いジョブのみを割当てる。これによって、ジョブ優先順位に応じたジョブの実行が行われる。
また、従来技術では、複数サーバでジョブを処理する環境で優先度の高いジョブ待ち状態において、リソース空きが発生すると、待ちジョブよりも優先度が低いジョブを中断して移動し、待ちジョブを割込みジョブとして投入する。
【0004】
従来技術では、割込みジョブを実行するための十分なジョブユニットの空き発生状態でないと、割込みできないという課題があった。
よって、日次処理でコンピュータリソースの大部分を定常的に使用するシステムでは、空き発生が存在しない限り、割込みできないという課題があった。
また、従来技術では、優先度の低いジョブを中断して他サーバへ移動することでリソース空きを発生させ、割込み可能とする技術が提示されている。
しかし、他サーバにリソース空きがなければ優先度の低いジョブを移動することができず、結果として優先度高のジョブを割込み実行できないという課題があった。すなわち従来技術では、複数サーバのうちのどれかのサーバに、割込みジョブを実行するためのリソース空きが必要であった。
【0005】
このように、日次処理の画像処理でコンピュータリソースの大部分を使用するようなシステムでは、緊急度の高い割込み画像処理を、通常の画像処理より優先的に迅速に処理する必要がある。しかし、従来技術では、移動先サーバに移動されるジョブのためのリソース空きがない場合には、優先度の高いジョブを割込み処理できないという課題があった。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
本開示に係るジョブ実行制御装置は、優先度の高い割込みジョブが発生した際に、1台以上のサーバのどのサーバにも優先度の高い割込みジョブ実行のためのリソース空きがない場合にも、割込みジョブを実行できる装置の提供を目的とする。
【課題を解決するための手段】
【0008】
本開示に係るジョブ実行制御装置は、処理の緊急性を示す優先度の付与された複数のジョブを、1台以上のサーバで実行させるジョブ実行制御装置である。
ジョブ実行制御装置は、
実行が予定される実行予定ジョブの実行に必要なリソース量を有するサーバが前記1台以上のサーバの中に存在しない場合に、前記必要なリソース量を実行中断により充足可能なジョブであり、かつ、実行中断が認められている優先度である中断優先度が付与されているジョブである中断優先度ジョブを実行しているサーバを前記1台以上のサーバの中から特定し、特定した前記サーバで実行中の前記中断優先度ジョブの実行を中断し、特定した前記サーバに前記実行予定ジョブを実行させる優先度管理部を備える。
【発明の効果】
【0009】
本開示に係るジョブ実行制御装置は優先度管理部を備えている。よって、優先度の高い割込みジョブが発生した際に、1台以上のサーバのどのサーバにも優先度の高い割込みジョブ実行のためのリソース空きがない場合でも、優先度の高い割込みジョブのためのリソースを確保できる。
【図面の簡単な説明】
【0010】
【
図1】実施の形態1の図で、ジョブ並列実行システム9の構成を示す図。
【
図2】実施の形態1の図で、ジョブ実行制御装置10のブロック構成図。
【
図3】実施の形態1の図で、データ登録フォルダ20(1)の構成を示す図。
【
図4】実施の形態1の図で、ジョブ管理テーブル16J(1)を示す図。
【
図5】実施の形態1の図で、リソース管理テーブル16R(1)を示す図。
【
図6】実施の形態1の図で、データ登録フォルダ20(2)の構成を示す図。
【
図7】実施の形態1の図で、ジョブ登録の処理を示すフローチャート。
【
図8】実施の形態1の図で、ジョブ管理テーブル16J(2)を示す図。
【
図9】実施の形態1の図で、ジョブ実行および中断の処理を示すフローチャート。
【
図10】実施の形態1の図で、ジョブ管理テーブル16J(3)を示す図。
【
図11】実施の形態1の図で、リソース管理テーブル16R(2)を示す図。
【
図12】実施の形態1の図で、ジョブ管理テーブル16J(4)を示す図。
【
図13】実施の形態1の図で、ジョブ管理テーブル16J(5)を示す図。
【
図14】実施の形態1の図で、リソース管理テーブル16R(3)を示す図。
【
図15】実施の形態1の図で、ジョブ管理テーブル16J(6)を示す図。
【
図16】実施の形態1の図で、ジョブ管理テーブル16J(7)を示す図。
【
図17】実施の形態1の図で、ステータス情報17を示す図。
【
図18】実施の形態1の図で、ジョブ処理を示すフローチャート。
【
図19】実施の形態1の図で、ジョブ管理テーブル16J(8)を示す図。
【
図20】実施の形態1の図で、リソース管理テーブル16R(4)を示す図。
【
図21】実施の形態1の図で、ジョブ管理テーブル16J(9)を示す図。
【
図22】実施の形態1の図で、リソース管理テーブル16R(5)を示す図。
【
図23】実施の形態1の図で、ジョブ実行制御装置10のハードウェア構成を示す図。
【発明を実施するための形態】
【0011】
実施の形態の説明および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は、適宜に省略または簡略化する。以下の実施の形態では、「部」を、「回路」、「工程」、「手順」、「処理」または「サーキットリー」に適宜読み替えてもよい。
【0012】
実施の形態1.
図1から
図23を参照して実施の形態1のジョブ実行制御装置10を説明する。
【0013】
***構成の説明***
図1は、ジョブ並列実行システム9の構成を示す。ジョブ並列実行システム9は、3台のサーバとジョブ実行制御装置10とを備えている。なお、サーバの台数は3台に限定されるものではなく、1台でもよいし、2台でもよいし、4台以上でもよい。3台のサーバとジョブ実行制御装置10とは、ネットワーク8を介して通信可能である。
【0014】
図2は、ジョブ実行制御装置10のブロック構成を示す。ジョブ実行制御装置10は、処理の緊急性を示す優先度の付与された複数のジョブを、各サーバで実行させる。サーバは、ジョブ実行サーバと表記する場合もある。ジョブ実行制御装置10は、優先度管理部11およびジョブ/リソースデータベース16を備えている。以下、データベースはDBと表記する。ジョブ/リソースDB16は、ジョブ管理テーブル16J、リソース管理テーブル16Rを備えている。優先度管理部11は、実行が予定される実行予定ジョブの実行に必要なリソース容量を有するサーバが複数のサーバの中に存在しない場合に、中断優先度ジョブを実行しているサーバを複数のサーバの中から特定する。中断優先度ジョブとは、中断により必要なリソース容量を充足可能なジョブであり、かつ、実行中断が認められている優先度である中断優先度が付与されているジョブである。実施の形態1では、実行中断が認められている優先度は優先度低である。優先度管理部11は、特定したサーバで実行中の中断優先度ジョブの実行を中断し、特定したサーバに実行予定ジョブを実行させる。
【0015】
優先度管理部11は、ジョブを各サーバに実行させ、また、実行中のジョブを中断させる。また、優先度管理部11は、処理すべきデータを監視して、データが入力された場合にジョブを後述のジョブ管理テーブル16Jに登録する。また、優先度管理部11は、ジョブの優先度を変更する。また、優先度管理部11は、サーバのリソース状況を測定する。ジョブ/リソースDB16は、ジョブ管理テーブル16Jおよびリソース管理テーブル16Rを保持する。以下ではジョブ管理テーブル16Jおよびリソース管理テーブル16Rの状態を区別するため、ジョブ管理テーブル16J(1)、ジョブ管理テーブル16J(2)のように表記する。
【0016】
図3は、ジョブ実行制御装置10の処理対象の画像データを保持する、データ登録フォルダ20(1)の構成を示す。データ登録フォルダ20(1)は、ルートフォルダである。優先度低フォルダ21は、優先度が低い画像データを保持する。優先度高フォルダ22は、優先度が高い画像データを保持する。
図3は以下のとおりである。優先度低フォルダ21は、優先度低の、画像1、画像2、画像3、画像5、画像6を保持している。優先度高フォルダ22は、優先度低に比べて優先度高の画像4を保持している。
【0017】
図4は、
図3の画像を処理するジョブを登録する、ジョブ管理テーブル16J(1)を示す。ジョブ管理テーブル16J(1)は、後述の
図6に示すフロー処理により、データ登録フォルダ20(1)の各ファイルが登録された直後の状態である。ジョブ管理テーブル16J(1)には、画像1~画像6を処理するジョブが登録されている。ジョブ管理テーブル16J(1)ではジョブステータスは実行中である。
【0018】
図5は、ジョブ管理テーブル16J(1)に示すデータの、登録処理時のリソース管理テーブル16R(1)を示す。リソース管理テーブル16R(1)は、ジョブID、プロセスID、CPU使用率、メモリ使用量、ディスク使用量、CPU空き率、メモリ空き容量、ディスク空き容量およびサーバ名を保持する。
【0019】
図6は、データ登録フォルダ20(1)の状態から、優先度高フォルダ22に優先度高の画像7が追加された状態のデータ登録フォルダ20(2)を示す。
【0020】
***動作の説明***
図7は、優先度管理部11のジョブ登録の動作を示すフローチャートである。
図7を参照して、優先度管理部11によるジョブ登録動作を説明する。
【0021】
(ステップS101)
ステップS101で、優先度管理部11は、無限ループ開始によって常駐プログラムとなる。
【0022】
(ステップS102)
ステップS102で、優先度管理部11は、データ登録フォルダ20から、未登録の画像ファイルを処理データとして取得する。すなわち優先度管理部11は、データ登録フォルダ20の全てのファイルリストを取得し、取得したファイルリストをジョブ管理テーブル16J(1)に示すジョブ名と比較し、ジョブ管理テーブル16J(1)に存在しない画像ファイルを、ジョブ管理テーブル16J(1)にあらたに登録する。ここでは画像7があらたな登録対象である。以下、画像7を登録対象として説明する。なお他の画像の登録は、画像7と同様である。
【0023】
(ステップS103)
ステップS103で、優先度管理部11は、画像7の優先度高判定を実施する。優先度高判定とは、画像7の画像ファイルの優先度が高かどうかを判定する処理である。ジョブ登録する画像ファイルが優先度高フォルダ22に存在する場合に、優先度管理部11は、その画像ファイルを優先度高と判定する。画像7は優先度高フォルダ22にあるので、優先度管理部11は画像7を優先度高と判定する。
【0024】
(ステップS104)
ステップS104で、優先度管理部11は、画像7に優先度高を設定する。ステップS104の設定結果は、後述の
図8に示すジョブ管理テーブル16J(2)の「優先度」として登録される。
【0025】
(ステップS105)
ステップS105で、優先度管理部11は、ファイルサイズ設定を実行する。ファイルサイズは、特定のコマンドで取得できる。この結果は後述の
図8に示すジョブ管理テーブル16J(2)の「ファイルサイズ」に登録される。
【0026】
(ステップS106)
ステップS106で、優先度管理部11は、ジョブ名、優先度、ファイルサイズを、ジョブ管理テーブル16Jに登録する。
図8は、画像7の、ジョブ名、優先度、ファイルサイズが登録された直後のジョブ管理テーブル16J(2)を示す。
【0027】
図9は、優先度管理部11が各サーバにジョブを実行および中断させる、実行/中断の処理を示すフローチャートである。
図9の動作主体は優先度管理部11である。
【0028】
(ステップS201)
ステップS201で無限ループが開始し、優先度管理部11は常駐プログラムとなる。
【0029】
(ステップS202)
ステップS202で、優先度管理部11はジョブ優先度変更を実施する。ジョブ優先度変更とは、実行の中断状態のジョブの優先度が「低」の場合、優先度管理部11が低を「中」に変更する処理である。ジョブ管理テーブル16J(2)ではジョブステータスが「中断」のものは存在しない。処理はジョブ取得のステップS203へ進む。
【0030】
(ステップS203)
ステップS203では、優先度管理部11は、実行するジョブを取得する。優先度管理部11は、ジョブ管理テーブル16J(2)でジョブステータスが空欄のジョブを取得する。ジョブステータスが空欄のジョブは、実行予定の実行予定ジョブである。実行予定ジョブとしてジョブID7のジョブが取得される。
【0031】
(ステップS204)
ステップS204は、ステップ203で取得したジョブ数分のループ処理である。
【0032】
(ステップS205)
ステップS205で、優先度管理部11はリソース監視によってリソース状況を取得する。リソース監視はジョブ実行中サーバから、プロセス毎の、CPU使用率、メモリ使用量、ディスク使用量を取得する。具体的には特定のコマンドを用いることでプロセス毎のCPU使用率、メモリ使用量を各サーバから取得できる。ディスク容量もディスク容量を取得するコマンドを用いることで各サーバから取得できる。
【0033】
(ステップS206)
ステップS206では、優先度管理部11は、ステップS205で取得した各サーバのリソース状況、すなわちリソース使用量をジョブ毎にリソース管理テーブル16Rに登録する。ID7が実行前であるから、リソース状況はリソース管理テーブル16R(1)の状態である。
【0034】
(ステップS207)
ステップS207で、優先度管理部11は、ジョブID7のジョブ実行のためのリソース空き容量があるかを判断する。
図9のフローではリソース使用量の判定にメモリ使用量を用いる。リソース空き容量の判断は、ジョブID7を実行するためのリソース空き容量をもつサーバ抽出の処理である。優先度管理部11は、リソース管理テーブル16R(1)を参照し、ジョブID7のジョブ実行に要するメモリ容量の空きがあるサーバを選定する。各サーバのメモリ空き容量は、リソース管理テーブル16R(1)によれば、ジョブ実行サーバ1が10.5GB、ジョブ実行サーバ2が0.6GB、ジョブ実行サーバ3が6.1GBである。予想メモリ使用量を画像ファイルサイズの1.1倍とする。ジョブID7の画像ファイルサイズは12GBなので、ジョブID7に要するメモリ容量は13.2GBとなる。リソース管理テーブル16R(1)から、どのサーバもメモリ空き容量は13.2GB未満のため、ジョブID7を実行可能なサーバはない。よって処理はステップS207でNOとなり、処理はステップS209へ進む。
【0035】
(ステップS209)
ステップS209では、優先度管理部11は、ジョブID7の優先度が高であるかを判定する。優先度管理部11はジョブ管理テーブル16J(2)を参照し、ジョブID7が優先度高か判定する。ジョブID7は優先度高のため、ステップS209はYESとなり、処理はステップS210へ進む。
【0036】
(ステップS210)
ステップS210では、優先度管理部11は、ジョブ管理テーブル16J(2)から、サーバ毎に、実行中ジョブの情報を取得する。ステップS210からステップS219は、優先度高の実行予定ジョブについて、リソース確保の処理である。優先度管理部11は、ジョブ管理テーブル16J(2)から、ジョブID1からジョブID6の各ジョブ情報を取得する。処理はステップS221へ進む。
【0037】
(ステップS221)
ステップS221では、ステップS210で取得したジョブについて、サーバの数だけ処理がループする。処理はステップS215へ進む。
【0038】
(ステップS215)
ステップS215で、サーバ毎に、実行するジョブの数だけ処理がループする。具体的には次のようである。ステップS210ではリソース管理テーブル16R(2)から実行中ジョブとして、サーバ1についてID1およびID4、サーバ2についてID2およびID5、サーバ3についてID3およびID6が取得される。
【0039】
(ステップS216)
処理はステップS216へ進む。ループはサーバ内で実行中のジョブの実行開始時間の新しい順とする。具体的には、優先度管理部11は、まず実行サーバ1についてジョブID4、ジョブID1を処理し、次に実行サーバ2についてジョブID5、ジョブID2を処理し、次に実行サーバ3についてジョブID6、ジョブID3を処理する。まず、実行サーバ1のジョブID4、ジョブID1の処理を説明する。ステップS216では、ジョブID4は優先度高のためYESとなる。そのため処理はステップS215のループに戻り、次にジョブID1が検証される。ステップS216では、優先度管理部11はジョブID1を優先度低と判定し、処理はステップS217へ進む。
【0040】
(ステップS217)
ステップS217では、優先度管理部11はジョブID1のジョブについてジョブ中断判定を行う。ジョブ中断判定とは、実行中の優先度低ジョブ(ID1)を実行中断することで、実行予定の優先度高ジョブ(ID7)を実行するリソース容量を確保できるかの判定である。優先度管理部11はリソース管理テーブル16R(1)から、ジョブID1のメモリ使用量とジョブ実行サーバ1のメモリ空き容量を取得する。ジョブID1のメモリ使用量は2.2GB、ジョブ実行サーバ1の空き容量は10.5GBである。よって、2.2GB+10.5GB=12.7GBとなる。ジョブID7の必要メモリは13.2GBである。よって、中断で得られる容量12.7GB<実行予定ジョブの必要メモリ13.2GB。そのため中断ジョブ判定はNOとなり、処理はステップS221へ戻り、検証対象は、ジョブ実行サーバ1からジョブ実行サーバ2に切り替わる。
【0041】
ステップS215では、優先度管理部11は、ジョブ実行サーバ2のジョブに対してループを回す。ジョブ実行サーバ2のジョブを実行が新しい順に並べるとジョブ管理テーブル16J(2)から、ジョブID5、ジョブID2の順になる。ジョブID5、ジョブID2の順にループが回り、処理はステップS216へ進む。
【0042】
(ステップS216)
ステップS216では、ジョブ管理テーブル16J(2)から、ジョブID5は優先度低であるので、NOとなる。処理はステップS217へ進む。
【0043】
(ステップS217)
ステップS217では、リソース管理テーブル16R(1)から、ジョブID5の使用メモリ使用量は5.5GB、ジョブ実行サーバ2の空きメモリ容量が8.3GBであるから5.5GB+8.3GB=13.8GBとなる。13.8GB>必要メモリ13.2GB、となる。上記のように13.8GBはジョブID7の必要メモリ13.2GBを上回る。このため、優先度管理部11は、ジョブ実行サーバ2で実行中のジョブID5の実行を中断することで、ジョブID7が実行可能と判定する。すなわち優先度管理部11は、ジョブID5のジョブの実行を中断と判定する。ステップS217でYESとなり、処理はステップS219へ進む。
【0044】
(ステップS219)
ステップS219では、優先度管理部11は、ジョブ管理テーブル16J(2)において、ジョブID5のジョブステータスを中断に変更し、ジョブID5のジョブを中断する。ジョブ中断はOSのプロセス終了コマンドの実行で実現できる。処理はステップS205へ進む。
図10は、ジョブID5のジョブの中断確定後のジョブ管理テーブル16J(3)である。
【0045】
(ステップS205)
<ID5中断、ID7実行待ち>
ステップS205で、優先度管理部11は、各ジョブ実行サーバのリソース監視を行い、リソース空き情報を取得する。
【0046】
(ステップS206)
<ID5中断、ID7実行待ち>
ステップS206で、優先度管理部11は、リソース空き情報をリソース管理テーブル16Rに登録する。
図11は、ステップS206で優先度管理部11が登録したリソース管理テーブル16R(2)を示す。ジョブID5のジョブは中断されているので、リソース管理テーブル16R(2)では、ジョブID5の各項目は空欄である。またジョブID7は実行されていないので、ジョブID7はリソース管理テーブル16R(2)に記載されていない。
処理はステップS207へ進む。
【0047】
(ステップS207)
<ID5中断、ID7実行待ち>
ステップS207で、優先度管理部11はリソース空き容量を判断する。これはジョブID7のジョブを実行するサーバを決める処理である。優先度管理部11は、ジョブID7が必要とするメモリ容量の空きがあるサーバを選定する。いま、各サーバのメモリ空き容量は、前述したジョブID5を中断したことを加味すると、リソース管理テーブル16R(2)から、ジョブ実行サーバ1が10.5GB、ジョブ実行サーバ2が13.8GB、ジョブ実行サーバ3が6.1GBである。ジョブ実行サーバ2がジョブID7の必要メモリ13.2GBを超えている。このため、優先度管理部11は、ジョブID7のジョブは実行可能と判断する。すなわち、優先度管理部11は、ジョブID7のジョブのリソースに空きあり、と判定する。よってステップS207はYESとなり、処理はステップS208へ進む。
【0048】
(ステップS208)
<ID5中断、ID7実行待ち>
ステップS208では、優先度管理部11は、ジョブ管理テーブル16J(2)とリソース管理テーブル16R(2)から、ジョブの優先度、メモリ使用量、メモリ空き容量を取得する。そして、優先度管理部11は実行ジョブの選定を行う。優先度管理部11はジョブID7が優先度高のため、ジョブID7を選定する。
処理は、ステップS211へ進む。
【0049】
(ステップS211、S212)
<ID5中断、ID7実行待ち>
ステップS211では、優先度管理部11は実行ジョブサーバの選定を行う。優先度管理部11は、ステップS208のリソース管理テーブル16R(2)の参照結果から、ジョブ実行サーバ2を選定し、ジョブ管理テーブル16J(3)へ登録する(ステップS212)。処理はステップS213へ進む。
【0050】
(ステップS213)
ステップS213では、優先度管理部11は、ジョブID7のジョブを実行する前に、ジョブ管理テーブル16J(3)のジョブID7のジョブステータスを、「実行中」に変更する。
図12は、ジョブID7のジョブステータスが「実行中」に変更された、ジョブ管理テーブル16J(4)を示す。処理はステップS214へ進む。
【0051】
(ステップS214)
<ID5中断、ID7実行開始>
ステップS214では、優先度管理部11は、ジョブID7のジョブを実行し、処理はステップS220へ進む。ステップS220ではジョブがないため、処理はステップS201へ戻り、無限ループを開始する。
【0052】
(ステップS202)
<ID5中断、ID7実行中>
ステップS202で、優先度管理部11は、ジョブ優先度を変更する。優先度管理部11は、実行を中断した中断優先度ジョブの持つ中断優先度を、実行中断が認められていない優先度に変更する。具体的には以下のとおりである。優先度管理部11は、実行中断された優先度低のジョブについて、優先度を低から中に変更する。ステップS219の中断処理でジョブID5のジョブが中断されたので、優先度管理部11は、ジョブID5の優先度を中に変更する。
図13は、ジョブID5の優先度が中に変更された状態のジョブ管理テーブル16J(5)を示す。
【0053】
(ステップS203)
<ID5中断、ID7実行中>
ステップS203(2回目)で、1回目と同様に、優先度管理部11は実行予定ジョブを取得する。ここでは、優先度管理部11は、ジョブステータスが空欄または中断のジョブIDを、実行予定ジョブとして取得する。この例では、優先度管理部11はジョブ管理テーブル16J(5)からジョブID5を取得する。
【0054】
<ID5中断、ID7実行中>
ステップS205(3回目)で、優先度管理部11はリソース監視を実行し、ステップS206で、優先度管理部11はリソースを登録する。
図14は、この登録によるリソース管理テーブル16R(3)の状態を示す。ステップS207(3回目)で、優先度管理部11は、中断中のジョブID5の要するメモリ容量5.5GBの空きがあるかを判定する。リソース管理テーブル16R(3)から、ジョブ実行サーバ1でメモリ空き容量が10.5GBであり、ジョブID5を実行可能である。よってステップS207でYESとなり、処理はステップS208(2回目)ヘ進む。
【0055】
ステップS208(2回目)で、優先度管理部11は、実行ジョブ選定でジョブID5を選定する。ステップS211(2回目)で、優先度管理部11は実行ジョブサーバ1を選定する。ステップS212(2回目)で、ジョブID5についてジョブ実行サーバ1をジョブ管理テーブル16J(6)に登録する。
【0056】
ステップS213(2回目)で、優先度管理部11は、ジョブ管理テーブル16JにおいてジョブID5のジョブステータスを実行中に変更する。
図15は、ジョブID5において、ジョブステータス=実行中、実行サーバ=ジョブ実行サーバ1、となったジョブ管理テーブル16J(6)を示す。ステップS214(2回目)で、優先度管理部11はジョブID5のジョブを実行する。具体的には、優先度管理部11は、ジョブ実行サーバ1にジョブID5のジョブを実行させる。
【0057】
以上、
図9の処理を説明した。
図9の処理では、メモリ空き容量のみでジョブのジョブID7やジョブID5等の実行予定ジョブの実行可否を判断した。しかし、これに限らず、CPU利用率とメモリ空き容量の組合せを用い、メモリ空き容量が実行可能に十分な空き容量があり、かつ、CPU利用率の少ない順に決定しても良い。
【0058】
(再実行)
図9での処理ではジョブID7のような優先度高の割込みジョブがリソース不足で実行できない場合、ジョブID5のような優先度低かつ動作中ジョブの実行を中断する。この実行中のジョブを中断させることでリソース空きを増やし、割込みジョブを実行可能とする。このとき、ジョブID5のような中断ジョブの再実行については、
図9の処理では、プログラムを最初から実行することを想定した。この場合は、ID5のジョブ実行結果を一部破棄することとなり、処理に無駄が生じる。
【0059】
図16は、処理ステータスおよびワークフォルダパスの項目が追加されたジョブ管理テーブル16J(7)を示す。ジョブ管理テーブル16J(7)は、項目として、さらに、処理ステータス、ワークフォルダを有する。ワークフォルダとは、各サーバが、中断するジョブの中断時の処理ステータスを格納する共有フォルダである。処理ステータス、ワークフォルダパスについては、優先度管理部11が、
図9のステップS219のジョブ中断時に、中断ジョブの存在するサーバから取得する。処理ステータスとは、中断時点での中断ジョブの処理結果の状態である。ワークフォルダパスとは、中断時点での中断ジョブの処理結果の記憶領域を示す位置情報である。中断ジョブの存在するサーバは、中断ジョブの中断時点での処理結果を、ワークファイルとして共有フォルダに格納する。優先度管理部11は、中断時点での中断ジョブの処理結果の状態を処理ステータスとして、中断時点での中断ジョブの処理結果の記憶領域をワークフォルダパスとして、知っている。
【0060】
図17は、ステータス情報17として、処理ステータスと、そのステータスの示す処理概要との対応を示している。処理ステータスについて、「1」は初期化、「2」は画像処理1、「3」は画像処理2、「4」は画像値計算1、「5」は画像値計算2、「6」は画像値計算2である。ジョブ管理テーブル16J(7)において、処理ステータスi(i=1,2,3,4)は、ステータス情報17の処理ステータスiに対応する「処理」が完了していることを示す。
【0061】
図18は、一度中断した処理を中断時から実施可能に対して、優先度管理部11によって実行を再開する処理のフローチャートである。
【0062】
ジョブは起動するとステップS301から処理を進める。
図9において中断から再び実行されたジョブID5を想定する。中断されたジョブID5を実行するサーバに決まったジョブ実行サーバ1は、優先度管理部11から、処理ステータス=2、ワークフォルダ=「共通¥画像5」を受け取る。ジョブ実行サーバ1では、中断されたジョブを途中から再実行するので、ジョブID5のジョブは、ワークフォルダ=「共通¥画像5」に保持されている、途中までの処理結果のデータを読込み、処理を開始する。ジョブ実行サーバ1は、そのステータスの処理が終了する毎に、ワークフォルダに、処理結果を保持する。
【0063】
中断したジョブID5を再実行する場合の動作を説明する。ジョブ(ジョブ実行サーバ)1は、引数として処理ステータス、ワークフォルダパスを優先度管理部11から受取り、ジョブに処理を開始させる。受け取るタイミングは、例えば
図9のステップS214よりも以前のステップ、例えばステップS211からステップS213のいずれかである。いま、処理ステータス=2、ワークフォルダ=「共通¥画像5」である。
(1)ステップS301で、ジョブID5のジョブは、処理ステータスを+1インクリメントし、処理ステータス=3とする。
(2)ステップS302で、ジョブID5のジョブは、優先度管理部11から受信したワークフォルダ=「共通¥画像5」に基づき、ワークフォルダから途中まで処理結果であるワークファイルを取得する。ワークファイルはジョブID5のジョブの、途中までの処理結果を保存している。
(3)ステップS303で、ジョブID5のジョブは、処理ステータスが6より大きな値となるまでループで処理を実行する。
(4)ステップS304で、ジョブID5のジョブは処理ステータスに応じた処理を実行する。ここでは
図17よりジョブは「画像処理2」を実行する。
(5)次にステップS305で、ジョブID5のジョブは処理結果を、ワークフォルダに保存する。
(6)更にステップS306で、ジョブID5のジョブは処理ステータスを更新する。ジョブは処理ステータスを更新した際には、更新した処理ステータスの情報を、優先度管理部11に送信する。
(7)ステップS307で、優先度管理部11は、ジョブ管理テーブル16J(7)の処理ステータスを更新する。
(8)以下、ステップS308からステップS303と進み、処理ステータスが6より大きくなるまで繰り返し、処理ステータスが7になるとループを抜けて終了する。
【0064】
以上のように、中断優先度ジョブのジョブID5のジョブは、実行を中断する場合に、中断時における処理途中の処理結果を、各サーバの共有する記憶領域(共有フォルダ)に格納する。また、このジョブID5のジョブは、処理結果の処理状態(処理ステータス)および処理結果の存在する記憶領域における位置情報(ワークフォルダパス)を優先度管理部11に送信する。
優先度管理部11は、実行が中断され、かつ、中断優先度から実行中断が認められていない優先度へ変更された中断優先度ジョブ(ジョブID5のジョブ)を再び実行するときに、中断優先度ジョブを再び実行するサーバを複数のサーバの中から決定する。
優先度管理部11は、決定したサーバ(ジョブ実行サーバ1)に中断優先度ジョブの処理状態および位置情報を送信し、決定したサーバに中断優先度ジョブを再び実行させる。
【0065】
以上により、中断したジョブの再実行時に、前回処理していた結果を保持しておき、再開時には前回保持した内容から再開するので、途中までの処理を無駄に破棄することがなくなり、より効率的な処理が可能となる。
【0066】
(ジョブの実行順の入れ替え)
優先度管理部11は、中断優先度を持つ複数の実行予定ジョブがある場合に、複数のサーバの中に実行に必要なリソース量を持つサーバが存在する実行予定ジョブを、実行に必要なリソース量を持つサーバに実行させる。この処理により、ジョブの実行順の入れ替えを可能とする。具体的には以下のとおりである。
【0067】
図19は、ジョブの実行順が入れ替わる場合のジョブ管理テーブル16J(8)を示す。
図19のジョブ管理テーブル16J(8)では、未実行のジョブは、ID8とID9の2つである。
優先度管理部11は、ジョブID8およびID9のジョブの情報を、ジョブ管理テーブル16J(7)から受け取る。優先度管理部11は、受け取ったジョブのファイルサイズから、使用メモリ容量を推測する。
図20は、リソース管理テーブル16R(4)を示す。優先度管理部11は、
図20のリソース管理テーブル16R(4)から、メモリ空き容量を取得する。ジョブの実行順序は、優先度を加味した投入順であり、優先度管理部11はジョブID8からジョブ実行を試みる。この場合、ジョブID8が使用メモリ7GB、ジョブID9が使用メモリ5GBである。
図20のリソース管理テーブル16R(4)からは、メモリ空き容量の最大は、ジョブ実行サーバ3の6.1GBである。そのため、ジョブID8はリソース不足で実行できない。そこで優先度管理部11はジョブID9の実行を試みる。ジョブの優先度はジョブID8およびジョブID9共に低で同レベルである。ジョブID9は実行サーバ3のメモリ空き容量内で実行可能である。このため、優先度管理部11はジョブID9を先に実行する。優先度管理部11は、ジョブ実行順を入替えたのち、スキップしたジョブID8の優先度を低から中に変更する。これによって、スキップしたジョブが実行されないことを防ぐ。その結果を
図21,
図22に示す。
図21は、ジョブ管理テーブル16J(9)である。
図22は、リソース管理テーブル16R(5)である。
これにより同一優先度のジョブの実行順を入れ替えることによって効率的に処理が可能となる。
【0068】
以上のように優先度管理部11は、中断優先度を持つ複数の実行予定ジョブ(ジョブID8、ジョブID9)がある場合に、複数のサーバの中に実行に必要なリソース量を持つサーバが存在する実行予定ジョブを、実行に必要なリソース量を持つサーバに実行させる。
【0069】
***実施の形態1の効果***
以上に説明した実施の形態1によれば、以下の効果を得ることができる。
(1)複数サーバで複数ジョブを実行する環境において、優先度高の割込みジョブを実行しようとする際、リソース空き具合を見て、効率的に割込みジョブを実行できる。
つまり、優先度管理部11は、優先度低のジョブを中断することで割込みジョブのメモリ空き容量を確保する。よって、割込みジョブ実行のためのメモリ空き容量が不足する場合でも、効率的に割込みジョブを実行できる。
(2)優先度管理部11は、実行を中断した優先度低ジョブの再実行時に、中断時のステータスを基準にジョブを再実行させる。よって、中断時以前の処理が無駄にならない。
(3)優先度管理部11は、実行を中断した優先度低ジョブのジョブは優先度を低から中に上げる。よって、中断した優先度低ジョブは、再実行時に優先度低に比べて優先的に実行される。
実施の形態1では、優先度が「中」であるジョブは中断対象としない。よって、再実行したジョブは優先度中であるので2度目の中断がされることがない。
(4)また、実施の形態1のジョブ並列実行システム9では、リソースが許す限りジョブを複数起動できるために、並列ジョブ上限数を固定する必要がなく、効率的な並列処理が可能となる。
(5)優先度管理部11は、同一優先度ジョブの順序の入れ替えを行うので、同一優先度のジョブを迅速に処理できる。
【0070】
(ハードウェア構成の補足)
図23は、ジョブ実行制御装置10のハードウェア構成を示す。ジョブ実行制御装置10は、コンピュータである。ジョブ実行制御装置10は、プロセッサ110を備える。ジョブ実行制御装置10は、ハードウェアとして、プロセッサ110、主記憶装置120、補助記憶装置130、入力インタフェース140、出力インタフェース150、通信インタフェース160を備えている。プロセッサ110は、信号線170を介して、他のハードウェアと接続され、他のハードウェアを制御する。
【0071】
ジョブ実行制御装置10は、優先度管理部11を備える。優先度管理部11の機能は、ジョブ実行制御プログラム131により実現される。
【0072】
プロセッサ110は、ジョブ実行制御プログラム131を実行する装置である。プロセッサ110がジョブ実行制御プログラム131を実行することで、優先度管理部11の機能が実現される。プロセッサ110は、演算処理を行うIC(Integrated Circuit)である。
【0073】
主記憶装置120の具体例は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。主記憶装置120は、プロセッサ110の演算結果を保持する。
【0074】
補助記憶装置130は、データを不揮発的に保管する記憶装置である。補助記憶装置130の具体例は、HDD(Hard Disk Drive)である。補助記憶装置130は、可搬記録媒体であってもよい。補助記憶装置130は、ジョブ実行制御プログラム131を記憶している。補助記憶装置130は、ジョブ/リソースDB16を実現する。
【0075】
入力IF140は、各装置からデータが入力されるポートである。出力IF150は、各種機器が接続される。出力IF150は、各種機器にプロセッサ110によってデータが出力されるポートである。通信IF160は、プロセッサが他の装置と通信するための通信ポートである。通信IF160は、ネットワークに接続する。
【0076】
プロセッサ110は補助記憶装置130からジョブ実行制御プログラム131を主記憶装置120にロードする。プロセッサ110は、ロードされたジョブ実行制御プログラム131を主記憶装置120から読み込んで実行する。
【0077】
ジョブ実行制御プログラム131は、優先度管理部11の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させるプログラムである。
【0078】
また、ジョブ実行制御方法は、コンピュータであるジョブ実行制御装置10がジョブ実行制御プログラム131を実行することにより行われる方法である。ジョブ実行制御プログラム131は、コンピュータ読み取り可能な記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【符号の説明】
【0079】
8 ネットワーク、9 ジョブ並列実行システム、10 ジョブ実行制御装置、11 優先度管理部、16 ジョブ/リソースDB、16J ジョブ管理テーブル、16R リソース管理テーブル、17 ステータス情報、20 データ登録フォルダ、21 優先度低フォルダ、22 優先度高フォルダ、110 プロセッサ、120 主記憶装置、130 補助記憶装置、131 ジョブ実行制御プログラム、140 入力インタフェース、150 出力インタフェース、160 通信インタフェース、170 信号線。