(57)【要約】【課題】複数のＣＰＵを同時に割り当てるべきでない並列プログラムが本来望まない動作を行うこととなるといった問題点を解消する。【解決手段】ギャングスケジューラ２０は、「複数のＣＰＵを同時に割り当てるべき並列プログラムでは各振り分け処理の使用ＣＰＵ時間がほぼ等しくなるのに対し、複数のＣＰＵを同時に割り当てるべきでない並列プログラムでは各振り分け処理の使用ＣＰＵ時間に差が生じる」という一般的な特性を利用し、各並列プログラムにおける各振り分け処理の使用ＣＰＵ時間を比較することによって複数のＣＰＵを同時に割り当てるべき並列プログラムと複数のＣＰＵを同時に割り当てるべきでない並列プログラムとを区別する機能を備え、複数のＣＰＵを同時に割り当てるべきでない並列プログラムをギャングスケジューリングの対象とはしないように制御した上で、次回実行並列プログラムを決定する。【選択図】        図１
2004272466.tif 000002
【特許請求の範囲】
【請求項１】
ギャングスケジューリング機能を有するコンピュータシステムにおいて、
「複数のＣＰＵを同時に割り当てるべき並列プログラムでは各振り分け処理の使用ＣＰＵ時間がほぼ等しくなるのに対し、複数のＣＰＵを同時に割り当てるべきでない並列プログラムでは各振り分け処理の使用ＣＰＵ時間に差が生じる」という一般的な特性を利用し、各並列プログラムにおける各振り分け処理の使用ＣＰＵ時間を比較することによって複数のＣＰＵを同時に割り当てるべき並列プログラムと複数のＣＰＵを同時に割り当てるべきでない並列プログラムとを区別する機能を備え、複数のＣＰＵを同時に割り当てるべきでない並列プログラムをギャングスケジューリングの対象とはしないように制御した上で、次回実行並列プログラムを決定するギャングスケジューラと、
各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視してその監視結果を前記ギャングスケジューラに通知し、前記ギャングスケジューラにより決定された次回実行並列プログラムへのＣＰＵの割り当てに関する管理を行うカーネルスケジューラと
を有することを特徴とするギャングスケジューリング方式。
【請求項２】
ギャングスケジューリング機能を有するコンピュータシステムにおいて、
当該コンピュータシステムで実行される各並列プログラムに対応する設定ＣＰＵ数を格納する設定ＣＰＵ数格納部と、
各並列プログラムの各振り分け処理の使用ＣＰＵ時間の比較によりギャングスケジューリング対象の並列プログラムを決定する際に用いられるギャングスケジューリング対象決定閾値を格納するギャングスケジューリング対象決定閾値格納部と、
一定期間毎に、各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視し、その監視結果を示す情報をギャングスケジューラに渡す機能を持つカーネルスケジューラ内の使用ＣＰＵ時間監視手段と、
一定期間毎に、前記使用ＣＰＵ時間監視手段から渡された各並列プログラムの各振り分け処理のＣＰＵ使用時間の参照・比較を行い、各並列プログラムについて、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差の大小を表す値とギャングスケジューリング対象決定閾値との比較を行い、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差が当該ギャングスケジューリング対象決定閾値で示される基準よりも小さい各並列プログラムだけをギャングスケジューリング対象にすると決定する機能を持つギャングスケジューラ内のギャングスケジューリング対象決定手段と、
前記ギャングスケジューリング対象決定手段で決定されたギャングスケジューリング対象並列プログラム群の中から次回実行並列プログラムを決定し、その決定結果をカーネルスケジューラに渡す機能を持つギャングスケジューラ内の次回実行並列プログラム決定手段と、
前記次回実行並列プログラム決定手段で決定された次回実行並列プログラムに対して、前記設定ＣＰＵ数格納部に格納されている当該次回実行並列プログラムに対応する設定ＣＰＵ数で示される数のＣＰＵを同時に割り当てることが保証されるように調整を行う機能を持つカーネルスケジューラ内のＣＰＵ割り当て決定手段と、
各並列プログラムに対して当該各並列プログラムに対する設定ＣＰＵ数を超える数のＣＰＵを与えないようにするための管理を行う機能を持つカーネルスケジューラ内のＣＰＵ割り当て数監視手段と
を有することを特徴とするギャングスケジューリング方式。
【請求項３】
ギャングスケジューリング対象決定閾値格納部内のギャングスケジューリング対象決定閾値の変更を行う閾値変更手段を有することを特徴とする請求項２記載のギャングスケジューリング方式。
【請求項４】
各並列プログラムについて、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差と使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間との比率をギャングスケジューリング対象判別比率として算出し、当該ギャングスケジューリング対象判別比率とギャングスケジューリング対象決定閾値とを比較することによって使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差が当該ギャングスケジューリング対象決定閾値で示される基準よりも小さいか否かを判定するギャングスケジューリング対象決定手段を有することを特徴とする請求項２または請求項３記載のギャングスケジューリング方式。
【請求項５】
ギャングスケジューリング機能を有するコンピュータシステムを、「複数のＣＰＵを同時に割り当てるべき並列プログラムでは各振り分け処理の使用ＣＰＵ時間がほぼ等しくなるのに対し、複数のＣＰＵを同時に割り当てるべきでない並列プログラムでは各振り分け処理の使用ＣＰＵ時間に差が生じる」という一般的な特性を利用し、各並列プログラムにおける各振り分け処理の使用ＣＰＵ時間を比較することによって複数のＣＰＵを同時に割り当てるべき並列プログラムと複数のＣＰＵを同時に割り当てるべきでない並列プログラムとを区別する機能を備え、複数のＣＰＵを同時に割り当てるべきでない並列プログラムをギャングスケジューリングの対象とはしないように制御した上で、次回実行並列プログラムを決定するギャングスケジューラ，および各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視してその監視結果を前記ギャングスケジューラに通知し、前記ギャングスケジューラにより決定された次回実行並列プログラムへのＣＰＵの割り当てに関する管理を行うカーネルスケジューラとして機能させるためのプログラム。
【請求項６】
各並列プログラムに対応する設定ＣＰＵ数を格納する設定ＣＰＵ数格納部およびギャングスケジューリング対象決定閾値を格納するギャングスケジューリング対象決定閾値格納部が存在することを前提として、ギャングスケジューリング機能を有するコンピュータシステムを、一定期間毎に、各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視し、その監視結果を示す情報をギャングスケジューラに渡す機能を持つカーネルスケジューラ内の使用ＣＰＵ時間監視手段，一定期間毎に、前記使用ＣＰＵ時間監視手段から渡された各並列プログラムの各振り分け処理のＣＰＵ使用時間の参照・比較を行い、各並列プログラムについて、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差の大小を表す値とギャングスケジューリング対象決定閾値との比較を行い、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差が当該ギャングスケジューリング対象決定閾値で示される基準よりも小さい各並列プログラムだけをギャングスケジューリング対象にすると決定する機能を持つギャングスケジューラ内のギャングスケジューリング対象決定手段，前記ギャングスケジューリング対象決定手段で決定されたギャングスケジューリング対象並列プログラム群の中から次回実行並列プログラムを決定し、その決定結果をカーネルスケジューラに渡す機能を持つギャングスケジューラ内の次回実行並列プログラム決定手段，前記次回実行並列プログラム決定手段で決定された次回実行並列プログラムに対して、前記設定ＣＰＵ数格納部に格納されている当該次回実行並列プログラムに対応する設定ＣＰＵ数で示される数のＣＰＵを同時に割り当てることが保証されるように調整を行う機能を持つカーネルスケジューラ内のＣＰＵ割り当て決定手段，および各並列プログラムに対して当該各並列プログラムに対する設定ＣＰＵ数を超える数のＣＰＵを与えないようにするための管理を行う機能を持つカーネルスケジューラ内のＣＰＵ割り当て数監視手段として機能させるためのプログラム。
【請求項７】
各並列プログラムに対応する設定ＣＰＵ数を格納する設定ＣＰＵ数格納部およびギャングスケジューリング対象決定閾値を格納するギャングスケジューリング対象決定閾値格納部が存在することを前提として、ギャングスケジューリング機能を有するコンピュータシステムを、一定期間毎に、各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視し、その監視結果を示す情報をギャングスケジューラに渡す機能を持つカーネルスケジューラ内の使用ＣＰＵ時間監視手段，一定期間毎に、前記使用ＣＰＵ時間監視手段から渡された各並列プログラムの各振り分け処理のＣＰＵ使用時間の参照・比較を行い、各並列プログラムについて、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差の大小を表す値とギャングスケジューリング対象決定閾値との比較を行い、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差が当該ギャングスケジューリング対象決定閾値で示される基準よりも小さい各並列プログラムだけをギャングスケジューリング対象にすると決定する機能を持つギャングスケジューラ内のギャングスケジューリング対象決定手段，前記ギャングスケジューリング対象決定手段で決定されたギャングスケジューリング対象並列プログラム群の中から次回実行並列プログラムを決定し、その決定結果をカーネルスケジューラに渡す機能を持つギャングスケジューラ内の次回実行並列プログラム決定手段，前記次回実行並列プログラム決定手段で決定された次回実行並列プログラムに対して、前記設定ＣＰＵ数格納部に格納されている当該次回実行並列プログラムに対応する設定ＣＰＵ数で示される数のＣＰＵを同時に割り当てることが保証されるように調整を行う機能を持つカーネルスケジューラ内のＣＰＵ割り当て決定手段，各並列プログラムに対して当該各並列プログラムに対する設定ＣＰＵ数を超える数のＣＰＵを与えないようにするための管理を行う機能を持つカーネルスケジューラ内のＣＰＵ割り当て数監視手段，および前記ギャングスケジューリング対象決定閾値格納部内のギャングスケジューリング対象決定閾値の変更を行う閾値変更手段として機能させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ギャングスケジューリング機能（並列プログラムをスケジュールするとき、必要とする数のＣＰＵを同時に割り当てる機能）を有するコンピュータシステムにおけるギャングスケジューリング方式に関する。
【０００２】
【従来の技術】
スーパーコンピュータ等を用いた数値シミュレーションでは、並列プログラムで並列処理を行うのが一般的である。
【０００３】
並列プログラムでは、複数の処理が複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に振り分けられて処理が行われる。なお、本明細書では、並列プログラムにおいて複数のＣＰＵに振り分けられた複数の処理を構成する個々の処理を「振り分け処理」と呼ぶ。
【０００４】
このような並列プログラムでは、全ての振り分け処理の完了を待ち合わせることがあり、もしも多重に並列プログラムが実行されること等によってＣＰＵの奪い合いが起こると、振り分け処理の完了の待ち合わせによって無駄な時間が生じ、ユーザのＣＰＵ使用時間であるユーザタイムが延びてしまうことがある。大学や研究機関等で用いられるユーザタイムに応じた料金を徴収する管理システムでは、この無駄なユーザタイムの延びが大きな問題となる。
【０００５】
上記のような問題を解決するために用いられる技術が、ギャングスケジューリングである。ギャングスケジューリングは、並列プログラムに対して使用する複数のＣＰＵを必ず同時に割り当てる方法を提供する。これにより、多重に並列プログラムが実行されても、単独で実行されるときと同じ効率で、各並列プログラムを実行できるようになり、「無駄なユーザタイムの延び」という上記の問題は解消する。
【０００６】
このようなギャングスケジューリング機能を実現するための従来のギャングスケジューリング方式（ギャングスケジューリングの実装手法）では、全ての並列プログラムを対象としてギャングスケジューリングが行われていた。すなわち、全ての並列プログラムに対して、定期的にギャングスケジューラがＣＰＵを割り当てるべき並列プログラムを決定し、決定された並列プログラムにカーネルスケジューラが設定ＣＰＵ数を超えないＣＰＵ数の使用を保証していた。
【０００７】
この従来技術は、一定期間毎に並列プログラムに対して設定されたＣＰＵ数の使用が保証されるため、多重に並列プログラムが実行されても、必要なＣＰＵ数が確保されないために起きるユーザタイムの延びが起きずに並列プログラムを効率良く実行でき、また一定期間毎にギャングスケジューラを起動するためギャングスケジューリングによるオーバヘッドが少ないという特徴がある（例えば、非特許文献１参照）。
【０００８】
【非特許文献１】
Ｋｏｊｉ  ＳＵＺＵＫＩ  ａｎｄ  Ｋｅｎｔａｒｏ  ＹＡＢＵＫＩ，  ”Ｄｅｓｉｇｎ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔｉｏｎ
ｏｆ  Ｇａｎｇ  Ｓｃｈｅｄｕｌｅｒ  ｏｎ  Ｍｕｌｔｉ−Ｎｏｄｅ  ＳＸ−４  ａｎｄ  ＳＸ−５  Ｓｕｐｅｒｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ”，  ＮＥＣ
Ｒｅｓ．  ＆  Ｄｅｖｅｌｏｐ．，  ３９，  ４，  ｐｐ．  ３９６−４０１，  １９９８
【０００９】
【発明が解決しようとする課題】
上述した従来技術（従来のギャングスケジューリング方式）では、上記のように、全ての並列プログラムがギャングスケジューリングの対象となっていたので、次のような問題点があった。
【００１０】
すなわち、その問題点とは、複数のＣＰＵを同時に割り当てるべきでない（割り当てる必要のない）並列プログラムに対しても、ギャングスケジューリングを行ってしまうことである。そして、そのような並列プログラムが一定期間毎にギャングスケジューリングの対象になることにより、その並列プログラムが本来望まない動作を行うこととなったり、またそのことが複数のＣＰＵを同時に割り当てるべき並列プログラムに対しても悪影響を及ぼすこととなっていた。
【００１１】
ここで、一般的に、複数のＣＰＵを同時に割り当てるべき並列プログラムは、同等の処理を複数のＣＰＵに振り分けて並列処理を行う並列プログラムであり、当該並列プログラム内の各振り分け処理の使用ＣＰＵ時間がほぼ等しくなるという特性を持つ。それに対し、一般的に、複数のＣＰＵを同時に割り当てるべきでない（割り当てる必要のない）並列プログラムは、処理の都合上異なる処理を複数のＣＰＵに振り分けた並列プログラムであり、当該並列プログラム内の各振り分け処理の使用ＣＰＵ時間に差が生じるという特性を持つ。
【００１２】
本発明の目的は、上述の点に鑑み、「複数のＣＰＵを同時に割り当てるべき並列プログラムでは各振り分け処理の使用ＣＰＵ時間がほぼ等しくなるのに対し、複数のＣＰＵを同時に割り当てるべきでない（割り当てる必要のない）並列プログラムでは各振り分け処理の使用ＣＰＵ時間に差が生じる」という一般的な特性を利用し、各並列プログラムにおける各振り分け処理の使用ＣＰＵ時間を比較することによって複数のＣＰＵを同時に割り当てるべき並列プログラムと複数のＣＰＵを同時に割り当てるべきでない並列プログラムとを区別する機能をギャングスケジューラに追加し、従来技術におけるギャングスケジューラの上記の問題点（複数のＣＰＵを同時に割り当てるべきでない並列プログラムが本来望まない動作を行うこととなったり、そのことが複数のＣＰＵを同時に割り当てるべき並列プログラムにも悪影響を及ぼすこととなったりするという問題点）を改善（解消）することができるギャングスケジューリング方式（全ての並列プログラムの中からギャングスケジューリングの対象とする並列プログラムを選別して決定する機能を含むギャングスケジューリング方式）を提供することにある。
【００１３】
【課題を解決するための手段】
本発明のギャングスケジューリング方式は、ギャングスケジューリング機能を有するコンピュータシステムにおいて、当該コンピュータシステムで実行される各並列プログラムに対応する設定ＣＰＵ数を格納する設定ＣＰＵ数格納部と、各並列プログラムの各振り分け処理の使用ＣＰＵ時間の比較によりギャングスケジューリング対象の並列プログラムを決定する際に用いられるギャングスケジューリング対象決定閾値を格納するギャングスケジューリング対象決定閾値格納部と、一定期間毎に、各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視し、その監視結果を示す情報をギャングスケジューラに渡す機能を持つカーネルスケジューラ内の使用ＣＰＵ時間監視手段と、一定期間毎に、前記使用ＣＰＵ時間監視手段から渡された各並列プログラムの各振り分け処理のＣＰＵ使用時間の参照・比較を行い、各並列プログラムについて、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差の大小を表す値とギャングスケジューリング対象決定閾値との比較を行い、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間との差が当該ギャングスケジューリング対象決定閾値で示される基準よりも小さい各並列プログラムだけをギャングスケジューリング対象にすると決定する機能を持つギャングスケジューラ内のギャングスケジューリング対象決定手段と、前記ギャングスケジューリング対象決定手段で決定されたギャングスケジューリング対象並列プログラム群（ギャングスケジューリング対象にすると決定された並列プログラム群）の中から次回実行並列プログラムを決定し、その決定結果をカーネルスケジューラに渡す機能を持つギャングスケジューラ内の次回実行並列プログラム決定手段と、前記次回実行並列プログラム決定手段で決定された次回実行並列プログラムに対して、前記設定ＣＰＵ数格納部に格納されている当該次回実行並列プログラムに対応する設定ＣＰＵ数で示される数のＣＰＵを同時に割り当てることが保証されるように調整を行う機能を持つカーネルスケジューラ内のＣＰＵ割り当て決定手段と、各並列プログラムに対して当該各並列プログラムに対する設定ＣＰＵ数を超える数のＣＰＵを与えないようにするための管理（割り当て時の管理とともに割り当て後の管理も含む）を行う機能を持つカーネルスケジューラ内のＣＰＵ割り当て数監視手段とを有する。
【００１４】
また、本発明のギャングスケジューリング方式は、上記の各構成要素に加えて、ギャングスケジューリング対象決定閾値格納部内のギャングスケジューリング対象決定閾値の変更（ユーザからの指示等に基づくコンピュータシステムの動作・運用状況等に応じた動的／静的な変更）を行う閾値変更手段を有するように構成することも可能である。
【００１５】
なお、本発明のギャングスケジューリング方式は、より一般的には、ギャングスケジューリング機能を有するコンピュータシステムにおいて、「複数のＣＰＵを同時に割り当てるべき並列プログラムでは各振り分け処理の使用ＣＰＵ時間がほぼ等しくなるのに対し、複数のＣＰＵを同時に割り当てるべきでない（割り当てる必要のない）並列プログラムでは各振り分け処理の使用ＣＰＵ時間に差が生じる」という一般的な特性を利用し、各並列プログラムにおける各振り分け処理の使用ＣＰＵ時間を比較することによって複数のＣＰＵを同時に割り当てるべき並列プログラムと複数のＣＰＵを同時に割り当てるべきでない並列プログラムとを区別する機能を備え、複数のＣＰＵを同時に割り当てるべきでない並列プログラムをギャングスケジューリングの対象とはしないように制御した上で、次回実行並列プログラム（ギャングスケジューリングにおける次回のＣＰＵ割り当て時にＣＰＵ割り当ての対象とすべき並列プログラム）を決定するギャングスケジューラと、各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視してその監視結果を前記ギャングスケジューラに通知し、前記ギャングスケジューラにより決定された次回実行並列プログラムへのＣＰＵの割り当てに関する管理を行うカーネルスケジューラとを有すると表現することができる。
【００１６】
さらに、本発明は、ギャングスケジューリング機能を有するコンピュータシステムを、「複数のＣＰＵを同時に割り当てるべき並列プログラムでは各振り分け処理の使用ＣＰＵ時間がほぼ等しくなるのに対し、複数のＣＰＵを同時に割り当てるべきでない並列プログラムでは各振り分け処理の使用ＣＰＵ時間に差が生じる」という一般的な特性を利用し、各並列プログラムにおける各振り分け処理の使用ＣＰＵ時間を比較することによって複数のＣＰＵを同時に割り当てるべき並列プログラムと複数のＣＰＵを同時に割り当てるべきでない並列プログラムとを区別する機能を備え、複数のＣＰＵを同時に割り当てるべきでない並列プログラムをギャングスケジューリングの対象とはしないように制御した上で、次回実行並列プログラムを決定するギャングスケジューラ，および各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視してその監視結果を前記ギャングスケジューラに通知し、前記ギャングスケジューラにより決定された次回実行並列プログラムへのＣＰＵの割り当てに関する管理を行うカーネルスケジューラとして機能させるためのプログラムの態様で実現することも可能である。
【００１７】
【発明の実施の形態】
次に、本発明について図面を参照して詳細に説明する。
【００１８】
（１）  第１の実施の形態
【００１９】
図１は、本発明の第１の実施の形態に係るギャングスケジューリング方式の構成を示すブロック図である。
【００２０】
図１を参照すると、本実施の形態に係るギャングスケジューリング方式は、ＣＰＵの割り当てを管理する機能を持つカーネルスケジューラ１０と、ギャングスケジューリングを管理する機能を持つギャングスケジューラ２０と、設定ＣＰＵ数格納部３０と、ギャングスケジューリング対象決定閾値格納部４０とを含んで構成されている。
【００２１】
カーネルスケジューラ１０は、使用ＣＰＵ時間監視手段１１と、ＣＰＵ割り当て決定手段１２と、ＣＰＵ割り当て数監視手段１３とを含んで構成されている。
【００２２】
ギャングスケジューラ２０は、ギャングスケジューリング対象決定手段２１と、次回実行並列プログラム決定手段２２とを含んで構成されている。
【００２３】
設定ＣＰＵ数格納部３０内には、各並列プログラムに対応する設定ＣＰＵ数が格納されている。各並列プログラムに対応する設定ＣＰＵ数は、当該各並列プログラムの属性として設定されている値であり、当該各並列プログラムの実行に必要なＣＰＵの数を示す情報である。
【００２４】
ギャングスケジューリング対象決定閾値格納部４０内のギャングスケジューリング対象決定閾値は、各並列プログラムの各振り分け処理（先述のように、「並列プログラムにおいて複数のＣＰＵに振り分けられた複数の処理を構成する個々の処理」を意味する）の使用ＣＰＵ時間の比較によりギャングスケジューリング対象の並列プログラムを決定する際に用いられる閾値である。
【００２５】
ギャングスケジューラ２０内のギャングスケジューリング対象決定手段２１は、一定期間（例えば、１秒）毎に、カーネルスケジューラ１０から渡された各並列プログラムの各振り分け処理の使用ＣＰＵ時間の参照・比較を行う。そして、各並列プログラムについて、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間（最大使用ＣＰＵ時間）と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間（最小使用ＣＰＵ時間）との差の大小を表す値と所定の閾値（本実施の形態では、ギャングスケジューリング対象決定閾値）との比較を行い、最大使用ＣＰＵ時間と最小使用ＣＰＵ時間との差が当該閾値で示される基準よりも小さい各並列プログラムだけをギャングスケジューリング対象にすると決定し、その決定結果を次回実行並列プログラム決定手段２２やカーネルスケジューラ１０に渡す機能を持つ。
【００２６】
具体的には、ある並列プログラムについて、最大使用ＣＰＵ時間（ＭＡＸと表記する）と最小使用ＣＰＵ時間（ＭＩＮと表記する）との差とＭＡＸとの比率Ｒ（Ｒ＝（ＭＡＸ−ＭＩＮ）／ＭＡＸ＝１−ＭＩＮ／ＭＡＸ）がギャングスケジューリング対象決定閾値以下または未満（以下にするか未満にするかはシステム設定によって任意である。本実施の形態では「以下」とする）の場合にはその並列プログラムをギャングスケジューリングの対象にし、そうでない場合にはその並列プログラムをギャングスケジューリングの対象にしないという決定を行う。なお、上記の比率Ｒ（後述のように、「ギャングスケジューリング対象判別比率」と呼ぶ）の計算式が採用される場合には、ギャングスケジューリング対象決定閾値は０〜１（１００％）の値をとる。
【００２７】
ギャングスケジューラ２０内の次回実行並列プログラム決定手段２２は、ギャングスケジューリング対象決定手段２１で決定されたギャングスケジューリング対象並列プログラム群（ギャングスケジューリング対象にすると決定された並列プログラム群）の中から、次回に実行するべき並列プログラム（次回実行並列プログラム）を決定し（この決定手法は従来技術と同様である）、その決定結果をカーネルスケジューラ１０に渡す機能を持つ。
【００２８】
カーネルスケジューラ１０内の使用ＣＰＵ時間監視手段１１は、一定期間毎に、各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視し、その監視結果を示す情報（各並列プログラムの各振り分け処理の使用ＣＰＵ時間）をギャングスケジューラ２０に渡す機能を持つ。
【００２９】
カーネルスケジューラ１０内のＣＰＵ割り当て決定手段１２は、ギャングスケジューラ２０で決定された次回実行並列プログラムに対して、設定ＣＰＵ数格納部３０に格納されている当該次回実行並列プログラムに対応する設定ＣＰＵ数で示される数のＣＰＵを同時に割り当てることが保証されるように調整を行う機能を持つ。
【００３０】
カーネルスケジューラ１０内のＣＰＵ割り当て数監視手段１３は、各並列プログラムに対して当該各並列プログラムに対する設定ＣＰＵ数を超える数のＣＰＵを与えないようにするための管理（割り当て時の管理とともに割り当て後の管理も含む）を行う機能を持つ。
【００３１】
なお、ＣＰＵ割り当て決定手段１２およびＣＰＵ割り当て数監視手段１３によるＣＰＵの割り当てに関する処理は、従来技術における処理と同様のものである。
【００３２】
図２は、本実施の形態に係るギャングスケジューリング方式における使用ＣＰＵ時間監視処理を示す流れ図である。この処理は、使用ＣＰＵ時間監視ステップＡ１と、監視結果引き渡しステップＡ２とからなる。
【００３３】
図３は、本実施の形態に係るギャングスケジューリング方式におけるギャングスケジューリング処理を示す流れ図である。この処理は、使用ＣＰＵ時間参照・比較ステップＢ１と、振り分け処理抽出ステップＢ２と、ギャングスケジューリング対象判別比率算出ステップＢ３と、ギャングスケジューリング対象判別比率大小判定ステップＢ４と、ギャングスケジューリング対象決定ステップＢ５と、ギャングスケジューリング非対象決定ステップＢ６と、全並列プログラム処理終了判定ステップＢ７と、次回実行並列プログラム決定ステップＢ８とからなる。
【００３４】
次に、図１〜図３を参照して、上記のように構成された本実施の形態に係るギャングスケジューリング方式の動作について詳細に説明する。
【００３５】
第１に、カーネルスケジューラ１０における使用ＣＰＵ時間監視処理時の動作について説明する（図２参照）。
【００３６】
カーネルスケジューラ１０は、常に、ＣＰＵの割り当てを管理している。
【００３７】
その管理の一環として、カーネルスケジューラ１０内の使用ＣＰＵ時間監視手段１１は、各並列プログラムの各振り分け処理の使用ＣＰＵ時間を監視し（ステップＡ１）、その監視結果を示す情報（各並列プログラムの各振り分け処理の使用ＣＰＵ時間を示す情報）をギャングスケジューラ２０に渡す（ステップＡ２）。使用ＣＰＵ時間監視手段１１は、上記の処理を、一定期間毎に（例えば、１秒毎に）、繰り返す。
【００３８】
第２に、ギャングスケジューラ２０におけるギャングスケジューリング処理時の動作について説明する（図３参照）。なお、この動作（処理）は、使用ＣＰＵ時間監視手段１１における監視間隔である上記の一定期間（例えば、１秒）毎に行われる。
【００３９】
ギャングスケジューラ２０内のギャングスケジューリング対象決定手段２１は、カーネルスケジューラ１０から渡された各並列プログラムの各振り分け処理の使用ＣＰＵ時間の参照・比較を行う（ステップＢ１）。
【００４０】
ギャングスケジューリング対象決定手段２１は、ステップＢ１の参照・比較に基づき、全ての並列プログラムの各々について順次、以下のステップＢ２〜ステップＢ６の処理を行う。
【００４１】
まず、当該並列プログラムについて、使用ＣＰＵ時間の最も大きい振り分け処理と使用ＣＰＵ時間の最も小さい振り分け処理とを抽出する（ステップＢ２）。
【００４２】
次に、当該並列プログラムについて、使用ＣＰＵ時間の最も大きい振り分け処理の使用ＣＰＵ時間（最大使用ＣＰＵ時間。ＭＡＸと表記する）と使用ＣＰＵ時間の最も小さい振り分け処理の使用ＣＰＵ時間（最小使用ＣＰＵ時間。ＭＩＮと表記する）との差とＭＡＸとの比率Ｒ（Ｒ＝１−ＭＩＮ／ＭＡＸという値）を算出する（ステップＢ３）。なお、上記のようにして算出される比率Ｒをギャングスケジューリング対象判別比率と呼ぶ。
【００４３】
さらに、ステップＢ３で算出したギャングスケジューリング対象判別比率がギャングスケジューリング対象決定閾値格納部４０内のギャングスケジューリング対象決定閾値以下であるか否か（先に述べたように、「以下であるか否か」の代わりに「未満であるか否か」としてもよい）を判定する（ステップＢ４）。
【００４４】
ステップＢ４で「ギャングスケジューリング対象判別比率がギャングスケジューリング対象決定閾値以下である」と判定した場合には、その並列プログラムをギャングスケジューリング対象にするという決定を行い、その決定結果（その並列プログラムがギャングスケジューリング対象並列プログラムである旨）を次回実行並列プログラム決定手段２２に渡す（ステップＢ５）。
【００４５】
一方、ステップＢ４で「ギャングスケジューリング対象判別比率がギャングスケジューリング対象決定閾値以下ではない」と判定した場合には、その並列プログラムをギャングスケジューリング対象にしないという決定を行い、その決定結果をカーネルスケジューラ１０に渡す（ステップＢ６）。
【００４６】
ギャングスケジューリング対象決定手段２１は、以上のステップＢ２〜ステップＢ６の処理の後に、全ての並列プログラム（カーネルスケジューラ１０による使用ＣＰＵ時間の監視対象の全並列プログラム）に対するステップＢ２〜ステップＢ６の処理が終了したか否かを判定する（ステップＢ７）。
【００４７】
ギャングスケジューリング対象決定手段２１は、ステップＢ７で「全ての並列プログラムに対してはステップＢ２〜ステップＢ６の処理はまだ終了していない」と判定した場合には、次の並列プログラム（未処理の並列プログラムの１つ）について、ステップＢ２〜ステップＢ６の処理を繰り返す。一方、ステップＢ７で「全ての並列プログラムに対するステップＢ２〜ステップＢ６の処理が終了した」と判定した場合には、次回実行並列プログラム決定手段２２に制御を渡す。
【００４８】
ギャングスケジューラ２０内の次回実行並列プログラム決定手段２２は、ギャングスケジューリング対象決定手段２１から制御を渡されると、ギャングスケジューリング対象決定手段２１で決定されたギャングスケジューリング対象並列プログラム群の中から、従来技術と同様の決定アルゴリズムによって、次回のＣＰＵ割り当て時（ギャングスケジューリングによるＣＰＵの割り当て時）にＣＰＵ割り当ての対象とすべき並列プログラムである次回実行並列プログラムを決定し、その決定結果をカーネルスケジューラ１０に渡す（ステップＢ８）。
【００４９】
第３に、カーネルスケジューラ１０におけるＣＰＵ割り当て処理時の動作について説明する。
【００５０】
カーネルスケジューラ１０内のＣＰＵ割り当て決定手段１２は、図３のステップＢ８でギャングスケジューラ２０から渡された決定結果（次回実行並列プログラムを示す情報）を用いて、ギャングスケジューリングにおける次回のＣＰＵ割り当て時にＣＰＵ割り当ての対象とすべき並列プログラム（すなわち、次回実行並列プログラム）に対して、当該並列プログラムに対する設定ＣＰＵ数（設定ＣＰＵ数格納部３０に格納されている当該並列プログラムに対応する設定ＣＰＵ数）で示される数のＣＰＵを同時に割り当てることが保証されるように調整を行う。
【００５１】
同時に、カーネルスケジューラ１０内のＣＰＵ割り当て数監視手段１３は、当該並列プログラム（次回実行並列プログラム）に対して、当該設定ＣＰＵ数を超える数のＣＰＵを割り当てないようにするための管理を行う。また、ＣＰＵ割り当て数監視手段１３は、このＣＰＵ割り当て時の後も、当該並列プログラムに当該設定ＣＰＵ数を超える数のＣＰＵを与えないようにするための管理を行う。
【００５２】
なお、カーネルスケジューラ１０は、ギャングスケジューラ２０によってギャングスケジューリングの対象としないと決定された並列プログラム群（図３のステップＢ５参照）に対しては、ＣＰＵ割り当て数監視手段１３による設定ＣＰＵ数を超える数のＣＰＵを与えないようにするための管理を行い、それ以外については非並列プログラムと同等の処理を行う。
【００５３】
以上のような構成および動作により、従来技術によるギャングスケジューラの問題点を改善することができる。
【００５４】
（２）  第２の実施の形態
【００５５】
図４は、本発明の第２の実施の形態に係るギャングスケジューリング方式の構成を示すブロック図である。
【００５６】
図４を参照すると、本実施の形態に係るギャングスケジューリング方式は、ＣＰＵの割り当てを管理する機能を持つカーネルスケジューラ１０と、ギャングスケジューリングを管理する機能を持つギャングスケジューラ２０と、設定ＣＰＵ数格納部３０と、ギャングスケジューリング対象決定閾値格納部４０と、閾値変更手段５０とを含んで構成されている。
【００５７】
カーネルスケジューラ１０は、第１の実施の形態と同様の構成要素であり、使用ＣＰＵ時間監視手段１１と、ＣＰＵ割り当て決定手段１２と、ＣＰＵ割り当て数監視手段１３とを含んで構成されている。
【００５８】
ギャングスケジューラ２０は、第１の実施の形態と同様の構成要素であり、ギャングスケジューリング対象決定手段２１と、次回実行並列プログラム決定手段２２とを含んで構成されている。
【００５９】
本実施の形態（第２の実施の形態）に係るギャングスケジューリング方式は、第１の実施の形態に係るギャングスケジューリング方式と比較して、ギャングスケジューリング対象決定閾値格納部４０内のギャングスケジューリング対象決定閾値の変更（動的または静的な変更）を行うための閾値変更手段５０を有している点が異なっている。
【００６０】
すなわち、閾値変更手段５０は、ユーザからの指示等に基づき、ギャングスケジューリング対象決定閾値格納部４０内のギャングスケジューリング対象決定閾値を動的または静的に変更する。これにより、各並列プログラムをギャングスケジューリングの対象にするか否かの判別基準を、本実施の形態が適用されるコンピュータシステムの動作・運用状況に応じて適切に変更設定することができるようになり、当該コンピュータシステムにおける並列プログラム群の運用を柔軟かつ効率的に制御することが可能になる。
【００６１】
ここで、このようなギャングスケジューリング対象決定閾値の変更の内容として、Ｒ＝１−ＭＩＮ／ＭＡＸという計算式で算出されるギャングスケジューリング対象判別比率Ｒと比較されるギャングスケジューリング対象決定閾値を１（１００％）と設定すれば、従来技術のギャングスケジューラによるギャングスケジューリング処理（全ての並列プログラムをギャングスケジューリング対象とする処理）と全く同一のものとすることができる。
【００６２】
なお、閾値変更手段５０に関する動作以外の動作については、本実施の形態（第２の実施の形態）も第１の実施の形態も同様なものとなる。
【００６３】
（３）  第３の実施の形態
【００６４】
図５は、本発明の第３の実施の形態の構成を示すブロック図である。
【００６５】
図５を参照すると、本発明の第３の実施の形態は、図１に示した第１の実施の形態に対して、ギャングスケジューリング制御プログラム５００を備える点が異なっている。
【００６６】
ギャングスケジューリング制御プログラム５００は、カーネルスケジューラ１０，ギャングスケジューラ２０，設定ＣＰＵ数格納部３０，およびギャングスケジューリング対象決定閾値格納部４０を含むコンピュータシステムに読み込まれ、当該コンピュータシステムの動作を設定ＣＰＵ数格納部３０およびギャングスケジューリング対象決定閾値格納部４０が存在することを前提とした上で、使用ＣＰＵ時間監視手段１１，ＣＰＵ割り当て決定手段１２，ＣＰＵ割り当て数監視手段１３，ギャングスケジューリング対象決定手段２１，および次回実行並列プログラム決定手段２２として制御する。ギャングスケジューリング制御プログラム５００の制御による使用ＣＰＵ時間監視手段１１，ＣＰＵ割り当て決定手段１２，ＣＰＵ割り当て数監視手段１３，ギャングスケジューリング対象決定手段２１，および次回実行並列プログラム決定手段２２の動作は、第１の実施の形態における使用ＣＰＵ時間監視手段１１，ＣＰＵ割り当て決定手段１２，ＣＰＵ割り当て数監視手段１３，ギャングスケジューリング対象決定手段２１，および次回実行並列プログラム決定手段２２の動作と全く同様になるので、その詳しい説明を割愛する。
【００６７】
（４）  第４の実施の形態
【００６８】
図６は、本発明の第４の実施の形態の構成を示すブロック図である。
【００６９】
図６を参照すると、本発明の第４の実施の形態は、図４に示した第２の実施の形態に対して、ギャングスケジューリング制御プログラム６００を備える点が異なっている。
【００７０】
ギャングスケジューリング制御プログラム６００は、カーネルスケジューラ１０，ギャングスケジューラ２０，設定ＣＰＵ数格納部３０，ギャングスケジューリング対象決定閾値格納部４０，および閾値変更手段５０を含むコンピュータシステムに読み込まれ、当該コンピュータシステムの動作を設定ＣＰＵ数格納部３０およびギャングスケジューリング対象決定閾値格納部４０が存在することを前提とした上で、使用ＣＰＵ時間監視手段１１，ＣＰＵ割り当て決定手段１２，ＣＰＵ割り当て数監視手段１３，ギャングスケジューリング対象決定手段２１，次回実行並列プログラム決定手段２２，および閾値変更手段５０として制御する。ギャングスケジューリング制御プログラム６００の制御による使用ＣＰＵ時間監視手段１１，ＣＰＵ割り当て決定手段１２，ＣＰＵ割り当て数監視手段１３，ギャングスケジューリング対象決定手段２１，次回実行並列プログラム決定手段２２，および閾値変更手段５０の動作は、第２の実施の形態における使用ＣＰＵ時間監視手段１１，ＣＰＵ割り当て決定手段１２，ＣＰＵ割り当て数監視手段１３，ギャングスケジューリング対象決定手段２１，次回実行並列プログラム決定手段２２，および閾値変更手段５０の動作と全く同様になるので、その詳しい説明を割愛する。
【００７１】
【発明の効果】
以上説明したように、本発明によると、以下に示すような効果が生じる。
【００７２】
第１の効果は、複数のＣＰＵを同時に割り当てるべき並列プログラムと複数のＣＰＵを同時に割り当てるべきでない（割り当てる必要のない）並列プログラムとを区別する機能をギャングスケジューラに追加すること等により、複数のＣＰＵを同時に割り当てるべきでない並列プログラムをギャングスケジューリングの対象とはしないように制御し、従来技術におけるギャングスケジューラで生じていた「複数のＣＰＵを同時に割り当てるべきでない並列プログラムが一定期間毎にギャングスケジューリング対象になることによってその並列プログラムが本来望まない動作を行うこととなったり、またそのことが複数のＣＰＵを同時に割り当てるべき並列プログラムである他の並列プログラムにも悪影響を及ぼすこととなる」という従来技術における問題点を改善（解消）することができるということである。
【００７３】
第２の効果は、閾値変更手段を設けてギャングスケジューリング対象決定閾値を動的または静的に変更することを可能にすることにより、本発明が適用されるコンピュータシステムの動作・運用状況に柔軟に対応して、上記の第１の効果を達成することができるということである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るギャングスケジューリング方式の構成を示すブロック図である。
【図２】図１に示すギャングスケジューリング方式における使用ＣＰＵ時間監視処理を示す流れ図である。
【図３】図１に示すギャングスケジューリング方式におけるギャングスケジューリング処理を示す流れ図である。
【図４】本発明の第２の実施の形態に係るギャングスケジューリング方式の構成を示すブロック図である。
【図５】本発明の第３の実施の形態の構成を示すブロック図である。
【図６】本発明の第４の実施の形態の構成を示すブロック図である。
【符号の説明】
１０  カーネルスケジューラ
２０  ギャングスケジューラ
３０  設定ＣＰＵ数格納部
４０  ギャングスケジューリング対象決定閾値格納部
５０  閾値変更手段
１１  使用ＣＰＵ時間監視手段
１２  ＣＰＵ割り当て決定手段
１３  ＣＰＵ割り当て数監視手段
２１  ギャングスケジューリング対象決定手段
２２  次回実行並列プログラム決定手段
５００，６００  ギャングスケジューリング制御プログラム
【図１】
2004272466.tif 000003
【図２】
2004272466.tif 000004
【図３】
2004272466.tif 000005
【図４】
2004272466.tif 000006
【図５】
2004272466.tif 000007
【図６】
2004272466.tif 000008