(57)【要約】【課題】ギャンググループ単位でのギャングスケジューリングを可能とし、柔軟かつ効率的なギャングスケジューリングを実現する。【解決手段】ギャンググループ管理機能実現部１０（ギャンググループ作成手段１１および実行ＣＰＵ数設定手段１２）は、１つの並列プログラムの中に１以上のギャンググループを作成し、並列プログラム単位ではなくギャンググループ単位にギャングスケジューリングを行うためのギャンググループに関する管理（各ギャンググループへの同時実行ＣＰＵ数の設定等）を行う。スケジューリング機能実現部２０（スケジューリング情報採取手段２１，スケジューリング実行手段２２，およびディスパッチング手段２３）は、ギャンググループ管理機能実現部１０により作成されたギャンググループを単位としてギャングスケジューリングを行う。【選択図】        図１
2004280293.tif 000002
【特許請求の範囲】
【請求項１】
ギャングスケジューリング機能を有するコンピュータシステムにおいて、
１つの並列プログラムの中に１以上のギャンググループを作成し、並列プログラム単位ではなくギャンググループ単位にギャングスケジューリングを行うためのギャンググループに関する管理を行うギャンググループ管理機能実現部と、
前記ギャンググループ管理機能実現部により作成されたギャンググループを単位としてギャングスケジューリングを行うスケジューリング機能実現部と
を有することを特徴とするグループ単位ギャングスケジューリング方式。
【請求項２】
ギャングスケジューリング機能を有するコンピュータシステムにおいて、
並列プログラム中のプロセスの生成時に当該プロセスに対して設定されたギャンググループ番号を持つギャンググループが当該並列プログラムにすでに存在するか否かを判定し、存在しない場合には当該ギャンググループ番号の新たなギャンググループを当該並列プログラム中に作成するギャンググループ作成手段と、
前記ギャンググループ作成手段によるギャンググループの作成時に、当該コンピュータシステムにおける使用可能ＣＰＵ数以下の範囲で、当該ギャンググループに対する同時実行ＣＰＵ数を設定する実行ＣＰＵ数設定手段と、
スケジュールインターバル毎に動き、ギャンググループ単位にギャングスケジューリングに必要な情報を採取し、その採取に基づいて各ギャンググループに対するスケジューリング情報をスケジューリング情報テーブルに書き出すスケジューリング情報採取手段と、
当該コンピュータシステムにおける使用可能ＣＰＵ数および前記スケジューリング情報採取手段により前記スケジューリング情報テーブルに書き出されたスケジューリング情報を考慮して、ギャンググループ単位でのギャングスケジューリングを行い、スケジューリング対象のギャンググループを選択するスケジューリング実行手段と、
前記スケジューリング実行手段によるギャングスケジューリングによって選択されたギャンググループに属するプロセス群にＣＰＵを割り当てるディスパッチング手段と
を有することを特徴とするグループ単位ギャングスケジューリング方式。
【請求項３】
スケジューリング情報テーブル内の各ギャンググループに対するスケジューリング情報に同時実行ＣＰＵ数が含まれ、各プロセスに設定されるグループ単位ギャングスケジューリング関連プロセス設定情報にギャングスケジューリング対象識別フラグ，実行フラグ，およびギャンググループ番号が含まれることを特徴とする請求項２記載のグループ単位ギャングスケジューリング方式。
【請求項４】
スケジューリング情報テーブル内の各ギャンググループに対するスケジューリング情報に同時実行ＣＰＵ数およびプライオリティが含まれ、各プロセスに設定されるグループ単位ギャングスケジューリング関連プロセス設定情報にギャングスケジューリング対象識別フラグ，実行フラグ，ギャンググループ番号，およびプライオリティが含まれ、
スケジューリング情報採取手段が、ギャングスケジューリングに必要な情報の１つとして各プロセスに対して設定されているプライオリティを採取し、その採取に基づき前記スケジューリング情報テーブルに各ギャンググループに対するプライオリティを設定し、
スケジューリング実行手段が、前記スケジューリング情報テーブル中の各ギャンググループに対するプライオリティをも考慮してギャングスケジューリングを行う
ことを特徴とする請求項２記載のグループ単位ギャングスケジューリング方式。
【請求項５】
ギャングスケジューリング機能を有するコンピュータシステムを、１つの並列プログラムの中に１以上のギャンググループを作成し、並列プログラム単位ではなくギャンググループ単位にギャングスケジューリングを行うためのギャンググループに関する管理を行うギャンググループ管理機能実現部，および前記ギャンググループ管理機能実現部により作成されたギャンググループを単位としてギャングスケジューリングを行うスケジューリング機能実現部として機能させるためのプログラム。
【請求項６】
ギャングスケジューリング機能を有するコンピュータシステムを、並列プログラム中のプロセスの生成時に当該プロセスに対して設定されたギャンググループ番号を持つギャンググループが当該並列プログラムにすでに存在するか否かを判定し、存在しない場合には当該ギャンググループ番号の新たなギャンググループを当該並列プログラム中に作成するギャンググループ作成手段，前記ギャンググループ作成手段によるギャンググループの作成時に、当該コンピュータシステムにおける使用可能ＣＰＵ数以下の範囲で、当該ギャンググループに対する同時実行ＣＰＵ数を設定する実行ＣＰＵ数設定手段，スケジュールインターバル毎に動き、ギャンググループ単位にギャングスケジューリングに必要な情報を採取し、その採取に基づいて各ギャンググループに対するスケジューリング情報をスケジューリング情報テーブルに書き出すスケジューリング情報採取手段，当該コンピュータシステムにおける使用可能ＣＰＵ数および前記スケジューリング情報採取手段により前記スケジューリング情報テーブルに書き出されたスケジューリング情報を考慮して、ギャンググループ単位でのギャングスケジューリングを行い、スケジューリング対象のギャンググループを選択するスケジューリング実行手段，ならびに前記スケジューリング実行手段によるギャングスケジューリングによって選択されたギャンググループに属するプロセス群にＣＰＵを割り当てるディスパッチング手段として機能させるためのプログラム。
【請求項７】
ギャングスケジューリング機能を有するコンピュータシステムを、並列プログラム中のプロセスの生成時に当該プロセスに対して設定されたギャンググループ番号を持つギャンググループが当該並列プログラムにすでに存在するか否かを判定し、存在しない場合には当該ギャンググループ番号の新たなギャンググループを当該並列プログラム中に作成するギャンググループ作成手段，前記ギャンググループ作成手段によるギャンググループの作成時に、当該コンピュータシステムにおける使用可能ＣＰＵ数以下の範囲で、当該ギャンググループに対する同時実行ＣＰＵ数を設定する実行ＣＰＵ数設定手段，スケジュールインターバル毎に動き、ギャンググループ単位にギャングスケジューリングに必要な情報を採取し、その採取に基づいて各ギャンググループに対するスケジューリング情報をスケジューリング情報テーブルに書き出し、その際に、ギャングスケジューリングに必要な情報の１つとして各プロセスに対して設定されているプライオリティを採取し、その採取に基づき前記スケジューリング情報テーブルに各ギャンググループに対するプライオリティを設定するスケジューリング情報採取手段，当該コンピュータシステムにおける使用可能ＣＰＵ数および前記スケジューリング情報採取手段により前記スケジューリング情報テーブルに書き出されたスケジューリング情報を考慮して、ギャンググループ単位でのギャングスケジューリングを行い、スケジューリング対象のギャンググループを選択し、その際に、前記スケジューリング情報テーブル中の各ギャンググループに対するプライオリティをも考慮してギャングスケジューリングを行うスケジューリング実行手段，ならびに前記スケジューリング実行手段によるギャングスケジューリングによって選択されたギャンググループに属するプロセス群にＣＰＵを割り当てるディスパッチング手段として機能させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散並列プログラム（以下、並列プログラムと称す）に関するギャングスケジューリング機能を有するコンピュータシステムにおいて、ギャングスケジューリングを並列プログラム全体を単位とするのではなくグループ（後述のようなギャンググループ）を単位として行うことを特徴とするグループ単位ギャングスケジューリング方式に関する。
【０００２】
【従来の技術】
ギャングスケジューリング機能は、並列プログラムのスケジューリングを行う際に、必要とする数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を同時に割り当てる機能である。
【０００３】
従来、この種のギャングスケジューリング機能を実現するためのギャングスケジューリング方式では、１つの並列プログラム全体をスケジューリングの単位として、スケジューリングが行われていた（例えば、特許文献１参照）。
【０００４】
そのため、例えば、気象に関する演算を行う並列プログラムにおいては、１つの並列プログラムが南半球に関する演算カテゴリと北半球に関する演算カテゴリとに別れているような場合でも、各演算カテゴリ毎に分けてギャングスケジューリング対象にするということはできなかった。
【０００５】
なお、ギャングスケジューリング機能に関するものに限らず、プログラムを構成する各プロセス（並列的な動作を行うプロセス）にプロセッサ（ＣＰＵ）を割り付ける技術は、従来から、周知の技術として存在している（例えば、特許文献２参照）。本発明は、このような「プロセスにプロセッサを割り付ける（割り当てる）技術」が存在することを前提としている。
【０００６】
【特許文献１】
特開２０００−２５０８７６号公報（第２頁、図１）
【特許文献２】
特開平１０−１４３３８０号公報（第２−３頁、図１、図８）
【０００７】
【発明が解決しようとする課題】
上述した従来のギャングスケジューリング方式では、上記のように、１つの並列プログラム全体をスケジューリングの単位としてギャングスケジューリングが行われているので、１つの並列プログラム中に異なるカテゴリの複数の演算（例えば、先述の気象に関する演算を行う並列プログラムにおける南半球に関する演算カテゴリおよび北半球に関する演算カテゴリ）が存在する場合でも、並列プログラム全体を単位としてスケジューリングを行うしかなく、より柔軟かつ効率的なギャングスケジューリングを実現することができないという問題点があった。
【０００８】
本発明の目的は、上述の点に鑑み、これらの問題を解決し、並列プログラム単位ではなく並列プログラム中のギャンググループ単位にスケジューリングを行うことを可能にするギャングスケジューリング方式（グループ単位ギャングスケジューリング方式）を提供することにある。
【０００９】
【課題を解決するための手段】
本発明のグループ単位ギャングスケジューリング方式は、ギャングスケジューリング機能を有するコンピュータシステムにおいて、並列プログラム中のプロセスの生成時に当該プロセスに対して設定されたギャンググループ番号（通常、０，１，…という数字による番号の形式が考えられるが、より一般的には、ギャンググループを識別するための情報であればどのような形式の識別情報であってもよい）を持つギャンググループが当該並列プログラムにすでに存在するか否かを判定し、存在しない場合には当該ギャンググループ番号の新たなギャンググループを当該並列プログラム中に作成するギャンググループ作成手段と、前記ギャンググループ作成手段によるギャンググループの作成時に、当該コンピュータシステムにおける使用可能ＣＰＵ数以下の範囲で、当該ギャンググループに対する同時実行ＣＰＵ数を設定する実行ＣＰＵ数設定手段と、スケジュールインターバル毎に動き、ギャンググループ単位にギャングスケジューリングに必要な情報を採取し、その採取に基づいて各ギャンググループに対するスケジューリング情報をスケジューリング情報テーブルに書き出すスケジューリング情報採取手段と、当該コンピュータシステムにおける使用可能ＣＰＵ数および前記スケジューリング情報採取手段により前記スケジューリング情報テーブルに書き出されたスケジューリング情報を考慮して、ギャンググループ単位でのギャングスケジューリングを行い、スケジューリング対象のギャンググループを選択するスケジューリング実行手段と、前記スケジューリング実行手段によるギャングスケジューリングによって選択されたギャンググループに属するプロセス群にＣＰＵを割り当てるディスパッチング手段とを有する。
【００１０】
ここで、上記のグループ単位ギャングスケジューリング方式は、下記のａまたはｂに示すような具体化が可能である。
【００１１】
ａ．スケジューリング情報テーブル内の各ギャンググループに対するスケジューリング情報に同時実行ＣＰＵ数が含まれるようにし、各プロセスに設定されるグループ単位ギャングスケジューリング関連プロセス設定情報にギャングスケジューリング対象識別フラグ，実行フラグ，およびギャンググループ番号が含まれるようにする。
【００１２】
ｂ．スケジューリング情報テーブル内の各ギャンググループに対するスケジューリング情報に同時実行ＣＰＵ数およびプライオリティ（ギャングスケジューリングにおけるＣＰＵ割り当ての優先度を示す情報）が含まれるようにし、各プロセスに設定されるグループ単位ギャングスケジューリング関連プロセス設定情報にギャングスケジューリング対象識別フラグ，実行フラグ，ギャンググループ番号，およびプライオリティが含まれるようにする。その上で、スケジューリング情報採取手段が、ギャングスケジューリングに必要な情報の１つとして各プロセスに対して設定されているプライオリティを採取し、その採取に基づき前記スケジューリング情報テーブルに各ギャンググループに対するプライオリティ（例えば、当該各ギャンググループに属する全プロセスの各々に対して設定されているプライオリティの平均を示す情報）を設定する。また、スケジューリング実行手段が、前記スケジューリング情報テーブル中の各ギャンググループに対するプライオリティをも考慮してギャングスケジューリングを行う。
【００１３】
なお、本発明のグループ単位ギャングスケジューリング方式は、より一般的には、ギャングスケジューリング機能を有するコンピュータシステムにおいて、１つの並列プログラムの中に１以上のギャンググループを作成し、並列プログラム単位ではなくギャンググループ単位にギャングスケジューリングを行うためのギャンググループに関する管理（各ギャンググループへの同時実行ＣＰＵ数の設定等）を行うギャンググループ管理機能実現部と、前記ギャンググループ管理機能実現部により作成されたギャンググループを単位としてギャングスケジューリングを行うスケジューリング機能実現部とを有すると表現することができる。
【００１４】
また、本発明は、ギャングスケジューリング機能を有するコンピュータシステムを、１つの並列プログラムの中に１以上のギャンググループを作成し、並列プログラム単位ではなくギャンググループ単位にギャングスケジューリングを行うためのギャンググループに関する管理を行うギャンググループ管理機能実現部，および前記ギャンググループ管理機能実現部により作成されたギャンググループを単位としてギャングスケジューリングを行うスケジューリング機能実現部として機能させるためのプログラムの態様で実現することも可能である。
【００１５】
さらに、本発明は、ギャングスケジューリング機能を有するコンピュータシステムを、並列プログラム中のプロセスの生成時に当該プロセスに対して設定されたギャンググループ番号を持つギャンググループが当該並列プログラムにすでに存在するか否かを判定し、存在しない場合には当該ギャンググループ番号の新たなギャンググループを当該並列プログラム中に作成するギャンググループ作成手段，前記ギャンググループ作成手段によるギャンググループの作成時に、当該コンピュータシステムにおける使用可能ＣＰＵ数以下の範囲で、当該ギャンググループに対する同時実行ＣＰＵ数を設定する実行ＣＰＵ数設定手段，スケジュールインターバル毎に動き、ギャンググループ単位にギャングスケジューリングに必要な情報を採取し、その採取に基づいて各ギャンググループに対するスケジューリング情報をスケジューリング情報テーブルに書き出すスケジューリング情報採取手段，当該コンピュータシステムにおける使用可能ＣＰＵ数および前記スケジューリング情報採取手段により前記スケジューリング情報テーブルに書き出されたスケジューリング情報を考慮して、ギャンググループ単位でのギャングスケジューリングを行い、スケジューリング対象のギャンググループを選択するスケジューリング実行手段，ならびに前記スケジューリング実行手段によるギャングスケジューリングによって選択されたギャンググループに属するプロセス群にＣＰＵを割り当てるディスパッチング手段として機能させるためのプログラムの態様で実現することも可能である。
【００１６】
加えて、本発明は、ギャングスケジューリング機能を有するコンピュータシステムを、並列プログラム中のプロセスの生成時に当該プロセスに対して設定されたギャンググループ番号を持つギャンググループが当該並列プログラムにすでに存在するか否かを判定し、存在しない場合には当該ギャンググループ番号の新たなギャンググループを当該並列プログラム中に作成するギャンググループ作成手段，前記ギャンググループ作成手段によるギャンググループの作成時に、当該コンピュータシステムにおける使用可能ＣＰＵ数以下の範囲で、当該ギャンググループに対する同時実行ＣＰＵ数を設定する実行ＣＰＵ数設定手段，スケジュールインターバル毎に動き、ギャンググループ単位にギャングスケジューリングに必要な情報を採取し、その採取に基づいて各ギャンググループに対するスケジューリング情報をスケジューリング情報テーブルに書き出し、その際に、ギャングスケジューリングに必要な情報の１つとして各プロセスに対して設定されているプライオリティを採取し、その採取に基づき前記スケジューリング情報テーブルに各ギャンググループに対するプライオリティを設定するスケジューリング情報採取手段，当該コンピュータシステムにおける使用可能ＣＰＵ数および前記スケジューリング情報採取手段により前記スケジューリング情報テーブルに書き出されたスケジューリング情報を考慮して、ギャンググループ単位でのギャングスケジューリングを行い、スケジューリング対象のギャンググループを選択し、その際に、前記スケジューリング情報テーブル中の各ギャンググループに対するプライオリティをも考慮してギャングスケジューリングを行うスケジューリング実行手段，ならびに前記スケジューリング実行手段によるギャングスケジューリングによって選択されたギャンググループに属するプロセス群にＣＰＵを割り当てるディスパッチング手段として機能させるためのプログラムの態様で実現することも可能である。
【００１７】
【発明の実施の形態】
次に、本発明について図面を参照して詳細に説明する。
【００１８】
（１）  第１の実施の形態
【００１９】
図１は、本発明の第１の実施の形態に係るグループ単位ギャングスケジューリング方式の構成を示すブロック図である。
【００２０】
図１を参照すると、本実施の形態に係るグループ単位ギャングスケジューリング方式は、ギャンググループ管理機能実現部１０と、スケジューリング機能実現部２０と、使用可能ＣＰＵ数格納部３０と、スケジューリング情報テーブル４０と、並列プログラム群１００とを含んで構成されている。
【００２１】
ギャンググループ管理機能実現部１０は、ギャンググループ作成手段１１と、実行ＣＰＵ数設定手段１２とを含んで構成されている。
【００２２】
スケジューリング機能実現部２０は、スケジューリング情報採取手段２１と、スケジューリング実行手段２２と、ディスパッチング手段２３とを含んで構成されている。なお、このスケジューリング機能実現部２０によって実現されるスケジューリング機能は、ギャンググループ単位でギャングスケジューリングを行うこと以外は、従来技術のギャングスケジューリング方式におけるスケジューリング機能と同様のものである。
【００２３】
上記の各手段は、概略、次のような動作を行う。
【００２４】
ギャンググループ作成手段１１は、並列プログラム群１００に属する並列プログラム中のプロセスの生成時に当該プロセスに対して設定されたギャンググループ番号（ここでは、０，１，…という数字による番号の形式で与えられるが、より一般的には、ギャンググループを識別するための情報であればどのような形式の識別情報であってもよい）を受け取り、当該ギャンググループ番号を持つギャンググループが当該並列プログラムにすでに存在するか否かを判定し、存在しない場合には当該ギャンググループ番号の新たなギャンググループを当該並列プログラム中に作成する。
【００２５】
実行ＣＰＵ数設定手段１２は、ギャンググループ作成手段１１によるギャンググループの作成時に、当該ギャンググループに対する同時実行ＣＰＵ数を設定する。この設定処理は、使用可能ＣＰＵ数格納部３０内の使用可能ＣＰＵ数以下の範囲で、当該コンピュータシステム（本実施の形態に係るグループ単位ギャングスケジューリング方式が適用されるコンピュータシステム）で保持されている既定値（同時実行ＣＰＵ数の既定値）や、ジョブ実行時にジョブスケジューラによって設定された値（同時実行ＣＰＵ数のジョブスケジューラ設定値）を、当該ギャンググループの同時実行ＣＰＵ数として設定することによって実現される。
【００２６】
スケジューリング情報採取手段２１は、スケジュールインターバル毎に動き、ギャンググループ単位にギャングスケジューリングに必要な情報を採取し、その採取内容（各ギャンググループに対するスケジューリング情報）をスケジューリング情報テーブル４０に書き出す。
【００２７】
スケジューリング実行手段２２は、上記のスケジューリング情報採取手段２１によるスケジューリング情報テーブル４０への情報設定の後に、使用可能ＣＰＵ数格納部３０内の使用可能ＣＰＵ数およびスケジューリング情報テーブル４０内のスケジューリング情報等に基づき、ギャンググループ単位でのギャングスケジューリングを行う（今回のスケジューリングタイミングにおけるギャングスケジューリング対象のギャンググループを選択する）。
【００２８】
ディスパッチング手段２３は、スケジューリング実行手段２２によるギャングスケジューリングによって選択されたギャンググループに属するプロセス群にＣＰＵを割り当てる。
【００２９】
使用可能ＣＰＵ数格納部３０は、当該コンピュータシステムにおいて使用可能なＣＰＵの数を示す情報（使用可能ＣＰＵ数）を保持している。
【００３０】
スケジューリング情報テーブル４０は、各並列プログラムの各ギャンググループに対応するスケジューリング情報（本実施の形態では、図４に示すように、同時実行ＣＰＵ数およびプライオリティ）を保持している。
【００３１】
並列プログラム群１００には、当該コンピュータシステム上で実行状態にある各並列プログラム（ロードモジュールの態様の各並列プログラムが当該コンピュータシステム上で起動され実行状態とされた各並列プログラム）が存在する。
【００３２】
なお、ロードモジュールの態様の並列プログラムには、ギャンググループによるグループ化が考慮されて複数のプロセスに対応する処理内容が記述されている。これらの処理内容を実現する複数のプロセスは、当該並列プログラムの当該コンピュータシステム上での起動後に、順次、そのプロセスに対応する記述内容（ロードモジュールの態様の並列プログラム中の記述内容）に基づいて生成され実行される。
【００３３】
各プロセスの生成時には、当該プロセスに対応する記述内容中に含まれているグループ単位ギャングスケジューリングに関する情報（本実施の形態では、当該プロセスに対するギャンググループ番号およびプライオリティ）が、ギャンググループ管理機能実現部１０内のギャンググループ作成手段１１に与えられる（後述の図２中のステップＡ２参照）。
【００３４】
図２は、本実施の形態に係るグループ単位ギャングスケジューリング方式におけるギャンググループ管理機能実現部１０の処理を示す流れ図である。この処理は、プロセス生成有無判定ステップＡ１と、グループ単位ギャングスケジューリング関連情報取得ステップＡ２と、ギャンググループ存在判定ステップＡ３と、新ギャンググループ作成ステップＡ４と、新ギャンググループプロセス配属ステップＡ５と、同時実行ＣＰＵ数設定ステップＡ６と、既存ギャンググループプロセス配属ステップＡ７とからなる。
【００３５】
図３は、本実施の形態に係るグループ単位ギャングスケジューリング方式におけるスケジューリング機能実現部２０の処理を示す流れ図である。この処理は、スケジューリング情報書き出しステップＢ１と、ＣＰＵ割り当て対象ギャンググループ決定ステップＢ２と、実行フラグＲＵＮ削除ステップＢ３と、実行フラグＲＵＮ設定ステップＢ４と、ＣＰＵ割り当てステップＢ５とからなる。
【００３６】
図４は、本実施の形態に係るグループ単位ギャングスケジューリング方式の具体的な動作を説明するためのブロック図である。
【００３７】
図４に示す並列プログラム群１００には、ギャンググループ０（ギャンググループ番号が０のギャンググループ）を有する並列プログラムＡと、ギャンググループ０およびギャンググループ１を有する並列プログラムＢと、ギャンググループ０を有する並列プログラムＣとが存在する（グループ化の数の上限が図４に示すような２に限定されないことはいうまでもない）。各並列プログラムの各ギャンググループ上には、並列化の対象となる複数のプロセスＡ−０１〜Ａ−０４，プロセスＢ−０１〜Ｂ−０４，プロセスＢ−１１〜Ｂ−１２，およびプロセスＣ−０１〜Ｃ−０２が生成されている。本実施の形態、ひいては本発明では、これらの複数のプロセスに対してギャンググループ単位で同時に複数のＣＰＵ（同時実行ＣＰＵ数で示される数のＣＰＵ）を割り当てるギャングスケジューリングが行われる。
【００３８】
図５は、本実施の形態に係るグループ単位ギャングスケジューリング方式の具体的な動作および効果を説明するための図である。
【００３９】
次に、図１〜図５を参照して、上記のように構成された本実施の形態に係るグループ単位ギャングスケジューリング方式の全体の動作について詳細に説明する。
【００４０】
第１に、ギャンググループ管理機能実現部１０によるギャンググループの作成および管理に関する動作について説明する（図２参照）。
【００４１】
ギャンググループ管理機能実現部１０内のギャンググループ作成手段１１は、「並列プログラム中のプロセスの生成」という事象が生じたか否かを常に監視している。すなわち、一定の短い時間間隔毎に、プロセスの生成の有無を判定する（ステップＡ１）。
【００４２】
ギャンググループ作成手段１１は、ステップＡ１で「ある並列プログラムにおけるあるプロセスの生成が生じた」と判定した場合に、生成されたプロセスに対するグループ単位ギャングスケジューリングに関する情報（本実施の形態では、ギャンググループ番号およびプライオリティ）を取得する（ステップＡ２）。
【００４３】
その上で、ギャンググループ作成手段１１は、当該取得情報中のギャンググループ番号のギャンググループが当該並列プログラムにすでに存在するか否かを判定する（ステップＡ３）。
【００４４】
ギャンググループ作成手段１１は、ステップＡ３で「当該ギャンググループ番号のギャンググループが当該並列プログラムに存在しない」と判定した場合には、当該プロセスが新たなギャンググループの作成を要求するプロセスであると判断（認識）し、当該並列プログラム内に当該ギャンググループ番号を持つ新たなギャンググループ（当該プロセスが属することとなるギャンググループ）を作成する（ステップＡ４）。
【００４５】
なお、ある並列プログラムの起動時において最初のプロセスが生成される場合には、当然に、ステップＡ３で「当該ギャンググループ番号のギャンググループが当該並列プログラムに存在しない」と判定されることとなる。この場合に、各並列プログラムの最初のプロセスに対しては、ギャンググループ番号０（第１のギャンググループを示す情報）が与えられている。すなわち、最初に生成されるプロセスが属するギャンググループがギャンググループ番号０のギャンググループとなるように設定されている。
【００４６】
さらに、ギャンググループ作成手段１１は、ステップＡ４で作成したギャンググループに当該プロセスを属させるように設定する（ステップＡ５）。ここで、当該ギャンググループに属することとなった当該プロセスには、ギャングスケジューリング対象であることを意味するＧＡＮＧという情報が設定されたフラグ（ギャングスケジューリング対象識別フラグ）と、当該プロセスの実行時にＲＵＮという情報（ＣＰＵ割り当て中を示す情報）が設定されるフラグ（実行フラグ）と、ギャンググループ番号と、ギャングスケジューリングにおけるＣＰＵ割り当ての優先度（例えば、１００を最大値とした数値で示される優先度）を示すプライオリティとが、設定されることとなる（図４中のプロセスＢ−０１およびプロセスＢ−１１参照）。なお、このようなプロセスへの設定情報をグループ単位ギャングスケジューリング関連プロセス設定情報と呼ぶこととする。
【００４７】
ギャンググループ管理機能実現部１０内の実行ＣＰＵ数設定手段１２は、ギャンググループ作成手段１１によるステップＡ４およびステップＡ５における処理の後に、ステップＡ４で作成されたギャンググループに対する同時実行ＣＰＵ数として、使用可能ＣＰＵ数格納部３０内の使用可能ＣＰＵ数以下の範囲で、当該コンピュータシステムで保持されている既定値（同時実行ＣＰＵ数の既定値）や、ジョブ実行時にジョブスケジューラによって設定された値（同時実行ＣＰＵ数のジョブスケジューラ設定値）を設定する（ステップＡ６）。
【００４８】
一方、ギャンググループ作成手段１１は、ステップＡ３で「当該ギャンググループ番号のギャンググループが当該並列プログラムにすでに存在する」と判定した場合には、当該プロセスがすでに作成されたギャンググループへの加入を要求するプロセスであると判断（認識）し、当該ギャンググループ番号のギャンググループ（既存のギャンググループ）に当該プロセスを属させるように設定する（ステップＡ７）。ここで、当該ギャンググループに属することとなった当該プロセスには、ギャングスケジューリング対象であることを意味するＧＡＮＧという情報が設定されたギャングスケジューリング対象識別フラグと、当該プロセスの実行時にＲＵＮという情報が設定される実行フラグと、ギャンググループ番号と、ギャングスケジューリングにおけるＣＰＵ割り当ての優先度を示すプライオリティとが、グループ単位ギャングスケジューリング関連プロセス設定情報として設定されることとなる。
【００４９】
なお、ステップＡ６またはステップＡ７の処理が終了すると、ステップＡ１の判定に制御が戻る。
【００５０】
以上のような動作が繰り返されることによって、例えば、図４に示すような並列プログラムＡ〜Ｃ中の各プロセスがギャンググループに属する態様で生成されることとなる。図４における各ギャンググループには、使用可能ＣＰＵ数格納部３０内の使用可能ＣＰＵ数である４以下となる範囲で、同時実行ＣＰＵ数が設定されている。ここで、例えば、並列プログラムＢには、ギャンググループ０の他に、ギャンググループ１が作成されており、両方のギャンググループを別個に（例えば、演算カテゴリ毎に）ギャングスケジューリングの対象とすることが可能になる。
【００５１】
第２に、スケジューリング機能実現部２０によるギャングスケジューリングに関する動作について説明する（図３参照）。
【００５２】
スケジューリング機能実現部２０内のスケジューリング情報採取手段２１は、一定時間（スケジュールインターバル）毎に動き、当該コンピュータシステム内の各ギャンググループとギャングスケジューリング対象である各プロセス（ギャングスケジューリング対象であることを示すＧＡＮＧという情報がギャングスケジューリング対象識別フラグに設定されたプロセス）とをサーチし、ギャンググループ毎にギャングスケジューリングに必要な情報（本実施の形態では、各ギャンググループの同時実行ＣＰＵ数および各プロセスのプライオリティ）を調べ、それらの情報に基づいて、各ギャンググループに対応するスケジューリング情報をスケジューリング情報テーブル４０に書き出す（ステップＢ１）。
【００５３】
図４に示す並列プログラム群１００を有するコンピュータシステムにおいては、並列プログラム群１００内の各ギャンググループおよび各プロセスのサーチに基づき、図４中のスケジューリング情報テーブル４０に示すような情報が書き出される。ここで、例えば、並列プログラムＢのギャンググループ０に対するスケジューリング情報としては、同時実行ＣＰＵ数の４とプライオリティの８０とが書き出される。なお、スケジューリング情報テーブル４０中の各ギャンググループに対するプライオリティとは、当該ギャンググループに属する全てのプロセスのプライオリティの平均値を意味する。
【００５４】
スケジューリング機能実現部２０内のスケジューリング実行手段２２は、スケジューリング情報採取手段２１によるスケジューリング情報テーブル４０への情報設定の後に動き、使用可能ＣＰＵ数格納部３０内の使用可能ＣＰＵ数とステップＢ１で書き出されたスケジューリング情報テーブル４０内のスケジューリング情報とを基に、過去のスケジューリング結果等をも考慮して、ギャングスケジューリングによるＣＰＵ割り当て時に割り当て対象とすべきギャンググループ（当該ギャンググループに属するプロセス群）を決定（選択）する（ステップＢ２）。ここで、複数あるギャンググループからＣＰＵを割り当てる対象のギャンググループを決定する方法としては、当該コンピュータシステムであらかじめ決められた方法（従来技術においてＣＰＵを割り当てる対象の並列プログラムを決定する方法と同様の方法）が採用される。また、２つ以上のギャンググループの同時実行ＣＰＵ数の合計が使用可能ＣＰＵ数の範囲内であれば、当該２つ以上のギャンググループに対して同時にＣＰＵを割り当てることも可能である（図５中のプロセスＢ−１１〜Ｂ−１２およびプロセスＣ−０１〜Ｃ−０２へのＣＰＵ割り当てタイミングを参照のこと）。
【００５５】
スケジューリング機能実現部２０内のディスパッチング手段２３は、今回のスケジューリングにおけるＣＰＵ割り当てタイミングで、今までＣＰＵを割り当てていたギャンググループに属するプロセス群の実行フラグからＲＵＮ（ＣＰＵ割り当て中を示す情報）を削除する（ステップＢ３）。そして、上記のステップＢ２でスケジューリング実行手段２２により新たに選択されたギャンググループに属するプロセス群の実行フラグにＲＵＮを設定し（ステップＢ４）、ステップＢ４で実行フラグにＲＵＮを設定したプロセス群にＣＰＵを割り当てる（ステップＢ５）。
【００５６】
図５は、ＣＰＵ（ここでは、ＣＰＵ＃０〜ＣＰＵ＃３）から見た場合における、図４中の並列プログラム群１００内の各ギャンググループに属するプロセス群へのＣＰＵの割り当て状況の具体例を示した図である。
【００５７】
図５を参照すると、図４中のプロセスＢ−０１〜Ｂ−０４を有するギャンググループ０とプロセスＢ−１１〜Ｂ−１２を有するギャンググループ１とは、同じ並列プログラムＢに属するギャンググループであるが、別々のタイミングでＣＰＵが割り当てられていることが分かる（このような柔軟かつ効率的なスケジューリングが可能になるということが、本実施の形態、ひいては本発明のグループ単位ギャングスケジューリング方式による効果に該当する）。
【００５８】
（２）  第１の実施の形態の変形形態
【００５９】
次に、上述の第１の実施の形態に係るグループ単位ギャングスケジューリング方式に対する変形形態について説明する。
【００６０】
上述の第１の実施の形態においては、スケジューリング情報テーブル４０に書き出されるスケジューリング情報や、各プロセスに設定されるグループ単位ギャングスケジューリング関連プロセス設定情報の中に、プライオリティという情報が含まれていた。
【００６１】
しかしながら、本発明が適用されるコンピュータシステムにおいて、ギャングスケジューリングの対象となる各プロセスの間でＣＰＵの割り当てに関する優先度に差がない場合等において、そのような優先度を考慮する必要がないときには、上記のスケジューリング情報やグループ単位ギャングスケジューリング関連プロセス設定情報にプライオリティという情報が含まれていなくても、本発明のグループ単位ギャングスケジューリング方式を実現することが可能となる。
【００６２】
このような「プライオリティという情報を取り扱わない実施の形態」を、第１の実施の形態に対する変形形態として考えることができる。
【００６３】
ここで、このような変形形態においては、図１中のギャンググループ管理機能実現部１０やスケジューリング機能実現部２０におけるプライオリティの取り扱いに関連する処理（プライオリティという情報の設定・参照やＣＰＵ割り当て時のプライオリティの考慮等）は不要となる。
【００６４】
なお、スケジューリング情報テーブル４０に書き出される各ギャンググループに対するスケジューリング情報（ギャングスケジューリングを実行する際に参照・考慮される情報）の内容として、上述の第１の実施の形態で示した同時実行ＣＰＵ数およびプライオリティ（上記のように、プライオリティがない場合も考えられる）以外の情報を加えて、そのような付加情報をも考慮してギャングスケジューリングを実行することも可能である。
【００６５】
（３）  第２の実施の形態
【００６６】
図６は、本発明の第２の実施の形態の構成を示すブロック図である。
【００６７】
図６を参照すると、本発明の第２の実施の形態は、図１に示した第１の実施の形態に対して、グループ単位ギャングスケジューリング制御プログラム６００を備える点が異なっている。
【００６８】
グループ単位ギャングスケジューリング制御プログラム６００は、ギャンググループ管理機能実現部１０，スケジューリング機能実現部２０，使用可能ＣＰＵ数格納部３０，スケジューリング情報テーブル４０，および並列プログラム群１００を含むコンピュータシステムに読み込まれ、当該コンピュータシステムの動作を、使用可能ＣＰＵ数格納部３０，スケジューリング情報テーブル４０，および並列プログラム群１００が存在することを前提とした上で、ギャンググループ管理機能実現部１０（ギャンググループ作成手段１１および実行ＣＰＵ数設定手段１２）およびスケジューリング機能実現部２０（スケジューリング情報採取手段２１，スケジューリング実行手段２２，およびディスパッチング手段２３）として制御する。グループ単位ギャングスケジューリング制御プログラム６００の制御によるギャンググループ作成手段１１，実行ＣＰＵ数設定手段１２，スケジューリング情報採取手段２１，スケジューリング実行手段２２，およびディスパッチング手段２３の動作は、第１の実施の形態におけるギャンググループ作成手段１１，実行ＣＰＵ数設定手段１２，スケジューリング情報採取手段２１，スケジューリング実行手段２２，およびディスパッチング手段２３の動作と全く同様になるので、その詳しい説明を割愛する。
【００６９】
【発明の効果】
以上説明したように、本発明によると、以下に示すような効果が生じる。
【００７０】
第１に、並列プログラム中にギャンググループを作成すること（並列プログラムをギャンググループにグループ分けすること）により、並列プログラム単位ではなく、ギャンググループ単位でのギャングスケジューリングが可能となり、柔軟かつ効率的なギャングスケジューリングを実現することができるという効果が生じる。
【００７１】
すなわち、このようなギャンググループの作成により、並列プログラムの並列数（並列化されたプロセスの数）がギャングスケジューリングの適用対象のコンピュータシステムにおける使用可能ＣＰＵ数を超えた場合でも、複数のギャンググループ（例えば、演算カテゴリ毎に分けられたギャンググループ）に並列プログラムを分けることによって、各ギャンググループにおいては並列数を当該使用可能ＣＰＵ数以下に抑えることが可能になり、効率よくギャングスケジューリングを実行することができるようになる。また、同一並列プログラム内の演算に関して、演算カテゴリ毎に別個にスケジューリングを行うことができ、柔軟なギャングスケジューリングを実現することが可能になる。
【００７２】
第２に、同一並列プログラム内の各ギャンググループに異なる同時実行ＣＰＵ数を割り当てる（設定する）ことが可能になるので（例えば、図４中の並列プログラムＢにおける２つのギャンググループを参照のこと）、使用可能なＣＰＵを無駄にしない効率的なギャングスケジューリングが可能になるという効果が生じる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るグループ単位ギャングスケジューリング方式の構成を示すブロック図である。
【図２】図１に示すグループ単位ギャングスケジューリング方式におけるギャンググループ管理機能実現部の処理を示す流れ図である。
【図３】図１に示すグループ単位ギャングスケジューリング方式におけるスケジューリング機能実現部の処理を示す流れ図である。
【図４】図１に示すグループ単位ギャングスケジューリング方式の具体的な動作を説明するためのブロック図である。
【図５】図１に示すグループ単位ギャングスケジューリング方式の具体的な動作および効果を説明するための図である。
【図６】本発明の第２の実施の形態の構成を示すブロック図である。
【符号の説明】
１０  ギャンググループ管理機能実現部
１１  ギャンググループ作成手段
１２  実行ＣＰＵ数設定手段
２０  スケジューリング機能実現部
２１  スケジューリング情報採取手段
２２  スケジューリング実行手段
２３  ディスパッチング手段
３０  使用可能ＣＰＵ数格納部
４０  スケジューリング情報テーブル
１００  並列プログラム群
６００  グループ単位ギャングスケジューリング制御プログラム
【図１】
2004280293.tif 000003
【図２】
2004280293.tif 000004
【図３】
2004280293.tif 000005
【図４】
2004280293.tif 000006
【図５】
2004280293.tif 000007
【図６】
2004280293.tif 000008