IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7548003実行スケジューリング決定方法及び実行スケジューリング決定プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-02
(45)【発行日】2024-09-10
(54)【発明の名称】実行スケジューリング決定方法及び実行スケジューリング決定プログラム
(51)【国際特許分類】
   G06F 9/48 20060101AFI20240903BHJP
【FI】
G06F9/48 300Z
【請求項の数】 4
(21)【出願番号】P 2020217001
(22)【出願日】2020-12-25
(65)【公開番号】P2022102333
(43)【公開日】2022-07-07
【審査請求日】2023-10-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】宿谷 琴子
(72)【発明者】
【氏名】土肥 実久
(72)【発明者】
【氏名】飯倉 二美
(72)【発明者】
【氏名】和田 裕二
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2006-065566(JP,A)
【文献】特表2015-530656(JP,A)
【文献】特開2020-047137(JP,A)
【文献】特開2012-252422(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
実行中のジョブ及び、キューイングされているジョブが、設定されているタイムアウト条件を満たさない場合に、前記実行中のジョブを中止して再スケジューリングを実行する場合と、前記再スケジューリングを実行しない場合との処理可能なジョブ数を算出し、
前記再スケジューリングを実行する場合の処理可能なジョブ数の方が多いと判定された場合に、当該再スケジューリングを実行する
処理をコンピュータが実行することを特徴とする実行スケジューリング決定方法。
【請求項2】
ジョブ開始時刻がタイムアウト条件を満たす限界時刻に到達したジョブを優先実行する再スケジューリングを実行する場合と、前記限界時刻に到達したジョブを中止する再スケジューリングを実行する場合との処理可能なジョブ数を算出し、
前記限界時刻に到達したジョブを中止する再スケジューリングを実行する場合のジョブ数に比較して、前記限界時刻に到達したジョブを優先実行する前記再スケジューリングを実行する場合の処理可能なジョブ数の方が多いと判定された場合に、前記限界時刻に到達したジョブを優先実行する当該再スケジューリングを実行する
処理を実行することを特徴とする請求項1に記載の実行スケジューリング決定方法。
【請求項3】
新規ジョブを含む実行順序の再スケジューリングを実行する場合と、前記再スケジューリングを実行しない場合との処理可能なジョブ数を算出し、
前記再スケジューリングを実行しない場合のジョブ数に比較して、前記新規ジョブを含む実行順序の再スケジューリングを実行する場合の処理可能なジョブ数の方が多いと判定された場合に、当該新規ジョブを含む実行順序の再スケジューリングを実行する
処理を実行することを特徴とする請求項1又は2に記載の実行スケジューリング決定方法。
【請求項4】
実行中のジョブ及び、キューイングされているジョブが、設定されているタイムアウト条件を満たさない場合に、実行中のジョブを中止して再スケジューリングを実行する場合と、前記再スケジューリングを実行しない場合との処理可能なジョブ数を算出し、
前記再スケジューリングを実行する場合の処理可能なジョブ数の方が多いと判定された場合に、当該再スケジューリングを実行する
処理をコンピュータに実行させることを特徴とする実行スケジューリング決定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、実行スケジューリング決定方法及び実行スケジューリング決定プログラムに関する。
【背景技術】
【0002】
近年、例えば、画像処理やAI(Artificial Inteligence)等の計算処理に使用される、FPGA(Field Programmable Gate Array)が知られている。FPGAは、ロジック回路を内蔵し、専用のハードウェア言語で書かれたファームウェアを書き込むことでロジック回路を何度も書き換えられるデバイスである。FPGAは、計算実行を中断した場合、そこまでの実行結果を捨てることになるため、途中から計算実行を再開できない仕組みとなっている。
【0003】
しかも、FPGAでは、ファームウェアの書き込みに時間がかかる。FPGA毎に異なるアプリを接続し、他のアプリからファームウェアを書き換えできないようにしている。従って、アプリの種別に応じてFPGAの個数が増えることになる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開平8-55036号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、FPGAは高価なデバイスであるため、FPGAの個数を削減することが求められている。そこで、1個のFPGAで異なる複数のアプリを処理できるFPGAが求められている。更に、単一のFPGAで異なる複数のアプリを処理する場合でも、各アプリの実行要求(ジョブ)を効率よく実行することで、できるだけ多くのジョブを処理できるスケジューリング方法が求められている。
【0006】
1つの側面では、できるだけ多くのジョブを処理できる実行スケジューリング決定方法及び実行スケジューリング決定プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
1つの側面の実行スケジューリング決定方法では、実行中のジョブ及び、キューイングされているジョブが、設定されているタイムアウト条件を満たさない場合に、前記実行中のジョブを中止して再スケジューリングを実行する場合と、前記再スケジューリングを実行しない場合との処理可能なジョブ数を算出する処理を実行する。更に、方法としては、前記再スケジューリングを実行する場合の処理可能なジョブ数の方が多いと判定された場合に、当該再スケジューリングを実行する処理を実行する。
【発明の効果】
【0008】
1つの側面によれば、できるだけ多くのジョブを処理できる。
【図面の簡単な説明】
【0009】
図1図1は、本実施例のコンピュータの一例を示す説明図である。
図2図2は、CPU内の機能構成の一例を示す説明図である。
図3図3は、ジョブに使用する用語の定義を示す説明図である。
図4図4は、ジョブテーブルの一例を示す説明図である。
図5図5は、アプリ情報テーブルの一例を示す説明図である。
図6図6は、実行順序リストの一例を示す説明図である。
図7A図7Aは、再スケジューリング実行時に使用するジョブテーブル及びアプリ情報テーブルの一例を示す説明図である。
図7B図7Bは、再スケジューリング実行時(基本ロジック)の実行順序の一例を示す説明図である。
図7C図7Cは、ジョブC-1及びC-2のタイムアウト判断時の実行順序の一例を示す説明図である。
図7D図7Dは、ジョブA-1中止時の実行順序の一例を示す説明図である。
図8図8は、キュー管理処理に関わるCPUの処理動作の一例を示すフローチャートである。
図9図9は、実行処理に関わるCPUの処理動作の一例を示すフローチャートである。
図10図10は、キューイング処理に関わるCPUの処理動作の一例を示すフローチャートである。
図11図11は、タイムアウト調整処理に関わるCPUの処理動作の一例を示すフローチャートである。
図12図12は、限界時刻処理に関わるCPUの処理動作の一例を示すフローチャートである。
図13図13は、終了予定時刻処理に関わるCPUの処理動作の一例を示すフローチャートである。
図14図14は、新規ジョブ投入処理に関わるCPUの処理動作の一例を示すフローチャートである。
図15図15は、実行スケジューリング決定プログラムを実行するコンピュータの一例を示すブロック図である。
図16図16は、比較例の再スケジューリング方法の一例を示す説明図である。
図17図17は、比較例の実行順序の一例を示す説明図である。
図18図18は、比較例の再スケジューリング実行時の実行順序の一例を示す説明図である。
図19図19は、比較例の再スケジューリング実行時の実行順序の課題の一例を示す説明図である。
【発明を実施するための形態】
【0010】
以下、図面に基づいて、本願の開示する実行スケジューリング決定方法等の実施例を詳細に説明する。尚、各実施例により、開示技術が限定されるものではない。また、以下に示す各実施例は、矛盾を起こさない範囲で適宜組み合わせても良い。
【比較例】
【0011】
先ず、本願の開示する実行スケジューリング決定方法を説明する前に比較例の再スケジューリング方法の一例について説明する。図16は、比較例の再スケジューリング方法の一例を示す説明図である。図16に示すFPGA203は、複数種類のアプリ201でファームウェア202を書き換え可能にし、アプリ201毎にファームウェア202をセットアップし、セットアップ後にアプリ201のジョブを実行する。FPGA203は、アプリ201Aの実行要求(ジョブA-1)を検出した場合、アプリ201Aに対応するファームウェア202Aをセットアップする。FPGA203は、ファームウェア202Aをセットアップした後、ジョブA-1を実行することになる。また、FPGA203は、アプリ201Bの実行要求(ジョブB-1)を検出した場合、アプリ201Bに対応するファームウェア202Bをセットアップする。FPGA203は、ファームウェア202Bをセットアップした後、ジョブB-1を実行することになる。また、FPGA203は、アプリ201Cの実行要求(ジョブC-1)を検出した場合、アプリ201Cに対応するファームウェア202Cをセットアップする。FPGA203は、ファームウェア202Cをセットアップした後、ジョブC-1を実行することになる。
【0012】
しかしながら、FPGA203では、アプリ201の実行要求(ジョブ)がどのタイミングで到来するのかが認識できない。図17は、比較例の実行順序の一例を示す説明図である。そこで、FPGA203に、アプリ201の実行要求として、例えば、ジョブA-1、ジョブB-1、ジョブC-1及びジョブA-2の順に投入された場合を想定する。
【0013】
FPGA203は、ジョブA-1の実行中にアプリ201BからジョブB-1が投入されると、ジョブB-1の実行要求をキューに蓄積する。更に、FPGA203は、ジョブA-1の実行中にアプリ201CからのジョブC-1及び、アプリ201AからのジョブA-2が投入されると、ジョブC-1及びジョブA-2の実行要求をキューに蓄積する。そして、FPGA203は、キューに蓄積中のジョブをジョブA-1→B-1→C-1→A-2の順に蓄積し、蓄積中のジョブを順次実行することになる。
【0014】
図18は、比較例の再スケジューリング実行時の実行順序の一例を示す説明図である。しかしながら、FPGA203は、同一種類のアプリ201のジョブを連続して実行することでジョブ毎の重複するセットアップ時間を削減できる。つまり、FPGA203は、同一種類のアプリ201のジョブが連続するようにキューに蓄積中のジョブの実行順序を並び替える。例えば、FPGA203は、同一種類のアプリ201Aのジョブを連続実行するために、蓄積中のジョブA-1→B-1→C-1→A-2を、ジョブA-1→A-2→B-1→C-1の実行順序に並び替える。その結果、FPGA203は、ジョブA-1のセットアップでジョブA-2のセットアップが不要になるため、ジョブA-2のセットアップ時間を削減し、ジョブを効率よく実現できる。
【0015】
図19は、比較例の再スケジューリング実行時の実行順序の課題の一例を示す説明図である。しかしながら、FPGA203は、同一種類のアプリ201のジョブが連続するようにジョブの実行順序を並び替えると、他の種類のアプリ201のジョブの実行タイミングが遅れることになる。FPGA203は、例えば、ジョブA-1→B-1→C-1→A-2→A-3をジョブA-1→A-2→A-3→B-1→C-1に並び替えると、各ジョブにはタイムアウト時間があるため、実行タイミングの遅延によって各ジョブがタイムアウトするおそれがある。しかも、FPGA203は、実行中のジョブを中断した場合、実行中のジョブの途中結果を廃棄することになる。その結果、それまでのジョブの実行時間が無駄となる。そこで、ジョブスループットの向上とジョブのタイムアウト時間の確保とはトレードオフの関係にある。
【0016】
FPGA203では、ジョブの処理が中断できないため、処理可能なジョブ数が最大になるのであれば、実行中のジョブを中止してでも、実行順序の再スケジューリングを実行した方がよい場合がある。しかも、FPGA203は、アプリ毎に、ファームウェアのセットアップに時間を要することから、同一アプリのジョブを一つのジョブ群にまとめて連続するようにスケジューリングすることが望ましい。そこで、同一アプリのジョブを連続にして他のジョブの遅延が発生した場合でも、実行中のジョブを中止して当該ジョブが含まれるジョブ群の他のジョブの実行順序を後回しにした方が、全体として処理可能なジョブ数が増えることがある。
【0017】
そこで、各ジョブのタイムアウト時間を考慮しながら、単位時間当たりのジョブ数をできるだけ増やし、同一種のアプリのジョブを連続実行してジョブの実行スループットの向上を図る本実施例の再スケジューリング実行方法が求められている。
【実施例
【0018】
図1は、本実施例のコンピュータ1の一例を示す説明図である。図1に示すコンピュータ1は、コンテナ2と、FPGA3と、CPU4と、メモリ5とを有する。コンテナ2は、複数種類のアプリを実行する仮想マシンである。FPGA3は、コンテナ2内のアプリの実行要求であるジョブを実行するデバイスである。CPU4は、コンピュータ1全体を制御する。メモリ5は、各種情報を記憶する。メモリ5は、後述する、ジョブテーブル11と、アプリ情報テーブル12と、実行順序リスト13とを有する。
【0019】
CPU4は、コンテナ2の実行環境である仮想マシンを提供すると共に、コンテナ2の投入ジョブに対応したアプリ毎のファームウェアをFPGA3内にセットアップする。CPU4は、FPGA3内のファームウェアのセットアップ後に投入ジョブをFPGA3に実行させる。また、CPU4は、機能として、キュー管理部4Aと、実行部4Bとを有する。
【0020】
図2は、CPU4内の機能構成の一例を示す説明図である。図2に示すCPU4内のキュー管理部4Aは、実行中のジョブの遅延により、実行中のジョブ及び、キューイングされているジョブが、設定されているタイムアウト条件を満たさないと判定された場合に、各ジョブの再スケジューリングを実行する。更に、キュー管理部4Aは、実行中のジョブを中止して再スケジューリングを実行する場合の処理可能なジョブ数と、再スケジューリングを実行しない場合の処理可能なジョブ数とを算出する。実行部4Bは、実行中ジョブを中止して再スケジューリングを実行する場合のジョブ数の方が多いと判定された場合に、当該再スケジューリングを実行する。
【0021】
図2に示すCPU4内のキュー管理部4Aは、ジョブ受付部21と、キューイング部22と、タイムアウト調整部23とを有する。ジョブ受付部21は、コンテナ2内のアプリから発行されたジョブを受け付ける。キューイング部22は、ジョブ受付部21にて受け付けられたジョブを実行順序リスト13に蓄積する。更に、キューイング部22は、受け付けられたジョブ毎のジョブ情報をジョブテーブル11に登録する。タイムアウト調整部23は、実行中のジョブの遅延により、実行中のジョブ及び、キューイングされているジョブが、設定されているタイムアウト条件を満たしたか否かを判定する。タイムアウト調整部23は、設定されているタイムアウト条件を満たさないと判定された場合に、実行中のジョブを中止して再スケジューリングを実行する場合の処理可能なジョブ数と、再スケジューリングを実行しない場合の処理可能なジョブ数とを算出する。更に、タイムアウト調整部23は、再スケジューリングを実行する場合のジョブ数と、再スケジューリングを実行しない場合のジョブ数とを比較し、再スケジューリングを実行する場合のジョブ数の方が多いか否かを判定する。
【0022】
CPU4内の実行部4Bは、コンテナ制御部31と、FPGA制御部32と、時間情報登録部33と、アプリ情報計算部34と、テーブル書込み部35と、中止処理部36とを有する。コンテナ制御部31は、コンテナ2を制御する。FPGA制御部32は、デバイスプラグインを使用してFPGA3を制御する。時間情報登録部33は、アプリ毎のジョブ実行時間情報を登録する。アプリ情報計算部34は、アプリ毎のジョブ実行時間情報を計算する。ジョブ実行時間情報は、例えば、アプリ情報テーブル12に登録するジョブ実行平均時間、ジョブ実行分散時間及びセットアップ平均時間等である。テーブル書込み部35は、アプリ毎のジョブ実行時間情報をアプリ情報テーブル12内に登録する。中止処理部36は、タイムアウト調整部23からのジョブ中止要求に応じて実行中のジョブを中止する処理部である。
【0023】
図3は、ジョブに使用する用語の定義を示す説明図である。図3に示すアプリ毎のジョブは、セットアップコマンドと、実行コマンドとを有する。セットアップコマンドは、FPGA3内のファームウェアに対して、ジョブのアプリに対応したロジックを設定するコマンドである。実行コマンドは、ファームウェアのセットアップ後にFPGA3にジョブを実行させるコマンドである。
【0024】
投入時刻は、CPU4内のジョブ受付部21がコンテナ2内のアプリからのジョブを受け付けた時刻である。タイムアウト時刻は、ジョブの投入時刻から当該ジョブのタイムアウト時間(タイムアウト条件)を加算した時刻に相当し、ジョブのタイムアウト時刻である。尚、タイムアウト条件は、ジョブ投入からジョブ完了までのジョブ毎に設定されたタイムアウト時間である。セットアップ時間は、ジョブに対応したアプリのファームウェアに対してセットアップ開始からセットアップ完了までに要する時間である。ジョブ実行時間は、ジョブ毎のセットアップ時間と、ジョブの実行コマンドの処理時間とを加算した時間に相当し、ジョブのセットアップ開始から実行コマンド完了までに要する時間である。限界時刻は、ジョブのタイムアウト時刻からジョブ実行平均時間を差し引いた、ジョブが実行できる限界のジョブ開始予定時刻である。
【0025】
図4は、ジョブテーブル11の一例を示す説明図である。図4に示すジョブテーブル111は、ジョブを識別するジョブ識別情報11A毎にジョブ情報を管理する。ジョブ情報は、アプリ識別情報11Bと、投入時刻11Cと、タイムアウト条件11Dと、ジョブ開始時刻11Eと、タイムアウト時刻11Fと、限界時刻11Gとを有する。アプリ識別情報11Bは、ジョブを実行するアプリを識別する情報である。投入時刻11Cは、ジョブを投入した時刻である。タイムアウト条件11Dは、ジョブのタイムアウトを満たしたと判定するための条件、例えば、タイムアウト時間である。ジョブ開始時刻11Eは、ジョブを開始する時刻である。タイムアウト時刻11Fは、ジョブの投入時刻からタイムアウト条件のタイムアウト時間を加算した時刻である。限界時刻11Gは、ジョブのタイムアウト時刻からジョブ実行平均時間を差し引いた時刻に相当し、ジョブが実行できる限界のジョブ開始予定時刻である。
【0026】
図5は、アプリ情報テーブル12の一例を示す説明図である。図5に示すアプリ情報テーブル12は、アプリ識別情報12A毎にジョブ実行時間情報を管理するテーブルである。ジョブ実行時間情報は、ジョブ実行平均時間12Bと、ジョブ実行分散時間12Cと、セットアップ平均時間12Dとを有する。ジョブ実行平均時間12Bは、アプリ毎のジョブ実行時間の累積平均時間である。ジョブ実行分散時間12Cは、アプリ毎のジョブの実行コマンドの処理にかかる1標準偏差分に相当する分散時間である。セットアップ平均時間12Dは、アプリ毎のジョブのセットアップ時間の累積平均時間である。
【0027】
図6は、実行順序リスト13の一例を示す説明図である。図6に示す実行順序リスト13は、ジョブの実行順序を管理するリストである。図6に示す実行順序リスト13は、ジョブA-1→A-2→B-1→B-2→C-1→C-2の順にジョブを実行する実行順序を管理している。
【0028】
次に本実施例のコンピュータ1の動作について説明する。コンピュータ1内のジョブ受付部21は、コンテナ2内のアプリからのジョブを受け付ける。キューイング部22は、受け付けたジョブに関するジョブ情報をジョブテーブル11内に登録する。キューイング部22は、受付順にジョブを実行順序リスト13に順次蓄積する。次に、タイムアウト調整部23は、ジョブテーブル11内のジョブ情報からジョブ毎の限界時間及びタイムアウト時刻を抽出する。タイムアウト調整部23は、抽出したジョブ毎の限界時刻、タイムアウト時刻及び現在時刻に基づき、各ジョブのタイムアウト条件を満たし、かつ、ジョブ数が多くなるように実行順序リスト13内のジョブの実行順序をソートする。タイムアウト調整部23は、実行中のジョブを中止する再スケジューリングを実行する場合のジョブ数と、再スケジューリングを実行する場合のジョブ数とを比較する。更に、タイムアウト調整部23は、実行中のジョブを中止する再スケジューリングを実行する場合のジョブ数の方が多い場合に、実行中のジョブを中止する中止要求を中止処理部36に通知する。中止処理部36は、中止要求を検出した場合、実行中のジョブの中止をFPGA制御部32に設定する。FPGA制御部32は、実行順序リスト13内の実行順序に基づき、各ジョブをFPGA3に実行させる。
【0029】
図7Aは、再スケジューリング実行時に使用するジョブテーブル11及びアプリ情報テーブル12の一例を示す説明図である。CPU4は、アプリ情報テーブル12を事前に登録しているものとする。
【0030】
図7Aに示すアプリ情報テーブル12は、アプリ識別情報12A毎に、ジョブ実行平均時間12B、ジョブ実行分散時間12C及びセットアップ平均時間12Dを管理している。また、CPU4は、アプリ識別情報毎の(ジョブ実行平均時間-セットアップ平均時間)に基づき、実行コマンドの実行コマンド平均時間を算出できる。アプリAは、ジョブ実行平均時間12Bとして10秒、ジョブ実行分散時間12Cとして2秒、セットアップ平均時間12Dとして8秒、実行コマンド平均時間として2秒とする。アプリBは、ジョブ実行平均時間12Bとして2秒、ジョブ実行分散時間12Cとして1秒、セットアップ平均時間12Dとして1秒、実行コマンド平均時間として1秒とする。アプリCは、ジョブ実行平均時間12Bとして3秒、ジョブ実行分散時間12Cとして1秒、セットアップ平均時間12Dとして2秒、実行コマンド平均時間として1秒とする。
【0031】
CPU4は、例えば、コンテナ2からジョブA-1→B-1→C-1→A-2→B-2→C-2の順序でジョブ投入を受け付けたとする。CPU4は、ジョブテーブル11内にジョブ識別情報11A毎のジョブ情報として、アプリ識別情報11B、投入時刻11C、タイムアウト条件11D、ジョブ開始時刻11E、タイムアウト時刻11F及び限界時刻11Gを登録する。尚、タイムアウト条件は、ジョブ毎に異なる。
【0032】
例えば、ジョブA-1に着目した場合、ジョブA-1は、アプリ識別情報11BとしてアプリA、投入時刻11Cとして14時18分00秒、タイムアウト条件11Dとして30秒をジョブテーブル11内に登録する。また、ジョブ開始時刻11Eとして14時18分01秒、タイムアウト時刻11Fとして14時18分30秒(=投入時刻14時18分00秒+タイムアウト条件30秒)をジョブテーブル11内に登録する。限界時刻11Gとして14時18分20秒(=タイムアウト時刻14時18分30秒-ジョブ実行平均時間10秒)をジョブテーブル11内に登録する。
【0033】
また、例えば、ジョブB-1に着目した場合、ジョブB-1は、アプリ識別情報11BとしてアプリB、投入時刻11Cとして14時18分02秒、タイムアウト条件11Dとして15秒をジョブテーブル11内に登録する。ジョブ開始時刻11Eとしては実行前のために「-」、タイムアウト時刻11Fとして14時18分17秒(=投入時刻14時18分02秒+タイムアウト条件15秒)をジョブテーブル11内に登録する。限界時刻11Gとして14時18分15秒(=タイムアウト時刻14時18分17秒-ジョブ実行平均時間2秒)をジョブテーブル11内に登録する。
【0034】
また、例えば、ジョブC-2に着目した場合、ジョブC-2は、アプリ識別情報11BとしてアプリC、投入時刻11Cとして14時18分11秒、タイムアウト条件11Dとして12秒をジョブテーブル11内に登録する。ジョブ開始時刻11Eとしては実行前のために「-」、タイムアウト時刻11Fとして14時18分23秒(=投入時刻14時18分11秒+タイムアウト条件12秒)をジョブテーブル11内に登録する。限界時刻11Gとして14時18分20秒(=タイムアウト時刻14時18分23秒-ジョブ実行平均時間3秒)をジョブテーブル11内に登録する。
【0035】
図7Bは、再スケジューリング実行時(基本ロジック)の実行順序の一例を示す説明図である。CPU4は、ジョブA-1→B-1→C-1→A-2→B-2→C-2の実行順序を、投入順序が早く、かつ、同一アプリが連続する基本ロジックで、ジョブA-1→A-2→B-1→B-2→C-1→C-2の実行順序に並び替える再スケジューリングを実行する。ジョブA-1及びA-2のジョブ実行時間は、ジョブA-1のセットアップ平均時間(8秒)+ジョブA-1の実行コマンド平均時間(2秒)+ジョブA-2の実行コマンド平均時間(2秒)で12秒である。ジョブB-1及びB-2のジョブ実行時間は、ジョブB-1のセットアップ平均時間(1秒)+ジョブB-1の実行コマンド平均時間(1秒)+ジョブB-2の実行コマンド平均時間(1秒)で3秒である。ジョブC-1及びC-2のジョブ実行時間は、ジョブC-1のセットアップ平均時間(2秒)+ジョブC-1の実行コマンド平均時間(1秒)+ジョブC-2の実行コマンド平均時間(1秒)で3秒である。
【0036】
先ず、その基本ロジックの判断方法について説明する。ジョブA-1のジョブ終了予定時刻は、(ジョブ開始時刻14時18分01秒+ジョブ実行平均時間10秒)=14時18分11秒となる。タイムアウト調整部23は、ジョブA-1のジョブ終了予定時刻が、ジョブA-1のタイムアウト時刻(14時18分30秒)前となるため、ジョブA-1のタイムアウト条件を満たしていると判断できる。
【0037】
ジョブA-1のジョブ終了予定時刻はジョブA-2のジョブ開始時刻となる。タイムアウト調整部23は、ジョブA-2のジョブ開始時刻14時18分11秒がジョブA-2の限界時刻14時18分21秒よりも早いと判断する。ジョブA-2のジョブ終了予定時刻は、(ジョブ開始時刻14時18分11秒+実行コマンド平均時間2秒)=14時18分13秒となる。タイムアウト調整部23は、ジョブA-2のジョブ終了予定時刻が、ジョブA-2のタイムアウト時刻(14時18分31秒)前となるため、ジョブA-2のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、ジョブA-1→A-2の実行順序がタイムアウト条件を満たしていると判断できる。
【0038】
更に、ジョブA-2のジョブ終了予定時刻はジョブB-1のジョブ開始時刻となる。タイムアウト調整部23は、ジョブB-1のジョブ開始時刻14時18分13秒がジョブB-1の限界時刻14時18分15秒よりも早いと判断する。ジョブB-1のジョブ終了予定時刻は、(ジョブ開始時刻14時18分13秒+ジョブ実行平均時間2秒)=14時18分15秒となる。タイムアウト調整部23は、ジョブB-1のジョブ終了予定時刻が、ジョブB-1のタイムアウト時刻(14時18分17秒)前となるため、ジョブB-1のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、ジョブA-1→A-2→B-1の実行順序がタイムアウト条件を満たしていると判断できる。
【0039】
更に、ジョブB-1のジョブ終了予定時刻はジョブB-2のジョブ開始時刻となる。タイムアウト調整部23は、ジョブB-2のジョブ開始時刻14時18分15秒がジョブB-2の限界時刻14時18分17秒よりも早いと判断する。ジョブB-2のジョブ終了予定時刻は、(ジョブ開始時刻14時18分15秒+実行コマンド平均時間1秒)=14時18分16秒となる。タイムアウト調整部23は、ジョブB-2のジョブ終了予定時刻が、ジョブB-2のタイムアウト時刻(14時18分19秒)前となるため、ジョブB-2のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、ジョブA-1→A-2→B-1→B-2の実行順序がタイムアウト条件を満たしていると判断できる。
【0040】
更に、ジョブB-2のジョブ終了予定時刻はジョブC-1のジョブ開始時刻となる。タイムアウト調整部23は、ジョブC-1のジョブ開始時刻14時18分16秒がジョブC-1の限界時刻14時18分17秒よりも早いと判断する。ジョブC-1のジョブ終了予定時刻は、(ジョブ開始時刻14時18分16秒+ジョブ実行平均時間3秒)=14時18分19秒となる。タイムアウト調整部23は、ジョブC-1のジョブ終了予定時刻が、ジョブC-1のタイムアウト時刻(14時18分20秒)前となるため、ジョブC-1のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、ジョブA-1→A-2→B-1→B-2→C-1の実行順序がタイムアウト条件を満たしていると判断できる。
【0041】
更に、ジョブC-2のジョブ終了予定時刻はジョブC-2のジョブ開始時刻となる。タイムアウト調整部23は、ジョブC-2のジョブ開始時刻14時18分19秒がジョブC-2の限界時刻14時18分20秒よりも早いと判断する。ジョブC-2のジョブ終了予定時刻は、(ジョブ開始時刻14時18分19秒+実行コマンド平均時間1秒)=14時18分20秒となる。タイムアウト調整部23は、ジョブC-2のジョブ終了予定時刻が、ジョブC-2のタイムアウト時刻(14時18分23秒)前となるため、ジョブC-2のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、タイムアウト条件を満たした、ジョブA-1→A-2→B-1→B-2→C-1→C-2の実行順序を実行順序リスト13に更新することになる。
【0042】
図7Cは、ジョブC-1及びC-2のタイムアウト判断時の実行順序の一例を示す説明図である。CPU4は、ジョブA-1→A-2→B-1→B-2→C-1→C-2の実行順序でジョブA-1の実行中に、ジョブA-1のジョブ実行時間がジョブ実行平均時間内に終了しない場合に1標準偏差分延伸と仮定する。尚、1標準偏差分とは、アプリ毎に異なる、例えば、ジョブ実行分散時間分である。CPU4は、ジョブA-1の実行を継続した再スケジューリングを実行した場合の処理可能なジョブ数を計算することになる。
【0043】
その計算ロジックの内容について説明する。例えば、ジョブA-1のジョブ終了予定時刻は、(ジョブ開始時刻14時18分01秒+ジョブ実行平均時間10秒+ジョブ実行分散時間2秒)=14時18分13秒となる。タイムアウト調整部23は、ジョブA-1のジョブ終了予定時刻が、ジョブA-1のタイムアウト時刻(14時18分30秒)前となるため、ジョブA-1のタイムアウト条件を満たしていると判断できる。
【0044】
ジョブA-1のジョブ終了予定時刻はジョブA-2のジョブ開始時刻となる。タイムアウト調整部23は、ジョブA-2のジョブ開始時刻14時18分13秒がジョブA-2の限界時刻14時18分23秒よりも早いと判断する。ジョブA-2のジョブ終了予定時刻は、(ジョブ開始時刻14時18分13秒+実行コマンド平均時間2秒)=14時18分15秒となる。タイムアウト調整部23は、ジョブA-2のジョブ終了予定時刻が、ジョブA-2のタイムアウト時刻(14時18分31秒)前となるため、ジョブA-2のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、ジョブA-1→A-2の実行順序がタイムアウト条件を満たしていると判断できる。
【0045】
更に、ジョブA-2のジョブ終了予定時刻はジョブB-1のジョブ開始時刻となる。タイムアウト調整部23は、ジョブB-1のジョブ開始時刻14時18分15秒がジョブB-1の限界時刻14時18分15秒と同一と判断する。ジョブB-1のジョブ終了予定時刻は、(ジョブ開始時刻14時18分15秒+ジョブ実行平均時間2秒)=14時18分17秒となる。タイムアウト調整部23は、ジョブB-1のジョブ終了予定時刻が、ジョブB-1のタイムアウト時刻(14時18分17秒)前となるため、ジョブB-1のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、ジョブA-1→A-2→B-1の実行順序がタイムアウト条件を満たしていると判断できる。
【0046】
更に、ジョブB-1のジョブ終了予定時刻はジョブB-2のジョブ開始時刻となる。タイムアウト調整部23は、ジョブB-2のジョブ開始時刻14時18分17秒がジョブB-2の限界時刻14時18分17秒と同一と判断する。ジョブB-2のジョブ終了予定時刻は、(ジョブ開始時刻14時18分17秒+実行コマンド平均時間1秒)=14時18分18秒となる。タイムアウト調整部23は、ジョブB-2のジョブ終了予定時刻が、ジョブB-2のタイムアウト時刻(14時18分19秒)前となるため、ジョブB-2のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、ジョブA-1→A-2→B-1→B-2の実行順序がタイムアウト条件を満たしていると判断できる。
【0047】
更に、ジョブB-2のジョブ終了予定時刻はジョブC-1のジョブ開始時刻となる。タイムアウト調整部23は、ジョブC-1のジョブ開始時刻14時18分18秒がジョブC-1の限界時刻14時18分17秒よりも遅いと判断する。ジョブC-1のジョブ終了予定時刻は、(ジョブ開始時刻14時18分18秒+ジョブ実行平均時間3秒)=14時18分21秒となる。タイムアウト調整部23は、ジョブC-1のジョブ終了予定時刻が、ジョブC-1のタイムアウト時刻(14時18分20秒)を超過するため、ジョブC-1のタイムアウト条件を満たしていないと判断できる。その結果、ジョブA-1→A-2→B-1→B-2→C-1の実行順序が不成立となる。従って、タイムアウト調整部23は、ジョブC-1及びC-2がタイムアウト条件を満たさないため、ジョブA-1→A-2→B-1→B-2の実行順序がタイムアウト条件を満たしていると判断できる。従って、実行中のジョブを継続した場合のジョブの実行順序における処理可能なジョブ数は、「4」となる。
【0048】
図7Dは、ジョブA-1中止時の実行順序の一例を示す説明図である。CPU4は、ジョブA-1→A-2→B-1→B-2→C-1→C-2の実行順序でジョブA-1の実行中に、ジョブA-1のジョブ実行時間がジョブ実行平均時間内に終了しない場合に1標準偏差延伸と仮定する。CPU4は、実行中のジョブA-1を中止する再スケジューリングを実行した場合の処理可能なジョブ数を計算することになる。
【0049】
CPU4は、ジョブA-1→B-1→C-1→A-2→B-2→C-2の実行順序でジョブA-1の実行を中止した場合、投入順序が早く、かつ、同一アプリが連続する基本ロジックの実行順序に並び替える。CPU4は、基本ロジックの実行順序として、ジョブB-1→B-2→C-1→C-2→A-2の実行順序に並び替える再スケジューリングを実行した場合の処理可能なジョブ数を計算することになる。
【0050】
その計算ロジックの内容について説明する。ジョブA-1のジョブ終了時刻は、ジョブA-1をジョブ実行平均時間以内に中止し、遅くとも、(ジョブ開始時刻14時18分01秒+ジョブ実行平均時間10秒)=14時18分11秒となる。ジョブA-1のジョブ終了時刻はジョブB-1のジョブ開始時刻となる。タイムアウト調整部23は、ジョブB-1のジョブ開始時刻14時18分11秒がジョブB-1の限界時刻14時18分15秒よりも早いと判断する。ジョブB-1のジョブ終了予定時刻は、(ジョブ開始時刻14時18分11秒+ジョブ実行平均時間2秒)=14時18分13秒となる。タイムアウト調整部23は、ジョブB-1のジョブ終了予定時刻が、ジョブB-1のタイムアウト時刻(14時18分17秒)前となるため、ジョブB-1のタイムアウト条件を満たしていると判断できる。
【0051】
更に、ジョブB-1のジョブ終了予定時刻はジョブB-2のジョブ開始時刻となる。タイムアウト調整部23は、ジョブB-2のジョブ開始時刻14時18分13秒がジョブB-2の限界時刻14時18分17秒よりも早いと判断する。ジョブB-2のジョブ終了予定時刻は、(ジョブ開始時刻14時18分13秒+実行コマンド平均時間1秒)=14時18分14秒となる。タイムアウト調整部23は、ジョブB-2のジョブ終了予定時刻が、ジョブB-2のタイムアウト時刻(14時18分19秒)前となるため、ジョブB-2のタイムアウト条件を満たしていると判断できる。その結果、ジョブB-1→B-2の実行順序がタイムアウト条件を満たしている判断できる。
【0052】
更に、ジョブB-2のジョブ終了予定時刻はジョブC-1のジョブ開始時刻となる。タイムアウト調整部23は、ジョブC-1のジョブ開始時刻14時18分14秒がジョブC-1の限界時刻14時18分17秒よりも早いと判断する。ジョブC-1のジョブ終了予定時刻は、(ジョブ開始時刻14時18分14秒+ジョブ実行平均時間3秒)=14時18分17秒となる。タイムアウト調整部23は、ジョブC-1のジョブ終了予定時刻が、ジョブC-1のタイムアウト時刻(14時18分20秒)前となるため、ジョブC-1のタイムアウト条件を満たしていると判断できる。その結果、ジョブB-1→B-2→C-1の実行順序がタイムアウト条件を満たしている判断できる。
【0053】
更に、ジョブC-1のジョブ終了予定時刻はジョブC-2のジョブ開始時刻となる。タイムアウト調整部23は、ジョブC-2のジョブ開始時刻14時18分17秒がジョブC-2の限界時刻14時18分20秒よりも早いと判断する。ジョブC-2のジョブ終了予定時刻は、(ジョブ開始時刻14時18分17秒+実行コマンド平均時間1秒)=14時18分18秒となる。タイムアウト調整部23は、ジョブC-2のジョブ終了予定時刻が、ジョブC-2のタイムアウト時刻(14時18分23秒)前となるため、ジョブC-2のタイムアウト条件を満たしていると判断できる。その結果、ジョブB-1→B-2→C-1→C-2の実行順序がタイムアウト条件を満たしている判断できる。
【0054】
更に、ジョブC-2のジョブ終了予定時刻はジョブA-2のジョブ開始時刻となる。タイムアウト調整部23は、ジョブA-2のジョブ開始時刻14時18分18秒がジョブA-2の限界時刻14時18分21秒よりも早いと判断する。ジョブA-2のジョブ終了予定時刻は、(ジョブ開始時刻14時18分18秒+ジョブ実行平均時間10秒)=14時18分28秒となる。タイムアウト調整部23は、ジョブA-2のジョブ終了予定時刻が、ジョブA-2のタイムアウト時刻(14時18分31秒)前となるため、ジョブA-2のタイムアウト条件を満たしていると判断できる。その結果、タイムアウト調整部23は、タイムアウト条件を満たした、ジョブB-1→B-2→C-1→C-2→A-2の実行順序がタイムアウト条件を満たしていると判断できる。従って、実行中のジョブを中止する場合のジョブの実行順序における処理可能なジョブ数は、「5」となる。
【0055】
CPU4は、実行中のジョブA-1を中止する再スケジューリングを実行した場合の処理可能なジョブ数「5」と、実行中のジョブA-1を継続する(再スケジューリングを実行しない)場合の処理可能なジョブ数「4」とを比較する。CPU4は、比較結果に基づき、実行中のジョブA-1を中止する再スケジューリングを実行した場合のジョブ数の方が多いため、実行中のジョブA-1を中止する再スケジューリングを実行した場合の実行順序を実行順序リスト13内に更新することになる。
【0056】
図8は、キュー管理処理に関わるCPU4の処理動作の一例を示すフローチャートである。図8に示すCPU4内のキュー管理部4Aは、イベント発生を監視するイベント待機を実行する(ステップS11)。尚、ステップS11の発生イベントとしては、例えば、ジョブ投入、ジョブの限界時刻の到達及びジョブの終了予定時刻の超過である。
【0057】
キュー管理部4Aは、発生イベントがジョブ投入であるか否かを判定する(ステップS12)。キュー管理部4A内のジョブ受付部21は、発生イベントがジョブ投入の場合(ステップS12:Yes)、投入ジョブを受け付ける(ステップS13)。キュー管理部4A内のキューイング部22は、受け付けた投入ジョブに対する、図10に示すキューイング処理を実行する(ステップS14)。
【0058】
キュー管理部4A内のタイムアウト調整部23は、キューイング処理実行後に、図11に示すタイムアウト調整処理を実行する(ステップS15)。更に、タイムアウト調整部23は、ジョブテーブル11内の各ジョブの限界時刻11Gを参照して最短限界時刻を確認し(ステップS16)、発生イベントを監視すべく、ステップS11に移行する。また、タイムアウト調整部23は、発生イベントがジョブ投入でない場合(ステップS12:No)、ジョブの限界時刻の到達又はジョブの終了予定時刻の超過と判断し、図11に示すタイムアウト調整処理を実行する。
【0059】
図9は、実行処理に関わるCPU4の処理動作の一例を示すフローチャートである。図9に示すCPU4内の実行部4Bは、イベント発生を監視するイベント待機を実行する(ステップS21)。尚、ステップS21の発生イベントとしては、例えば、ジョブの中止要求、ジョブの実行終了、ジョブの投入等である。
【0060】
実行部4B内の中止処理部36は、イベント待機中に中止要求を検出したか否かを判定する(ステップS21)。実行部4Bは、中止要求を検出しなかった場合(ステップS22:No)、ジョブの実行終了又はジョブの投入と判断し、アプリ情報テーブル12及びジョブテーブル11を更新登録する(ステップS23)。
【0061】
例えば、実行部4Bは、発生イベントとして実行終了を検出した場合、ジョブテーブル11内の該当ジョブのジョブ情報を削除する。実行部4Bは、実行終了のジョブのジョブ実行時間、実行コマンド時間及びセットアップ時間に基づき、該当ジョブに対応するアプリのジョブ実行平均時間12B、ジョブ実行分散時間12C及びセットアップ平均時間12Dを算出する。実行部4Bは、算出したアプリのジョブ実行平均時間12B、ジョブ実行分散時間12C及びセットアップ平均時間12Dをジョブテーブル11内に更新する。また、実行部4Bは、発生イベントとしてジョブ投入を検出した場合、該当ジョブの投入を登録すべく、ジョブテーブル11内の該当ジョブのジョブ情報を登録する。
【0062】
実行部4Bは、ステップS23にてアプリ情報テーブル12及びジョブテーブル11を更新登録した後、実行順序リスト13内の次に実行するジョブを決定する(ステップS24)。更に、実行部4B内のFPGA制御部32は、決定したジョブをFPGA3内のファームウェア上で実行させ(ステップS25)、発生イベントを監視すべく、ステップS21に移行する。
【0063】
また、実行部4B内の中止処理部36は、中止要求を検出した場合(ステップS22:Yes)、該当ジョブを中止する(ステップS26)。更に、実行部4Bは、該当ジョブの中止に伴う情報のアプリ情報テーブル12又はジョブテーブル11を更新登録すべく、ステップS23に移行する。
【0064】
実行処理を実行するCPU4は、中止要求を検出した場合、実行中のジョブを中止する。その結果、実行中のジョブを途中で中止できる。
【0065】
図10は、キューイング処理に関わるCPU4の処理動作の一例を示すフローチャートである。図10においてCPU4内のキューイング部22は、ジョブのジョブ情報をジョブテーブル11内に登録する(ステップS31)。キューイング部22は、ジョブテーブル11内の各ジョブのアプリ識別情報を取得する(ステップS32)。キューイング部22は、ジョブテーブル11内の同一アプリ識別情報11Bのジョブが連続するように実行順序リスト13内の蓄積ジョブの実行順序を基本ロジックでソートする(ステップS33)。基本ロジックとは、同一アプリのセットアップ時間の重複を回避しながら、投入順序に応じてジョブの実行順序を並び替える、図7Bに示すロジックである。キューイング部22は、基本ロジックでソート後の実行順序で実行順序リスト13を更新し(ステップS34)、図10に示す処理動作を終了する。
【0066】
キューイング処理を実行するCPU4は、投入順序に蓄積された蓄積ジョブを同一アプリのジョブが連続するように基本ロジックで実行順序を並び替える。その結果、同一アプリ内で重複するセットアップ時間を削減できるため、各ジョブの実行効率の向上を図ることができる。
【0067】
図11は、タイムアウト調整処理に関わるCPU4の処理動作の一例を示すフローチャートである。図11においてCPU4内のタイムアウト調整部23は、ジョブテーブル11からジョブ毎のジョブ情報を取得する(ステップS41)。タイムアウト調整部23は、取得したジョブ情報から、ジョブ毎の投入時刻11C及びタイムアウト条件11Dに基づきジョブ毎の限界時刻11Gを算出する(ステップS42)。尚、タイムアウト調整部23は、ジョブ毎の(投入時刻11C+タイムアウト条件11D)に基づき、ジョブ毎のタイムアウト時刻11Fを算出する。更に、タイムアウト調整部23は、ジョブ毎の(タイムアウト時刻11F-該当アプリのジョブ実行平均時間)に基づき、ジョブ毎の限界時刻11Gを算出する。
【0068】
タイムアウト調整部23は、ジョブ毎の限界時刻11Gを算出した後、ジョブ毎に、限界時刻11Gとジョブ開始時刻とを比較する(ステップS43)。尚、ジョブ開始時刻は、複数のアプリの内、同一アプリのジョブがある場合は同一のアプリ内のジョブを優先する基本ロジックとし、優先したジョブの内、投入順序が早い順に実行順序を並び替えて算出した時刻である。タイムアウト調整部23は、ジョブ開始時刻よりも限界時刻が早いジョブがあるか否かを判定する(ステップS44)。
【0069】
タイムアウト調整部23は、ジョブ開始時刻よりも限界時刻が早いジョブがある場合(ステップS44:Yes)、ジョブ開始時刻が限界時刻に到達したジョブがあるか否かを判定する(ステップS45)。タイムアウト調整部23は、ジョブ開始時刻が限界時刻に到達したジョブがある場合(ステップS45:Yes)、図12に示す限界時刻処理を実行する(ステップS46)。そして、タイムアウト調整部23は、実行順序リスト13を更新し(ステップS50)、図11に示す処理動作を終了する。
【0070】
タイムアウト調整部23は、ジョブ開始時刻が限界時刻に到達したジョブがない場合(ステップS45:No)、現在時刻が実行中ジョブの終了予定時刻を超過しているか否かを判定する(ステップS47)。タイムアウト調整部23は、現在時刻が実行中ジョブの終了予定時刻を超過している場合(ステップS47:Yes)、図13に示す終了予定時刻処理を実行し(ステップS48)、ステップS50に移行する。
【0071】
また、タイムアウト調整部23は、現在時刻が実行中ジョブの終了予定時刻を超過していない場合(ステップS47:No)、図14に示す新規ジョブ投入処理を実行し(ステップS49)、ステップS50に移行する。また、タイムアウト調整部23は、ジョブ開始時刻よりも限界時刻が早いジョブがない場合(ステップS44:No)、実行順序リスト13を更新すべく、ステップS50に移行する。
【0072】
タイムアウト調整処理を実行するCPU4は、ジョブ開始時刻より限界時刻が早いジョブがあって、ジョブ開始時刻が限界時刻に到達したジョブがある場合に、限界時刻処理を実行できる。CPU4は、ジョブ開始時刻が限界時刻に到達したジョブがなく、現在時刻が実行中ジョブの終了予定時刻を超過した場合に、終了予定時刻処理を実行できる。更に、CPU4は、ジョブ開始時刻が限界時刻に到達したジョブがなく、現在時刻が実行中ジョブの終了予定時刻を超過していない場合に、新規ジョブ投入処理を実行できる。
【0073】
図12は、限界時刻処理に関わるCPU4の処理動作の一例を示すフローチャートである。図12においてCPU4内のタイムアウト調整部23は、図11に示すステップS45にてジョブ開始時刻が限界時刻に到達したジョブがある場合に限界時刻処理を起動する。タイムアウト調整部23は、ジョブ開始時刻が限界時刻に到達したジョブを検出した場合(ステップS51)、限界時刻に到達したジョブを優先実行した場合のジョブ数と、限界時刻に到達したジョブを実行中止した場合のジョブ数とを算出する(ステップS52)。尚、限界時刻に到達したジョブを実行中止した場合とは、限界時刻を到達したジョブを中止して再スケジューリングを実行する場合に相当する。限界時刻に到達したジョブを優先実行する場合とは、限界時刻に到達したジョブを継続する再スケジューリングを実行する場合に相当する。
【0074】
タイムアウト調整部23は、優先実行した場合のジョブ数と実行中止した場合のジョブ数とを比較し、優先実行した場合のジョブ数の方が多いか否かを判定する(ステップS53)。タイムアウト調整部23は、優先実行した場合のジョブ数の方が多い場合(ステップS53:Yes)、限界時刻に到達したジョブを優先実行するようにジョブの実行順序をソートし(ステップS54)、図12に示す処理動作を終了する。図11に示すステップS50にてソート後の実行順序で実行順序リスト13を更新する。
【0075】
タイムアウト調整部23は、優先実行した場合のジョブ数の方が多くない場合(ステップS53:No)、限界時刻に到達したジョブを拒否するジョブ拒否を実行し(ステップS55)、図12に示す処理動作を終了する。図11に示すステップS50にて、ジョブ拒否後の実行順序で実行順序リスト13を更新する。
【0076】
限界時刻処理を実行するCPU4は、限界時刻に到達したジョブを検出した場合、限界時刻に到達したジョブを優先実行する場合のジョブ数と、限界時刻に到達したジョブを実行中止する場合のジョブ数とを比較する。更に、CPU4は、比較結果に基づき、限界時刻に到達したジョブを優先実行する場合のジョブ数の方が多い場合に、限界時刻に到達したジョブを優先実行する実行順序の再スケジューリングを実行する。その結果、限界時刻に到達したジョブを優先実行しながら、できるだけ多くのジョブ数を処理できる。
【0077】
CPU4は、比較結果に基づき、限界時刻に到達したジョブを優先実行する場合のジョブ数の方が多くない場合に、限界時刻に到達したジョブを拒否する。その結果、限界時刻に到達したジョブを拒否しながら、できるだけ多くのジョブ数を処理できる。
【0078】
図13は、終了予定時刻処理に関わるCPU4の処理動作の一例を示すフローチャートである。図13においてCPU4内のタイムアウト調整部23は、図11に示すステップS47にて現在時刻が実行中ジョブの終了予定時刻が超過している場合に終了予定時刻処理を起動する。タイムアウト調整部23は、実行中ジョブが1標準偏差分延伸すると仮定し、実行中ジョブを中止した場合のジョブ数と、実行中ジョブを継続した場合のジョブ数とを算出する(ステップS61)。尚、実行中ジョブを中止した場合とは、実行中ジョブを中止して再スケジューリングを実行する場合に相当し、実行中ジョブを継続した場合とは、実行中ジョブを継続する再スケジューリングを実行する場合に相当する。タイムアウト調整部23は、実行中ジョブを中止した場合のジョブ数と実行中ジョブを継続した場合のジョブ数とを比較し、実行中ジョブを中止した場合のジョブ数の方が多いか否かを判定する(ステップS62)。
【0079】
タイムアウト調整部23は、実行中ジョブを中止した場合のジョブ数の方が多い場合(ステップS62:Yes)、実行中ジョブの中止要求を実行部4B内の中止処理部36に送信し(ステップS63)、図13に示す処理動作を終了する。図11に示すステップS50にて実行中ジョブを中止した実行順序で実行順序リスト13を更新する。
【0080】
また、タイムアウト調整部23は、実行中ジョブを中止した場合のジョブ数の方が多くない場合(ステップS62:No)、実行中ジョブを継続し(ステップS64)、図13に示す処理動作を終了する。図11に示すステップS50にて実行中ジョブを継続した実行順序で実行順序リスト13を更新する。
【0081】
終了予定時刻処理を実行するCPU4は、実行中ジョブが1標準偏差分延伸すると仮定し、実行中ジョブを中止した場合のジョブ数と、実行中ジョブを継続した場合のジョブ数とを比較する。CPU4は、比較結果に基づき、実行中ジョブを中止した場合のジョブ数の方が多い場合に、実行中ジョブを中止する中止要求を中止処理部36に送信する。その結果、その結果、実行中ジョブを中止することで、できるだけ多くのジョブ数を処理できる。
【0082】
CPU4は、比較結果に基づき、実行中ジョブを中止した場合のジョブ数の方が多くない場合に、実行中ジョブを継続する。その結果、その結果、実行中ジョブを継続しながら、できるだけ多くのジョブ数を処理できる。
【0083】
図14は、新規ジョブ投入処理に関わるCPU4の処理動作の一例を示すフローチャートである。図14においてCPU4内のタイムアウト調整部23は、図11に示すステップS47にて実行中ジョブの終了予定時刻が超過していない場合に新規ジョブ投入処理を起動する。タイムアウト調整部23は、新規ジョブを含む実行順序のジョブ数と、新規ジョブを含まない実行順序のジョブ数とを算出する(ステップS71)。尚、新規ジョブを含む実行順序とは、新規ジョブを含む実行順序の再スケジューリングを実行する場合に相当し、新規ジョブを含まない実行順序とは、新規ジョブを含まない実行順序の再スケジューリングを実行する場合に相当する。タイムアウト調整部23は、新規ジョブを含む実行順序のジョブ数の方が多いか否かを判定する(ステップS72)。
【0084】
タイムアウト調整部23は、新規ジョブを含む実行順序のジョブ数の方が多い場合(ステップS72:Yes)、新規ジョブが実行できるように実行順序をソートし(ステップS73)、図14に示す処理動作を終了する。図11に示すステップS50にて、ソート後の実行順序で実行順序リスト13を更新する。
【0085】
また、タイムアウト調整部23は、新規ジョブを含む実行順序のジョブ数の方が多くない場合(ステップS72:No)、新規ジョブのジョブ拒否を実行し(ステップS74)、図14に示す処理動作を終了する。図11に示すステップS50にて、ジョブ拒否後の実行順序で実行順序リスト13を更新する。
【0086】
新規ジョブ投入処理を実行するCPU4は、新規ジョブを含む実行順序のジョブ数と、新規ジョブを含まない実行順序のジョブ数とを比較する。更に、CPU4は、比較結果に基づき、新規ジョブを含む実行順序のジョブ数の方が多い場合に、新規ジョブが実行できるように実行順序をソートする。その結果、新規ジョブを実行しながら、できるだけ多くのジョブ数を処理できる。
【0087】
CPU4は、比較結果に基づき、比較結果に基づき、新規ジョブを含む実行順序のジョブ数の方が多くない場合に、新規ジョブを拒否する。その結果、新規ジョブを拒否しながら、できるだけ多くのジョブ数を処理できる。
【0088】
本実施例のCPU4は、実行中のジョブを中止して再スケジューリングを実行する場合と、再スケジューリングを実行しない場合との処理可能なジョブ数を算出する。CPU4は、再スケジューリングを実行する場合の処理可能なジョブ数の方が多いと判定された場合に、当該再スケジューリングを実行する。その結果、実行中のジョブを中止することも含め、できるだけ多くのジョブを処理できるスケジューリングが可能となる。
【0089】
CPU4は、ジョブ開始時刻がタイムアウト条件を満たすことができる限界時刻に到達したジョブを優先実行する再スケジューリングを実行する場合と、限界時刻に到達したジョブを中止する再スケジューリングを実行する場合との処理可能なジョブ数を算出する。更に、CPU4は、限界時刻に到達したジョブを優先実行する再スケジューリングを実行する場合のジョブ数の方が多いと判定された場合に、限界時刻に到達したジョブを優先実行する当該再スケジューリングを実行する。その結果、限界時刻に到達したジョブを優先実行することも含め、できるだけ多くのジョブを処理できるスケジューリングが可能となる。
【0090】
CPU4は、新規ジョブを含む実行順序の再スケジューリングを実行する場合と、再スケジューリングを実行しない場合との処理可能なジョブ数を算出する。CPU4は、新規ジョブを含む実行順序の再スケジューリングを実行する場合の処理可能なジョブ数の方が多いと判定された場合に、当該新規ジョブを含む実行順序の再スケジューリングを実行する。その結果、新規ジョブが投入された場合に、新規ジョブを含め、できるだけ多くのジョブを処理できるスケジューリングが可能となる。
【0091】
本実施例では、基本は同一アプリのジョブを連続し、かつ、タイムアウト条件を満たすようにジョブを並び替え、必要であれば実行中のジョブを中止する。また、ジョブの実行時間は扱うデータに応じて変動するが、このような場合にも十分に対応できる。
【0092】
尚、上記実施例では、アプリ毎に異なるジョブ実行平均時間、ジョブ実行分散時間及びセットアップ平均時間を算出する場合を例示したが、アプリ毎のジョブ実行時間及びセットアップ時間が固定の場合には予め設定しても良く、適宜変更可能である。
【0093】
上記実施例では、ステップS45にてジョブ開始時刻が限界時刻に到達したジョブがあるか否かを判定する場合を例示したが、ステップS45の処理の代わりに、ジョブ終了時刻がタイムアウト時刻に到達したジョブがあるか否かを判定する処理を実行しても良い。この場合、タイムアウト時刻に到達したジョブを優先実行した場合のジョブ数とタイムアウト時刻に到達したジョブを実行中止した場合のジョブ数とを比較する。タイムアウト時刻に到達したジョブを優先実行した場合のジョブ数が多い場合に、タイムアウト時刻に到達したジョブを優先実行した場合の実行順序にソートする。また、タイムアウト時刻に到達したジョブを優先実行した場合のジョブ数が多くない場合に、タイムアウト時刻に到達したジョブを拒否しても良い。
【0094】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【0095】
更に、各装置で行われる各種処理機能は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)やFPGA(Field Programmable Gate Array)等上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、CPU等で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良い。
【0096】
各種情報を記憶する領域は、例えば、ROM(Read Only Memory)や、SDRAM(Synchronous Dynamic Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)やNVRAM(Non-Volatile Random Access Memory)等のRAM(Random Access Memory)で構成しても良い。
【0097】
ところで、本実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータ内のCPU等のプロセッサで実行させることによって実現できる。そこで、以下では、上記実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図15は、実行スケジューリング決定プログラムを実行するコンピュータ100の一例を示すブロック図である。
【0098】
図15に示す実行スケジューリング決定プログラムを実行するコンピュータ100は、操作部101と、表示部102と、通信部103と、FPGA104と、ROM105と、RAM106と、CPU107とを有する。CPU107は、ジョブをFPGA104に実行させる。
【0099】
そして、ROM105には、上記実施例と同様の機能を発揮する実行スケジューリング決定プログラムが予め記憶されている。ROM105は、実行スケジューリング決定プログラムとしてキュー管理プログラム105A及び実行プログラム105Bが記憶されている。尚、ROM105ではなく、図示せぬドライブでコンピュータ読取可能な記録媒体に実行スケジューリング決定プログラムが記録されていても良い。また、記録媒体としては、例えば、CD-ROM、DVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ等でも良い。
【0100】
そして、CPU107は、キュー管理プログラム105AをROM105から読み出し、RAM106上でキュー管理プロセス106Aとして機能する。更に、CPU107は、実行プログラム105BをROM105から読み出し、RAM106上で実行プロセス106Bとして機能する。
【0101】
CPU107は、実行中のジョブ及び、キューイングされているジョブが、設定されているタイムアウト条件を満たさない場合に、各ジョブの再スケジューリングを実行する。CPU107は、前記実行中のジョブを中止して再スケジューリングを実行する場合と、前記再スケジューリングを実行しない場合との処理可能なジョブ数を算出する。CPU107は、前記再スケジューリングを実行する場合の処理可能なジョブ数の方が多いと判定された場合に、当該再スケジューリングを実行する。その結果、できるだけ多くのジョブを処理できる。
【符号の説明】
【0102】
1 コンピュータ
2 コンテナ
3 FPGA
4 CPU
4A キュー管理部
4B 実行部
23 タイムアウト調整部
36 中止処理部
図1
図2
図3
図4
図5
図6
図7A
図7B
図7C
図7D
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19