(58)【調査した分野】(Int.Cl.,DB名)
ソースプログラムから実行可能プログラムを生成し、実行パラメータを変えて前記実行可能プログラムを実行し、前記実行パラメータ、および、実行時間を含むプログラム実行情報を生成する主処理部と、
スケジューリングに際し、計算機資源の空きを調べ、前記プログラム実行情報に基づいて、その計算機資源の空きで実行可能な前記実行可能プログラム、および、前記実行パラメータの組を選択し、スケジューリングテーブルに登録するスケジューリング部と、を含み、
前記主処理部は、アーキテクチャのそれぞれに対応する前記実行可能プログラムを生成することを特徴とする情報処理システム。
【発明を実施するための形態】
【0012】
次に、本発明の第1の実施の形態について図面を参照して詳細に説明する。
【0013】
図1は、第1の実施の形態の構成を示すブロック図である。
図1を参照すると、第1の実施の形態の情報処理システム100は、主処理部110、および、スケジューリング部120を含む。主処理部110は、ソースプログラムを受け取る。スケジューリング部120は、実行リクエストを受け取る。また、図示しないが、情報処理システム100は、計算機資源の1種であるCPUを含む。
【0014】
次に、第1の実施の形態の動作について図面を参照して説明する。
【0015】
図2は、第1の実施の形態の情報処理システム100の動作を示す動作説明図である。
図2を参照すると、主処理部110は、受け取ったソースプログラムから、複数のアーキテクチャ(1種でもよい)のそれぞれを使用する(すなわち、対応する)複数(または1つ)の実行可能プログラムを生成する(ステップS1)。
【0016】
次に、主処理部110は、実行パラメータを変化させ、各実行可能プログラムを実行し、プログラム識別子、実行パラメータ、および、実行に要した実行時間を含むプログラム実行情報を生成する(ステップS2)。ここで、プログラム識別子は、対応するソースプログラムを特定できるソースプログラム名、および、実行可能プログラムを特定できる実行可能プログラム名を含む。また、実行パラメータとは、たとえば、アーキテクチャ、利用CPU数、割り付けポリシー等である。
【0017】
次に、スケジューリング部120は、実行リクエストを受け取ると、スケジューリングテーブルを検索し、計算機資源(たとえば、CPU)の空きを調べる(ステップS3)。さらに、スケジューリング部120は、プログラム実行情報を検索し、空いている計算機資源で実行可能な、実行パターン(実行可能プログラムと実行パラメータの組)を選択する(ステップS4)。
【0018】
そして、スケジューリング部120は、選択した実行パターン(選択した実行パラメータでの選択した実行可能プログラム)の実行をスケジューリングテーブルに登録する(ステップS5)。
【0019】
その後、情報処理システム100において、スケジューリングテーブルに登録された実行パターン(選択した実行パラメータでの選択した実行可能プログラム)は実行される。
【0020】
また、コンピュータを、主処理部110、および、スケジューリング部120として機能させるスケジューリングプログラムが可能である。
【0021】
次に、第1の実施の形態の効果について説明する。
【0022】
第1の実施の形態は、プログラムの実行において、計算機資源の空きに基づき、そのプログラムに対応する複数の実行パターン(複数(または1つ)の実行可能プログラム、および、複数の実行パラメータ)から実行可能なものを選択する構成である。
【0023】
したがって、第1の実施の形態は、計算機資源を有効に利用でき、計算機資源を無駄にせず、性能が向上するという効果を持つ。
【0024】
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
【0025】
第2の実施の形態は、第1の実施の形態の一例である。
図3は、第2の実施の形態の情報処理システム100の構成を示すブロック図である。
図3を参照すると、主処理部110は、コンパイル実行部200、コンパイル制御部300、実行プログラム格納部400、実行情報収集部500、および、実行情報格納部600を含む。
【0026】
スケジューリング部120は、プログラム選択部121、実行管理部122、および、スケジューリングテーブル123を含む。スケジューリングテーブル123は、計算機資源、および、時間の情報を含み、それぞれの時間帯にどの計算機資源が空いているかを示す。
【0027】
実行プログラム格納部400は、たとえば、実行可能プログラム401、実行可能プログラム402、…、実行可能プログラム40m(mは整数)を格納する。実行可能プログラムの個数に制限はない。
【0028】
実行情報格納部600は、たとえば、プログラム実行情報601、プログラム実行情報602、…、プログラム実行情報60n(nは整数)を格納する。プログラム実行情報の個数に制限はない。
【0029】
プログラム実行情報601〜60nは、プログラム識別子、アーキテクチャ、利用CPU数、利用メモリ量、割り付けポリシー、実行時間を含む。ここで、アーキテクチャ、利用CPU数、割り付けポリシーは、実行パラメータと呼ばれる。
【0030】
プログラム識別子は、プログラム名称と実行可能プログラム名とを組みにした情報である。ソースプログラムが共通である場合は、プログラム名称は共通である。実行可能プログラム名は、実行可能プログラム401〜40mのそれぞれを特定できる情報を含む。
【0031】
アーキテクチャは、「CPUの種別」、および、「コプロセッサの有無と種別」を示す文字列である。たとえば、アーキテクチャは、「x64、コプロセッサ無し」、「SX9、コプロセッサ無し」、「SPARC(登録商標)、コプロセッサ有り、および、コプロセッサの名称」等である。
【0032】
CPUの種別が同一でも、コプロセッサの有無で、アーキテクチャは、別のものとなる。また、コプロセッサの種別が異なれば、アーキテクチャは、別のものとなる。
【0033】
計算機資源とは、たとえば、情報処理システム100における利用可能アーキテクチャ、利用可能CPU、利用可能メモリ(容)量等である。すなわち、アーキテクチャは、計算機資源の1種である。
【0034】
次に、第2の実施の形態の動作について、図面を参照して説明する。
【0035】
図4は、第2の実施の形態の動作を示す動作説明図である。
図4を参照すると、主処理部110が、ソースプログラムを受け取ると、コンパイル制御部300は、実行可能プログラムの生成をコンパイル実行部200に指示する(ステップS11)。
【0036】
このとき、コンパイル制御部300は、コンパイル実行部200に対し、情報処理システム100に存在するアーキテクチャを指定する。
【0037】
次に、コンパイル実行部200は、ソースプログラムをコンパイルし、利用可能なアーキテクチャがm種であれば、それぞれに対応した実行可能プログラム401〜40mを生成し、実行プログラム格納部400に格納する(ステップS12)。
【0038】
次に、コンパイル制御部300は、利用CPU数、割り付けポリシー等を変えてそれぞれの実行可能プログラム401〜40mを実行することを実行情報収集部500に指示する(ステップS13)。
【0039】
たとえば、具体的には、コンパイル制御部300は、実行パラメータの利用CPU数を、2、4、8、…と変化させることを指示する。
【0040】
また、コンパイル制御部300は、実行パラメータの割り付けポリシー(たとえば、複数のタスクを異なるCPUに割り付けるのか、なるべく同一のCPUに割り付けるのか等)を変化させることを指示する。たとえば、1つのCPUが複数のタスクを同時に実行するハードウェア機能を備える場合、同一CPUに複数のタスクが割り付けられると、データの再利用の可能性が高くなり性能向上する場合がある。
【0041】
すなわち、コンパイル制御部300は、実行パラメータ(アーキテクチャ、利用CPU数、割り付けポリシー)を変化させて、それぞれの実行可能プログラム401〜40mを実行情報収集部500に実行させる。
【0042】
また、コンパイル制御部300は、事前に設定された1つの入力データセットを使用することを実行情報収集部500に指示する。
【0043】
次に、実行情報収集部500は、コンパイル制御部300の指示に基づいて、指示された入力データセットを使用し、実行パラメータを変化させて、それぞれの実行可能プログラム401〜40mを実行する(ステップS14)。
【0044】
そして、実行情報収集部500は、実行可能プログラム401〜40mの実行終了時ごとに、それぞれ、プログラム実行情報601〜60nを実行情報格納部600に格納する(ステップS15)。
【0045】
プログラム実行情報601〜60nは、プログラム識別子(ソースプログラム名、および、実行可能プログラム名)、アーキテクチャ、利用CPU数、利用メモリ量、割り付けポリシー、および、実行時間を含む。
【0046】
ここで、利用CPU数は、プログラム実行情報601〜60nの実行時に、実際に使用されたCPUの数であり、利用メモリ量は、実際に使用されたメモリ(容)量であり、実行時間は、実行に要した時間である。実行結果として許容できない実行性能や結果が得られた場合は、実行情報格納部600に格納が行われない構成が可能である。
【0047】
次に、スケジューリングの動作について説明する。
図5は、第2の実施の形態のスケジューリング部120の動作を示す動作説明図である。
図5を参照すると、スケジューリング部120が、実行リクエストを受け取る(ステップS21)。
【0048】
実行リクエストは、少なくとも、ソースプログラム名(たとえば、ソースプログラム名=W)、入力データセット(実行可能プログラム401〜40mを実行させるために必要なデータ)を含む。入力データセットは、入力データセットを特定する情報でもよい。また、実行リクエストは、利用する計算機資源(アーキテクチャ、CPU数、メモリ(容)量)を含むことが可能である。
【0049】
次に、プログラム選択部121は、スケジューリングテーブル123を検索し、最も早い時間帯の計算機資源(たとえば、CPU)、および、時間の空きを探す(ステップS22)。
【0050】
図6は、スケジューリングテーブル123の一例の概念を示す説明図である。
図6において、縦軸は、4台の個々のCPUを示す。横軸は、時間を示す。横軸の幅は、単位時間に相当する。A、B、C、Dは、空きではない登録済みの部分である。
【0051】
図6を参照すると、X1が、最も早い時間帯の計算機資源の空きであり、空きCPUは1台(CPU1)、空き時間は1[単位時間]である。X2は、2番目に早い時間帯の計算機資源の空きであり、空きCPUは2台(CPU3、CPU4)、空き時間は2[単位時間]である。X3は、3番目に早い時間帯の計算機資源の空きであり、空きCPUは4台(CPU1〜CPU4)、空き時間は1[単位時間]である。ここで、CPU1〜CPU4は、すべて同種(たとえば、アーキテクチャ=Zに対応)である。
【0052】
たとえば、実際のスケジューリングテーブル123に含まれる「CPU1」という情報は、CPUの種別、および、番号を特定できる情報である。
【0053】
次に、プログラム選択部121は、探した空きX1に適合する実行パターン、および、実行時間を含むプログラム実行情報601〜60nが存在するかどうかを検索する(ステップS23)。すなわち、プログラム選択部121は、計算機資源の空きX1で、実行可能であることに対応するプログラム実行情報601〜60nを探す(換言すると、実行可能な実行パターンの存在を探す)。
【0054】
ここで、プログラム実行情報601〜60nの中に、実行リクエストで指定されたソースプログラム(ソースプログラム名=W)に対応するものとして2つのプログラム実行情報60i、60jが存在する場合について説明する。
【0055】
図6において、プログラム実行情報60iは、「ソースプログラム名=W、アーキテクチャ=Z、利用CPU数=1、実行時間=4」を含む。プログラム実行情報60jは、「ソースプログラム名=W、アーキテクチャ=Z、利用CPU数=2、実行時間=1.8」を含む。プログラム実行情報60kは、「ソースプログラム名=W、アーキテクチャ=Z、利用CPU数=2、実行時間=2」を含む。プログラム実行情報60jとプログラム実行情報60kとでは、たとえば、割り付けポリシーが異なる。
【0056】
したがって、空きX1(空きCPUは1台(CPU1)、空き時間は1[単位時間])では、プログラム実行情報60i、60j、60kに対応する計算機資源が不足している。すなわち、実行可能な実行パターンは、存在しないので(ステップS24/N)、プログラム選択部121は、次に早い時間帯の空き(ここでは、空きX2)を探す(ステップS25)。
【0057】
そして、プログラム選択部121は、空きX2に適合する実行パターン、および、実行時間を含むプログラム実行情報601〜60nが存在するかどうかを検索する(ステップS23)。
【0058】
空きX2(空きCPUは2台(CPU3、CPU4)、空き時間は2[単位時間])では、プログラム実行情報60j、60kに対応する計算機資源が足りている。すなわち、実行可能な実行パターンは、存在する(ステップS24/Y)。
【0059】
次に、プログラム選択部121は、探し出した実行パターンに対応するプログラム実行情報60j、60kを調べ、実行時間の短い実行パターンを選択する(ステップS26)。たとえば、プログラム実行情報60jの方が、実行時間の短いと、プログラム選択部121は、プログラム実行情報60jに対応する実行パターンを選択する。
【0060】
次に、プログラム選択部121は、選択した実行パターンをスケジューリングテーブル123の空きX2の部分に登録する(ステップS27)。ここで、実行パターンは、実行可能プログラム401〜40mのうちの1つ(プログラム実行情報60jに対応するもの)、および、実行パラメータ(アーキテクチャ、利用CPU数、割り付けポリシー)の組である。
【0061】
そして、その後、実行管理部122は、スケジューリングテーブル123に基づいて、X2に登録された実行パターンを実行する(ステップS28)。すなわち、実行管理部122は、プログラム実行情報60jに対応する実行可能プログラム401〜40mの1つを、登録された実行パラメータで実行する。
【0062】
次に、別の例の動作(異なるアーキテクチャに対応する動作)について説明する。
図7は、スケジューリングテーブル123の一例の概念を示す説明図である。
図7において、縦軸は、2台の個々のCPU(CPU1、CPU2)、および、コプロセッサを示す。A、B、Cは、空きではない登録済みの部分である。
【0063】
また、アーキテクチャY1は、「CPU種別=Z、コプロセッサ=無し」である。アーキテクチャY2は、「CPU種別=Z、コプロセッサ=有り」である。CPU1、CPU2の種別は、Zである。
【0064】
図7を参照すると、空きX4が、最も早い時間帯の計算機資源の空きであり、空きCPUは1台(CPU2)、空きコプロセッサは1台、空き時間は2[単位時間]である。また、プログラム実行情報60iは、「ソースプログラム名=W、利用CPU数=2、アーキテクチャ=Y1(CPU種別=Z、コプロセッサ=無し)、実行時間=2」を含む。プログラム実行情報60jは、「ソースプログラム名=W、利用CPU数=1、アーキテクチャ=Y2(CPU種別=Z、コプロセッサ=有り)、実行時間=2」を含む。
【0065】
よって、プログラム実行情報60iに対応する実行パターンは、空きX4に適合しない(CPUが1台しか空いていないので)。そして、プログラム実行情報60jに対応する実行パターンは、空きX4に適する(1台のCPUとコプロセッサが空いているので)。
【0066】
したがって、プログラム実行情報60jに対応する実行パターンが、スケジューリングテーブル123に登録され、実行される。
【0067】
次に、第2の実施の形態の効果について説明する。
【0068】
第2の実施の形態は、第1の実施の形態の一例なので、第1の実施の形態と同一の効果を持つ。
【0069】
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。
【0070】
図8は、第3の実施の形態の構成を示すブロック図である。
図8を参照すると、第3の実施の形態は、第2の実施の形態の一例である。主処理部110のコンパイル制御部300は、複数の入力データセットを受け取る。
【0071】
一般に、プログラムは、入力データセットのサイズやデータ特性によって実行時間が変わる場合がある。また、入力データセットによって適する割り付けポリシー、または、CPUの台数が変わる場合がある。
【0072】
たとえば、入力データセットのサイズに応じて、適するCPUの台数が変化する場合がある。小さいデータセットサイズで多くの台数のCPUを利用すると、CPU当たりの処理量が小さくなり、オーバーヘッドのために性能が出ない場合がある。この場合は、利用CPU数を減らし、計算機資源が無駄にならないようにすることが必要である。第3の実施の形態は、これらを考慮した構成である。
【0073】
次に、第3の実施の形態の動作について説明する。
【0074】
コンパイル制御部300は、利用CPU数、割り付けポリシー、および、入力データセット(受け取った)を変えてそれぞれの実行可能プログラム401〜40mを実行することを実行情報収集部500に指示する。すなわち、実行パラメータは、入力データセットを含む。
【0075】
実行情報収集部500は、コンパイル制御部300の指示に基づいて、実行パラメータ(入力データセットを含む)を変化させて、それぞれの実行可能プログラム401〜40mを実行する。そして、実行情報収集部500は、実行可能プログラム401〜40mの実行終了時ごとに、それぞれ、入力データセットを識別する入力データセット名を含むプログラム実行情報601〜60nを実行情報格納部600に格納する。
【0076】
次に、第3の実施の形態の効果について説明する。
【0077】
第3の実施の形態は、実行パラメータが入力データを含むので、第2の実施の形態よりも、適した実行パターンの実行が可能になるという効果を持つ。すなわち、第3の実施の形態は、第2の実施の形態に比べて、性能が向上する。
【0078】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0079】
[付記1]
ソースプログラムから実行可能プログラムを生成し、実行パラメータを変えて前記実行可能プログラムを実行し、前記実行パラメータ、および、実行時間を含むプログラム実行情報を生成する主処理部と、
スケジューリングに際し、計算機資源の空きを調べ、前記プログラム実行情報に基づいて、その計算機資源の空きで実行可能な前記実行可能プログラム、および、前記実行パラメータの組を選択し、スケジューリングテーブルに登録するスケジューリング部と、
を含むことを特徴とする情報処理システム。
【0080】
[付記2]
前記スケジューリング部は、順次、速い時間帯の計算機資源の空きから調べることを特徴とする付記1の情報処理システム。
【0081】
[付記3]
前記スケジューリング部は、ある計算機資源の空きで実行可能な前記実行可能プログラム、および、前記実行パラメータの組がある場合、前記実行時間の短い前記実行可能プログラム、および、前記実行パラメータの組を選択することを特徴とする付記2の情報処理システム。
【0082】
[付記4]
前記主処理部は、アーキテクチャのそれぞれに対応する前記実行可能プログラムを生成することを特徴とする付記1、2、または、3の情報処理システム。
【0083】
[付記5]
前記主処理部は、前記実行パラメータとして、利用CPU数、または、割り付けポリシーを使用することを特徴とする付記1、2、または、3の情報処理システム。
【0084】
[付記6]
前記主処理部は、前記実行パラメータとして、前記アーキテクチャ、利用CPU数、または、割り付けポリシーを使用することを特徴とする付記4の情報処理システム。
【0085】
[付記7]
前記主処理部は、複数の入力データセットを受け取り、入力データセットを変えて前記実行可能プログラムを実行し、前記入力データセットを前記実行パラメータとして前記プログラム実行情報に含ませることを特徴とする付記1、2、3、4、5、または、6の情報処理システム。
【0086】
[付記8]
ソースプログラムから実行可能プログラムを生成し、実行パラメータを変えて前記実行可能プログラムを実行し、前記実行パラメータ、および、実行時間を含むプログラム実行情報を生成し、
スケジューリングに際し、計算機資源の空きを調べ、前記プログラム実行情報に基づいて、その計算機資源の空きで実行可能な前記実行可能プログラム、および、前記実行パラメータの組を選択し、スケジューリングテーブルに登録する、
ことを特徴とする情報処理方法。
【0087】
[付記9]
順次、速い時間帯の計算機資源の空きから調べることを特徴とする付記8の情報処理方法。
【0088】
[付記10]
ある計算機資源の空きで実行可能な前記実行可能プログラム、および、前記実行パラメータの組がある場合、前記実行時間の短い前記実行可能プログラム、および、前記実行パラメータの組を選択することを特徴とする付記9の情報処理方法。
【0089】
[付記11]
アーキテクチャのそれぞれに対応する前記実行可能プログラムを生成することを特徴とする付記8、9、または、10の情報処理方法。
【0090】
[付記12]
前記実行パラメータとして、利用CPU数、または、割り付けポリシーを使用することを特徴とする付記8、9、または、10の情報処理方法。
【0091】
[付記13]
前記実行パラメータとして、前記アーキテクチャ、利用CPU数、または、割り付けポリシーを使用することを特徴とする付記11の情報処理方法。
【0092】
[付記14]
複数の入力データセットを受け取り、入力データセットを変えて前記実行可能プログラムを実行し、前記入力データセットを前記実行パラメータとして前記プログラム実行情報に含ませることを特徴とする付記8、9、10、11、12、または、13の情報処理方法。
【0093】
[付記15]
ソースプログラムから実行可能プログラムを生成し、実行パラメータを変えて前記実行可能プログラムを実行し、前記実行パラメータ、および、実行時間を含むプログラム実行情報を生成する処理と、
スケジューリングに際し、計算機資源の空きを調べ、前記プログラム実行情報に基づいて、その計算機資源の空きで実行可能な前記実行可能プログラム、および、前記実行パラメータの組を選択し、スケジューリングテーブルに登録する処理と、
をコンピュータに実行させることを特徴とするスケジューリングプログラム。
【0094】
[付記16]
順次、速い時間帯の計算機資源の空きから調べる処理をコンピュータに実行させることを特徴とする付記8のスケジューリングプログラム。
【0095】
[付記17]
ある計算機資源の空きで実行可能な前記実行可能プログラム、および、前記実行パラメータの組がある場合、前記実行時間の短い前記実行可能プログラム、および、前記実行パラメータの組を選択する処理をコンピュータに実行させることを特徴とする付記9のスケジューリングプログラム。
【0096】
[付記18]
アーキテクチャのそれぞれに対応する前記実行可能プログラムを生成する処理をコンピュータに実行させることを特徴とする付記8、9、または、10のスケジューリングプログラム。
【0097】
[付記19]
前記実行パラメータとして、利用CPU数、または、割り付けポリシーを使用する処理をコンピュータに実行させることを特徴とする付記8、9、または、10のスケジューリングプログラム。
【0098】
[付記20]
前記実行パラメータとして、前記アーキテクチャ、利用CPU数、または、割り付けポリシーを使用する処理をコンピュータに実行させることを特徴とする付記11のスケジューリングプログラム。
【0099】
[付記21]
複数の入力データセットを受け取り、入力データセットを変えて前記実行可能プログラムを実行し、前記入力データセットを前記実行パラメータとして前記プログラム実行情報に含ませる処理をコンピュータに実行させることを特徴とする付記8、9、10、11、12、または、13のスケジューリングプログラム。