JP6241144B2 - 制御プログラム、制御方法および制御装置 - Google Patents

制御プログラム、制御方法および制御装置 Download PDF

Info

Publication number
JP6241144B2
JP6241144B2 JP2013178785A JP2013178785A JP6241144B2 JP 6241144 B2 JP6241144 B2 JP 6241144B2 JP 2013178785 A JP2013178785 A JP 2013178785A JP 2013178785 A JP2013178785 A JP 2013178785A JP 6241144 B2 JP6241144 B2 JP 6241144B2
Authority
JP
Japan
Prior art keywords
job
jobs
management
executed
scheduler
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.)
Active
Application number
JP2013178785A
Other languages
English (en)
Other versions
JP2015049550A (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 JP2013178785A priority Critical patent/JP6241144B2/ja
Priority to US14/473,480 priority patent/US9658883B2/en
Publication of JP2015049550A publication Critical patent/JP2015049550A/ja
Application granted granted Critical
Publication of JP6241144B2 publication Critical patent/JP6241144B2/ja
Active 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

本発明は制御プログラム、制御方法および制御装置に関する。
現在、業務において繰り返し行われる定型的な作業をコンピュータが実行するジョブとして定義しておき、コンピュータを利用して作業の自動化を行うことが行われている。例えば、サーバ装置などの電子機器の管理について、電子機器の電源ON・OFF、電子機器からのデータ収集および分析、電子機器に搭載されたソフトウェアの更新などのジョブを、定期または不定期にコンピュータに実行させることがある。
コンピュータが複数のジョブを実行し得る場合、ジョブスケジューラと呼ばれるソフトウェアを用いて、これら複数のジョブの実行を集約して管理することがある。ジョブスケジューラは、複数のジョブの登録を受け付け、登録された複数のジョブが効率的に実行されるように、これら複数のジョブのスケジューリングを行う。例えば、ジョブスケジューラは、多数のジョブが同時に実行されてコンピュータのリソースが不足しないように、登録された複数のジョブの間で実行順序や実行タイミングを調整する。
例えば、システム負荷や実行多重度を考慮したコンピュータによるジョブスケジューリング方法が提案されている。このコンピュータは、新規ジョブが登録されると、現在のCPU(Central Processing Unit)負荷やディスク負荷などのシステム負荷を確認し、システム負荷が閾値を超えている場合には、新規ジョブをすぐに実行せずに待機させる。また、コンピュータは、現在並行して実行しているジョブの数(実行多重度)を確認し、実行多重度が閾値を超えている場合にも、新規ジョブをすぐに実行せずに待機させる。
特開2010−186347号公報
ところで、1つのジョブスケジューラが、コンピュータで実行され得る全てのジョブを一元的に管理できるとは限らない。例えば、セキュリティソフトウェアは、定期的にウィルスチェックを行うために独自のジョブスケジューラを備えていることがある。また、オペレーティングシステム(OS:Operating System)は、定期的に更新プログラムの有無を確認するために独自のジョブスケジューラを備えていることがある。このように、あるジョブスケジューラから見て、当該ジョブスケジューラが管理するジョブ(管理ジョブ)の他に、管理していないジョブ(管理外ジョブ)が存在することになる。
管理外ジョブが存在すると、管理外ジョブによって情報処理装置のリソースが使用されることで、ジョブスケジューラが決定したスケジュール通りに管理ジョブを実行し終えることができなくなるおそれがある。そこで、ジョブスケジューラは、管理外ジョブの存在も考慮して管理ジョブをスケジューリングできることが好ましい。しかし、実行され得る全ての管理外ジョブの存在を検知し、これら全ての管理外ジョブをジョブスケジューラが考慮しようとすると、ジョブスケジューリングの負荷が大きくなるという問題がある。
1つの側面では、本発明は、ジョブスケジューリングの負荷を低減する制御プログラム、制御方法および制御装置を提供することを目的とする。
1つの態様では、コンピュータに以下の処理を実行させる制御プログラムが提供される。あるスケジューラに登録されたジョブと異なる、スケジューラに登録されていない1または2以上の他のジョブの実行履歴を示す履歴情報を取得する。履歴情報に基づいて、スケジューラに登録されたジョブを情報処理装置で実行する予定の時間帯における、少なくとも1つの他のジョブが実行されることによる情報処理装置のリソース使用状況を予測する。時間帯における予測したリソース使用状況が所定の条件を満たす場合、スケジューラに登録されたジョブおよび少なくとも1つの他のジョブの間でスケジューリングを行う。
1つの態様では、コンピュータが実行する制御方法が提供される。
1つの態様では、記憶部と演算部とを有する制御装置が提供される。記憶部は、あるスケジューラに登録されたジョブと異なる、スケジューラに登録されていない1または2以上の他のジョブの実行履歴を示す履歴情報を記憶する。演算部は、履歴情報に基づいて、スケジューラに登録されたジョブを情報処理装置で実行する予定の時間帯における、少なくとも1つの他のジョブが実行されることによる情報処理装置のリソース使用状況を予測し、時間帯における予測したリソース使用状況が所定の条件を満たす場合、スケジューラに登録されたジョブおよび少なくとも1つの他のジョブの間でスケジューリングを行う。
1つの側面では、ジョブスケジューリングの負荷を低減することができる。
第1の実施の形態の制御装置を示す図である。 第2の実施の形態の情報処理システムを示す図である。 ジョブ間のCPUリソース競合の例を示す図である。 ジョブ間のファイル競合の例を示す図である。 ジョブの可視化例を示す図である。 ジョブ管理サーバのハードウェア例を示すブロック図である。 ジョブ管理サーバの機能例を示すブロック図である。 リソース情報テーブルの例を示す図である。 管理ジョブテーブルの例を示す図である。 仮想ジョブテーブルの例を示す図である。 サスペンドジョブテーブルの例を示す図である。 リソース監視の手順例を示すフローチャートである。 定期ジョブ分析の手順例を示すフローチャートである。 再スケジューリングの手順例を示すフローチャートである。 ファイル競合解消の手順例を示すフローチャートである。 ファイル競合の解消例を示す図である。 管理ジョブのシフト例を示す図である。 CPUリソース競合解消の手順例を示すフローチャートである。 CPUリソース競合の解消例を示す図である。 ジョブ実行制御の手順例を示すフローチャートである。 ファイル競合監視の手順例を示すフローチャートである。 CPUリソース競合監視の手順例を示すフローチャートである。 仮想ジョブ制御の手順例を示すフローチャートである。 仮想ジョブ非起動時の再スケジューリング例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の制御装置を示す図である。
第1の実施の形態の制御装置10は、スケジューラを用いてジョブをスケジューリングする。制御装置10は、コンピュータであってもよい。ジョブは、例えば、サーバ装置・ストレージ装置・通信装置などの情報機器を管理するものであり、ユーザから指定された周期で定期的に実行され得る。ジョブは、制御装置10において実行されてもよいし、他の装置(他のコンピュータなど)において実行されてもよい。
制御装置10は、記憶部11および演算部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性の記憶装置でもよいし、HDD(Hard Disk Drive)などの不揮発性の記憶装置でもよい。演算部12は、例えば、プロセッサである。プロセッサは、CPU(Central Processing Unit)やDSP(Digital Signal Processor)であってもよく、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路を含んでもよい。プロセッサは、例えば、RAMなどの半導体メモリに記憶されたプログラムを実行する。また、「プロセッサ」は、2以上のプロセッサの集合(マルチプロセッサ)であってもよい。
記憶部11は、ジョブの実行履歴を示す履歴情報11aを記憶する。ここで、同一の装置(例えば、制御装置10)上で実行され得るジョブには、ジョブ13a,13b,13cが含まれる。ジョブ13aは、あるスケジューラに登録されたもの(管理ジョブ)であり、ジョブ13b,13cは、当該スケジューラに登録されていないもの(管理外ジョブ)である。ジョブ13b,13cは、ジョブ13aと異なる他のスケジューラに登録されていてもよい。履歴情報11aは、少なくとも管理外ジョブであるジョブ13b,13cの実行履歴を示す。履歴情報11aは、例えば、ジョブ13b,13cを実行する装置から取得される。履歴情報11aは、更にジョブ13aの実行履歴を示してもよい。
演算部12は、履歴情報11aに基づいて、管理ジョブであるジョブ13aを実行する予定の時間帯における、管理外ジョブが実行されることによるリソース使用状況を予測する。このとき、演算部12は、ジョブ13aを実行予定の時間帯に限定してリソース使用状況を予測すればよく、ジョブ13aを実行予定の時間帯以外については予測しなくてよい。図1に例示したように、ジョブ13bの時間帯がジョブ13aと重複すると予測され、ジョブ13cの時間帯はジョブ13aと重複しないと予測されるとする。この場合、演算部12は、ジョブ13cを考慮しなくてよい。例えば、演算部12は、履歴情報11aの中から、ジョブ13aを実行する予定の時間帯の実行履歴のみを検索して分析する。
そして、演算部12は、ジョブ13aを実行する予定の時間帯における予測したリソース使用状況が、所定の条件を満たすか判定する。所定の条件を満たす場合、演算部12は、ジョブ13aおよび予測される時間帯がジョブ13aと重複する管理外ジョブ(ジョブ13b)の間で、スケジューリングを行う。一方、所定の条件を満たさない場合、演算部12は、ジョブ13a,13bの間でスケジューリングを行わなくてよい。
リソース使用状況には、ジョブ13a,13bそれぞれのファイルアクセスが含まれ得る。その場合、所定の条件は、ジョブ13a,13bが並行して同一ファイルにアクセスすることであってもよい。また、リソース使用状況には、ジョブ13a,13bそれぞれのCPU負荷が含まれ得る。その場合、所定の条件は、合計のCPU負荷が閾値を超えることであってもよい。所定の条件は、管理ジョブと管理外ジョブが並行して実行された場合に、一方のジョブの実行終了が大きく遅延するおそれがある条件と言うこともできる。
スケジューリングには、管理ジョブであるジョブ13aと管理外ジョブであるジョブ13bの何れか一方の実行予定の時間帯をシフトすることが含まれ得る。例えば、演算部12は、可能であればジョブ13aの開始タイミングを早くする。他の管理ジョブとの関係でジョブ13aの開始タイミングを早くすることが難しい場合、例えば、演算部12は、ジョブ13a,13bのうち優先度の低い方の開始タイミングを遅くする。ジョブ13aのスケジュールを変更した場合、演算部12は、変更後のスケジュールに従ってジョブ13aを起動する。一方、ジョブ13bのスケジュールを変更した場合、演算部12は、ジョブ13bの起動の有無を監視し、早く起動した場合にジョブ13bをサスペンドする。
第1の実施の形態の制御装置10によれば、管理ジョブであるジョブ13aを実行予定の時間帯について、管理外ジョブの影響を含むリソース使用状況が予測される。そして、予測したリソース使用状況が所定の条件を満たす場合に、ジョブ13aおよびジョブ13aと並行して実行されると予測される管理外ジョブ(ジョブ13b)の間でスケジューリングが行われる。これにより、制御装置10は全ての管理外ジョブの存在を考慮してジョブ13aのスケジューリングを行わなくてよく、スケジューリングの負荷を低減できる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。
第2の実施の形態の情報処理システムは、業務で使用される各種の情報機器を集約して管理する。この情報処理システムは、クライアント21、業務サーバ22、ストレージ23、通信装置24およびジョブ管理サーバ100を有する。クライアント21、業務サーバ22、ストレージ23通信装置24およびジョブ管理サーバ100は、ネットワーク20に接続されている。なお、ジョブ管理サーバ100は、第1の実施の形態の制御装置10の一例である。
クライアント21は、ユーザが操作する端末装置としてのクライアントコンピュータである。ユーザは、例えば、この情報処理システムを管理する管理者である。クライアント21は、ユーザ操作に応じて、ユーザが入力した情報をジョブ管理サーバ100に送信し、また、ジョブ管理サーバ100から受信した情報をディスプレイに表示する。
業務サーバ22、ストレージ23および通信装置24は、業務で使用される情報機器である。業務サーバ22は、業務用のアプリケーションソフトウェアを実行するサーバコンピュータである。ストレージ23は、業務に使用するデータを、磁気ディスクなどの不揮発性の記憶媒体に記憶しておく記憶装置である。ストレージ23は、業務サーバ22からアクセスされ得る。通信装置24は、データを転送するルータやスイッチなどである。
ジョブ管理サーバ100は、業務サーバ22、ストレージ23、通信装置24などの情報機器を管理するジョブを制御するサーバコンピュータである。第2の実施の形態では、ジョブ管理サーバ100がジョブのスケジューリングとジョブの実行の両方を行う。ただし、ジョブ管理サーバ100が他のコンピュータにジョブの実行を指示するようにしてもよい。実行されるジョブには、例えば、情報機器の電源ON・OFF、情報機器の稼働状態を示すデータの収集、情報機器に搭載されたソフトウェアの更新などが含まれる。
ジョブ管理サーバ100では、複数のジョブのスケジューリングを行うスケジューラが動作している。スケジューラには、ユーザ操作に応じてクライアント21からジョブが登録される。登録されたジョブ(管理ジョブ)の少なくとも一部は、ユーザが指定した周期(例えば、毎日、1週間に1回、1ヶ月に1回など)で繰り返し実行される。スケジューラは、ジョブ管理サーバ100において複数の管理ジョブが円滑に実行されるように、これら複数の管理ジョブの実行順序や起動予定時刻などのスケジュールを調整する。
ただし、ジョブ管理サーバ100では、上記のスケジューラに登録された管理ジョブの他に、上記のスケジューラに登録されていないジョブ(管理外ジョブ)が実行されることがある。管理外ジョブは、例えば、上記のスケジューラとは異なる他のスケジューラに登録されたものであって、上記のスケジューラに統合することが難しいジョブである。管理外ジョブの例としては、セキュリティソフトウェアが制御するウィルスチェックのジョブや、OSが制御する更新プログラムの確認のジョブなどが挙げられる。管理外ジョブの中には、定期的に実行されるものもあるし、不定期で実行されるものもある。第2の実施の形態のスケジューラは、このような管理外ジョブも考慮してスケジューリングを行う。
次に、管理外ジョブが存在することによるスケジューリングの問題を説明する。
図3は、ジョブ間のCPUリソース競合の例を示す図である。
ここでは、ジョブ管理サーバ100のスケジューラに、管理ジョブとしてジョブ11,12が登録されているとする。ジョブ11が先に起動し、ジョブ11の予定終了時刻よりも後にジョブ12が起動するようにスケジューリングされている。一方、ジョブ管理サーバ100において、管理外ジョブとしてジョブNが実行されるとする。ジョブNが実行される時間帯は、ジョブ11,12の実行予定の時間帯と重複している。ジョブ11とジョブNの合計CPU負荷やジョブ12とジョブNの合計CPU負荷は、閾値を超える。
この場合、ジョブ管理サーバ100は、ジョブ11,12をスケジュール通りに実行することができず、ジョブ11,12の終了が遅延するおそれがある。すなわち、スケジューリング時に考慮されなかったジョブNによってCPUリソースが使用され、ジョブ11,12の使用できるCPUリソースが不足して実行速度が低下するおそれがある。管理外ジョブが存在することでCPU負荷が高くなり管理ジョブが遅延することは、管理ジョブの数が多くCPUリソースの余裕度が小さい時間帯が長く続く場合に特に問題になる。
図4は、ジョブ間のファイル競合の例を示す図である。
ここでは、図3の場合と同様に、ジョブ管理サーバ100のスケジューラに、管理ジョブとしてジョブ11,12が登録されているとする。ジョブ11とジョブ12とは、並行して実行されないようにスケジューリングされている。ジョブ11,12は、それぞれの実行中に少なくとも1回、あるファイルにアクセスする。一方、ジョブ管理サーバ100において、管理外ジョブとしてジョブNが実行されるとする。ジョブNが実行される時間帯は、ジョブ11,12の実行予定の時間帯と重複している。ジョブNも、その実行中に少なくとも1回、ジョブ11,12と同じファイルにアクセスする。
ジョブ11,12およびジョブNのファイルアクセスとして、主に、ファイルを更新する書込アクセスのようにアクセス時に排他制御が行われるものを考える。その場合、スケジューリング時に考慮されなかったジョブNによってファイルがロックされることで、ジョブ11,12のファイルアクセスが失敗し、ジョブ管理サーバ100がジョブ11,12をスケジュール通りに実行できないおそれがある。ファイルアクセスに失敗すると、ジョブ11,12は異常終了するか、または、ファイルのロックが解除されるまで待機することになる。よって、ジョブ11,12が正常に完了するのが遅くなる。
そこで、ジョブ管理サーバ100は、ユーザが登録した管理ジョブ以外のジョブのうち管理ジョブの実行に影響を与える可能性が高いものを、仮想ジョブとして自動的にスケジューラに登録する。スケジューラは、仮想ジョブを考慮してスケジューリングを行う。
図5は、ジョブの可視化例を示す図である。
ジョブ管理サーバ100は、クライアント21からの要求に応じて、図5に示すようなジョブ管理画面21aを示す情報をクライアント21に送信する。クライアント21は、クライアント21が備えるディスプレイにジョブ管理画面21aを表示する。
ジョブ管理画面21aは、ユーザによって登録された管理ジョブとジョブ管理サーバ100によって自動的に登録された仮想ジョブのスケジュールを示す。ジョブ管理画面21aでは、横方向が時間に相当し、各ジョブの実行予定の時間帯が長方形によって表現されている。図5の例では、ジョブ1〜4が管理ジョブであり、ジョブA,Bが仮想ジョブである。この例では、まずジョブ1が起動し、ジョブ1が終了した後にジョブ2が起動し、ジョブ2が終了した後にジョブ3が起動する。また、ジョブ3が終了する前にジョブAが起動する。ジョブ3はジョブAよりも先に終了する。また、ジョブAが終了した後にジョブBが起動する。このように、ジョブ管理画面21aによって、ユーザは、仮想ジョブも含めてジョブ間の順序関係や並行して実行されるジョブ群を確認することができる。
また、ジョブ管理画面21aには、ジョブ毎の予測されるCPU負荷やファイルアクセスの情報が表示される。例えば、あるジョブのスケジュールを示す長方形をユーザが選択すると、当該ジョブのCPU負荷やファイルアクセスを示す情報がポップアップウィンドウに表示される。ここで、ジョブ管理サーバ100は、時間を所定幅の区間(例えば、1分)に細分化し、区間単位でCPU負荷やファイルアクセスを予測する。図5の例では、ジョブAの1分毎のCPU使用率とファイルアクセスの予測が表示されている。
次に、ジョブ管理サーバ100のハードウェアおよび機能を説明する。
図6は、ジョブ管理サーバのハードウェア例を示すブロック図である。
ジョブ管理サーバ100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。CPU101は、第1の実施の形態の演算部12の一例であり、RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されているプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、ジョブ管理サーバ100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性メモリである。なお、ジョブ管理サーバ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OSやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、ジョブ管理サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、ジョブ管理サーバ100に接続されたディスプレイ31に画像を出力する。ディスプレイ31としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部105は、ジョブ管理サーバ100に接続された入力デバイス32から入力信号を取得し、CPU101に出力する。入力デバイス32としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、ジョブ管理サーバ100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体33に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体33として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ106は、例えば、記録媒体33から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク20に接続され、ネットワーク20を介してクライアント21や業務で使用される情報機器と通信を行うインタフェースである。通信インタフェース107は、ケーブルで通信装置と接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
なお、ジョブ管理サーバ100は、媒体リーダ106を備えていなくてもよい。また、ジョブ管理サーバ100は、クライアント21からネットワーク20経由で制御される場合には、画像信号処理部104や入力信号処理部105を備えていなくてもよい。また、ディスプレイ31や入力デバイス32が、ジョブ管理サーバ100の筐体と一体に形成されていてもよい。クライアント21や業務サーバ22も、ジョブ管理サーバ100と同様のハードウェアを用いて実現することが可能である。
図7は、ジョブ管理サーバの機能例を示すブロック図である。
ジョブ管理サーバ100は、スケジュールデータベース110、OS120およびスケジューラ130を有する。スケジュールデータベース110は、例えば、RAM102またはHDD103に確保した記憶領域として実現される。スケジューラ130は、例えば、CPU101が実行するソフトウェアのモジュールとして実現される。
スケジュールデータベース110は、ジョブのスケジューリングに関する情報を記憶する。後述するように、スケジュールデータベース110は、リソース情報テーブル、管理ジョブテーブル、仮想ジョブテーブルおよびサスペンドジョブテーブルを記憶する。リソース情報テーブルは、ジョブ管理サーバ100におけるプロセスの実行履歴を示す。第2の実施の形態では、主に1つのプロセスが1つのジョブに対応している。管理ジョブテーブルはユーザから登録された管理ジョブを示し、仮想ジョブテーブルはスケジューラ130によって登録された仮想ジョブを示す。サスペンドジョブテーブルは、スケジューラ130によって一時的に停止された(サスペンドされた)ジョブを示す。
OS120は、ジョブ管理サーバ100におけるプロセスの実行を制御する。OS120は、スケジューラ130からの要求に応じて、現在実行されているプロセスに関する情報を提供する。また、OS120は、プロセスを強制終了する機能や一時停止する機能を有している。スケジューラ130は、OS120の機能を利用して、実行を取り止めたいジョブを強制終了し、実行タイミングを遅らせたいジョブをサスペンドできる。
スケジューラ130は、ユーザから登録された管理ジョブの実行に影響を与える管理外ジョブを仮想ジョブとして登録し、管理ジョブと仮想ジョブの実行を制御する。スケジューラ130は、リソース監視部131、定期ジョブ分析部132、仮想ジョブ制御部133、スケジュール部134およびジョブ実行部135を有する。
リソース監視部131は、定期的に(例えば、1分毎に)、ジョブ管理サーバ100におけるプロセスの実行状況を示すリソース情報をOS120から取得する。このプロセスには、管理ジョブに相当するものと管理外ジョブに相当するものが含まれる。リソース情報には、各プロセスのCPU使用率やアクセスされたファイルを示す情報が含まれる。リソース監視部131は、取得したリソース情報をリソース情報テーブルに追記する。なお、一定期間以上古いリソース情報は、リソース情報テーブルから削除してもよい。
定期ジョブ分析部132は、1日の所定タイミング(例えば、日付が変わったタイミング)で、リソース情報テーブルに蓄積されたリソース情報を分析し、所定の条件を満たす管理外ジョブを抽出する。抽出する管理外ジョブは、定期的に実行されている管理外ジョブのうち本日実行されると予測されるものであって、管理ジョブの実行に大きな影響を与える可能性が高いものである。管理ジョブへの影響は、CPU使用率の観点とファイルアクセスの観点から予測される。そして、定期ジョブ分析部132は、抽出した管理ジョブを仮想ジョブとして仮想ジョブテーブルに登録する。なお、定期ジョブ分析部132は、スケジュール部134からの要求に応じても適宜上記の処理を実行する。
仮想ジョブ制御部133は、仮想ジョブテーブルに登録された仮想ジョブの実行を制御する。仮想ジョブは、管理ジョブと同様にスケジューラ130によってスケジューリングされ得る一方、スケジューラ130が起動するものではない。そこで、仮想ジョブ制御部133は、仮想ジョブの起動を監視し、スケジュールの起動予定時刻よりも早く仮想ジョブが起動した場合には、当該仮想ジョブを起動予定時刻までサスペンドする。
スケジュール部134は、ユーザ操作に応じてクライアント21から管理ジョブの情報を受信し、管理ジョブテーブルに管理ジョブを登録する。また、スケジュール部134は、1日の所定タイミング(例えば、日付が変わったタイミング)で、本日実行予定の管理ジョブと仮想ジョブのスケジューリングを行う。スケジューリングは、CPU使用率の観点とファイルアクセスの観点から行う。すなわち、スケジュール部134は、CPUリソースの不足やファイルアクセスの競合を解消するようにする。これにより、管理ジョブや仮想ジョブの起動予定時刻が変更されることがある。なお、スケジュール部134は、新しい管理ジョブが登録されたときにも、上記のスケジューリングを行う。
また、スケジュール部134は、クライアント21からの要求に応じて、本日の管理ジョブおよび仮想ジョブのスケジュールを示すジョブ管理画面21aの情報をクライアント21に送信する。また、スケジュール部134は、管理ジョブの実行中、突発的な管理外ジョブ(定期ジョブ分析部132で分析対象とされなかったもの)を監視する。所定の条件を満たす突発的な管理外ジョブが検出された場合、スケジュール部134は、実行中の管理ジョブと検出された管理外ジョブの何れか一方を、強制終了またはサスペンドする。検出する突発的な管理外ジョブは、CPU使用率の観点またはファイルアクセスの観点から、実行中の管理ジョブに大きな影響を与えると予測されるものである。
ジョブ実行部135は、スケジュール部134の決定したスケジュールに従って、起動予定時刻を迎えた管理ジョブを起動する。また、ジョブ実行部135は、管理ジョブの実行状況を監視し、管理ジョブが終了するとその旨をスケジュール部134に通知する。
図8は、リソース情報テーブルの例を示す図である。
リソース情報テーブル111は、ジョブ管理サーバ100のスケジュールデータベース110に記憶される。リソース情報テーブル111に登録される情報は、リソース監視部131によって収集される。リソース情報テーブル111は、時刻、合計CPU使用率、プロセス、優先度、CPU使用率および使用ファイルの項目を含む。
時刻の項目には、リソース監視部131がリソース情報を取得した時刻が設定される。合計CPU使用率の項目には、ジョブ管理サーバ100全体のCPU使用率、すなわち、ジョブ管理サーバ100が備える全CPUリソース(複数のCPUがある場合にはそれらの合計)に対する使用中のCPUリソースの割合が設定される。プロセスの項目には、ジョブ管理サーバ100で実行中の1または2以上のプロセスの名称が設定される。
優先度の項目には、各プロセスに相当するジョブの実行優先度を示す値が設定される。管理ジョブについては、スケジューラ130が使用している優先度の値を用いる。管理外ジョブについては、他のスケジューラなどが使用している優先度の値(例えば、NICE値)を、管理ジョブの優先度と整合するように変換したものを用いる。CPU使用率の項目には、プロセス毎のCPU使用率が設定される。使用ファイルの項目には、各プロセスがアクセスしているファイルの識別情報(パスやファイル名など)が設定される。アクセスしているファイルがない場合は、使用ファイルの項目は空欄になる。
なお、使用ファイルの項目に登録されるファイルへのアクセスは、ロック獲得を伴うものに限定してもよい。例えば、ファイルからのデータの読出(読出アクセス)とファイルへのデータの書込(書込アクセス)のうち、書込アクセスに限定してもよい。
図9は、管理ジョブテーブルの例を示す図である。
管理ジョブテーブル112は、ジョブ管理サーバ100のスケジュールデータベース110に記憶される。管理ジョブテーブル112に登録される情報は、ユーザ入力に応じてスケジュール部134によって生成される。管理ジョブテーブル112は、ジョブ名、起動パターン、起動予定時刻、予定時間、プロセスおよび優先度の項目を有する。
ジョブ名の項目には、ユーザから指定された管理ジョブの名称が設定される。起動パターンの項目には、管理ジョブが実行される日の規則性が設定される。起動パターンとしては、毎日・毎週XX曜日・毎月XX日などの規則性が挙げられる。起動予定時刻の項目には、管理ジョブの起動予定の時刻が設定される。予定時間の項目には、管理ジョブが開始してから終了するまでに要する時間の見積もりが設定される。プロセスの項目には、管理ジョブに対応するプロセスの識別情報(プログラムのファイル名など)が設定される。優先度の項目には、スケジューラ130が管理ジョブ間の優先度を管理するために用いる値が設定される。例えば、優先度は、1以上10以下の整数として表現することができる。
図10は、仮想ジョブテーブルの例を示す図である。
仮想ジョブテーブル113は、ジョブ管理サーバ100のスケジュールデータベース110に記憶される。仮想ジョブテーブル113に登録される情報は、管理外ジョブのリソース情報に基づいて定期ジョブ分析部132によって生成される。仮想ジョブテーブル113は、ジョブ名、起動パターン、起動予定時刻、予定時間、プロセス、優先度、CPU使用率、使用ファイルおよびファイルアクセスの項目を有する。
ジョブ名の項目には、プロセス名に応じて生成された仮想ジョブの名称が設定される。起動パターンの項目には、仮想ジョブが実行される日の規則性の予測値が設定される。起動予定時刻の項目には、仮想ジョブの起動時刻の予測値が設定される。予定時間の項目には、仮想ジョブが開始してから終了するまでに要する時間の予測値が設定される。プロセスの項目には、仮想ジョブに対応するプロセスの識別情報(プログラムのファイル名など)が設定される。優先度の項目には、仮想ジョブの優先度を示す値であって、スケジューラ130が使用する評価尺度と整合するように変換されたものが設定される。
CPU使用率の項目には、区間毎(例えば、1分毎)の仮想ジョブのCPU使用率の予測値が、時系列順に列挙される。予定時間が20分であり1つの区間が1分である場合、CPU使用率の項目には20個のCPU使用率の予測値が列挙される。使用ファイルの項目には、仮想ジョブがアクセスするファイルの識別情報(パスやファイル名など)が設定される。使用ファイルの項目に登録されるファイルへのアクセスは、書込アクセスなどロック獲得を伴うものに限定してもよい。ファイルアクセスの項目には、区間毎の仮想ジョブのファイルアクセスの有無を示すフラグが、時系列順に列挙される。例えば、ファイルアクセスの項目には20個のフラグが列挙される。1つの仮想ジョブが複数のファイルにアクセスする場合、使用ファイルおよびファイルアクセスの項目が繰り返される。
なお、上記の起動パターン、起動予定時刻、予定時間、CPU使用率およびファイルアクセスの項目に設定する予測値は、蓄積されたリソース情報から算出されたものである。
図11は、サスペンドジョブテーブルの例を示す図である。
サスペンドジョブテーブル114は、ジョブ管理サーバ100のスケジュールデータベース110に記憶される。サスペンドジョブテーブル114の情報は、仮想ジョブ制御部133によって登録され、仮想ジョブ制御部133によって削除される。サスペンドジョブテーブル114は、プロセス、サスペンド時刻および解除予定時刻の項目を有する。
プロセスの項目には、仮想ジョブに対応するプロセスの識別情報(プログラムのファイル名など)が設定される。サスペンド時刻の項目には、仮想ジョブ制御部133が仮想ジョブをサスペンドした時刻が設定される。解除予定時刻の項目には、サスペンドした仮想ジョブを再開予定の時刻が設定される。各仮想ジョブの解除予定時刻は、例えば、スケジュール部134が決定した当該仮想ジョブの起動予定時刻とする。仮想ジョブ制御部133は、仮想ジョブをサスペンドしたときに当該仮想ジョブの情報をサスペンドジョブテーブル114に登録する。そして、仮想ジョブ制御部133は、サスペンドした仮想ジョブを再開すると、当該仮想ジョブの情報をサスペンドジョブテーブル114から削除する。
次に、ジョブ管理サーバ100が実行する処理を説明する。
図12は、リソース監視の手順例を示すフローチャートである。
この処理は、例えば、1分間隔で定期的に実行される。
(S10)リソース監視部131は、CPUおよびファイルアクセスに関するリソース情報を収集する。CPUに関するリソース情報には、ジョブ管理サーバ100の全体CPU使用率、プロセス毎の優先度およびプロセス毎のCPU使用率が含まれる。ファイルアクセスに関するリソース情報には、プロセス毎の使用中のファイルの名称が含まれる。検出するファイルの使用は、ロック獲得を伴う書込アクセスに限定してもよい。
(S11)リソース監視部131は、ステップS10で収集したリソース情報が示すプロセスのうち管理外ジョブに相当するプロセスを抽出し、管理外ジョブの優先度の値(例えば、NICE値)を、スケジューラ130で使用される優先度の値に変換する。各プロセスが管理ジョブに相当するものか管理外ジョブに相当するものかは、例えば、スケジュールデータベース110に記憶された管理ジョブテーブル112を参照して判断する。なお、スケジューラ130外で使用される優先度の値とスケジューラ130で使用される優先度の値との対応関係は、予めリソース監視部131に設定されている。
(S12)リソース監視部131は、収集されたリソース情報に現在時刻を付加し、スケジュールデータベース110に記憶されたリソース情報テーブル111に追記する。このとき、古いリソース情報をリソース情報テーブル111から削除してもよい。
図13は、定期ジョブ分析の手順例を示すフローチャートである。
この処理は、例えば、日付が変わったタイミングで実行される。
(S20)定期ジョブ分析部132は、管理ジョブテーブル112を参照して、本日実行予定の管理ジョブの時間帯を特定する。そして、定期ジョブ分析部132は、リソース情報テーブル111から、管理ジョブの時間帯に属するリソース情報を検索する。すなわち、過去に実行された時間帯が管理ジョブを実行予定の時間帯と重複しているプロセスを検索する。管理ジョブの時間帯外のリソース情報は検索しなくてよい。
(S21)定期ジョブ分析部132は、ステップS20で検索されたリソース情報から管理外ジョブに相当するものを抽出し、管理外ジョブ毎にリソース情報を纏める。そして、定期ジョブ分析部132は、リソース情報が示す過去の起動実績に基づいて、管理外ジョブ毎に起動日の規則性を判定する。起動日の周期としては、毎日・1週間に1回・1ヶ月に1回などが考えられる。間欠的に起動される管理外ジョブについては、曜日も考慮して起動日の規則性を判定する。例えば、起動日の規則性として、毎週月曜日・1ヶ月の最初の平日・1ヶ月の最後の平日などのパターンが考えられる。
(S22)定期ジョブ分析部132は、ステップS21で判定した管理外ジョブ毎の起動日の規則性に基づいて、本日起動される管理外ジョブを予測する。また、定期ジョブ分析部132は、リソース情報が示す過去の起動実績に基づいて、本日実行される時間帯を予測する。例えば、定期ジョブ分析部132は、当該管理外ジョブの過去の起動時刻の平均と過去の実行時間の平均を、本日の起動予定時刻と本日の実行時間の予測値とする。
ただし、定期ジョブ分析部132は、リソース情報が示す過去の起動実績のうち起動日の特徴が本日と共通するもののみを使用して、本日実行される時間帯を予測してもよい。例えば、毎日起動される管理外ジョブであっても、本日が月曜日であれば過去の月曜日の起動実績に基づいて時間帯を予測してもよい。これは、曜日によって実行時間が異なる可能性があるためである。また、定期ジョブ分析部132は、過去の起動時刻や実行時間の変動傾向を分析して、本日実行される時間帯を予測してもよい。例えば、起動実績を時系列に並べたとき、単調増加や単調減少など実行時間の変動に明確な規則性が発見された場合には、その規則性に基づいて時間帯を予測してもよい。これは、月初から月末に向かって管理外ジョブによって処理されるデータが単調増加するなどの原因で生じ得る。
(S23)定期ジョブ分析部132は、ステップS22で予測した管理外ジョブの本日実行される時間帯について、リソース情報が示す過去の起動実績に基づいて、所定区間毎(例えば、1分毎)のCPU使用率を予測する。例えば、定期ジョブ分析部132は、起動してからの経過時間が同じ過去のCPU使用率を平均して予測値とする。ただし、定期ジョブ分析部132は、過去の起動実績のうち起動日の特徴が本日と共通するもののみを使用してもよいし、過去のCPU使用率の変動傾向を時系列に分析して本日のCPU使用率を予測してもよい。また、定期ジョブ分析部132は、管理外ジョブと同様に本日起動予定の管理ジョブについても、リソース情報テーブル111に記憶された管理ジョブのリソース情報に基づいて、所定区間毎のCPU使用率を予測する。
(S24)定期ジョブ分析部132は、管理ジョブを実行予定の時間帯に属する区間毎に、その区間で実行される管理ジョブおよび管理外ジョブのCPU使用率の合計(合計CPU使用率)を算出する。そして、定期ジョブ分析部132は、合計CPU使用率が閾値(例えば、90%)を超えているか判断する。合計CPU使用率が閾値を超えている場合はステップS25に処理が進み、それ以外の場合はステップS26に処理が進む。
(S25)定期ジョブ分析部132は、合計CPU使用率が閾値を超えた区間で実行される管理外ジョブのうち当該区間でのCPU使用率が最大のものを、仮想ジョブとして選択する。そして、ステップS24に処理が進む。ステップS24では、定期ジョブ分析部132は、仮想ジョブを除外して合計CPU使用率を算出する。
(S26)定期ジョブ分析部132は、ステップS22で予測した管理外ジョブの本日実行される時間帯について、リソース情報が示す過去の起動実績に基づいて、所定区間毎のファイルアクセスを予測する。また、定期ジョブ分析部132は、管理外ジョブと同様に本日起動予定の管理ジョブについても、リソース情報テーブル111に記憶された管理ジョブのリソース情報に基づいて、所定区間毎のファイルアクセスを予測する。
(S27)定期ジョブ分析部132は、管理ジョブを実行予定の時間帯に属する区間毎に、その区間において管理ジョブと管理外ジョブとの間でファイル競合が発生するか確認する。ファイル競合は、管理ジョブと管理外ジョブが、同じファイルに対してロックを獲得してアクセスしようとする(例えば、同じファイルにデータを書き込もうとする)ことで生じる。ファイル競合が発生する場合、定期ジョブ分析部132は、管理ジョブと同じファイルにアクセスする管理外ジョブを仮想ジョブとして選択する。
(S28)定期ジョブ分析部132は、ステップS25,S27で選択した仮想ジョブをスケジュールデータベース110に記憶された仮想ジョブテーブル113に登録する。
図14は、再スケジューリングの手順例を示すフローチャートである。
この処理は、例えば、日付が変わって定期ジョブ分析部132がスケジューラ130に仮想ジョブを登録した直後に実行される。また、この処理は、ユーザが管理ジョブをスケジューラ130に登録したときに実行され得る。後者の場合、この処理に先立って、定期ジョブ分析部132により当該管理ジョブの時間帯についての仮想ジョブが抽出される。
(S30)スケジュール部134は、本日起動予定の管理ジョブと登録された何れかの仮想ジョブとの間でファイル競合が発生するか確認する。ファイル競合が発生する場合、スケジュール部134は、ファイル競合が解消するように管理ジョブおよび仮想ジョブの一方の起動予定時刻を変更する。ファイル競合解消の詳細は後述する。
(S31)スケジュール部134は、本日起動予定の管理ジョブと登録された仮想ジョブとの間でCPUリソース競合が発生するか確認する。CPUリソース競合は、CPUリソースが不足している状態であり、管理ジョブと仮想ジョブのCPU使用率の合計が閾値(例えば、90%)を超える状態である。CPUリソース競合が発生する場合、スケジュール部134は、CPUリソース競合が解消するように管理ジョブおよび仮想ジョブの何れか1つの起動予定時刻を変更する。CPUリソース競合解消の詳細は後述する。
(S32)スケジュール部134は、ステップS30,S31において起動予定時刻の変更された管理ジョブがあるか判断する。起動予定時刻の変更された管理ジョブがある場合はステップS33に処理が進み、ない場合は再スケジューリングが終了する。
(S33)スケジュール部134は、ステップS30,S31の繰り返し回数(起動予定時刻の変更回数)が閾値を超えたか判断する。繰り返し回数が閾値を超えた場合はステップS35に処理が進み、超えていない場合はステップS34に処理が進む。
(S34)スケジュール部134は、変更後の管理ジョブを実行予定の時間帯について仮想ジョブを抽出するよう定期ジョブ分析部132に要求する。定期ジョブ分析部132は、図13に示したような手順で、スケジュール部134から指定された時間帯の仮想ジョブを抽出する。そして、ステップS30に処理が進み、変更後の管理ジョブを実行予定の時間帯について、ファイル競合およびCPUリソース競合の解消が行われる。
なお、変更後の時間帯においてもファイル競合またはCPUリソース競合が発生し、それを解消するために管理ジョブの起動予定時刻が更に変更されることがある。また、そもそも、全ての区間について合計CPU使用率が閾値以下になるようにスケジューリングを行うことが難しいこともある。そこで、ステップS33において、管理ジョブの起動予定時間の変更が一定回数に達した時点でステップS30,S31の処理を打ち切っている。
(S35)スケジュール部134は、これまでにステップS30,S31を通じて算出されたスケジュールのうち、合計CPU使用率が最小になるスケジュールを選択する。
図15は、ファイル競合解消の手順例を示すフローチャートである。
この処理は、前述のステップS30において実行される。
(S40)スケジュール部134は、管理ジョブと仮想ジョブの間でファイル競合が発生しているか、すなわち、同一区間で同一ファイルにアクセスする管理ジョブと仮想ジョブの組み合わせが存在するか判断する。ファイル競合が発生している場合はステップS41に処理が進み、ファイル競合が発生していない場合は処理が終了する。
(S41)スケジュール部134は、リソース情報テーブル111を参照して、ファイル競合に該当する管理ジョブと依存関係のある先行の管理ジョブを検索する。依存関係のある先行の管理ジョブは、該当する管理ジョブとの間で実行順序の制約がある他の管理ジョブであって、該当する管理ジョブが起動されるより前に終了していることが要求されるものである。この依存関係は、リソース情報が示す過去の起動実績に基づいて推定する。
(S42)スケジュール部134は、ステップS41の検索結果を考慮して、ファイル競合が解消されるように管理ジョブの実行予定の時間帯を前方にシフトする(起動予定時刻を早くする)ことを試みる。すなわち、スケジュール部134は、依存関係のある先行の管理ジョブの終了予定時刻よりも後に起動されるという条件のもと、仮想ジョブと同一区間で同一ファイルにアクセスしないように、管理ジョブの起動予定時刻を変更することを試みる。そして、スケジュール部134は、ファイル競合が解消するように管理ジョブの実行予定の時間帯を前方にシフト可能か判断する。前方にシフト可能である場合はステップS43に処理が進み、シフト可能でない場合はステップS44に処理が進む。
(S43)スケジュール部134は、ステップS42で検討したように、ファイル競合に該当する管理ジョブの起動予定時刻を早くする。起動予定時刻の変更先に複数の候補がある場合、スケジュール部134は、できる限りシフト量が小さくなる起動予定時刻を選択してもよい。そして、ファイル競合解消の処理が終了する。
(S44)スケジュール部134は、管理ジョブテーブル112および仮想ジョブテーブル113を参照して、ファイル競合に該当する管理ジョブと仮想ジョブの間で優先度を比較し、管理ジョブの優先度が仮想ジョブより高いか判断する。管理ジョブの優先度が仮想ジョブより高い場合はステップS45に処理が進み、それ以外の場合(管理ジョブの優先度が仮想ジョブの優先度以下である場合)はステップS46に処理が進む。
(S45)スケジュール部134は、ファイル競合に該当する仮想ジョブの起動予定時刻を遅くする。これは、管理ジョブを優先的に実行することを意味する。起動予定時刻の変更先に複数の候補がある場合、スケジュール部134は、できる限りシフト量が小さくなる起動予定時刻を選択してもよい。そして、ファイル競合解消の処理が終了する。
(S46)スケジュール部134は、ファイル競合に該当する管理ジョブの起動予定時刻を遅くする。これは、仮想ジョブを優先的に実行することを意味する。起動予定時刻の変更先に複数の候補がある場合、スケジュール部134は、できる限りシフト量が小さくなる起動予定時刻を選択してもよい。
図16は、ファイル競合の解消例を示す図である。
ここでは、ある管理ジョブが連続する8区間(例えば、8分間)にわたって実行され、ある仮想ジョブが連続する8区間にわたって実行されるとする。また、管理ジョブがその起動から6,7区間目でファイルf1にアクセスし、仮想ジョブがその起動から2,3区間目でファイルf1にアクセスするとする。そして、当初のスケジュールでは、管理ジョブが起動されてから4区間後に仮想ジョブが起動されると予測されるとする。
この場合、当初のスケジュールのままでは、管理ジョブと仮想ジョブが同一区間で同一のファイルf1にアクセスすることになり、ファイル競合が発生することになる(ケースA)。そこで、スケジュール部134は、管理ジョブの起動予定時刻を早くすることが可能か(前方にシフト可能か)判断し、可能であればファイル競合が解消するように管理ジョブの起動予定時刻を変更する。例えば、スケジュール部134は、管理ジョブの起動を2区間だけ早くすることによって、ファイル競合を解消できる(ケースB)。
前方にシフト可能でない場合、スケジュール部134は、管理ジョブと仮想ジョブの間で優先度を比較する。管理ジョブの優先度が仮想ジョブより高い場合、スケジュール部134は、ファイル競合が解消するように仮想ジョブの起動予定時刻を遅くする。例えば、スケジュール部134は、仮想ジョブの起動を2区間だけ遅くすることによって、ファイル競合を解消できる(ケースC)。一方、管理ジョブの優先度が仮想ジョブの優先度以下である場合、スケジュール部134は、ファイル競合が解消するように管理ジョブの起動予定時刻を遅くする。例えば、スケジュール部134は、管理ジョブの起動を2区間だけ遅くすることによって、ファイル競合を解消できる(ケースD)。
なお、ファイル競合を解消するにあたり、可能であれば各ジョブの起動予定時刻を遅くするよりも早くする方が好ましい。これは、あるジョブの実行予定の時間帯を後方にシフトしてしまうと、当該ジョブより更に後に実行予定の他のジョブについてスケジューリングの自由度が小さくなってしまうためである。ただし、仮想ジョブはスケジューラ130外で起動されるものであるため、仮想ジョブの実行予定の時間帯を前方にシフトすることは難しい。一方、仮想ジョブの実行予定の時間帯を後方にシフトすることは、スケジュールよりも早く起動された仮想ジョブをサスペンドすることによって実現できる。
図17は、管理ジョブのシフト例を示す図である。
前述の通り、管理ジョブの起動予定時刻を早くするにあたっては、当該管理ジョブと依存関係のある先行の管理ジョブを検索し、先行の管理ジョブのスケジュールから起動予定時刻の移動先の候補を判定する。先行の管理ジョブは、リソース情報テーブル111に記憶されたリソース情報が示す過去の起動実績に基づいて推定される。
具体的には、スケジュール部134は、過去の起動実績において、スケジュールを変更する管理ジョブが起動するよりも常に前に終了している他の管理ジョブを検索する。例えば、管理ジョブ3が実行される日には常に、管理ジョブ3が起動するより前に管理ジョブ1,2が終了しているとする。一方、管理ジョブ5は、管理ジョブ3と同じ日に実行されることもあれば、実行されないこともあるとする。また、管理ジョブ6は、管理ジョブ3が起動するより前に終了していることもあれば、終了していないこともあるとする。
この場合、管理ジョブ1,2が、管理ジョブ3と依存関係のある先行の管理ジョブとして検索される。管理ジョブ1,2が本日実行予定であれば、管理ジョブ1,2の何れの終了予定時刻よりも後の範囲で、管理ジョブ3の起動予定時刻を早くすることができる。
図18は、CPUリソース競合解消の手順例を示すフローチャートである。
この処理は、前述のステップS31において実行される。
(S50)スケジュール部134は、管理ジョブと仮想ジョブの間でCPUリソース競合が発生しているか、すなわち、予測される合計CPU使用率が閾値(例えば、90%)を超えた区間が存在するか判断する。CPUリソース競合が発生している場合はステップS51に処理が進み、CPUリソース競合が発生していない場合は処理が終了する。
(S51)スケジュール部134は、リソース情報テーブル111を参照して、CPUリソース競合に該当する管理ジョブと依存関係のある先行の管理ジョブを検索する。この依存関係は、前述のように、リソース情報が示す過去の起動実績に基づいて推定する。
(S52)スケジュール部134は、ステップS51の検索結果を考慮して、CPUリソース競合が解消されるように管理ジョブの実行予定の時間帯を前方にシフトする(起動予定時刻を早くする)ことを試みる。すなわち、スケジュール部134は、依存関係のある先行の管理ジョブの終了予定時刻よりも後に起動されるという条件のもと、何れの区間も合計CPU使用率が閾値以下となるように、管理ジョブの起動予定時刻を変更することを試みる。そして、スケジュール部134は、CPUリソース競合が解消するように管理ジョブの実行予定の時間帯を前方にシフト可能か判断する。前方にシフト可能である場合はステップS53に処理が進み、シフト可能でない場合はステップS54に処理が進む。
(S53)スケジュール部134は、ステップS52で検討したように、CPUリソース競合に該当する管理ジョブの起動予定時刻を早くする。起動予定時刻の変更先に複数の候補がある場合、スケジュール部134は、できる限りシフト量が小さくなる起動予定時刻を選択してもよい。そして、CPUリソース競合解消の処理が終了する。
(S54)スケジュール部134は、管理ジョブテーブル112および仮想ジョブテーブル113を参照して、CPUリソース競合に該当する管理ジョブと仮想ジョブの間で優先度を比較し、管理ジョブの優先度が仮想ジョブより高いか判断する。管理ジョブの優先度が仮想ジョブより高い場合はステップS55に処理が進み、それ以外の場合(管理ジョブの優先度が仮想ジョブの優先度以下である場合)はステップS56に処理が進む。
(S55)スケジュール部134は、CPUリソース競合に該当する仮想ジョブの起動予定時刻を遅くする。起動予定時刻の変更先に複数の候補がある場合、スケジュール部134は、できる限りシフト量が小さくなる起動予定時刻を選択してもよい。そして、CPUリソース競合解消の処理が終了する。
(S56)スケジュール部134は、CPUリソース競合に該当する管理ジョブの起動予定時刻を遅くする。起動予定時刻の変更先に複数の候補がある場合、スケジュール部134は、できる限りシフト量が小さくなる起動予定時刻を選択してもよい。
図19は、CPUリソース競合の解消例を示す図である。
ここでは、ある管理ジョブが連続する9区間(例えば、9分間)にわたって実行され、ある仮想ジョブが連続する13区間にわたって実行されるとする。また、9区間における管理ジョブのCPU使用率の予測は、{3p,4p,3p,8p,9p,8p,5p,3p,2p}(pはCPU使用率の所定単位)であるとする。13区間における仮想ジョブのCPU使用率の予測は、{7p,6p,6p,6p,5p,4p,3p,3p,3p,3p,3p,2p,1p}であるとする。そして、当初のスケジュールでは、管理ジョブが起動されてから5区間後に仮想ジョブが起動されると予測されるとする。
この場合、当初のスケジュールのままでは、管理ジョブが起動されてから5区間後の合計CPU使用率が15pとなり、6区間後の合計CPU使用率が11pとなる。合計CPU使用率の閾値を10pとすると、CPUリソース競合が発生することになる(ケースA)。そこで、スケジュール部134は、管理ジョブの起動予定時刻を早くすることが可能か(前方にシフト可能か)判断し、可能であればCPUリソース競合が解消するように管理ジョブの起動予定時刻を変更する。例えば、スケジュール部134は、管理ジョブの起動を2区間だけ早くすることによって、管理ジョブが実行される全ての区間について合計CPU使用率を閾値以下にでき、CPUリソース競合を解消できる(ケースB)。
前方にシフト可能でない場合、スケジュール部134は、管理ジョブと仮想ジョブの間で優先度を比較する。管理ジョブの優先度が仮想ジョブより高い場合、スケジュール部134は、CPUリソース競合が解消するように仮想ジョブの起動予定時刻を遅くする。例えば、スケジュール部134は、仮想ジョブの起動を2区間だけ遅くすることによって、管理ジョブが実行される全ての区間について合計CPU使用率を閾値以下にできる(ケースC)。一方、管理ジョブの優先度が仮想ジョブの優先度以下である場合、スケジュール部134は、CPUリソース競合が解消するように管理ジョブの起動予定時刻を遅くする。例えば、スケジュール部134は、管理ジョブの起動を13区間だけ遅くすることによって、管理ジョブが実行される全ての区間について合計CPU使用率を閾値以下にできる(ケースD)。なお、前述のように、CPUリソース競合をするにあたり、可能であれば各ジョブの起動予定時刻を遅くするよりも早くする方が好ましい。
以上では、定期的に実行される管理外ジョブを考慮したスケジューリングを説明した。次に、突発的に実行される管理外ジョブの制御について説明する。
図20は、ジョブ実行制御の手順例を示すフローチャートである。
(S60)スケジュール部134は、スケジュールデータベース110に記憶された管理ジョブテーブル112を参照して、起動予定時刻が到来した管理ジョブを検出する。
(S61)スケジュール部134は、検出した管理ジョブの起動をジョブ実行部135に指示する。ジョブ実行部135は、スケジュール部134から指定された管理ジョブを起動し、起動した管理ジョブの実行状況を監視する。管理ジョブが終了すると、ジョブ実行部135からスケジュール部134にその旨が通知される。
(S62)スケジュール部134は、管理ジョブテーブル112を参照して、起動された管理ジョブが使用予定のファイルを確認する。使用予定のファイルがある場合、スケジュール部134は、使用予定のファイルをバックアップ(コピーを保存)しておく。
(S63)スケジュール部134は、リソース監視部131によって最新のリソース情報が収集されると、仮想ジョブとして登録されていない突発的な管理外ジョブが実行されていないか確認する。突発的な管理外ジョブは、単発的に実行されるものや起動時刻が不規則なものなどを含む。スケジュール部134は、ステップS61で起動された管理ジョブと突発的な管理外ジョブとの間でファイル競合が発生する可能性を判定し、ファイル競合が発生し得る場合はそれを解消する。ファイル競合監視の詳細は後述する。
(S64)スケジュール部134は、現在の合計CPU使用率が高いか、すなわち、ステップS61で起動された管理ジョブと突発的な管理外ジョブとの間でCPUリソース競合が発生しているか判定する。スケジュール部134は、CPUリソース競合が発生している場合はそれを解消する。CPUリソース競合監視の詳細は後述する。
(S65)スケジュール部134は、ステップS61で起動された管理ジョブがまだ実行中であるか判断する。実行中である場合はステップS63に処理が進み、終了した場合は当該管理ジョブについてのジョブ実行制御が終了する。なお、管理ジョブが終了した場合は、ステップS62で作成したバックアップファイルを破棄してもよい。
図21は、ファイル競合監視の手順例を示すフローチャートである。
この処理は、前述のステップS63において実行される。
(S70)スケジュール部134は、リソース監視部131によって収集された最新のリソース情報から、実行中の突発的な管理外ジョブを検索する。検索する突発的な管理外ジョブは、実行中のジョブのうち、管理ジョブテーブル112に登録された管理ジョブと仮想ジョブテーブル113に登録された仮想ジョブとを除いたものである。
(S71)スケジュール部134は、ステップS70で検索された管理外ジョブの中から、実行中の管理ジョブが使用予定のファイルにアクセスした管理外ジョブを抽出する。
(S72)スケジュール部134は、ステップS71で該当する管理外ジョブが抽出されたか判断する。該当する管理外ジョブが抽出された場合はステップS73に処理が進み、抽出されなかった場合はファイル競合監視の処理が終了する。
(S73)スケジュール部134は、管理外ジョブの優先度を確認する。このとき、スケジュール部134は、スケジューラ130外で使用されている管理外ジョブの優先度の値(例えば、NICE値)を、スケジューラ130で使用されている優先度の値に変換する。そして、スケジュール部134は、管理ジョブと管理外ジョブの間で優先度を比較し、管理ジョブの優先度が管理外ジョブより高いか判断する。管理ジョブの優先度が管理外ジョブより高い場合はステップS74に処理が進み、それ以外の場合(管理ジョブの優先度が管理外ジョブの優先度以下である場合)はステップS75に処理が進む。
(S74)スケジュール部134は、ステップS71で抽出された管理外ジョブを強制終了する。これは、管理ジョブによるファイルアクセスが阻害されないように、管理ジョブを優先的に実行することを意味する。管理外ジョブの強制終了には、例えば、OS120の機能を利用する。強制終了された管理外ジョブは、例えば、管理ジョブが終了した後に再起動される。そして、ステップS76に処理が進む。
(S75)スケジュール部134は、実行中の管理ジョブを強制終了する。これは、管理外ジョブによるファイルアクセスが阻害されないように、管理外ジョブを優先的に実行することを意味する。管理ジョブの強制終了には、例えば、OS120の機能を利用する。強制終了された管理ジョブは、例えば、管理外ジョブが終了した後に再起動される。
(S76)スケジュール部134は、管理ジョブが起動してから、管理ジョブと管理外ジョブの何れが先に実際にファイルにアクセスしたか確認する。そして、スケジュール部134は、ステップS74またはステップS75において、先にファイルにアクセスしたジョブを強制終了したか判断する。先にファイルにアクセスしたジョブを強制終了した場合はステップS77に処理が進み、それ以外の場合はステップS78に処理が進む。
(S77)スケジュール部134は、上記のステップS62で作成したバックアップファイルを用いて、強制終了したジョブによって更新されたファイルをロールバックする。すなわち、スケジュール部134は、更新されたファイルをバックアップファイルで上書きすることで、ジョブの実行結果とファイルの内容との整合性を維持する。
(S78)スケジュール部134は、ステップS71で抽出された管理外ジョブを、仮想ジョブとして仮想ジョブテーブル113に登録する。突発的な管理外ジョブに相当する仮想ジョブも、ジョブ管理画面21aに表示されることになる。ただし、突発的な管理外ジョブの実行時間を予測することは難しいため、例えば、ジョブ管理画面21aには、実行時間を既定値(例えば、15分)としてこのような仮想ジョブが表示される。
図22は、CPUリソース競合監視の手順例を示すフローチャートである。
この処理は、前述のステップS64において実行される。
(S80)スケジュール部134は、リソース監視部131によって収集された最新のリソース情報に基づいて、現在の合計CPU使用率が閾値(例えば、90%)を超えているか判断する。合計CPU使用率が閾値を超えている場合はステップS81に処理が進み、それ以外の場合はCPUリソース監視の処理が終了する。
(S81)スケジュール部134は、実行中の突発的な管理外ジョブを検索する。
(S82)スケジュール部134は、合計CPU使用率を実行中のジョブの数で割ることで、ジョブ1つ当たりの平均CPU使用率を算出する。実行中のジョブには、管理ジョブと仮想ジョブと突発的な管理外ジョブとが含まれる。スケジュール部134は、ステップS81で検索された突発的な管理外ジョブのうち、CPU使用率が高い管理外ジョブとして、現在のCPU使用率が平均CPU使用率以上であるものを抽出する。
(S83)スケジュール部134は、ステップS82で該当する管理外ジョブが抽出されたか判断する。該当する管理外ジョブが抽出された場合はステップS84に処理が進み、抽出されなかった場合はCPUリソース競合監視の処理が終了する。
(S84)スケジュール部134は、管理ジョブと管理外ジョブの間で優先度を比較し、管理ジョブの優先度が管理外ジョブより高いか判断する。管理ジョブの優先度が管理外ジョブより高い場合はステップS85に処理が進み、それ以外の場合(管理ジョブの優先度が管理外ジョブの優先度以下である場合)はステップS86に処理が進む。
(S85)スケジュール部134は、ステップS82で抽出された管理外ジョブをサスペンド(一時停止)する。これは、管理ジョブの実行が遅延しないように、管理ジョブを優先的に実行することを意味する。管理外ジョブのサスペンドには、例えば、OS120の機能を利用する。サスペンドされた管理外ジョブは、例えば、合計CPU使用率が十分に低くなったときに再開される。そして、ステップS87に処理が進む。
(S86)スケジュール部134は、実行中の管理ジョブをサスペンドする。これは、管理外ジョブの実行が遅延しないように、管理外ジョブを優先的に実行することを意味する。管理ジョブのサスペンドには、例えば、OS120の機能を利用する。サスペンドされた管理ジョブは、例えば、合計CPU使用率が十分に低くなったときに再開される。
(S87)スケジュール部134は、ステップS82で抽出された管理外ジョブを、仮想ジョブとして仮想ジョブテーブル113に登録する。突発的な管理外ジョブに相当する仮想ジョブも、ジョブ管理画面21aに表示されることになる。
次に、仮想ジョブの実行時の制御について説明する。
図23は、仮想ジョブ制御の手順例を示すフローチャートである。
(S90)仮想ジョブ制御部133は、OS120によるジョブの起動指示を監視し、仮想ジョブテーブル113に登録された何れかの仮想ジョブが起動されたか判断する。仮想ジョブが起動した場合、仮想ジョブ制御部133は当該仮想ジョブに相当するプロセスをフッキング(プロセスの制御を横取り)し、ステップS91に処理が進む。フッキングによって、仮想ジョブに相当するプロセスの前に、スケジューラ130による事前処理を割り込ませることができる。仮想ジョブが起動していない場合、図23のフローが一旦終了し、ステップS90におけるジョブ起動の監視が繰り返される。
(S91)仮想ジョブ制御部133は、現在時刻が、スケジュール部134によって決定された起動予定時刻より早いか判断する。現在時刻が起動予定時刻より早い場合はステップS92に処理が進み、それ以外の場合はステップS94に処理が進む。
(S92)仮想ジョブ制御部133は、ステップS90で検出した仮想ジョブをサスペンド(一時停止)する。仮想ジョブ制御部133がプロセスをフッキングしていることから、制御をプロセスに戻さないことで仮想ジョブをサスペンドすることができる。
(S93)仮想ジョブ制御部133は、スケジュールデータベース110に記憶されたサスペンドジョブテーブル114に、プロセス名とサスペンド時刻と解除予定時刻を登録する。解除予定時刻は、スケジュール部134が決定した起動予定時刻とする。
(S94)仮想ジョブ制御部133は、サスペンドジョブテーブル114を参照して、サスペンドされている仮想ジョブのうち解除予定時刻に達した仮想ジョブを検索する。解除予定時刻に達した仮想ジョブがある場合はステップS95に処理が進み、解除予定時刻に達した仮想ジョブがない場合は仮想ジョブ制御の処理が終了する。
(S95)仮想ジョブ制御部133は、サスペンドしている仮想ジョブを再開(レジューム)する。これにより、仮想ジョブに相当するプロセスに制御が戻る。
(S96)仮想ジョブ制御部133は、サスペンドジョブテーブル114から、再開した仮想ジョブの情報(プロセス名とサスペンド時刻と解除予定時刻)を削除する。
以上、管理ジョブと管理外ジョブとの間のファイル競合およびCPUリソース競合を解消する方法について説明した。ところで、ある仮想ジョブが本日起動されると予測したにもかかわらず、当該仮想ジョブが予測に反して本日起動されないこともあり得る。これは、通常は月初に行う業務を翌日に先送りする場合や、通常は月末に行う業務を前日に前倒しする場合など、ユーザが業務のスケジュールを臨時的に変更した場合に生じ得る。
ある仮想ジョブが予測に反して起動されないとき、当該仮想ジョブに関連する他の仮想ジョブも合わせて起動されなくなることがある。すなわち、複数の仮想ジョブが纏めて起動されなくなる可能性がある。一方、仮想ジョブを考慮してスケジューリングが行われているため、予測に反して複数の仮想ジョブが纏めて起動されなくなると、大量の空きリソースが発生して非効率になってしまう。そこで、ジョブ管理サーバ100は、ある仮想ジョブが起動されなかった場合、当該仮想ジョブと関連する後続の仮想ジョブも起動されない可能性が高いか判定し、起動されない可能性が高い場合は再スケジューリングを行う。
図24は、仮想ジョブ非起動時の再スケジューリング例を示す図である。
スケジュール部134は、ある仮想ジョブが本日起動しないと判定したとき、リソース情報テーブル111に記憶されたリソース情報が示す過去の起動実績に基づいて、当該仮想ジョブ(基準の仮想ジョブ)と依存関係のある後続の仮想ジョブを検索する。依存関係のある後続の仮想ジョブは、次の条件1,2,3の全てを満たすものである。
条件1:基準の仮想ジョブと起動日および非起動日が一致していること。すなわち、過去に基準の仮想ジョブが起動した日には起動しており、過去に基準の仮想ジョブが起動しなかった日には起動していないこと。条件2:基準の仮想ジョブが起動するよりも常に後に起動していること。条件3:基準の仮想ジョブとの間の起動時刻の差が、ほぼ一定であること(例えば、起動時刻の差の変動幅または分散度が閾値以下であること)。なお、条件3に関して、ある日の起動時刻の差が他の日と比べて顕著に長い場合、スケジュール部134は、当該日の合計CPU使用率を確認し、CPUリソース不足がその原因であるか判定してもよい。スケジュール部134は、CPUリソース不足による起動時刻の差の顕著な違いについては無視して、条件3を判定することができる。
そして、スケジュール部134は、次の事象1,2の両方が発生したとき、依存関係のある後続の仮想ジョブが本日起動しないものとして再スケジューリングを行う。事象1:ある仮想ジョブ(基準の仮想ジョブ)が、過去の起動実績における最も遅い起動時刻を経過しても起動しないこと。事象2:基準の仮想ジョブと依存関係のある後続の仮想ジョブのうち最先の仮想ジョブが、その起動予定時刻を経過しても起動しないこと。スケジュール部134は、再スケジューリングにおいて、例えば、依存関係のある後続の仮想ジョブよりも更に後に起動予定であった管理ジョブを前方にシフトする。
例えば、スケジュール部134は、仮想ジョブA,B,C,Dが本日起動すると予測し、仮想ジョブA,B,C,Dと管理ジョブ7のスケジューリングを行ったとする。また、仮想ジョブB,Cは仮想ジョブAと依存関係のある後続の仮想ジョブであり、仮想ジョブB,Cのうち仮想ジョブBが先に起動すると予測したとする。この場合に、仮想ジョブAが起動されず、かつ、仮想ジョブBの起動予定時刻になっても仮想ジョブBが起動されなかった場合、スケジュール部134は、予測に反して仮想ジョブA,B,Cの全てが本日起動されなくなったと判定する。すると、スケジュール部134は、仮想ジョブB,Cが存在しないものとして再スケジューリングする。これにより、スケジュール部134は、管理ジョブ7の起動予定時刻を当初のスケジュールよりも早くすることができる。
ただし、本日起動されなかった複数の仮想ジョブは、予測される周期に該当しない後日(例えば、翌日)に纏めて起動される可能性がある。そこで、スケジュール部134は、本日起動されなかった基準の仮想ジョブと依存関係のある後続の仮想ジョブとを対応付けて、非起動ジョブリスト115に登録しておく。非起動ジョブリスト115は、スケジュールデータベース110に記憶される。
スケジュール部134は、後日、予測しなかった管理外ジョブの起動を検出すると、当該管理外ジョブが先日起動されなかった仮想ジョブとして非起動ジョブリスト115に登録されているか確認する。登録されている場合、スケジュール部134は、非起動ジョブリスト115を参照して、起動された管理外ジョブと依存関係のある後続の管理外ジョブを特定し、依存関係のある後続の管理外ジョブを仮想ジョブとして登録する。そして、スケジュール部134は、登録した仮想ジョブを考慮して再スケジューリングを行う。例えば、スケジュール部134は、再スケジューリングにおいて、依存関係のある後続の仮想ジョブが挿入されたことに伴い管理ジョブを後方にシフトする。
例えば、非起動ジョブリスト115に仮想ジョブA,B,Cが登録されているとする。また、仮想ジョブAに相当する管理外ジョブは本日起動しないと予測していたとする。この場合に、予測に反して仮想ジョブAに相当する管理外ジョブが起動されると、スケジュール部134は、仮想ジョブB,Cに相当する管理外ジョブも本日起動されると判定し、仮想ジョブB,Cを登録する。そして、スケジュール部134は、仮想ジョブB,Cが存在するものとして再スケジューリングする。この結果、スケジュール部134は、管理ジョブ7の起動予定時刻を当初のスケジュールよりも遅くすることがある。
なお、上記では、非起動ジョブリスト115に基準の仮想ジョブとして登録された管理外ジョブが起動したとき、その基準の仮想ジョブと依存関係のある後続の仮想ジョブとして登録された管理外ジョブも本日起動するとみなして再スケジューリングした。これに対し、スケジュール部134は、非起動ジョブリスト115に登録されていない管理外ジョブが起動したときも、当該管理外ジョブと依存関係のある後続の管理外ジョブを検索して本日起動するとみなし、再スケジューリングするようにしてもよい。
第2の実施の形態の情報処理システムによれば、スケジューラ130が管理しない管理外ジョブを考慮してスケジューリングが行われる。よって、管理ジョブと管理外ジョブとの間のCPUリソース競合やファイル競合によって生じる意図しないジョブ遅延を抑制することができる。また、抽出された管理ジョブを仮想ジョブとしてスケジューラ130に登録し可視化することで、ユーザによるスケジュールの確認や調整が容易になる。
また、事前のスケジューリング段階では、管理ジョブを実行予定の時間帯に限定して、管理ジョブに影響のある管理外ジョブが抽出される。よって、全ての管理外ジョブを抽出する場合と比べて、スケジューラ130のスケジューリングの負荷が軽減される。また、管理ジョブの起動予定時刻を変更するにあたり、過去の起動実績から管理ジョブ間の依存関係が推定され、依存関係に応じて起動予定時刻の変更先の候補が限定される。よって、管理ジョブ間の依存関係がユーザによって明示されていなくても、スケジューリングにおいて複数の管理ジョブの間の整合性を維持することができる。
また、管理ジョブまたは管理外ジョブを強制終了するにあたり、強制終了するジョブによってアクセスされたファイルがバックアップファイルを用いてロールバックされる。よって、ファイルアクセスを行うジョブを強制終了しても、ジョブの実行結果とファイルの内容との整合性を維持することができる。また、予測に反してある管理外ジョブが起動されなかった場合や、予測に反してある管理外ジョブが起動された場合に、過去の起動実績から関連する管理外ジョブが推定され、関連する管理外ジョブを含めて再スケジューリングが行われる。よって、起動予測が外れた場合でも早期に適切な対応を取ることができ、CPUリソースの有効活用や意図しないジョブ遅延の抑制を図れる。
なお、前述のように、第1の実施の形態の情報処理は、制御装置10にプログラムを実行させることで実現することができる。また、第2の実施の形態の情報処理は、ジョブ管理サーバ100にプログラムを実行させることで実現することができる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体33)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムを複製して(インストールして)実行してもよい。
10 制御装置
11 記憶部
11a 履歴情報
12 演算部
13a,13b,13c ジョブ

Claims (9)

  1. コンピュータに、
    あるスケジューラに登録された何れかのジョブを情報処理装置で実行する予定の時間帯を特定し
    前記スケジューラに登録されていない1または2以上の他のジョブの実行履歴を示す履歴情報から、特定した前記時間帯に実行された他のジョブの実行履歴を検索し
    検索された前記他のジョブが実行されることによる前記情報処理装置のリソース使用状況を、前記他のジョブの実行履歴に基づいて予測し、
    前記時間帯における予測した前記リソース使用状況が所定の条件を満たす場合、前記スケジューラに登録された前記何れかのジョブおよび少なくとも前記他のジョブの間でスケジューリングを行う、
    処理を実行させる制御プログラム。
  2. 前記履歴情報は、2以上の他のジョブの実行履歴を示し、
    前記スケジューリングは、検索された前記他のジョブに加えて、検索された前記他のジョブと関連する他のジョブを含めて行う、
    請求項1記載の制御プログラム。
  3. コンピュータに、
    あるスケジューラに登録された第1のジョブと異なる、前記スケジューラに登録されていない2以上の第2のジョブの実行履歴を示す履歴情報を取得し、
    前記履歴情報に基づいて、前記第1のジョブを情報処理装置で実行する予定の時間帯における、少なくとも1つの第2のジョブが実行されることによる前記情報処理装置のリソース使用状況を予測し、
    前記時間帯における前記予測したリソース使用状況が所定の条件を満たす場合、前記第1のジョブ前記少なくとも1つの第2のジョブおよび前記少なくとも1つの第2のジョブと関連する他の第2のジョブの間でスケジューリングを行い、
    前記少なくとも1つの第2のジョブの実行の有無を監視し、
    前記時間帯に前記少なくとも1つの第2のジョブが実行されなくなったと判定したとき、前記他の第2のジョブも実行されないと仮定して再スケジューリングを行う、
    処理を実行させる制御プログラム。
  4. コンピュータに、
    あるスケジューラに登録された第1のジョブと異なる、前記スケジューラに登録されていない1または2以上の第2のジョブの実行履歴を示す履歴情報を取得し、
    前記履歴情報に基づいて、前記第1のジョブを情報処理装置で実行する予定の時間帯における、少なくとも1つの第2のジョブが実行されることによる前記情報処理装置のリソース使用状況を予測し、
    前記時間帯における前記予測したリソース使用状況が所定の条件を満たす場合、前記第1のジョブおよび前記少なくとも1つの第2のジョブの間でスケジューリングを行い、
    前記スケジューリングによって前記第1のジョブを実行する予定の時間帯をシフトした場合、前記シフト後の時間帯における他のリソース使用状況を予測し、
    前記予測した他のリソース使用状況に応じて再スケジューリングを行う、
    処理を実行させる制御プログラム。
  5. コンピュータに、
    あるスケジューラに登録された第1のジョブと異なる、前記スケジューラに登録されていない1または2以上の第2のジョブの実行履歴を示す履歴情報を取得し、
    前記履歴情報に基づいて、前記第1のジョブを情報処理装置で実行する予定の時間帯における、少なくとも1つの第2のジョブが実行されることによる前記情報処理装置のリソース使用状況を予測し、
    前記時間帯における前記予測したリソース使用状況が所定の条件を満たす場合、前記第1のジョブおよび前記少なくとも1つの第2のジョブの間でスケジューリングを行い、
    前記少なくとも1つの第2のジョブが前記スケジューリングにより決定された実行開始時刻より早く起動した場合、前記少なくとも1つの第2のジョブをサスペンドする、
    処理を実行させる制御プログラム。
  6. 前記所定の条件は、前記第1のジョブと前記少なくとも1つの第2のジョブとが並行して同一ファイルにアクセスすること、および、前記第1のジョブと前記少なくとも1つの第2のジョブの負荷の合計が閾値を超えることの少なくとも一方を含む、
    請求項3乃至5の何れか一項に記載の制御プログラム。
  7. 前記第1のジョブのスケジュールを示す画面情報に、前記少なくとも1つの第2のジョブの予測されるスケジュールを付加して出力する、
    請求項3乃至5の何れか一項に記載の制御プログラム。
  8. コンピュータが実行する制御方法であって、
    あるスケジューラに登録された何れかのジョブを情報処理装置で実行する予定の時間帯を特定し
    前記スケジューラに登録されていない1または2以上の他のジョブの実行履歴を示す履歴情報から、特定した前記時間帯に実行された他のジョブの実行履歴を検索し
    検索された前記他のジョブが実行されることによる前記情報処理装置のリソース使用状況を、前記他のジョブの実行履歴に基づいて予測し、
    前記時間帯における予測した前記リソース使用状況が所定の条件を満たす場合、前記スケジューラに登録された前記何れかのジョブおよび少なくとも前記他のジョブの間でスケジューリングを行う、
    制御方法。
  9. るスケジューラに登録されていない1または2以上の他のジョブの実行履歴を示す履歴情報を記憶する記憶部と、
    前記スケジューラに登録された何れかのジョブを情報処理装置で実行する予定の時間帯を特定し、
    前記履歴情報から、特定した前記時間帯に実行された他のジョブの実行履歴を検索し、
    検索された前記他のジョブが実行されることによる前記情報処理装置のリソース使用状況を、前記他のジョブの実行履歴に基づいて予測し、
    前記時間帯における予測した前記リソース使用状況が所定の条件を満たす場合、前記スケジューラに登録された前記何れかのジョブおよび少なくとも前記他のジョブの間でスケジューリングを行う、演算部と、
    を有する制御装置。
JP2013178785A 2013-08-30 2013-08-30 制御プログラム、制御方法および制御装置 Active JP6241144B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013178785A JP6241144B2 (ja) 2013-08-30 2013-08-30 制御プログラム、制御方法および制御装置
US14/473,480 US9658883B2 (en) 2013-08-30 2014-08-29 Method and apparatus for controlling job schedule

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013178785A JP6241144B2 (ja) 2013-08-30 2013-08-30 制御プログラム、制御方法および制御装置

Publications (2)

Publication Number Publication Date
JP2015049550A JP2015049550A (ja) 2015-03-16
JP6241144B2 true JP6241144B2 (ja) 2017-12-06

Family

ID=52585169

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013178785A Active JP6241144B2 (ja) 2013-08-30 2013-08-30 制御プログラム、制御方法および制御装置

Country Status (2)

Country Link
US (1) US9658883B2 (ja)
JP (1) JP6241144B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442760B2 (en) * 2014-10-03 2016-09-13 Microsoft Technology Licensing, Llc Job scheduling using expected server performance information
US10243848B2 (en) 2015-06-27 2019-03-26 Nicira, Inc. Provisioning logical entities in a multi-datacenter environment
US20170032000A1 (en) * 2015-07-28 2017-02-02 Bank Of America Corporation Database manager
US10423790B2 (en) * 2016-08-09 2019-09-24 Nicira, Inc. Intelligent identification of stressed machines for data security management
CN106445640B (zh) * 2016-10-20 2019-06-18 南京南瑞继保电气有限公司 一种嵌入式虚拟装置运行方法和系统
EP3549018B1 (en) 2016-11-29 2021-04-07 Telefonaktiebolaget LM Ericsson (publ) Distribution of resources among actor instances
US11409567B2 (en) * 2017-10-13 2022-08-09 Huawei Technologies Co., Ltd. Application management method and terminal
JP7070119B2 (ja) * 2018-06-08 2022-05-18 コニカミノルタ株式会社 画像処理装置、その制御方法、およびプログラム
KR102641520B1 (ko) * 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
KR102638531B1 (ko) * 2018-11-15 2024-02-19 삼성전자주식회사 컴퓨팅 장치 및 컴퓨팅 장치의 동작 방법
CN109901926A (zh) * 2019-01-25 2019-06-18 平安科技(深圳)有限公司 基于大数据行为调度应用任务的方法、服务器及存储介质
US10956215B2 (en) * 2019-02-18 2021-03-23 International Business Machines Corporation Predictive job admission control with feedback
US11099891B2 (en) * 2019-04-22 2021-08-24 International Business Machines Corporation Scheduling requests based on resource information
CN114026837A (zh) * 2019-07-05 2022-02-08 维萨国际服务协会 使用ai调用预测和缓存的方法和系统
US11777793B2 (en) 2020-04-06 2023-10-03 Vmware, Inc. Location criteria for security groups
US11374817B2 (en) 2020-04-06 2022-06-28 Vmware, Inc. Determining span of logical network element
US11675634B2 (en) * 2020-05-29 2023-06-13 EMC IP Holding Company LLC Finding the optimum time to prestart container running functions using events
US11567811B2 (en) * 2020-09-28 2023-01-31 Red Hat, Inc. Detecting multiple operator pattern services making conflicting resource modifications

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6889243B1 (en) * 1995-04-13 2005-05-03 Hitachi, Ltd. Job scheduling analysis method and system using historical job execution data
FR2766592B1 (fr) 1997-07-23 1999-08-27 Bull Sa Dispositif et procede de regulation dynamique de l'attribution des ressources sur un systeme informatique
FR2769105B1 (fr) 1997-09-30 1999-10-29 Bull Sa Dispositif et procede de prise en compte de l'execution d'une tache sur un systeme informatique
US6615316B1 (en) * 2000-11-16 2003-09-02 International Business Machines, Corporation Using hardware counters to estimate cache warmth for process/thread schedulers
US20030018952A1 (en) * 2001-07-13 2003-01-23 Roetzheim William H. System and method to estimate resource usage for a software development project
US7647591B1 (en) * 2001-09-26 2010-01-12 Palmsource Inc. Method for dynamically enabling the expansion of a computer operating system
US20030191681A1 (en) * 2003-05-06 2003-10-09 Gallion Kirk P. Method for managing a business process related to a document publishing project
JP3936924B2 (ja) 2003-06-18 2007-06-27 株式会社日立製作所 ジョブスケジューリング方法及びシステム
US8856793B2 (en) * 2004-05-11 2014-10-07 International Business Machines Corporation System, method and program for scheduling computer program jobs
JP4405884B2 (ja) * 2004-09-22 2010-01-27 キヤノン株式会社 描画処理回路、及び画像出力制御装置
US7562026B2 (en) * 2004-11-12 2009-07-14 Siemens Medical Solutions Usa, Inc. Healthcare procedure and resource scheduling system
US20060150188A1 (en) * 2004-12-21 2006-07-06 Manuel Roman Method and apparatus for supporting soft real-time behavior
JP2006268507A (ja) 2005-03-24 2006-10-05 Nomura Research Institute Ltd ジョブ管理装置、ジョブ管理システムおよびジョブ管理方法
JP4074296B2 (ja) * 2005-03-25 2008-04-09 株式会社東芝 スケジューリング可能性判定方法、リアルタイムシステム及びプログラム
JP4856983B2 (ja) * 2006-03-02 2012-01-18 株式会社日立製作所 ストレージシステム及びスケジューリング方法
US8719825B2 (en) * 2005-08-17 2014-05-06 Sap Ag Prompting for execution or delay of scheduled job
JP2009230322A (ja) * 2008-03-21 2009-10-08 Hitachi Software Eng Co Ltd ジョブ管理システム
JP5270209B2 (ja) * 2008-03-31 2013-08-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のタスクの進捗を管理するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
JP2010186347A (ja) 2009-02-12 2010-08-26 Nec Software Kyushu Ltd ジョブスケジューリングシステム、ジョブスケジューリング方法及びプログラム
JP5459579B2 (ja) 2009-02-24 2014-04-02 日本電気株式会社 ジョブ管理システム、その方法及びそのプログラム
US8713578B2 (en) * 2009-03-25 2014-04-29 International Business Machines Corporation Managing job execution
JP2011107992A (ja) * 2009-11-18 2011-06-02 Hitachi Ltd ジョブスケジュール変更管理システム
EP2369478A1 (en) * 2010-02-22 2011-09-28 Telefonaktiebolaget L M Ericsson (PUBL) Technique of scheduling tasks in a system
TWI409701B (zh) * 2010-09-02 2013-09-21 Univ Nat Central Execute the requirements registration and scheduling method
JP5441179B2 (ja) * 2010-09-30 2014-03-12 株式会社日立ソリューションズ ジョブ実行管理システム
US8621477B2 (en) * 2010-10-29 2013-12-31 International Business Machines Corporation Real-time monitoring of job resource consumption and prediction of resource deficiency based on future availability
JP5614279B2 (ja) 2010-12-24 2014-10-29 富士通株式会社 ジョブネット組替装置、ジョブネット組替プログラム及びジョブネット組替方法
JP5652718B2 (ja) * 2011-03-11 2015-01-14 日本電気株式会社 バッチ処理制御装置、バッチ処理制御方法およびバッチ処理制御プログラム
US8997107B2 (en) * 2011-06-28 2015-03-31 Microsoft Technology Licensing, Llc Elastic scaling for cloud-hosted batch applications
US8793696B2 (en) * 2011-10-13 2014-07-29 Google, Inc. Dynamic scheduling for frames representing views of a geographic information environment
WO2013059924A1 (en) * 2011-10-26 2013-05-02 Godwin Liu System and method for managing project, process, and meeting tasks over a network
US10552774B2 (en) * 2013-02-11 2020-02-04 Amazon Technologies, Inc. Cost-minimizing task scheduler
US9342355B2 (en) * 2013-06-20 2016-05-17 International Business Machines Corporation Joint optimization of multiple phases in large data processing

Also Published As

Publication number Publication date
US9658883B2 (en) 2017-05-23
US20150067688A1 (en) 2015-03-05
JP2015049550A (ja) 2015-03-16

Similar Documents

Publication Publication Date Title
JP6241144B2 (ja) 制御プログラム、制御方法および制御装置
US8856793B2 (en) System, method and program for scheduling computer program jobs
US10061577B2 (en) System and method for optimizing job scheduling within program builds
US8185903B2 (en) Managing system resources
US7685285B2 (en) Method and apparatus for managing executions of a management program within a data processing system
US8943252B2 (en) Latency sensitive software interrupt and thread scheduling
JP6191301B2 (ja) 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム
EP2372547A1 (en) A system and method for supplementing program builds with file usage information.
US20080189712A1 (en) Monitoring performance on workload scheduling systems
US20140068613A1 (en) Non-transitory computer-readable storage medium, information processing apparatus and scheduling method
JP2004295469A (ja) ポリシールールの生成方法およびそれを用いたジョブ運用管理方法
JP6342070B2 (ja) ジョブ管理装置及びジョブ管理方法及びジョブ管理プログラム
JP2016151852A (ja) 実行情報通知プログラム、情報処理装置および情報処理システム
JP2007272692A (ja) プロファイリングプログラムおよびプロファイリング方法
US9697009B2 (en) Method for improving the performance of computers
JP2015026197A (ja) ジョブ遅延検知方法、情報処理装置、およびプログラム
JP2005011023A (ja) ジョブスケジューリング方法及びシステム
JP4170675B2 (ja) メモリ使用容量の監視方法及び計算機システム
JP2009087190A (ja) ストリームデータ解析高速化装置、方法およびプログラム
JP4992740B2 (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
JP2005099973A (ja) 運用管理システム
JP2006268509A (ja) ジョブ設定装置およびジョブ設定方法
JP6439559B2 (ja) 計算機システム、計算機、ジョブ実行時刻予測方法及びジョブ実行時刻予測プログラム
Rauschmayr et al. Profiling deep learning workloads at scale using amazon sagemaker
JP2009048358A (ja) 情報処理装置及びスケジューリング方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170328

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171023

R150 Certificate of patent or registration of utility model

Ref document number: 6241144

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150