(57)【要約】【課題】複数の処理実行資源Ａ１〜Ａ４を有する情報処理システムで、複数の処理実行資源を効率的に使用する。【解決手段】処理対象の実行に要する負荷及び緊急度を検出し、各処理実行資源について負荷の許容量を検出し、緊急度が高い場合には全ての処理実行資源のいずれかにおいて処理対象の負荷が許容量以下かを判定してそうであれば実行させそうでなければ第１のテーブルに待機させ、緊急度が低い場合には一部の処理実行資源のいずれかにおいて処理対象の負荷が許容量以下かを判定してそうであれば実行させそうでなければ第２のテーブルに待機させ、第１のテーブルを第２のテーブルより優先させて待機させられた処理対象を空いた処理実行資源に割り当てる。【選択図】  図１
2007156976.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理実行資源を有し、処理対象を当該処理対象を実行すべき処理実行資源に割り当てて、当該処理実行資源により当該処理対象を実行させる情報処理システムにおいて、
実行に要する負荷及び緊急度が設定された処理対象について当該負荷及び当該緊急度を検出する処理対象検出手段と、
前記複数の処理実行資源のそれぞれについて負荷の上限に達するまでに許容される負荷の量を検出する許容量検出手段と、
前記処理対象検出手段により検出された緊急度が所定の閾値以上である場合又は所定の閾値を越える場合に、前記複数の処理実行資源の全てのうちのいずれかの処理実行資源において前記処理対象検出手段により検出された負荷が前記許容量検出手段により検出された量以下であるか否かを判定し、当該量以下であると判定したときには当該処理実行資源により前記処理対象を実行させる一方、当該量を越えると判定したときには前記処理対象を第１のテーブルに待機させる第１の制御手段と、
前記処理対象検出手段により検出された緊急度が所定の閾値未満である場合又は所定の閾値以下である場合に、前記複数の処理実行資源の一部のうちのいずれかの処理実行資源において前記処理対象検出手段により検出された負荷が前記許容量検出手段により検出された量以下であるか否かを判定し、当該量以下であると判定したときには当該処理実行資源により前記処理対象を実行させる一方、当該量を越えると判定したときには前記処理対象を第２のテーブルに待機させる第２の制御手段と、
前記第１のテーブルに待機させられた処理対象を前記第２のテーブルに待機させられた処理対象と比べて優先させて、各処理実行資源による処理の実行状況に応じて、待機させられた処理対象を空いた処理実行資源に割り当てて当該処理実行資源により当該処理対象を実行させる第３の制御手段と、
を備えたことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理実行資源を有する情報処理システムに関し、特に、処理対象の緊急度に応じつつ、負荷の状況に応じて、これら複数の処理実行資源を効率的に使用する情報処理システムに関する。
【背景技術】
【０００２】
例えば、コンピュータを用いて構成される情報処理システムなどでは、一般に、システムにかかる負荷が大きくなるほど、それに伴って、処理のスループットが低下する。
このため、近年来、コンピュータにおける処理負荷の分散という問題に関して色々な研究が為されている。
例えば、汎用コンピュータにおいては、マルチ疎結合或いはマルチ密結合した複数のプロセッサを搭載して、負荷変動に応じて負荷（ＣＰＵ負荷）が均等になるように、高負荷のプロセッサから低負荷のプロセッサへジョブを移すといった技術や、また、最近では、クライアント／サーバ方式を用いた分散処理システムにおける負荷の自動分散といった技術が挙げられる。
【０００３】
これらの技術は、いずれも、システムに設けられた一つのプロセッサが高負荷状態に陥った時にそれを分散して回避するものである。
具体的には、ＣＰＵ負荷の上限（限界値）を決めておき、上限に達しないうちはジョブ或いはプログラムを新しく生成して起動をかけていき、システムの一つのプロセッサが負荷の限界に達したときには、システムを停止させることなく、高負荷のＣＰＵで稼動中のジョブ或いはプログラムのプロセスをより低負荷のＣＰＵへ移して、システム全体の負荷を分散して均一にすることが行われる。
【０００４】
しかしながら、稼動中のジョブ或いはプログラムのプロセスを停止させることなく別のＣＰＵへ移すことは高度な技術を要求され、万一失敗した場合には、システムをいったんオフにして、システムに存在する業務データをリカバリ（救済処理）し、再度システムを立ち上げなおさなければならないため、時間の浪費や信頼性の失墜につながりかねないといった問題があった。
【０００５】
上記した負荷分散機能は、システムに設けられた一つのＣＰＵが高負荷状態に陥ってしまったときに働く機能であり、そのときにおけるＣＰＵ使用率などのシステム稼動データに基づいて機能する。つまり、これは、システムが高負荷状態になることを事前に防ぐ機能ではなく、高負荷状態に陥ってから働く機能である。
システムが高負荷状態になることを事前に防ぐ機能としては、汎用コンピュータにおいては、ジョブのスケジューリング本数を制限する機能があり、これは、プロセッサが処理するジョブの本数を制限して或る本数以上システムに入らないようにする機能であるが、システムを有効に活用する機能とは言えない。
【０００６】
【特許文献１】特開平７−２４９０１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述のように、情報処理システムでは、システムにかかる負荷の状況に応じてシステムを有効に活用することについて、未だに不十分であるといった問題があり、更なる開発が望まれていた。
本発明は、このような従来の事情に鑑み為されたもので、処理対象の緊急度に応じつつ、負荷の状況に応じて、複数の処理実行資源を効率的に使用することができる情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係る情報処理システムでは、複数の処理実行資源を有し、処理対象を当該処理対象を実行すべき処理実行資源に割り当てて、当該処理実行資源により当該処理対象を実行させるに際して、次のような処理を行う。
すなわち、処理対象検出手段が、実行に要する負荷及び緊急度が設定された処理対象について、当該負荷及び当該緊急度を検出する。許容量検出手段が、前記複数の処理実行資源のそれぞれについて、負荷の上限に達するまでに許容される負荷の量（許容量）を検出する。
第１の制御手段が、前記処理対象検出手段により検出された緊急度が所定の閾値以上である場合（又は、所定の閾値を越える場合）に、前記複数の処理実行資源の全てのうちのいずれかの処理実行資源において前記処理対象検出手段により検出された負荷が前記許容量検出手段により検出された量（許容量）以下であるか否かを判定し、当該量以下であると判定したときには当該処理実行資源により前記処理対象を実行させる一方、当該量を越えると判定したときには前記処理対象を第１のテーブルに待機させる。
第２の制御手段が、前記処理対象検出手段により検出された緊急度が所定の閾値未満である場合（又は、所定の閾値以下である場合）に、前記複数の処理実行資源の一部のうちのいずれかの処理実行資源において前記処理対象検出手段により検出された負荷が前記許容量検出手段により検出された量（許容量）以下であるか否かを判定し、当該量以下であると判定したときには当該処理実行資源により前記処理対象を実行させる一方、当該量を越えると判定したときには前記処理対象を第２のテーブルに待機させる。
第３の制御手段が、前記第１のテーブルに待機させられた処理対象を前記第２のテーブルに待機させられた処理対象と比べて優先させて、各処理実行資源による処理の実行状況に応じて、待機させられた処理対象を空いた処理実行資源に割り当てて、当該処理実行資源により当該処理対象を実行させる。
【０００９】
従って、処理対象の実行に要する負荷及び複数の処理実行資源のそれぞれについての負荷の許容量に基づいて、当該処理対象をいずれかの処理実行資源により実行させるに際して、当該処理対象の緊急度に応じて、緊急度が高い処理対象については全ての処理実行資源で許容されない場合に待機させ、緊急度が低い処理対象については所定の一部の処理実行資源で許容されない場合に待機させ、また、待機させられた緊急度が低い処理対象よりも待機させられた緊急度が高い処理対象を優先させて空いた処理実行資源により実行させるようにしたため、例えば、多数の処理対象が時間の経過に伴って次々と発生するような場合において、各処理対象の緊急度に応じつつ、負荷の状況に応じて、複数の処理実行資源を効率的に使用することができる。
【００１０】
ここで、処理実行資源としては、種々なものが用いられてもよく、例えば、ＣＰＵや、メモリなどを用いることができ、また、これら２つ以上のものの組み合わせを用いることもできる。
また、複数の処理実行資源の数としては、種々な数が用いられてもよい。
また、処理対象としては、種々なものが用いられてもよく、例えば、ジョブや、プログラムを用いることができる。
また、処理対象の実行に要する負荷としては、種々なものが用いられてもよく、例えば、ＣＰＵの使用率（或いは、使用量）の値や、メモリの使用率（或いは、使用量）の値などを用いることができる。
また、処理対象の緊急度としては、種々なものが用いられてもよく、例えば、緊急度が高い方が大きくなり緊急度が低い方が小さくなる値を用いることができる。
また、処理対象の負荷や緊急度は、例えば、処理対象を指定などするファイルなどの情報に含まれる。
【００１１】
また、処理実行資源について負荷の上限に達するまでに許容される負荷の量（許容量）としては、例えば、許容される負荷の上限値と現在における負荷の量を検出して、許容される負荷の上限値から現在における負荷の量を減じた結果として求めることができる。
また、緊急度に関する閾値としては、種々な値が用いられてもよく、例えば、緊急度が閾値以上である場合（又は、閾値を越える場合）は緊急度が所定の基準（閾値）に対して高いような場合を示し、緊急度が閾値未満である場合（又は、閾値以下である場合）は緊急度が当該所定の基準（当該閾値）に対して低いような場合を示す。
【００１２】
また、閾値に対して緊急度が高い処理対象について、複数の処理実行資源の全てのうちのいずれかの処理実行資源において処理対象の負荷が処理実行資源の許容量以下であるか否かを判定する態様としては、種々な態様が用いられてもよく、例えば、所定の順序に従って、各処理実行資源について処理対象の実行が許容されるか否かを判定していき、許容されるものが見つかったらその処理実行資源により実行させ、見つからないときには少なくとも１回は全ての処理実行資源について処理対象の実行が許容されるか否かを判定するような態様が用いられる。この場合に、例えば、実行させることを希望する処理実行資源が処理対象に設定されているときには、初めに当該設定された処理実行資源により当該処理対象の実行が許容されるか否かを判定して、許容されないときに他の処理実行資源について当該処理対象の実行が許容されるか否かを判定していくような態様を用いることができる。
【００１３】
また、閾値に対して緊急度が低い処理対象について、複数の処理実行資源の一部のうちのいずれかの処理実行資源（当該一部が１つのみである場合にはその処理実行資源）において処理対象の負荷が処理実行資源の許容量以下であるか否かを判定する態様としては、種々な態様が用いられてもよく、例えば、１つの処理実行資源について或いは２つ以上であるが（全てではなく）一部の処理実行資源について処理対象の実行が許容されるか否かを判定して、許容されるものが見つかったらその処理実行資源により実行させ、見つからないときには他の処理実行資源については判定を行わないような態様が用いられる。この場合に、例えば、実行させることを希望する処理実行資源が処理対象に設定されているときには、当該設定された処理実行資源のみについて当該処理対象の実行が許容されるか否かを判定するような態様を用いることができる。
【００１４】
また、第１のテーブルは、閾値に対して緊急度が高い処理対象を待機させるものであり、一例として、全ての処理実行資源について共通なテーブルとして構成することができる。
また、第２のテーブルは、閾値に対して緊急度が低い処理対象を待機させるものであり、一例として、各処理実行資源毎に異なるテーブルとして構成することができる。
【００１５】
また、閾値に対して緊急度が高い処理対象（第１のテーブルに待機させられた処理対象）を閾値に対して緊急度が低い処理対象（第２のテーブルに待機させられた処理対象）と比べて優先させて、待機させられた処理対象を空いた処理実行資源に割り当てる態様としては、種々な態様が用いられてもよく、例えば、待機させられている各処理対象の実行に要する負荷或いは緊急度や、各処理実行資源における負荷の許容量に基づいて、待機させられている処理対象を処理実行資源に割り当てていくような態様を用いることができる。なお、閾値に対して緊急度が高い処理対象を閾値に対して緊急度が低い処理対象と比べて優先させることは、それが適当ではないときには必ずしも為されなくてもよく、例えば、待機させられている処理対象について、閾値に対して緊急度が高い処理対象は許容しないが閾値に対して緊急度が低い処理対象は許容する処理実行資源が存在するようなときには、当該処理実行資源により当該緊急度が低い処理対象を実行させるような態様を用いることができる。
【００１６】
また、閾値に対して緊急度が高い処理対象が第１のテーブルに複数待機させられている場合や、閾値に対して緊急度が低い処理対象が第２のテーブルに複数待機させられているような場合には、例えば、緊急度が高い方から順に優先順位を高くして可能な限り先に処理されるようにする態様や、時間的に先に発生したものから順に優先順位を高くして可能な限り先に処理されるようにする態様や、実行に要する負荷が大きい方から順に又は小さい方から順に優先順位を高くして可能な限り先に処理されるようにする態様などを用いることができる。
また、空いた処理実行資源は、例えば、各処理実行資源による処理対象の実行状況或いは実行の終了状況に基づいて検出することができ、或る処理実行資源が或る処理対象の実行を許容するだけの負荷の許容量を有するようになった場合に当該処理実行資源により当該処理対象を実行させることが可能となる。
【発明の効果】
【００１７】
以上説明したように、本発明に係る情報処理システムによると、複数の処理実行資源を有する構成において、処理対象の負荷及び緊急度を検出し、各処理実行資源の負荷の許容量を検出し、緊急度が高い処理対象については全ての処理実行資源により許容されない場合に第１のテーブルに待機させ、緊急度が低い処理対象については所定の一部の処理実行資源により許容されない場合に第２のテーブルに待機させ、緊急度が高い処理対象を緊急度が低い処理対象よりも優先させて待機させられた処理対象を空いた処理実行資源に割り当てて実行させるようにしたため、各処理対象の緊急度に応じつつ、負荷の状況に応じて、複数の処理実行資源を効果的に且つ効率的に使用することができる。
【発明を実施するための最良の形態】
【００１８】
本発明に係る実施例を図面を参照して説明する。
図１（ａ）には、本発明の一実施例に係る情報処理システムの構成例を示してある。
本例の情報処理システムは、多数（本例では、４個）のプロセッサを搭載した汎用コンピュータを用いて構成されており、本例では、４個のプロセッサ（プロセッサＮｏ１〜Ｎｏ４）Ａ１〜Ａ４を備えている。ここで、各プロセッサＡ１〜Ａ４は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とメモリを有している。また、一つのプロセッサＡ１がメインプロセッサとして用いられる。
この汎用コンピュータ上に、各プロセッサＡ１〜Ａ４の負荷情報を収集するプロセッサ負荷情報収集プロセスＢ１〜Ｂ４が各プロセッサＡ１〜Ａ４に存在し、更に、メインプロセッサＡ１上に、システム全体の負荷情報を管理するシステム負荷情報管理プロセス１と、ジョブのスケジューリングを行うジョブスケジューリングプロセス２が存在する。
【００１９】
図１（ｂ）には、各プロセッサＡ１〜Ａ４の負荷情報の一例を示してある。
本例のプロセッサ負荷情報は、ＣＰＵの使用率を表す情報と、メモリの使用率を表す情報を有している。
図１（ｃ）には、システム負荷情報の一例を示してある。
本例のシステム負荷情報は、全てのプロセッサＡ１〜Ａ４のそれぞれにおける、ＣＰＵ使用率を表す情報と、メモリ使用率を表す情報と、ＣＰＵ使用率の上限値を表す情報と、メモリ使用率の上限値を表す情報を有している。
【００２０】
各プロセッサ負荷情報収集プロセスＢ１〜Ｂ４は、各プロセッサＡ１〜Ａ４の負荷情報を収集してシステム負荷情報管理プロセス１へ送信する。
システム負荷情報管理プロセス１は、送られてきた負荷情報をテーブルに蓄積する。
また、本例では、各プロセッサＡ１〜Ａ４におけるＣＰＵ使用率の上限値を所定の場所（例えば、メモリ）に保管（保存）しておく。そして、システム負荷情報管理プロセス１は、システムの立ち上がり時に、当該所定の場所に保管されたＣＰＵ使用率の上限値を読み込んでテーブルに保管する。
システム負荷情報管理プロセス１は、各プロセッサＡ１〜Ａ４毎の負荷率と負荷の上限値、また、各プロセッサＡ１〜Ａ４で実行されるジョブのＣＰＵ使用率（例えば、図７で記述されるもの）をテーブルに保管している。
【００２１】
ジョブスケジューリングプロセス２は、システムに入力されたジョブの起動を行うプロセスである。
図２には、ジョブ起動ファイルの一例を示してある。一般に、汎用コンピュータでは、ジョブは図２のジョブ起動ファイルに示されるようなジョブ制御文で入力される。
本例のジョブ起動ファイルでは、￥ＳＮＵＭＢ、￥ＩＤＥＮＴ、￥ＥＸＥＣＵＴＥ、￥ＣＰＵＲＥＳＯＵＲＣＥ、￥ＭＥＭＲＥＳＯＵＲＣＥ、￥ＰＲＭＦＬ、￥ＴＥＭＰ、￥ＥＮＤＪＯＢの情報が格納されている。
例えば、￥ＩＤＥＮＴに対応する第１パラメータの情報では実行するプロセッサの番号（本例では、Ｎｏ１〜Ｎｏ４のいずれか）が設定され、この情報に基づいて実行するプロセッサの番号が決定される。
また、￥ＥＸＥＣＵＴＥに対応する情報には緊急度を表す情報が含まれ、この情報に基づいてジョブの緊急度が検出される。
また、￥ＣＰＵＲＥＳＯＵＲＣＥの制御文には、ジョブの実行に必要なＣＰＵ使用率（図２の例では、４０％）が記述される。
また、￥ＭＥＭＲＥＳＯＵＲＣＥの制御文には、ジョブの実行に必要なメモリ量（図２の例では、５０Ｋバイト）が記述される。
【００２２】
以下で、本例では、ＣＰＵの負荷を例にとって説明する。なお、メモリの負荷についても同様な処理を適用して行うことが可能であり、例えば、ＣＰＵの負荷とメモリの負荷の両方について同様な処理を行うことも可能である。
本例のジョブスケジューリングプロセス２は、各プロセッサＡ１〜Ａ４の負荷に応じてシステムに入力するジョブを制御する機能を有している。
図３には、ジョブスケジューリングプロセス２によりシステムに入力するジョブを制御する処理の手順の一例を示してある。
初めに、処理対象となるジョブのジョブ起動ファイルの￥ＣＰＵＲＥＳＯＵＲＣＥ制御文を読み込んで、ジョブのＣＰＵ使用率ａを取得する（ステップＳ１）。また、当該ジョブ起動ファイルの￥ＩＤＥＮＴ制御文の第１パラメータを読み込んで、ジョブを実行させるプロセッサの番号（プロセッサＮｏ）を取得する（ステップＳ２）。
【００２３】
次に、システム負荷情報管理プロセス１から前記取得したプロセッサＮｏのＣＰＵ使用率ｂとＣＰＵ使用率上限値ｃを取得し（ステップＳ３）、ジョブのＣＰＵ使用率ａと該当するプロセッサ（プロセッサＡ１〜Ａ４のいずれか）の現在におけるＣＰＵ使用率ｂとを加算した値（ａ＋ｂ）がＣＰＵ使用率上限値ｃより小さいか否かを判定することで、当該ジョブを実行するために十分なＣＰＵ資源があるか否かを調べる（ステップＳ４）。当該加算値（ａ＋ｂ）がＣＰＵ使用率上限値ｃより小さい場合には、その該当するプロセッサＮｏのプロセッサでジョブを実行させて（ステップＳ５）、処理を終了する。
【００２４】
一方、前記加算値（ａ＋ｂ）がＣＰＵ使用率上限値ｃ以上である場合には、前記ジョブ起動ファイルの￥ＥＸＥＣＵＴＥ制御文を読み込んで、ジョブの緊急度を取得し（ステップＳ６）、当該取得した緊急度が例えば予め指定された所定の閾値以上であるか否かを判定する（ステップＳ７）。
緊急度が高くて閾値以上である場合には（ステップＳ７）、別のプロセッサでジョブを実行させるために、次のように処理を続ける（ステップＳ８）。すなわち、システム負荷情報管理プロセス１から残りのプロセッサのＣＰＵ使用率とＣＰＵ使用率上限値を取得して、ＣＰＵ使用率上限値からＣＰＵ使用率を減算した値（ＣＰＵ使用率上限値−ＣＰＵ使用率）が一番大きくなるプロセッサ番号（プロセッサＮｏ）ｎを決定する（ステップＳ９）。そして、当該決定したプロセッサＮｏのプロセッサについて、ジョブのＣＰＵ使用率ａと当該プロセッサの現在におけるＣＰＵ使用率ｄとを加算した値（ａ＋ｄ）がＣＰＵ使用率上限値ｅより小さいか否かを判定することで、当該ジョブを実行するために十分なＣＰＵ資源があるか否かを調べる（ステップＳ１０）。当該加算値（ａ＋ｄ）がＣＰＵ使用率上限値ｅより小さい場合には、その該当するプロセッサＮｏのプロセッサでジョブを実行させて（ステップＳ１１）、処理を終了する。
【００２５】
また、緊急度が低くて閾値未満である場合には（ステップＳ７）、ＣＰＵ空き待ちのジョブとしてテーブルに登録することとし、この場合には、前記ジョブ起動ファイルから取得した実行させるべきプロセッサＮｏに該当するＣＰＵ空き待ちジョブテーブルにジョブを登録する（ステップＳ１２）。なお、待ち管理処理１は、この処理とは別に非同期で動作する。
また、前記加算値（ａ＋ｄ）がＣＰＵ使用率上限値ｅ以上である場合には（ステップＳ１０）、ジョブの緊急度が高いが他のプロセッサにもジョブを実行させるＣＰＵ資源がないため、緊急ＣＰＵ空き待ちジョブテーブルにジョブを登録する（ステップＳ１２）。
【００２６】
ここで、図４（１）〜（５）には、ＣＰＵ空き待ちジョブテーブルの例を示してある。本例では、待ち時間の単位として、１０ｍｓが用いられている。
図４（１）には、緊急ＣＰＵ空き待ちジョブテーブルの一例を示してある。このテーブルでは、ジョブの名称（ジョブ名）と、ジョブのＣＰＵ使用率と、ジョブの緊急度と、待ち時間が対応付けられている。また、緊急度が高いジョブから順に並べられて（ソートされて）いる。
図４（２）、（３）、（４）、（５）には、それぞれ、プロセッサＮｏ１、２、３、４のＣＰＵ空き待ちジョブテーブルの一例を示してある。これらのテーブルでは、ジョブの名称（ジョブ名）と、ジョブのＣＰＵ使用率と、待ち時間が対応付けられている。また、ＣＰＵ使用率が高いジョブから順に並べられて（ソートされて）いる。
【００２７】
ジョブスケジューリングプロセス２は、待ち管理処理１において、ＣＰＵ空き待ちジョブテーブルに登録されたジョブを処理する。
図５及び図６には、ジョブスケジューリングプロセス２により行われる待ち管理処理１の手順の一例を示してある。
図５には、全体的な処理の流れを示してある。
まず、プロセッサＮｏ１（プロセッサＡ１）について実行中のジョブの中で終了したジョブが存在するか否かを判定し（ステップＳ２１）、存在する場合には当該プロセッサＮｏ１について待ち管理処理を実行する（ステップＳ２２）。
プロセッサＮｏ１について終了したジョブが存在しない場合や（ステップＳ２１）、プロセッサＮｏ１について待ち管理処理が終了した場合には（ステップＳ２２）、プロセッサＮｏ２（プロセッサＡ２）について実行中のジョブの中で終了したジョブが存在するか否かを判定し（ステップＳ２３）、存在する場合には当該プロセッサＮｏ２について待ち管理処理を実行する（ステップＳ２４）。
【００２８】
同様に、プロセッサＮｏ２について終了したジョブが存在しない場合や（ステップＳ２３）、プロセッサＮｏ２について待ち管理処理が終了した場合には（ステップＳ２４）、プロセッサＮｏ３（プロセッサＡ３）について実行中のジョブの中で終了したジョブが存在するか否かを判定し（ステップＳ２５）、存在する場合には当該プロセッサＮｏ３について待ち管理処理を実行する（ステップＳ２６）。
また、同様に、プロセッサＮｏ３について終了したジョブが存在しない場合や（ステップＳ２５）、プロセッサＮｏ３について待ち管理処理が終了した場合には（ステップＳ２６）、プロセッサＮｏ４（プロセッサＡ４）について実行中のジョブの中で終了したジョブが存在するか否かを判定し（ステップＳ２７）、存在する場合には当該プロセッサＮｏ４について待ち管理処理を実行する（ステップＳ２８）。
【００２９】
プロセッサＮｏ４について終了したジョブが存在しない場合や（ステップＳ２７）、プロセッサＮｏ４について待ち管理処理が終了した場合には（ステップＳ２８）、待ち時間のカウントアップを行い（ステップＳ２９）、待ち時間が例えば予め指定された時間を越えたか否かを判定し（ステップＳ３０）、越えた場合には警報を表示し（ステップＳ３１）、越えない場合には再びプロセッサＮｏ１についての処理（ステップＳ２１の処理）へ戻る。
【００３０】
図６には、プロセッサＮｏ１についての待ち管理処理の流れを示してある。なお、他のプロセッサＮｏ２〜Ｎｏ４についての待ち管理処理の流れも同様である。
まず、システム負荷情報管理プロセス１から終了したジョブを実行していたプロセッサＮｏ（本例では、プロセッサＮｏ１）のＣＰＵ使用率とＣＰＵ使用率上限値を取得し、これらの差（ＣＰＵ使用率上限値−ＣＰＵ使用率）ｐを当該プロセッサＮｏ１のＣＰＵの空きとして計算する（ステップＳ４１）。
【００３１】
初めに、緊急ＣＰＵ空き待ちジョブテーブルについて待ち状態のジョブが存在するか否かを調べ（ステップＳ４２）、このテーブルにジョブが存在する場合には、このテーブルの上から検索して（つまり、緊急度が高い方から検索して）、ジョブのＣＰＵ使用率が前記計算されたＣＰＵ空きｐ以下であるジョブを探す（ステップＳ４３）。このようなジョブが見つかった場合には（ステップＳ４４）、当該プロセッサＮｏ１で当該ジョブを起動する（ステップＳ４５）。そして、再度、当該プロセッサＮｏ１のＣＰＵの空きｐを計算し直し、このＣＰＵの空き（新たなＣＰＵ空きｐ＝前回のＣＰＵ空きｐ−今回実行するジョブのＣＰＵ使用率ｐ’）を取得する（ステップＳ４６）。続いて、緊急ＣＰＵ空き待ちジョブテーブルを再度続きから検索して、ＣＰＵ使用率が新たなＣＰＵ空きｐ以下のジョブを探して（ステップＳ４７）、見つかったら起動する処理（ステップＳ４４〜ステップＳ４６）を、ＣＰＵ空きがいずれかのジョブのＣＰＵ使用率より大きい間、続けて実行する。
【００３２】
次に、緊急ＣＰＵ空き待ちジョブテーブルについての検索が終了した場合には（ステップＳ４２、ステップＳ４４）、該当するプロセッサＮｏ１のＣＰＵ空き待ちジョブテーブルについて、上記した緊急ＣＰＵ空き待ちジョブテーブルについての検索と同様な処理を行う。
具体的には、プロセッサＮｏ１のＣＰＵ空き待ちジョブテーブルについて待ち状態のジョブが存在するか否かを調べ（ステップＳ４８）、このテーブルにジョブが存在する場合には、このテーブルの上から検索して（つまり、ＣＰＵ使用率が高い方から検索して）、ジョブのＣＰＵ使用率が現在におけるＣＰＵ空きｐ以下であるジョブを探す（ステップＳ４９）。このようなジョブが見つかった場合には（ステップＳ５０）、当該プロセッサＮｏ１で当該ジョブを起動する（ステップＳ５１）。そして、再度、当該プロセッサＮｏ１のＣＰＵの空きｐを計算し直し、このＣＰＵの空き（新たなＣＰＵ空きｐ＝前回のＣＰＵ空きｐ−今回実行するジョブのＣＰＵ使用率ｐ’）を取得する（ステップＳ５２）。続いて、プロセッサＮｏ１のＣＰＵ空き待ちジョブテーブルを再度続きから検索して、ＣＰＵ使用率が新たなＣＰＵ空きｐ以下のジョブを探して（ステップＳ５３）、見つかったら起動する処理（ステップＳ５０〜ステップＳ５２）を、ＣＰＵ空きがいずれかのジョブのＣＰＵ使用率より大きい間、続けて実行する。
【００３３】
このように、本例では、ＣＰＵの空き（ＣＰＵ使用率上限値に達しない範囲での空き）ができる限り少なくなるようにしている。
ここで、ジョブのＣＰＵ使用率は、通常、入力データ量が多いほど、また、そのジョブを利用する回数が多いほど、高くなる。入力データは日々変動する場合があり、このため、ジョブのＣＰＵ使用率も一定でなく変動する場合がある。このような場合には、ジョブのＣＰＵ使用率の変動に応じて、ジョブ起動ファイルの￥ＣＰＵＲＥＳＯＵＲＣＥ制御文に記述されるＣＰＵ使用率を更新する必要がある。
【００３４】
図７には、ジョブ起動ファイルのＣＰＵ使用率を更新する処理の手順の一例を示してある。
本例では、メインプロセッサであるプロセッサＡ１に、ジョブ終了管理プロセス１１を備えている。
また、各プロセッサ負荷情報収集プロセスＢ１〜Ｂ４は、各プロセッサＡ１〜Ａ４で実行される各ジョブのＣＰＵ使用率の情報を収集してシステム負荷情報管理プロセス１へ送信する。システム負荷情報管理プロセス１は、各プロセッサ負荷情報収集プロセスＢ１〜Ｂ４から受信した情報に基づいて、各ジョブ毎のＣＰＵ使用率及び実行するプロセッサＮｏをテーブルに保管する。
また、ジョブスケジューリングプロセス２は、各プロセッサＡ１〜Ａ４により実行される各ジョブのジョブ起動ファイルを格納するテーブルを作成して管理する。
【００３５】
ジョブ終了管理プロセス１１は、次のようにして、ジョブ起動ファイルのＣＰＵ使用率を更新する。
すなわち、終了したジョブのＣＰＵ使用率をシステム負荷情報管理プロセス１を通して取得し（Ｔ１）、ジョブスケジューリングプロセス２を通して終了したジョブのジョブ起動ファイルを取得し（Ｔ２）、終了したジョブのジョブ起動ファイル中の￥ＣＰＵＲＥＳＯＵＲＣＥ制御文のＣＰＵ使用率をシステム負荷情報管理プロセス１から取得した値へ変更する。
【００３６】
ここで、ジョブのＣＰＵ使用率をそのジョブが終了するたびに更新する態様を用いることや、或いは、過去における何回かの最大値或いは平均値を採用してジョブのＣＰＵ使用率を更新する態様を用いることなど、その態様として種々なものを選択することができる。なお、過去における何回かのデータを使用する態様を採用する場合には、例えば、ジョブ終了管理プロセス１１によりそのデータを管理する。
ジョブのＣＰＵ使用率は、メモリなどのような他のシステム資源と異なり、常に変動するものである。本例では、図３や図５及び図６に示されるような処理フローによりシステム負荷情報管理プロセス１からプロセッサＡ１〜Ａ４のＣＰＵ使用率を取得しているが、このＣＰＵ使用率も次々と変動するものである。この点を考慮すると、例えば、本例において、更に、プロセッサＡ１〜Ａ４が高負荷状態に陥った時に負荷を分散させる技術を併用することで、より良い負荷管理ができる。
【００３７】
図８には、本例の情報処理システムをクライアント／サーバ方式で実現した場合におけるハードウエア及びソフトウエアの構成例を示してある。
本例の情報処理システムでは、全てのプロセッサＡ１〜Ａ４が結合されている。
また、各プロセッサＡ１〜Ａ４には、分散処理ミドルウエアとＯＳ（オペレーティングシステム）２１ａ〜２１ｄと、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）２２ａ〜２２ｄと、アプリケーション実行管理ソフトウエア２３ａ〜２３ｄと、実行中のアプリケーションがある場合には１つ以上の実行中のアプリケーション２４ａ〜２４ｄが存在する。なお、ＯＳの上で分散処理ミドルウエアが動作する。
【００３８】
ここで、ＳＮＭＰ２２ａ〜２２ｄは、定量的にシステム状態を把握することが可能なシステム監視ツールであり、例えば、無償で入手することも可能である。
クライアント／サーバ方式では、各プロセッサＡ１〜Ａ４の負荷情報をＳＮＭＰ２２ａ〜２２ｄのマネージャとエージェントを利用して取得する。
【００３９】
図９には、ＳＮＭＰの構成例を示してある。
ＳＮＭＰ２２ａ〜２２ｄは、ｓｎｍｐマネージャ３１とｓｎｍｐエージェント３２ａ〜３２ｄからなり、ｓｎｍｐエージェント３２ａ〜３２ｄをモニタしたい機器に組み込んで、ｓｎｍｐマネージャ３１により情報（本例では、負荷情報）を収集する。具体的には、ｓｎｍｐエージェント３２ａ〜３２ｄは、ＭＩＢ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｆｏｒｍａｉｏｎ  Ｂａｓｅ）ツリーと呼ばれる情報ツリーで示された監視データを監視対象の機器から収集し、収集したデータをｓｎｍｐマネージャ３１からの要求に応じてｓｎｍｐマネージャ３１へ送信する。
本例では、各プロセッサＡ１〜Ａ４にｓｎｍｐエージェント３２ａ〜３２ｄを組み込んであり、メインプロセッサであるプロセッサＮｏ１にはｓｎｍｐマネージャ３１も組み込んである。そして、ｓｎｍｐマネージャ３１から所定のコマンドｓｎｍｐｇｅｔを各ｓｎｍｐエージェント３２ａ〜３２ｄへ発して、各エージェント３２ａ〜３２ｄから情報を取得する。
【００４０】
ここで、クライアント／サーバ方式において汎用コンピュータで記述した負荷状態に応じてジョブの入力を制御する機能（ジョブスケジューリングプロセス２が行う機能）及びジョブ起動ファイルのＣＰＵ使用率を更新する機能（ジョブ終了管理プロセス１１が行う機能）を実現するアプリケーション実行管理ソフトウエア２３ａ〜２３ｄについて説明する。
図１０（ａ）には、アプリケーション実行管理のためのマネージャとエージェントの構成例を示してある。
アプリケーション実行管理ソフトウエア２３ａ〜２３ｄは、実行管理マネージャ４１と実行管理エージェント４２ａ〜４２ｄからなる。実行管理エージェント４２ａ〜４２ｄは各プロセッサＡ１〜Ａ４に配置され、実行管理マネージャ４１はシステムに一つだけメインプロセッサであるプロセッサＡ１に配置される。
【００４１】
実行管理マネージャ４１と実行管理エージェント４２ａ〜４２ｄとは、一方から各種通知を出して他方からそれに対する応答を返す形で通信を行う。実行管理マネージャ４１から各実行管理エージェント４２ａ〜４２ｄに対してプログラムの起動通知が出され、各実行管理エージェント４２ａ〜４２ｄから実行管理マネージャ４１に対してプログラムの終了通知が出される。
【００４２】
具体的には、図１０（ｂ）に示されるように、プログラム起動通知では、実行管理マネージャ４１が実行管理エージェント４２（４２ａ〜４２ｄ）へ起動コマンド、プログラム名、パラメータ数、パラメータを送信し、実行管理エージェント４２が該当するプログラムを受信したパラメータを引数として起動して実行管理マネージャ４１へ正常或いは異常を通知する応答を送信する。
また、図１０（ｃ）に示されるように、プログラム終了通知では、実行管理エージェント４２（４２ａ〜４２ｄ）がプログラムの実行が終了したときに終了コマンド、プログラム名を実行管理マネージャ４１へ送信することで通知し、実行管理マネージャ４１が実行管理エージェント４２へ正常を通知する応答を送信する。実行管理マネージャ４１では、プログラムの終了が待ち管理処理機能へ通知され、更に、ＣＰＵ使用率の更新処理機能が起動する。
【００４３】
クライアント／サーバ方式におけるプログラムの起動は、アプリケーションの実行管理マネージャ４１がアプリケーションプロパティファイルを読んで行われる。
図１１には、アプリケーションプロパティファイルの一例を示してある。
本例のアプリケーションプロパティファイルはＸＭＬ形式で記述されている。
本例のアプリケーションプロパティファイルでは、ｒｅｓｏｕｒｃｅタグの配下のｃｐｕタグにおいてプログラムのＣＰＵ使用率が記述され、ｒｅｓｏｕｒｃｅタグの配下のｍｅｍｏｒｙタグにおいてプログラムのメモリ使用量が記述される。また、ｐｒｏｃｅｓｓｏｒタグにおいて実行すべきプロセッサ番号（プロセッサＮｏ）が記述され、ｐｒｉｏｒｉｔｙタグにおいて緊急度が記述される。図１１の例では、ＣＰＵ使用率が４０％であり、メモリ使用量が５０Ｋバイトであり、プロセッサ番号が４であり、緊急度が５０である。
【００４４】
アプリケーションの実行管理マネージャ４１は、初めに、アプリケーションプロパティファイルを読み込んで、ＣＰＵ使用率、実行プロセッサＮｏ、緊急度の情報を取得する。次に、実行管理マネージャ４１は、ｓｎｍｐマネージャ３１から該当するプロセッサＮｏのＣＰＵ使用率とＣＰＵ使用率上限値を取得する。これ以降の処理は、汎用コンピュータの例について示したのと同様である。
但し、プログラムの起動は、該当するプロセッサＡ１〜Ａ４上の実行管理エージェント４２ａ〜４２ｄに対してプログラム起動通知を発することにより行われる。
【００４５】
図１２には、実行管理マネージャ４１により行われるプログラム起動通知の処理の手順の一例を示してある。
初めに、処理対象となるアプリケーションプロパティファイルのｒｅｓｏｕｒｃｅタグの配下のｃｐｕタグを読み込んで、プログラムのＣＰＵ使用率ａを取得する（ステップＳ６１）。また、当該アプリケーションプロパティファイルのｐｒｏｃｅｓｓｏｒタグを読み込んで、プログラムを実行させるプロセッサの番号（プロセッサＮｏ）を取得する（ステップＳ６２）。
【００４６】
次に、ｓｎｍｐマネージャ３１から前記取得したプロセッサＮｏのＣＰＵ使用率ｂとＣＰＵ使用率上限値ｃを取得し（ステップＳ６３）、プログラムのＣＰＵ使用率ａと該当するプロセッサ（プロセッサＡ１〜Ａ４のいずれか）の現在におけるＣＰＵ使用率ｂとを加算した値（ａ＋ｂ）がＣＰＵ使用率上限値ｃより小さいか否かを判定することで、当該プログラムを実行するために十分なＣＰＵ資源があるか否かを調べる（ステップＳ６４）。当該加算値（ａ＋ｂ）がＣＰＵ使用率上限値ｃより小さい場合には、その該当するプロセッサＮｏのプロセッサでプログラムを実行させるために、当該プロセッサ上の実行管理エージェント（実行管理エージェント４２ａ〜４２ｄのいずれか）に起動通知を行って（ステップＳ６５）、処理を終了する。
【００４７】
一方、前記加算値（ａ＋ｂ）がＣＰＵ使用率上限値ｃ以上である場合には、前記アプリケーションプロパティファイルのｐｒｉｏｒｉｔｙタグを読み込んで、プログラムの緊急度を取得し（ステップＳ６６）、当該取得した緊急度が例えば予め指定された所定の閾値以上であるか否かを判定する（ステップＳ６７）。
緊急度が高くて閾値以上である場合には（ステップＳ６７）、別のプロセッサでプログラムを実行させるために、次のように処理を続ける（ステップＳ６８）。すなわち、ｓｎｍｐマネージャ３１から残りのプロセッサのＣＰＵ使用率とＣＰＵ使用率上限値を取得して、ＣＰＵ使用率上限値からＣＰＵ使用率を減算した値（ＣＰＵ使用率上限値−ＣＰＵ使用率）が一番大きくなるプロセッサ番号（プロセッサＮｏ）ｎを決定する（ステップＳ６９）。そして、当該決定したプロセッサＮｏのプロセッサについて、プログラムのＣＰＵ使用率ａと当該プロセッサの現在におけるＣＰＵ使用率ｄとを加算した値（ａ＋ｄ）がＣＰＵ使用率上限値ｅより小さいか否かを判定することで、当該プログラムを実行するために十分なＣＰＵ資源があるか否かを調べる（ステップＳ７０）。当該加算値（ａ＋ｄ）がＣＰＵ使用率上限値ｅより小さい場合には、その該当するプロセッサＮｏのプロセッサでプログラムを実行させるために、当該プロセッサ上の実行管理エージェントに起動通知を行って（ステップＳ７１）、処理を終了する。
【００４８】
また、緊急度が低くて閾値未満である場合には（ステップＳ６７）、ＣＰＵ空き待ちのプログラムとしてテーブルに登録することとし、この場合には、前記アプリケーションプロパティファイルから取得した実行させるべきプロセッサＮｏに該当するＣＰＵ空き待ちプログラムテーブルにプログラムを登録する（ステップＳ７２）。なお、待ち管理処理２は、この処理とは別に非同期で動作する。
また、前記加算値（ａ＋ｄ）がＣＰＵ使用率上限値ｅ以上である場合には（ステップＳ７０）、プログラムの緊急度が高いが他のプロセッサにもプログラムを実行させるＣＰＵ資源がないため、緊急ＣＰＵ空き待ちプログラムテーブルにプログラムを登録する（ステップＳ７２）。
【００４９】
ここで、緊急ＣＰＵ空き待ちプログラムテーブルは例えば図４（１）に示されるテーブルと同様に構成することができ、各プロセッサＡ１〜Ａ４のＣＰＵ空き待ちプログラムテーブルは例えば図４（２）〜（５）に示されるテーブルと同様に構成することができる。
また、待ち管理処理２において、プログラムの終了は実行管理エージェント４２ａ〜４２ｄからのプログラム終了通知で確認され、その時点で、実行管理マネージャ４１は、プログラムのＣＰＵ使用率をｓｎｍｐマネージャ３１から取得してアプリケーションプロパティファイルのｃｐｕタグに書き込む。
【００５０】
図１３及び図１４には、実行管理マネージャ４１により行われる待ち管理処理２の手順の一例を示してある。
図１３には、全体的な処理の流れを示してある。
まず、プロセッサＮｏ１（プロセッサＡ１）の実行管理エージェント４２ａからプログラム終了通知を受信したか否かを判定し（ステップＳ８１）、受信した場合には、終了が通知されたプログラムのＣＰＵ使用率をｓｎｍｐマネージャ３１から取得して（ステップＳ８２）、当該プログラムのアプリケーションプロパティファイルのｃｐｕタグを当該取得したＣＰＵ使用率で書き換えた後に（ステップＳ８３）、当該プロセッサＮｏ１について待ち管理処理を実行する（ステップＳ８４）。
【００５１】
プロセッサＮｏ１についてプログラム終了通知を受信しない場合や（ステップＳ８１）、プロセッサＮｏ１について待ち管理処理が終了した場合には（ステップＳ８４）、プロセッサＮｏ２（プロセッサＡ２）について実行管理エージェント４２ｂからプログラム終了通知を受信したか否かを判定し（ステップＳ８５）、受信した場合には当該プロセッサＮｏ２について上記したプロセッサＮｏ１のときの処理（ステップＳ８２〜ステップＳ８４）と同様な処理（ＣＰＵ使用率の取得及び書き換えと、待ち管理処理）を実行する（ステップＳ８６）。
【００５２】
同様に、プロセッサＮｏ２についてプログラム終了通知を受信しない場合や（ステップＳ８５）、プロセッサＮｏ２について待ち管理処理が終了した場合には（ステップＳ８６）、プロセッサＮｏ３（プロセッサＡ３）について実行管理エージェント４２ｃからプログラム終了通知を受信したか否かを判定し（ステップＳ８７）、受信した場合には当該プロセッサＮｏ３について上記したプロセッサＮｏ１のときの処理（ステップＳ８２〜ステップＳ８４）と同様な処理（ＣＰＵ使用率の取得及び書き換えと、待ち管理処理）を実行する（ステップＳ８８）。
また、同様に、プロセッサＮｏ３についてプログラム終了通知を受信しない場合や（ステップＳ８７）、プロセッサＮｏ３について待ち管理処理が終了した場合には（ステップＳ８８）、プロセッサＮｏ４（プロセッサＡ４）について実行管理エージェント４２ｄからプログラム終了通知を受信したか否かを判定し（ステップＳ８９）、受信した場合には当該プロセッサＮｏ４について上記したプロセッサＮｏ１のときの処理（ステップＳ８２〜ステップＳ８４）と同様な処理（ＣＰＵ使用率の取得及び書き換えと、待ち管理処理）を実行する（ステップＳ９０）。
【００５３】
プロセッサＮｏ４についてプログラム終了通知を受信しない場合や（ステップＳ８９）、プロセッサＮｏ４について待ち管理処理が終了した場合には（ステップＳ９０）、待ち時間のカウントアップを行い（ステップＳ９１）、待ち時間が例えば予め指定された時間を越えたか否かを判定し（ステップＳ９２）、越えた場合には警報を表示し（ステップＳ９３）、越えない場合には再びプロセッサＮｏ１についての処理（ステップＳ８１の処理）へ戻る。
【００５４】
図１４には、プロセッサＮｏ１についての待ち管理処理の流れを示してある。なお、他のプロセッサＮｏ２〜Ｎｏ４についての待ち管理処理の流れも同様である。
まず、ｓｎｍｐマネージャ３１から終了したプログラムを実行していたプロセッサＮｏ（本例では、プロセッサＮｏ１）のＣＰＵ使用率とＣＰＵ使用率上限値を取得し、これらの差（ＣＰＵ使用率上限値−ＣＰＵ使用率）ｐを当該プロセッサＮｏ１のＣＰＵの空きとして計算する（ステップＳ１０１）。
【００５５】
初めに、緊急ＣＰＵ空き待ちプログラムテーブルについて待ち状態のプログラムが存在するか否かを調べ（ステップＳ１０２）、このテーブルにプログラムが存在する場合には、このテーブルの上から検索して（つまり、緊急度が高い方から検索して）、プログラムのＣＰＵ使用率が前記計算されたＣＰＵ空きｐ以下であるプログラムを探す（ステップＳ１０３）。このようなプログラムが見つかった場合には（ステップＳ１０４）、当該プロセッサＮｏ１で当該プログラムを起動する（ステップＳ１０５）。そして、再度、当該プロセッサＮｏ１のＣＰＵの空きｐを計算し直し、このＣＰＵの空き（新たなＣＰＵの空きｐ＝前回のＣＰＵ空きｐ−今回実行するプログラムのＣＰＵ使用率ｐ’）を取得する（ステップＳ１０６）。続いて、緊急ＣＰＵ空き待ちプログラムテーブルを再度続きから検索して、ＣＰＵ使用率が新たなＣＰＵ空きｐ以下のプログラムを探して（ステップＳ１０７）、見つかったら起動する処理（ステップＳ１０４〜ステップＳ１０６）を、ＣＰＵ空きがいずれかのプログラムのＣＰＵ使用率より大きい間、続けて実行する。
【００５６】
次に、緊急ＣＰＵ空き待ちプログラムテーブルについての検索が終了した場合には（ステップＳ１０２、ステップＳ１０４）、該当するプロセッサＮｏ１のＣＰＵ空き待ちプログラムテーブルについて、上記した緊急ＣＰＵ空き待ちプログラムテーブルについての検索と同様な処理を行う。
具体的には、プロセッサＮｏ１のＣＰＵ空き待ちプログラムテーブルについて待ち状態のプログラムが存在するか否かを調べ（ステップＳ１０８）、このテーブルにプログラムが存在する場合には、このテーブルの上から検索して（つまり、ＣＰＵ使用率が高い方から検索して）、プログラムのＣＰＵ使用率が現在におけるＣＰＵ空きｐ以下であるプログラムを探す（ステップＳ１０９）。このようなプログラムが見つかった場合には（ステップＳ１１０）、当該プロセッサＮｏ１で当該プログラムを起動する（ステップＳ１１１）。そして、再度、当該プロセッサＮｏ１のＣＰＵの空きｐを計算し直し、このＣＰＵの空き（新たなＣＰＵ空きｐ＝前回のＣＰＵ空きｐ−今回実行するプログラムのＣＰＵ使用率ｐ’）を取得する（ステップＳ１１２）。続いて、プロセッサＮｏ１のＣＰＵ空き待ちプログラムテーブルを再度続きから検索して、ＣＰＵ使用率が新たなＣＰＵ空きｐ以下のプログラムを探して（ステップＳ１１３）、見つかったら起動する処理（ステップＳ１１０〜ステップＳ１１２）を、ＣＰＵ空きがいずれかのプログラムのＣＰＵ使用率より大きい間、続けて実行する。
【００５７】
図１５には、待ち時間が超過したジョブについての警報表示の一例を示してある。
本例では、例えば、図５に示されるステップＳ３１の処理において、図１５に示されるような警告が画面に表示され、また、図１３に示されるステップＳ９３の処理において、同様な警告が実行待ちのプログラムについて画面に表示される。
図１５の例では、緊急ＣＰＵ空き待ちジョブテーブルに関して、緊急度が高くて待ち時間が所定の指定時間を越えたジョブについて、ジョブの名称（ジョブ名）と、待ち時間（単位は、例えば、秒）と、緊急度と、ジョブのＣＰＵ使用率（単位は、例えば、％）が対応して表示されている。また、各プロセッサＡ１〜Ａ４のＣＰＵ空き待ちジョブテーブルに関して、待ち時間が所定の指定時間を越えたジョブについて、ジョブの名称（ジョブ名）と、待ち時間（単位は、例えば、秒）と、ジョブのＣＰＵ使用率（単位は、例えば、％）が対応して表示されている。
【００５８】
以上のように、本例の情報処理システムでは、複数のプロセッサＡ１〜Ａ４を結合させたマルチプロセッサシステムにおいて、各プロセッサＡ１〜Ａ４の負荷情報を収集する負荷情報収集プログラム及び負荷情報管理プログラムを有するとともに、ジョブの起動と終了を管理するジョブ実行管理プログラム或いはアプリケーションプログラムの起動と終了を管理するアプリケーション実行管理プログラムを有し、当該ジョブ実行管理プログラムの入力となるジョブ起動ファイル或いは当該アプリケーション実行管理プログラムの入力となるアプリケーションプログラム起動ファイルにそのジョブ或いはそのアプリケーションプログラムが使用するシステム資源の位置や量や緊急度などが記述されている。
【００５９】
そして、本例の情報処理システムでは、ジョブ或いはプログラムの緊急度などに応じて適切なスケジューリング処理を行うことにより、例えば、緊急度などを考慮した上で、システムにかかる負荷によるスループットの低下を未然に防いで、より安定したシステムを実現することができる。また、例えば、プロセッサＡ１〜Ａ４が高負荷状態に陥った時に負荷を分散させる技術を併用することで、更に、より良い負荷管理を行うことができる。
従って、本例の情報処理システムでは、各ジョブ或いは各プログラムの緊急度などに応じたスケジューリングを行いつつ、システムが高負荷状態に陥りシステムのスループットが低下することを未然に防ぐことができ、例えば、システムを負荷の上限に近いような状態で稼動させてシステムの能力を最大限に活用させることが可能となる。
【００６０】
なお、本例の情報処理システムでは、複数のプロセッサＡ１〜Ａ４のＣＰＵ或いはメモリにより複数の処理実行資源が構成されており、ジョブ或いはプログラムにより処理対象が構成されており、ＣＰＵ使用率或いはメモリ使用率により処理対象の負荷が構成されている。
また、本例の情報処理システムでは、ジョブスケジューリングプロセス２がジョブ起動ファイルから処理対象の負荷や緊急度を検出する機能或いは実行管理マネージャ４１がアプリケーションプロパティファイルから処理対象の負荷や緊急度を検出する機能により処理対象検出手段が構成されており、ジョブスケジューリングプロセス２がプロセッサ負荷情報収集プロセスＢ１〜Ｂ４の収集結果に基づくシステム負荷情報管理プロセス１の管理内容に基づいて各処理実行資源の負荷の許容量を検出する機能或いは実行管理マネージャ４１がｓｎｍｐマネージャ３１からの通知に基づいて各処理実行資源の負荷の許容量を検出する機能により許容量検出手段が構成されており、緊急ＣＰＵ空き待ちジョブテーブル或いは緊急ＣＰＵ空き待ちプログラムテーブルにより第１のテーブルが構成されており、ＣＰＵ空き待ちジョブテーブル或いはＣＰＵ空き待ちプログラムテーブルにより第２のテーブルが構成されており、ジョブスケジューリングプロセス２或いは実行管理マネージャ４１が閾値に対して緊急度が高い処理対象について処理実行資源への割り当てを制御する機能により第１の制御手段が構成されており、ジョブスケジューリングプロセス２或いは実行管理マネージャ４１が閾値に対して緊急度が低い処理対象について処理実行資源への割り当てを制御する機能により第２の制御手段が構成されており、ジョブスケジューリングプロセス２或いは実行管理マネージャ４１が待ち管理処理を制御する機能により第３の制御手段が構成されている。
【００６１】
ここで、本発明に係るシステムや装置などの構成としては、必ずしも以上に示したものに限られず、種々な構成が用いられてもよい。また、本発明は、例えば、本発明に係る処理を実行する方法或いは方式や、このような方法や方式を実現するためのプログラムや当該プログラムを記録する記録媒体などとして提供することも可能であり、また、種々な装置やシステムとして提供することも可能である。
また、本発明の適用分野としては、必ずしも以上に示したものに限られず、本発明は、種々な分野に適用することが可能なものである。
また、本発明に係るシステムや装置などにおいて行われる各種の処理としては、例えばプロセッサやメモリ等を備えたハードウエア資源においてプロセッサがＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に格納された制御プログラムを実行することにより制御される構成が用いられてもよく、また、例えば当該処理を実行するための各機能手段が独立したハードウエア回路として構成されてもよい。
また、本発明は上記の制御プログラムを格納したフロッピー（登録商標）ディスクやＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ等のコンピュータにより読み取り可能な記録媒体や当該プログラム（自体）として把握することもでき、当該制御プログラムを当該記録媒体からコンピュータに入力してプロセッサに実行させることにより、本発明に係る処理を遂行させることができる。
【図面の簡単な説明】
【００６２】
【図１】（ａ）は本発明の一実施例に係る情報処理システムの構成例を示す図であり、（ｂ）はプロセッサ負荷情報の一例を示す図であり、（ｃ）はシステム負荷情報の一例を示す図である。
【図２】ジョブ起動ファイルの一例を示す図である。
【図３】ジョブスケジューリングプロセスによりシステムに入力するジョブを制御する処理の手順の一例を示す図である。
【図４】（１）〜（５）はＣＰＵ空き待ちジョブテーブルの例を示す図である。
【図５】ジョブスケジューリングプロセスにより行われる待ち管理処理１の手順の一例を示す図である。
【図６】ジョブスケジューリングプロセスにより行われる待ち管理処理１の手順の一例を示す図である。
【図７】ジョブ起動ファイルのＣＰＵ使用率を更新する処理の手順の一例を示す図である。
【図８】情報処理システムをクライアント／サーバ方式で実現した場合におけるハードウエア及びソフトウエアの構成例を示す図である。
【図９】ＳＮＭＰの構成例を示す図である。
【図１０】（ａ）はアプリケーション実行管理のためのマネージャとエージェントの構成例を示す図であり、（ｂ）はプログラム起動通知の一例を示す図であり、（ｃ）はプログラム終了通知の一例を示す図である。
【図１１】アプリケーションプロパティファイルの一例を示す図である。
【図１２】実行管理マネージャにより行われるプログラム起動通知の処理の手順の一例を示してある。
【図１３】実行管理マネージャにより行われる待ち管理処理２の手順の一例を示す図である。
【図１４】実行管理マネージャにより行われる待ち管理処理２の手順の一例を示す図である。
【図１５】待ち時間が超過したジョブについての警報表示の一例を示す図である。
【符号の説明】
【００６３】
Ａ１〜Ａ４・・プロセッサ、  Ｂ１〜Ｂ４・・プロセッサ負荷情報収集プロセス、  １・・システム負荷情報管理プロセス、  ２・・ジョブスケジューリング管理プロセス、  １１・・ジョブ終了管理プロセス、  ２１ａ〜２１ｄ・・分散処理ミドルウエアとＯＳ、  ２２ａ〜２２ｄ・・ＳＮＭＰ、  ２３ａ〜２３ｄ・・アプリケーション実行管理ソフトウエア、  ２４ａ〜２４ｄ・・実行中アプリケーション、  ３１・・ｓｎｍｐマネージャ、  ３２ａ〜３２ｄ・・ｓｎｍｐエージェント、  ４１・・実行管理マネージャ、  ４２、４２ａ〜４２ｄ・・実行管理エージェント、
【図１】
2007156976.tif 000003
【図２】
2007156976.tif 000004
【図３】
2007156976.tif 000005
【図４】
2007156976.tif 000006
【図５】
2007156976.tif 000007
【図６】
2007156976.tif 000008
【図７】
2007156976.tif 000009
【図８】
2007156976.tif 000010
【図９】
2007156976.tif 000011
【図１０】
2007156976.tif 000012
【図１１】
2007156976.tif 000013
【図１２】
2007156976.tif 000014
【図１３】
2007156976.tif 000015
【図１４】
2007156976.tif 000016
【図１５】
2007156976.tif 000017