(57)【要約】【課題】優先順位及びシステム負荷を考慮した、効率の良いジョブスケジューリングシステムの提供。【解決手段】コンピュータに、ジョブの実行優先度を示すジョブクラス毎に、同時に実行可能なジョブの数を示すジョブ実行多重度を設定したジョブクラステーブルと、前記ジョブクラスを指定して実行要求を受けたジョブを管理するジョブ実行管理テーブルと、システム全体のジョブ実行多重度とをそれぞれ記憶させておく。コンピュータは、同時に実行しているジョブの数を判別し、前記ジョブ管理テーブルに登録された実行待ちジョブの中から、前記システム全体及びジョブクラス毎のジョブ実行多重度を超えない範囲で、実行優先度の高いジョブを選択して実行する。【選択図】図５
2010186347.tif 000002
【特許請求の範囲】
【請求項１】
同時に実行しているジョブの数を判別する手段と、
ジョブの実行優先度を示すジョブクラス毎に、同時に実行可能なジョブの数を示すジョブ実行多重度を設定したジョブクラステーブルと、前記ジョブクラスを指定して実行要求を受けたジョブを管理するジョブ実行管理テーブルと、システム全体のジョブ実行多重度とをそれぞれ記憶する手段と、を備え、
前記ジョブ管理テーブルに登録された実行待ちジョブの中から、前記システム全体及びジョブクラス毎のジョブ実行多重度を超えない範囲で、実行優先度の高いジョブを選択して実行するジョブスケジューリングシステム。
【請求項２】
更に、システムの負荷状況を監視する手段を備え、
システムの負荷が大きい場合は、ジョブ実行多重度を超えていない場合であっても、ジョブの実行を抑止する請求項１に記載のジョブスケジューリングシステム。
【請求項３】
ジョブクラス毎に、当該ジョブクラスのジョブの実行判断に、ジョブ実行多重度を用いるか否かを設定可能である請求項１又は２に記載のジョブスケジューリングシステム。
【請求項４】
ジョブクラス毎に、当該ジョブクラスのジョブの実行判断に、システムの負荷を用いるか否かを設定可能である請求項２又は３に記載のジョブスケジューリングシステム。
【請求項５】
ジョブを実行するか否かの判定を行う度に、前記ジョブクラステーブルを読み出す請求項２から４いずれか一のジョブスケジューリングシステム。
【請求項６】
前記システムの負荷状況として、ＣＰＵ使用率、メモリ使用率、ロードアベレージ、入出力の状態のいずれか一以上の項目を監視する請求項２から５いずれか一のジョブスケジューリングシステム。
【請求項７】
ジョブの実行優先度を示すジョブクラス毎に、同時に実行可能なジョブの数を示すジョブ実行多重度を設定したジョブクラステーブルと、前記ジョブクラスを指定して実行要求を受けたジョブを管理するジョブ実行管理テーブルと、システム全体のジョブ実行多重度とをそれぞれ記憶する工程と、
同時に実行しているジョブの数を判別する工程と、
前記ジョブ管理テーブルに登録された実行待ちジョブの中から、前記システム全体及びジョブクラス毎のジョブ実行多重度を超えない範囲で、実行優先度の高いジョブを選択して実行する工程と、を含むジョブスケジューリング方法。
【請求項８】
同時に実行しているジョブの数を判別する手段と、
ジョブの実行優先度を示すジョブクラス毎に、同時に実行可能なジョブの数を示すジョブ実行多重度を設定したジョブクラステーブルと、前記ジョブクラスを指定して実行要求を受けたジョブを管理するジョブ実行管理テーブルと、システム全体のジョブ実行多重度とを参照して、前記ジョブ管理テーブルに登録された実行待ちジョブの中から、前記システム全体及びジョブクラス毎のジョブ実行多重度を超えない範囲で、実行優先度の高いジョブを選択して実行する手段と、の前記各手段としてコンピュータを機能させるジョブスケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおけるジョブのスケジューリングを行うジョブスケジューリングシステム、ジョブスケジューリング方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１にシステムの負荷状況に応じて、ジョブ入力キュー毎のジョブ実行多重度を変更するジョブスケジュール方式が開示されている。同文献によれば、システム負荷に応じてジョブ実行多重度を動的に変更することにより、システムの全体のスループット及び性能の向上と、システム管理者の負担軽減が実現できるとされている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−１７３８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記した特許文献１のジョブスケジュール方式では、ジョブ入力キューに投入（サブミット）された順番でジョブが実行されるため、緊急性のあるジョブを優先して実行することができないという問題点がある。
【０００５】
一方、優先度に基づいてジョブを実行していく方式では、システムにも思いがけない負荷を与えてしまう事態を避けるため、システム管理者が、ジョブの実行多重度等を調整する必要が生じてしまう。
【０００６】
本発明は、上記した事情に鑑みてなされたものであって、システム管理者に負担を掛けることなく、ジョブの優先度を考慮して、効率よくジョブを選択・実行することのできるジョブスケジューリングシステム、ジョブスケジューリング方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の第１の視点によれば、同時に実行しているジョブの数を判別する手段と、ジョブの実行優先度を示すジョブクラス毎に、同時に実行可能なジョブの数を示すジョブ実行多重度を設定したジョブクラステーブルと、前記ジョブクラスを指定して実行要求を受けたジョブを管理するジョブ実行管理テーブルと、システム全体のジョブ実行多重度とをそれぞれ記憶する手段と、を備え、前記ジョブ管理テーブルに登録された実行待ちジョブの中から、前記システム全体及びジョブクラス毎のジョブ実行多重度を超えない範囲で、実行優先度の高いジョブを選択して実行するジョブスケジューリングシステムが提供される。
【０００８】
本発明の第２の視点によれば、ジョブの実行優先度を示すジョブクラス毎に、同時に実行可能なジョブの数を示すジョブ実行多重度を設定したジョブクラステーブルと、前記ジョブクラスを指定して実行要求を受けたジョブを管理するジョブ実行管理テーブルと、システム全体のジョブ実行多重度とをそれぞれ記憶する工程と、同時に実行しているジョブの数を判別する工程と、前記ジョブ管理テーブルに登録された実行待ちジョブの中から、前記システム全体及びジョブクラス毎のジョブ実行多重度を超えない範囲で、実行優先度の高いジョブを選択して実行する工程と、を含むジョブスケジューリング方法が提供される。
【０００９】
本発明の第３の視点によれば、同時に実行しているジョブの数を判別する手段と、ジョブの実行優先度を示すジョブクラス毎に、同時に実行可能なジョブの数を示すジョブ実行多重度を設定したジョブクラステーブルと、前記ジョブクラスを指定して実行要求を受けたジョブを管理するジョブ実行管理テーブルと、システム全体のジョブ実行多重度とを参照して、前記ジョブ管理テーブルに登録された実行待ちジョブの中から、前記システム全体及びジョブクラス毎のジョブ実行多重度を超えない範囲で、実行優先度の高いジョブを選択して実行する手段と、の前記各手段としてコンピュータを機能させるジョブスケジューリングプログラムが提供される。
【発明の効果】
【００１０】
本発明によれば、システムのパフォーマンスを確保しつつ、優先したいジョブを先に動かすことが可能となる。また、上記実行するジョブの選択はジョブクラステーブルやシステム全体のジョブ実行多重度に基づいて自動的に行われるため、システム管理者に特段の操作を強いるようなこともない。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態の構成を示すブロック図である。
【図２】ある時点のジョブ実行管理テーブルの例である。
【図３】ジョブクラステーブルの例である。
【図４】ジョブ実行閾値の設定例である。
【図５】本発明の第１の実施形態の動作を表したフローチャートである。
【図６】本発明の具体的実施形態を説明するためのジョブ実行閾値である。
【図７】本発明の具体的実施形態を説明するためのジョブクラステーブルである。
【図８】本発明の具体的実施形態におけるジョブ実行管理テーブルの遷移を説明するための図である。
【図９】本発明の具体的実施形態におけるジョブ実行管理テーブルの遷移を説明するための図である。
【図１０】本発明の具体的実施形態におけるジョブ実行管理テーブルの遷移を説明するための図である。
【図１１】本発明の具体的実施形態におけるジョブ実行管理テーブルの遷移を説明するための図である。
【発明を実施するための形態】
【００１２】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施形態の構成を示すブロック図である。図１を参照すると、ジョブスケジューリングプログラム１と、実行されている個プロセスのジョブ（実行ジョブ）２と、ジョブをサブミットする専用プログラム（ジョブサブミットプログラム）３と、ジョブ実行管理テーブル４と、ジョブクラステーブル５と、ジョブ実行閾値記憶手段６と、システム情報取得手段７とが、示されている。
【００１３】
ジョブスケジューリングプログラム１は、ジョブクラステーブル５、ジョブ実行閾値記憶手段６に記憶された内容及びシステム情報取得手段７から入力されたシステム情報を参照して、ジョブ実行管理テーブル４に登録された実行待ちジョブの中から、後記する条件を満たすジョブを選択して別プロセスとして実行する動作を行う。ジョブスケジューリングプログラム１は、コンピュータ１００のメモリに常駐しているプログラムであり、ジョブクラステーブル５やジョブ実行閾値記憶手段６が更新されると、直ちに、更新された設定を適用して動作することが可能となっている。
【００１４】
ジョブサブミットプログラム３は、ジョブ実行管理テーブル４に対して、ジョブクラスが指定されたジョブの実行情報を書き込むものである。
【００１５】
ジョブ実行管理テーブル４は、ジョブクラスを指定して実行要求を受けたジョブを管理するために用いるテーブルである。図２は、ある時点のジョブ実行管理テーブル４の例である。図２を参照すると、ジョブクラス「１」が設定されたジョブ識別子Ａのジョブと、ジョブクラス「２」が設定されたジョブ識別子Ｂのジョブとが、それぞれジョブ実行管理テーブル４に登録され、実行された状態となっている。ここでは、ジョブクラス「１」のジョブの方が、ジョブクラス「２」のジョブよりも実行優先度が高いものとする。
【００１６】
ジョブクラステーブル５は、ジョブクラスから、同時に実行可能なジョブの数を示すジョブ実行多重度等を求めるために用いるテーブルである。図３は、ジョブクラステーブル５の例である。図３の例では、各ジョブクラスに、当該ジョブクラスが許容する実行多重度、優先度、システム負荷考慮の有無、（実行）多重度の考慮の有無を設定することが可能となっている。
【００１７】
なお、図３の例では、ジョブクラスをそのまま優先度として用いるのではなく、ジョブクラスの分布やその他の優先度情報による優先順位の計算を行う等を考慮して各ジョブクラスに適切な優先度を設定することが可能となっている。また、システム負荷考慮は、該当するジョブを実行するか否かを判断する際に、システムの負荷状況を考慮するか否かを示す（０＝考慮しない／１＝考慮する）。また、多重度考慮は、該当するジョブを実行するか否かを判断する際に、システム全体のジョブ多重度を考慮するか否かを示す（０＝考慮しない／１＝考慮する）。従って、図３の例では、ジョブクラス０は、最も優先度が高く、システム負荷やシステム全体のジョブ多重度に拘らず実行される最高優先順位のジョブとして取り扱われる。
【００１８】
なお、図３のジョブクラス０の例では、システム負荷考慮＝０（考慮しない）、多重度考慮＝０（考慮しない）と設定し、ジョブクラス１以下の例では、システム負荷考慮＝１（考慮する）、多重度考慮＝１（考慮する）と設定されているが、特定のジョブクラスについて、システム負荷考慮、多重度考慮のいずれか一方を０（考慮しない）又は１（考慮する）と設定することも可能である。これにより、システムに柔軟性を持たせることが可能になる。
【００１９】
ジョブ実行閾値記憶手段６には、該当するジョブを実行するか否かを判断する際に用いるシステム負荷やシステム全体のジョブ多重度の閾値が記憶される。ジョブ実行閾値記憶手段６は、ジョブスケジューリングプログラム１の設定ファイルに、これら閾値を記憶させることにより実現することができる。図４は、ジョブ実行閾値の例である。図４の例では、システム負荷閾値として、ＣＰＵ負荷（％）、ロードアベレージ、物理メモリ使用量（％）、仮想メモリ使用量（％）、ディスク負荷（％）といった項目が設けられている。また、全体多重度は、システム全体のジョブ実行多重度の閾値を示す。例えば、システム負荷考慮有りで、ＣＰＵ負荷が８０％を超えている場合は、該当するジョブの実行が抑止される。同様に、（ジョブ実行）多重度考慮有りで、ジョブ実行多重度が１５を超えている場合は、該当するジョブの実行が抑止される。
【００２０】
システム情報取得手段７は、上記したＣＰＵ負荷、ロードアベレージ、物理メモリ使用量、仮想メモリ使用量、ディスク負荷といったシステム負荷状況や、同時に実行しているジョブの数を取得（判別）して、ジョブスケジューリングプログラム１に渡す手段である。具体的には、コンピュータ１００に搭載されているＯＳ（オペレーティングシステム）の該当する機能や専用プログラムにより実現することができる。
【００２１】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図５は、ジョブスケジューリングプログラム１により、所定の時間間隔で実行される処理を表したフローチャートである。
【００２２】
図５を参照すると、コンピュータ１００は、ジョブ実行管理テーブル４に、新規ジョブが登録されているか否かを確認する（ステップＳ１）。
【００２３】
ジョブ実行管理テーブル４に、新規ジョブが登録されている場合は（ステップＳ１の「Ｙｅｓ」）、コンピュータ１００は、ジョブ実行管理テーブル４から、優先度の最も高い実行待ちジョブを選択し、ジョブクラステーブル５から該当するジョブクラスのデータの読み込みを行う（ステップＳ２、Ｓ３）。
【００２４】
前記読み込んだジョブクラスが、最優先のジョブクラスの場合は、コンピュータ１００は、即座にジョブ実行を行う（ステップＳ４の「Ｙｅｓ」）。
【００２５】
前記読み込んだジョブクラスが、最優先のジョブクラス以外である場合（ステップＳ４の「Ｎｏ」）、コンピュータ１００は、ジョブ実行閾値記憶手段６からジョブ実行閾値を読み出すとともに、システム情報取得手段７からシステム負荷状況や、同時に実行しているジョブの数を取得する（ステップＳ５）。
【００２６】
次に、コンピュータ１００は、ジョブクラステーブル５のシステム負荷考慮設定を確認した上で、読み出したシステム負荷状況が、ジョブ実行閾値に設定された各項目の閾値を上回っているか否かを確認する（ステップＳ６）。ここで、ジョブ実行閾値に設定された各項目の閾値を上回っている項目があれば、コンピュータ１００は、該当するジョブを実行せずに、ステップＳ１に戻る（ステップＳ６の「Ｎｏ」）。
【００２７】
次に、コンピュータ１００は、ジョブクラステーブル５の多重度考慮設定を確認した上で、同時に実行しているジョブの数が、ジョブ実行閾値に設定された全体多重度を上回っているか否かを確認する（ステップＳ７）。ここで、同時に実行しているジョブの数が全体多重度を上回っている場合、コンピュータ１００は、該当するジョブを実行せずに、ステップＳ１に戻る（ステップＳ７の「Ｎｏ」）。
【００２８】
次に、コンピュータ１００は、ジョブ実行管理テーブル４に、より優先度の高いジョブが登録されていないこと、及び、同時に実行しているジョブの数がジョブクラステーブル５の該当ジョブクラスの実行多重度を上回っているか否かを確認する（ステップＳ８）。ここで、ジョブ実行管理テーブル４に、より優先度の高いジョブが登録されている場合や、同時に実行しているジョブの数が該当するジョブクラスの実行多重度を上回っている場合は、コンピュータ１００は、該当するジョブを実行せずに、ステップＳ１に戻る（ステップＳ８の「Ｎｏ」）。
【００２９】
上記ステップＳ４で最優先のジョブクラスであることを確認できた場合、及び、上記ステップＳ６〜８のすべてのジョブ実行条件を満たすことが確認できた場合、コンピュータ１００は、該当するジョブを、別プロセスとして実行する（ステップＳ９）。
【００３０】
以上のように、本実施形態によれば、システム管理者の負担を増大させることなく、優先したいジョブを先に動かすことができる。また、本実施形態によれば、ジョブ運用の柔軟性も向上する。これらの効果が得られる理由は、各ジョブクラスの優先順位及びクラス毎の実行多重度を設定可能としたジョブクラステーブルを用意し、ジョブに付与されたジョブクラスを参照して、自動的にジョブを実行するか否かを判断するよう構成したことにある。
【００３１】
また、本実施形態では、システム全体の負荷状態も監視項目に入れているため、システムのパフォーマンスを最適化することができる。
【００３２】
［具体的実施態様１］
続いて、上記本発明の第１の実施形態の作用効果をより具体的に説明すべく、図６〜図１１を用いて詳細に説明する。
【００３３】
図６は、ジョブ実行閾値の別の具体例である。図４に示したジョブ実行閾値との相違点は、全体多重度閾値が、説明を短くするため、４となっている点である。
【００３４】
図７は、ジョブクラステーブルの別の具体例である。図３に示したジョブクラステーブルとの相違点は、ジョブクラスとして０〜９の１０段階が設けられている点、優先度がジョブクラスと一致している点などである。
【００３５】
いま、図８に示すとおり、ジョブ実行管理テーブル４に、ジョブＣ、Ｄ、Ｅ、Ｆの４つ実行中のジョブが登録されている状態で、ジョブＡ、ジョブＢの新規ジョブが登録されたものとする。
【００３６】
コンピュータ１００は、ジョブ実行管理テーブル４に登録されているジョブの中から、優先度の高いジョブＡを選択し、ジョブクラステーブル５から該当するジョブクラス（０）のデータの読み込みを行う。
【００３７】
ジョブＡは、最優先のジョブクラス（０）であるため、図９に示すとおり、システム負荷状況やシステム全体の実行多重度を考慮することなく即座に実行される。
【００３８】
次に、コンピュータ１００は、ジョブ実行管理テーブル４に登録されているジョブの中から、ジョブＢを選択し、ジョブクラステーブル５から該当するジョブクラス（３）のデータの読み込みを行う。
【００３９】
ジョブＢは、最優先のジョブクラスでないため、コンピュータ１００は、ジョブ実行閾値記憶手段６からジョブ実行閾値（ＣＰＵ負荷閾値＝８０（％）、ロードアベレージ閾値＝４、物理メモリ使用量閾値＝８０（％）、仮想メモリ使用量閾値＝８０（％）、ディスク負荷閾値＝８０（％）、全体多重度閾値＝４）を読み出すとともに、システム情報取得手段７からシステム負荷状況等を取得する。
【００４０】
ここでは、システム負荷状況が上述したジョブ実行閾値を上回っていないものとする。しかしながら、図９に示すとおり、同時に実行しているジョブの数がジョブＣ、Ｄ、Ｅ、Ｆ、Ａの５つであり、システム全体の実行多重度閾値＝４を上回っているため、ジョブＢの実行は抑止される。
【００４１】
所定の時間後に、図１０に示すように、実行しているジョブＣ、Ｄが終了したものとする。これにより、図１０に示すとおり、同時に実行しているジョブの数がジョブＥ、Ｆ、Ａの３つとなり、ジョブ実行閾値により定められたジョブ実行条件を満たされることになった。
【００４２】
次に、コンピュータ１００は、ジョブ実行管理テーブル４に、より優先度の高いジョブが登録されておらず、及び、同時に実行している該当ジョブクラスのジョブの数が１つ（ジョブＥ）であり、ジョブクラステーブル５の該当ジョブクラス（３）の実行多重度＝２（図７参照）を上回っていないと判断する。
【００４３】
以上の結果、コンピュータ１００は、図１１に示すとおり、ジョブＢを別プロセスとして実行する。
【００４４】
以上、本発明の好適な実施形態及びその具体的実施態様を説明したが、本発明は、上記した実施形態やその具体的実施態様に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。
【００４５】
例えば、図５に示したフローチャートのステップＳ６〜Ｓ８は、順序を変えることができる。また、図２〜図４、図６〜図１１に例示したテーブルの項目の一部を省略したり、追加することもできる。例えば、図４、図６の例では、ディスク負荷閾値を用いているが、その他入出力の状態によるジョブ実行条件（閾値）を設けてもよい。
【００４６】
また、例えば、同一や隣接するジョブクラスの新規ジョブが複数登録されている場合には、ジョブの実行見込時間やジョブの種類等のその他の優先度を求めるための情報を用いて、所定のスコア計算を行って、先に実行すべきジョブを決定するようにしてもよい。
【符号の説明】
【００４７】
１    ジョブスケジューリングプログラム
２    実行ジョブ
３    ジョブサブミットプログラム
４    ジョブ実行管理テーブル
５    ジョブクラステーブル
６    ジョブ実行閾値記憶手段
７    システム情報取得手段
１００  コンピュータ
【図１】
2010186347.tif 000003
【図２】
2010186347.tif 000004
【図３】
2010186347.tif 000005
【図４】
2010186347.tif 000006
【図５】
2010186347.tif 000007
【図６】
2010186347.tif 000008
【図７】
2010186347.tif 000009
【図８】
2010186347.tif 000010
【図９】
2010186347.tif 000011
【図１０】
2010186347.tif 000012
【図１１】
2010186347.tif 000013