(57)【要約】【課題】プログラム個々に適した高速処理の実行環境を効率的かつ確実に選択可能とする。【解決手段】対象プログラムをコンパイルしたオブジェクトについてマルチプロセッサ環境での並列処理有効化のデータを検索し記憶手段に格納する並列情報抽出手段１１０と、対象プログラムのソースコードが含むＩＯ処理の記述を検索しソースコード全体に占めるＩＯ処理の比率を算定し記憶手段に格納するＩＯ処理情報抽出手段１１１と、記憶手段において並列処理有効化のデータの存在情報が対応付けられている対象プログラムを検索しその実行環境をマルチプロセッサ環境と判定し、並列処理有効化のデータの存在情報が対応付けられておらずＩＯ処理の比率が所定閾値以上である対象プログラムを検索しその実行環境をシングルプロセッサ環境と判定し実行環境の選択指示を出力装置に出力する多重度制御手段１１２とから実行環境選択システム１００を構成する。【選択図】図１
2010055405.tif 000002
【特許請求の範囲】
【請求項１】
実行環境の選択対象となる対象プログラムを格納した記憶手段と、
前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムをコンパイルしたオブジェクトについて、マルチプロセッサ環境での並列処理有効化のデータを検索し、当該検索結果を前記対象プログラムに対応付けて記憶手段に格納する、並列情報抽出手段と、
前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む読込または書込のＩＯ処理の記述を検索し、ソースコード全体に占める前記ＩＯ処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納する、ＩＯ処理情報抽出手段と、
前記記憶手段において前記検索結果として並列処理有効化のデータの存在情報が対応付けられている対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定し、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定し、前記判定の結果に基づく実行環境の選択指示を出力装置に出力する、多重度制御手段と、
を備えることを特徴とする実行環境選択システム。
【請求項２】
前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む条件処理の記述を検索し、ソースコード全体に占める前記条件処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納する、条件処理情報抽出手段を備え、
前記多重度制御手段が、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以下であるが、前記条件処理の比率が所定閾値以上の対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定し、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率と前記条件処理の比率が所定閾値以下の対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定し、前記判定の結果に基づく実行環境の選択指示を出力装置に出力するものである、
ことを特徴とする請求項１に記載の実行環境選択システム。
【請求項３】
前記多重度制御手段が、前記実行環境の選択指示を確定前の多重度として対象プログラムに対応付けて記憶手段に格納するものであることを特徴とする請求項１または２に記載の実行環境選択システム。
【請求項４】
前記記憶手段より前記対象プログラムと当該対象プログラムに設定されている確定前の多重度とを読み出し、前記確定前の多重度に従った実行環境で前記対象プログラムを実行し、前記対象プログラムの実行にかかる全時間とプリフェッチまたはプリロードの処理時間とを検知し、前記プリフェッチまたはプリロードの処理時間が前記全時間に占める比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納する、プロファイリング情報抽出手段を備え、
前記多重度制御手段が、前記記憶手段において前記プリフェッチまたはプリロードの処理時間の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段で設定されている前記確定前の多重度を、確定した実行環境として記憶手段に設定し、該当実行環境の選択指示を出力装置に出力するものである、
ことを特徴とする請求項３に記載の実行環境選択システム。
【請求項５】
前記プロファイリング情報抽出手段が、前記記憶手段より前記対象プログラムと当該対象プログラムに設定されている確定前の多重度とを読み出し、前記多重度に従った実行環境で前記対象プログラムを実行し、前記対象プログラムの実行にかかる全時間と、前記対象プログラムの並列処理実行時における並列処理間での通信処理時間とを検知し、前記並列処理間通信処理時間が前記全時間に占める比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納し、
前記多重度制御手段が、前記記憶手段において前記プリフェッチまたはプリロードの処理時間の比率と前記並列処理間通信処理時間の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段で設定されている前記確定前の多重度を、確定した実行環境として記憶手段に設定し、該当実行環境の選択指示を出力装置に出力し、前記記憶手段において前記プリフェッチまたはプリロードの処理時間の比率と前記並列処理間通信処理時間の比率が所定閾値以下である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段で設定されている前記確定前の多重度を所定割合だけ増大させた多重度を算定し、ここで算定した多重度を確定した実行環境として記憶手段に設定し、該当実行環境の選択指示を出力装置に出力するものである、
ことを特徴とする請求項４に記載の実行環境選択システム。
【請求項６】
マルチプロセッサ環境とシングルプロセッサ環境の切替手段を備え、
前記多重度制御手段が、前記実行環境の選択指示を前記切替手段に通知するものである、  ことを特徴とする請求項１〜５のいずれかに記載の実行環境選択システム。
【請求項７】
実行環境の選択対象となる対象プログラムを格納した記憶手段を備えるコンピュータが、
前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムをコンパイルしたオブジェクトについて、マルチプロセッサ環境での並列処理有効化のデータを検索し、当該検索結果を前記対象プログラムに対応付けて記憶手段に格納する処理と、
前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む読込または書込のＩＯ処理の記述を検索し、ソースコード全体に占める前記ＩＯ処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納する処理と、
前記記憶手段において前記検索結果として並列処理有効化のデータの存在情報が対応付けられている対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定し、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定し、前記判定の結果に基づく実行環境の選択指示を出力装置に出力する処理と、
を実行することを特徴とする実行環境選択方法。
【請求項８】
実行環境の選択対象となる対象プログラムを格納した記憶手段を備えるコンピュータに、
前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムをコンパイルしたオブジェクトについて、マルチプロセッサ環境での並列処理有効化のデータを検索し、当該検索結果を前記対象プログラムに対応付けて記憶手段に格納するステップと、
前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む読込または書込のＩＯ処理の記述を検索し、ソースコード全体に占める前記ＩＯ処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納するステップと、
前記記憶手段において前記検索結果として並列処理有効化のデータの存在情報が対応付けられている対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定し、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定し、前記判定の結果に基づく実行環境の選択指示を出力装置に出力するステップと、
を実行させることを特徴とする実行環境選択プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行環境選択システム、実行環境選択方法、および実行環境選択プログラムに関し、具体的には、プログラム個々に適した高速処理の実行環境を効率的かつ確実に選択可能とする技術に関し、プログラム実行環境を複数持つシステム（一つ以上のマルチプロセッサを具備するシステム、または、複数のシングルプロセッサを具備するシステム）に適用されるものである。
【背景技術】
【０００２】
コンピュータシステムはシステムの大型化や複雑化が進み、また、高度な計算処理の必要性から高速なプログラム処理がより一層必要とされている。そこで、単一のCPU(シングルプロセッサ)を備える計算機の他に、複数のCPU(マルチプロセッサ)を備える計算機も開発された。この計算機では各CPUを並列動作させて処理の高速化を図ることとなる。
【０００３】
また、こうしたハードウェアの進化に伴ってソフトウェアについても進化している。例えば、上述した複数のCPUを効率よく活用し、より高速な処理を可能とする並列プログラムが開発されるようになった。
【０００４】
このようなコンピュータシステムの進化により、プログラムを単一のCPUで処理させるか或いは複数のCPUで処理させるか、必要に応じて自在に切り替えができるようになった。一般に、良く並列化されたプログラムでは、複数のCPUで処理させた方がより高速な処理が可能である。こうしたプログラムを、例えば２個のCPU(多重度2)のマルチ実行環境で実行した場合、単一のCPU(多重度1)のシングル実行環境で実行した場合と比較し、実行速度が2倍近く高速になる場合がある。
【０００５】
上記マルチ実行環境を前提とした技術として、例えば、サーバのインバウンド作業負荷から観察された統計に基づき、マルチスレッド・サーバ内のスレッド・プールをプログラムに基づいて調整することを課題とした、マルチスレッド・サーバ内のスレッド・プールを動的に調整する方法（特許文献１参照）などが提案されている。
【特許文献１】特許第３９４４１５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、単純に多重度を大きくすれば必ず高速処理となるものでは無く、プログラムの処理内容やハードウェアの構成等によっては、逆に実行速度が遅くなるケースがある。例えば、ＩＯ処理の多いプログラムは、多重度を大きくするよりも多重度1(シングル実行環境)で実行した方が高速処理となる場合が多い。
【０００７】
このように、個々のプログラムには高速処理に適した実行環境があり、こうした実行環境を適切に選択する必要がある。だが従来では、実行環境の選択を担当者等の経験や勘に頼って行っており、個々のプログラムに適した実行環境の選択を効率的かつ確実に実行するのが困難であった。
【０００８】
そこで本発明は上記課題を鑑みてなされたものであり、プログラム個々に適した高速処理の実行環境を効率的かつ確実に選択可能とする技術の提供を目的とする。
【課題を解決するための手段】
【０００９】
本発明の実行環境選択システムは、プログラム個々に適した高速処理の実行環境を効率的かつ確実に選択とするコンピュータシステムである。そのため、例えば、プログラム実行環境を複数備え（一つ以上のマルチプロセッサを具備、または、複数のシングルプロセッサを具備）、マルチプロセッサ環境とシングルプロセッサ環境とを使い分け可能なコンピュータシステムを想定する。この場合、前記実行環境選択システムは、マルチプロセッサ環境とシングルプロセッサ環境の切替を、例えば、当該実行環境選択システムにおけるオペレーティングシステム上のコマンド（実行環境切替のための既知のもの）で実行する。
【００１０】
こうした実行環境選択システムは、実行環境の選択対象となる対象プログラムを格納した記憶手段を備えている。この記憶手段は例えば、不揮発性の記憶装置であるハードディスクドライブ等を想定すればよい。
【００１１】
また前記実行環境選択システムは、前記記憶手段より前記対象プログラムをメモリに読み出し、当該対象プログラムをコンパイルしたオブジェクトについて、マルチプロセッサ環境での並列処理有効化のデータを検索し、当該検索結果を前記対象プログラムに対応付けて記憶手段に格納する並列情報抽出手段を備える。
【００１２】
このため、当該並列情報抽出手段は、前記対象プログラムをコンパイルするためのコンパイラを記憶手段から呼び出して実行する。また、前記コンパイラは（管理者等により）設定されたコンパイルフラグにより、マルチプロセッサ環境での並列処理のための措置（並列処理を有効に行うためのもの）を前記対象プログラムに行うことができる。
【００１３】
前記並列処理有効化のデータとしては、例えば、並列処理有効化コンパイル情報、並列処理有効化リンク情報がある。前記対象プログラムのソースコードがコンパイルされたオブジェクトには、並列処理有効化コンパイル情報が含まれる可能性がある。これを、コンパイルされたオブジェクトから取り出すには、例えば、オペレーティングシステムのコマンド等により取り出す。並列処理有効化コンパイルフラグによりコンパイルされたオブジェクトの場合には、該コマンドの引数としてオブジェクトを与えると並列処理有効化コンパイル情報が出力される。逆に、並列処理有効化コンパイルフラグによりコンパイルされていないオブジェクトの場合には、該コマンドの引数としてオブジェクトを与えると並列処理有効化コンパイル情報が出力されない。
【００１４】
一方、前記並列処理有効化リンク情報は、前記オブジェクトにライブラリがリンクされたロードモジュールに含まれる可能性がある。この並列処理有効化リンク情報を前記ロードモジュールから取り出すには、例えば、オペレーティングシステムのコマンド等により取り出す。並列処理有効化リンクフラグによりライブラリがリンクされたロードモジュールの場合には、該コマンドの引数としてをロードモジュールを与えると並列処理有効化リンク情報が出力される。逆に、並列処理有効化リンクフラグによりライブラリがリンクされていないロードモジュールの場合には、該コマンドの引数としてをロードモジュールを与えると並列処理有効化リンク情報が出力されない。
【００１５】
また、前記実行環境選択システムは、前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む読込または書込のＩＯ処理の記述を検索し、ソースコード全体に占める前記ＩＯ処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納する、ＩＯ処理情報抽出手段を備える。
【００１６】
前記読込処理とは、ハードディスク等の記憶手段からデータを読み込む処理である。前記読込処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する読込処理の行数の比率とできる。例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与えると対象プログラムのソースコードの行数が出力される。また、ソースコードの読込処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００１７】
一方、前記書込処理とは、ハードディスク等の記憶手段にデータを書き込む処理である。前記書込処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する書込処理の行数の比率とする。例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与えると対象プログラムのソースコードの行数が出力される。また、ソースコードの書込処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００１８】
また、前記実行環境選択システムは、前記記憶手段において前記検索結果として並列処理有効化のデータの存在情報が対応付けられている対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定し、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定し、前記判定の結果に基づく実行環境の選択指示を出力装置に出力する、多重度制御手段を備える。
【００１９】
また、前記実行環境選択システムは、前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む条件処理の記述を検索し、ソースコード全体に占める前記条件処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納する、条件処理情報抽出手段を備えるとしてもよい。前記条件処理とは、真偽を判断する処理、所定値との比較処理、前処理までの結果を受けた場合分け処理、などを想定する。前記条件処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する条件処理の行数の比率とする。例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与えると対象プログラムのソースコードの行数が出力される。また、ソースコードの条件処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００２０】
この場合、前記多重度制御手段は、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以下であるが、前記条件処理の比率が所定閾値以上の対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定する。また、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率と前記条件処理の比率が所定閾値以下の対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定する。前記多重度制御手段は、こうした判定の結果に基づく実行環境の選択指示を出力装置に出力する。
【００２１】
なお、前記多重度制御手段が、前記実行環境の選択指示を確定前の多重度として対象プログラムに対応付けて記憶手段に格納するとしてもよい。
【００２２】
また、前記実行環境選択システムは、前記記憶手段より前記対象プログラムと当該対象プログラムに設定されている確定前の多重度とを読み出し、前記確定前の多重度に従った実行環境で前記対象プログラムを実行し、前記対象プログラムの実行にかかる全時間とプリフェッチまたはプリロードの処理時間とを検知し、前記プリフェッチまたはプリロードの処理時間が前記全時間に占める比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納する、プロファイリング情報抽出手段を備えるとしてもよい。
【００２３】
この場合、前記多重度制御手段は、前記記憶手段において前記プリフェッチまたはプリロードの処理時間の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段で設定されている前記確定前の多重度を、確定した実行環境として記憶手段に設定し、該当実行環境の選択指示を出力装置に出力する。
【００２４】
また、前記プロファイリング情報抽出手段は、前記記憶手段より前記対象プログラムと当該対象プログラムに設定されている確定前の多重度とを読み出し、前記多重度に従った実行環境で前記対象プログラムを実行し、前記対象プログラムの実行にかかる全時間と、前記対象プログラムの並列処理実行時における並列処理間での通信処理時間とを検知し、前記並列処理間通信処理時間が前記全時間に占める比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納するとしてもよい。
【００２５】
この場合、前記多重度制御手段は、前記記憶手段において前記プリフェッチまたはプリロードの処理時間の比率と前記並列処理間通信処理時間の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段で設定されている前記確定前の多重度を、確定した実行環境として記憶手段に設定し、該当実行環境の選択指示を出力装置に出力し、前記記憶手段において前記プリフェッチまたはプリロードの処理時間の比率と前記並列処理間通信処理時間の比率が所定閾値以下である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段で設定されている前記確定前の多重度を所定割合だけ増大させた多重度を算定し、ここで算定した多重度を確定した実行環境として記憶手段に設定し、該当実行環境の選択指示を出力装置に出力する。
【００２６】
またこのような実行環境選択システムは、マルチプロセッサ環境とシングルプロセッサ環境の切替手段を備え、前記多重度制御手段が、前記実行環境の選択指示を前記切替手段に通知する。
【００２７】
また、本発明の実行環境選択方法は、実行環境の選択対象となる対象プログラムを格納した記憶手段を備えるコンピュータが、以下の処理を実行するものである。すなわち、前記コンピュータは、前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムをコンパイルしたオブジェクトについて、マルチプロセッサ環境での並列処理有効化のデータを検索し、当該検索結果を前記対象プログラムに対応付けて記憶手段に格納する処理を実行する。
【００２８】
また、前記コンピュータは、前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む読込または書込のＩＯ処理の記述を検索し、ソースコード全体に占める前記ＩＯ処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納する処理を実行する。
【００２９】
また、前記コンピュータは、前記記憶手段において前記検索結果として並列処理有効化のデータの存在情報が対応付けられている対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定し、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定し、前記判定の結果に基づく実行環境の選択指示を出力装置に出力する処理を実行する。
【００３０】
また、本発明の実行環境選択プログラムは、実行環境の選択対象となる対象プログラムを格納した記憶手段を備えるコンピュータに、以下のステップを実行させるプログラムである。
【００３１】
すなわち、前記コンピュータに、前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムをコンパイルしたオブジェクトについて、マルチプロセッサ環境での並列処理有効化のデータを検索し、当該検索結果を前記対象プログラムに対応付けて記憶手段に格納するステップを実行させる。
【００３２】
また、前記コンピュータに、前記記憶手段より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む読込または書込のＩＯ処理の記述を検索し、ソースコード全体に占める前記ＩＯ処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段に格納するステップを実行させる。
【００３３】
また、前記コンピュータに、前記記憶手段において前記検索結果として並列処理有効化のデータの存在情報が対応付けられている対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定し、前記記憶手段において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定し、前記判定の結果に基づく実行環境の選択指示を出力装置に出力するステップを実行させる。
【００３４】
その他、本願が開示する課題、及びその解決方法は、発明の実施の形態の欄、及び図面により明らかにされる。
【発明の効果】
【００３５】
本発明によれば、プログラム個々に適した高速処理の実行環境を効率的かつ確実に選択可能とできる。
【発明を実施するための最良の形態】
【００３６】
−−−システム構成−−−
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は本実施形態の実行環境選択システム１００のハードウェア構成例を示す図である。本実施形態における実行環境選択システム１００（以下、システム１００）は、プログラム個々に適した高速処理の実行環境を効率的かつ確実に選択するコンピュータシステムである。
【００３７】
こうした前記システム１００は、実行環境選択方法を実行する機能を実現すべく不揮発性メモリなどの記憶手段１０１に格納されたプログラム１０２をメモリ１０３に読み出し、演算装置たるＣＰＵ１０４により実行する。また、前記システム１００は、コンピュータ装置が一般に備えている各種ボタン類、キーボードなどの入力装置１０５や、ＬＥＤやディスプレイなどの出力装置１０６を必要に応じて備える。なお、ネットワーク１４０を介した外部装置らとの通信を担う通信装置１０７を有するとしてもよい。
【００３８】
前記ＣＰＵ１０４は、前記システム１００の全体の制御を司るもので、記憶手段１０１に記憶される本実施の形態に係る各種の動作を行うためのコードから構成されるプログラムを、メモリ１０３に読み出して実行することにより、前記システム１００としての各種機能を実現する。メモリ１０３は例えば半導体記憶装置により構成することができる。前記記憶手段１０１は、例えばハードディスクや半導体記憶装置等で構成することができる。記憶手段１０１には、本実施の形態に係る各種の動作を行うためのコードから構成されるプログラム、データベース、および実行環境選択の対象となる対象プログラムらが記憶される。
【００３９】
続いて、前記システム１００が例えばプログラム１０２に基づき構成・保持する手段につき説明を行う。各手段は、１つのサーバ装置等に一体に備わるとしてもよいが、ネットワーク１４０上に配置するコンピュータ群（前記システム１００にあたるサーバ装置を含む）に分散配置し、そのうち一つのサーバ装置（システム１００）の主導の下で協働する例も想定してよい。なお、前記システムは、記憶手段１０１において、後述する多重度判定データベース１２５を記憶している。
【００４０】
こうした前記システム１００は、プログラム個々に適した高速処理の実行環境を効率的かつ確実に選択とするコンピュータシステムである。そのため、例えば、プログラム実行環境を複数備え（一つ以上のマルチプロセッサを具備、または、複数のシングルプロセッサを具備）、マルチプロセッサ環境とシングルプロセッサ環境とを使い分け可能なコンピュータシステムを想定する。前記マルチプロセッサ環境には、非対象型多重プロセッシング（ASMP）と対象型多重プロセッシング（SMP)という種類がある。
【００４１】
非対象型多重プロセッシング（ASMP）はオペレーティングシステムは必ずどれか特定のCPUで動作し、それ以外のプロセス（プログラムが動作する空間）またはスレッドは他のCPUで動作する。他方、対象型多重プロセッシング（SMP）は、より柔軟な構成であり、動作するプロセスやスレッドがオペレーティングシステムに関わるものであってもユーザーのものであっても、任意のCPUで動作することができる。非対象型多重プロセッシング（ASMP）はオペレーティングシステムの設計が単純になるが、負荷バランスを均等に配分することは難しい。通常、ユーザープロセスが増えれば増えるほどCPUを増やして対応することが可能であるが、オペレーティングシステムが動作できるCPUは決まっているのでパフォーマンスの限界はそのCPUの能力次第である。一方、対象型多重プロセッシング（SMP）は負荷をより均等に配分できる。
【００４２】
また前記システム１００は、マルチプロセッサ環境とシングルプロセッサ環境の切替を、例えば、当該システム１００におけるオペレーティングシステム上のコマンド（実行環境切替のための既知のもの）で実行する。例えば、オペレーティングシステムにおける起動オプション等にて、シングル／マルチの動作切替えを実行すればよい。
【００４３】
前記システム１００は、実行環境の選択対象となる対象プログラムを格納した記憶手段１０１を備えている。また前記システム１００は、前記記憶手段１０１より前記対象プログラムをメモリ１０３に読み出し、当該対象プログラムをコンパイルしたオブジェクトについて、マルチプロセッサ環境での並列処理有効化のデータを検索し、当該検索結果を前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納する並列情報抽出手段１１０を備える。
【００４４】
このため、当該並列情報抽出手段１１０は、前記対象プログラムをコンパイルするためのコンパイラを記憶手段１０１から呼び出して実行する。また、前記コンパイラは（管理者等により）設定されたコンパイルフラグにより、マルチプロセッサ環境での並列処理のための措置（並列処理を有効に行うためのもの）を前記対象プログラムに行うことができる。コンパイラは、ソースプログラムから機械語などのオブジェクトファイルを生成するものであり、このオブジェクトファイルと一般公開されている既存の命令集であるライブラリをリンカでリンクすることで、コンピュータが利用できる実行プログラムとなる。
【００４５】
前記並列処理有効化のデータとしては、例えば、並列処理有効化コンパイル情報、並列処理有効化リンク情報がある。前記対象プログラムのソースコードがコンパイルされたオブジェクトには、並列処理有効化コンパイル情報が含まれる可能性がある。前記並列情報抽出手段１１０が、前記並列処理有効化コンパイル情報を、コンパイルされたオブジェクトから取り出すには、例えば、オペレーティングシステムのコマンド等により取り出す。並列処理有効化コンパイルフラグによりコンパイルされたオブジェクトの場合には、該コマンドの引数としてオブジェクトを与えると並列処理有効化コンパイル情報が出力される。逆に、並列処理有効化コンパイルフラグによりコンパイルされていないオブジェクトの場合には、該コマンドの引数としてオブジェクトを与えると並列処理有効化コンパイル情報が出力されない。
【００４６】
一方、前記並列処理有効化リンク情報は、前記オブジェクトにライブラリがリンクされたロードモジュールに含まれる可能性がある。この並列処理有効化リンク情報を前記並列情報抽出手段１１０が前記ロードモジュールから取り出すには、例えば、オペレーティングシステムのコマンド等により取り出す。並列処理有効化リンクフラグによりライブラリがリンクされたロードモジュールの場合には、該コマンドの引数としてをロードモジュールを与えると並列処理有効化リンク情報が出力される。逆に、並列処理有効化リンクフラグによりライブラリがリンクされていないロードモジュールの場合には、該コマンドの引数としてをロードモジュールを与えると並列処理有効化リンク情報が出力されない。
【００４７】
また、前記システム１００は、前記記憶手段１０１より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む読込または書込のＩＯ処理の記述を検索し、ソースコード全体に占める前記ＩＯ処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納する、ＩＯ処理情報抽出手段１１１を備える。
【００４８】
前記読込処理とは、ハードディスク等の記憶手段１０１からデータを読み込む処理である。前記読込処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する読込処理の行数の比率とできる。前記ＩＯ処理情報抽出手段１１１は、例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与え、対象プログラムのソースコードの行数の出力をうる。また、ソースコードの読込処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００４９】
一方、前記書込処理とは、ハードディスク等の記憶手段１０１にデータを書き込む処理である。前記書込処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する書込処理の行数の比率とする。前記ＩＯ処理情報抽出手段１１１は、例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与え、対象プログラムのソースコードの行数の出力をうる。また、ソースコードの書込処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００５０】
また、前記システム１００は、前記記憶手段１０１において前記検索結果として並列処理有効化のデータの存在情報が対応付けられている対象プログラムを検索し、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定し、前記記憶手段１０１において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値（記憶手段１０１かメモリ１０３に予め格納。他の閾値についても同様）以上である対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定し、前記判定の結果に基づく実行環境の選択指示をディスプレイや各種の出力装置１０６に出力する、多重度制御手段１１２を備える。
【００５１】
また、前記システム１００は、前記記憶手段１０１より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む条件処理の記述を検索し、ソースコード全体に占める前記条件処理の比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納する、条件処理情報抽出手段１１３を備えるとしてもよい。
【００５２】
ここで前記条件処理とは、真偽を判断する処理、所定値との比較処理、前処理までの結果を受けた場合分け処理、などを想定する。前記条件処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する条件処理の行数の比率とする。前記条件処理情報抽出手段１１３は、例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与え、対象プログラムのソースコードの行数の出力をうる。また、ソースコードの条件処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００５３】
この場合、前記多重度制御手段１１２は、前記記憶手段１０１において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率が所定閾値以下であるが、前記条件処理の比率が所定閾値以上の対象プログラムを検索する。そして、ここで検索した対象プログラムの実行環境をマルチプロセッサ環境と判定する。また、前記記憶手段１０１において前記検索結果として前記並列処理有効化のデータの存在情報が対応付けられておらず前記ＩＯ処理の比率と前記条件処理の比率が所定閾値以下の対象プログラムを検索し、ここで検索した対象プログラムの実行環境をシングルプロセッサ環境と判定する。前記多重度制御手段１１２は、こうした判定の結果に基づく実行環境の選択指示を出力装置１０６に出力する。
【００５４】
なお、前記多重度制御手段１１２が、前記実行環境の選択指示を確定前の多重度として対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納するとしてもよい。
【００５５】
また、前記システム１００は、前記記憶手段１０１より前記対象プログラムと当該対象プログラムに設定されている確定前の多重度とを読み出し、前記確定前の多重度に従った実行環境で前記対象プログラムを実行し、前記対象プログラムの実行にかかる全時間とプリフェッチまたはプリロードの処理時間とを検知し、前記プリフェッチまたはプリロードの処理時間が前記全時間に占める比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納する、プロファイリング情報抽出手段１１４を備えるとしてもよい。
【００５６】
この場合、前記多重度制御手段１１２は、前記記憶手段１０１の多重度判定データベース１２５において前記プリフェッチまたはプリロードの処理時間の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段１０１で設定されている前記確定前の多重度を、確定した実行環境として記憶手段１０１に設定し、該当実行環境の選択指示を出力装置１０６に出力する。
【００５７】
また、前記プロファイリング情報抽出手段１１４は、前記記憶手段１０１の多重度判定データベース１２５より前記対象プログラムと当該対象プログラムに設定されている確定前の多重度とを読み出し、前記多重度に従った実行環境で前記対象プログラムを実行する。そして、前記対象プログラムの実行にかかる全時間と、前記対象プログラムの並列処理実行時における並列処理間での通信処理時間とを検知し、前記並列処理間通信処理時間が前記全時間に占める比率を算定し、当該算定結果を前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納するとしてもよい。
【００５８】
この場合、前記多重度制御手段１１２は、前記記憶手段１０１の多重度判定データベース１２５において前記プリフェッチまたはプリロードの処理時間の比率と前記並列処理間通信処理時間の比率が所定閾値以上である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段１０１で設定されている前記確定前の多重度を、確定した実行環境として記憶手段１０１に設定し、該当実行環境の選択指示を出力装置１０６に出力する。他方、前記記憶手段１０１の多重度判定データベース１２５において前記プリフェッチまたはプリロードの処理時間の比率と前記並列処理間通信処理時間の比率が所定閾値以下である対象プログラムを検索し、ここで検索した対象プログラムについて前記記憶手段１０１で設定されている前記確定前の多重度を所定割合だけ増大させた多重度を算定し、ここで算定した多重度を確定した実行環境として記憶手段１０１に設定し、該当実行環境の選択指示を出力装置１０６に出力する。
【００５９】
またこのような前記システム１００は、マルチプロセッサ環境とシングルプロセッサ環境の切替手段１１５を備え、前記多重度制御手段１１２が、前記実行環境の選択指示を前記切替手段１１５に通知する。勿論、前記切替手段１１５が、前記システム１００とは別体で、ネットワーク１４０上に存在する装置である場合（つまり、前記システム１００は実行環境選択だけを行って、実際の本番環境は別途存在する場合など）、前記多重度制御手段１１２は、前記通信装置１０７を介して前記選択指示を前記切替手段１１５に送る。
【００６０】
なお、プリフェッチ（prefetch）処理とは、CPUがデータをあらかじめキャッシュメモリに読み出しておく処理を意味する。CPUがプリフェッチ処理を行うことによって、データの読み出し命令があった場合、逐次読み出しを行う場合に比べて処理応答速度を大幅に短縮可能とされる。このプリフェッチ処理には、ハードウェアが自動的に推測して読み出しを行う場合やソフトウェアが命令を発してデータを読み込ませる場合がある。ハードウェアによるプリフェッチの機能には、キャッシュにデータを読み込む際、あらかじめその次のキャッシュラインも読み込んでおく機能があり、特にネクストラインフェッチ（Next Line Fetch）と呼ばれている。また、プリロード（preload）処理は、よく使うファイルを予めメモリに読み込んでおいて全体の処理を高速化するための処理である。
【００６１】
なお、これまで示した前記システム１００における各手段１１０〜１１５は、ハードウェアとして実現してもよいし、メモリやＨＤＤ（Hard Disk Drive）などの適宜な記憶手段１０１に格納したプログラムとして実現するとしてもよい。この場合、システム１００のＣＰＵ１０４がプログラム実行に合わせて記憶手段１０１より該当プログラム１０２をメモリ１０３に読み出して、これを実行することとなる。
【００６２】
−−−データベース構造例−−−
次に、本実施形態におけるシステム１００が利用するデータベースの構造について説明する。図２は本実施の形態に係る多重度判定データベース１２５を示す図である。この多重度判定データベース１２５は、前記システム１００が前記対象プログラムについての実行環境を選択する際に根拠となる各種データを格納するデータベースである。構造としては、例えば、対象プログラムのＩＤ７０１をキーとして、プログラム名７０２、並列処理有効化コンパイル情報の有無フラグ７０３、並列処理有効化リンク情報の有無フラグ７０４、読込処理が全処理に占める比率７０５、書込処理が全処理に占める比率７０６、条件処理が全処理に占める比率７０７、多重度７０８、プリフェッチ処理時間が全実行時間に占める比率７０９、プリロード処理時間が全実行時間に占める比率７１０、並列処理間通信処理時間が全実行時間に占める比率７１１、といったデータが対応付けされたレコードの集合体となっている。図２の例では、あるプログラム“プログラム１”について、前記システム１００の実行環境選択処理により多重度が１〜３まで変化した場合の、各多重度でのプリフェッチおよびプリロード、並列処理間通信の各処理時間が全実行時間に占める比率を格納したものとなっている。つまり、前記“プログラム１”について、プログラム未実行時に前記システム１００が選択した実行環境は、多重度“１”（＝シングルプロセッサ環境）であり、その後、プログラム実行に応じて得られた情報（プリフェッチ処理時間が全実行時間に占める比率等）に基づいて再設定された多重度が“２”であり、前記“プログラム１”が再実行されて得られた情報に基づいて再設定された多重度が“３”であったことを示している。
【００６３】
−−−処理フロー例１（プログラム未実行時の情報抽出）−−−
以下、本実施形態における実行環境選択方法の実際手順について、図に基づき説明する。図３は本実施の形態に係る処理手順例１を示すフローチャートである。なお、以下で説明する実行環境選択方法に対応する各種動作は、前記システム１００がメモリ１０３に読み出して実行するプログラム１０２によって実現される。そしてこのプログラム１０２は、以下に説明される各種の動作を行うためのコードから構成されている。
【００６４】
ここで前記システム１００の並列情報抽出手段１１０は、前記記憶手段１０１より前記対象プログラムをメモリ１０３に読み出し、当該対象プログラムをコンパイルしてオブジェクトファイルを得る（ｓ１００）。このため、当該並列情報抽出手段１１０は、前記対象プログラムをコンパイルするためのコンパイラを記憶手段１０１から呼び出して実行する。また、前記コンパイラは（管理者等により）設定されたコンパイルフラグにより、マルチプロセッサ環境での並列処理のための措置（並列処理を有効に行うためのもの）を前記対象プログラムに施すことができる。コンパイラは、ソースプログラムから機械語などのオブジェクトファイルを生成するものであり、このオブジェクトファイルと一般公開されている既存の命令集であるライブラリをリンカでリンクすることで、コンピュータが利用できる実行プログラムとなる。
【００６５】
なお、前記記憶手段１０１には、前記対象プログラムが、例えばプログラムＩＤおよび本番環境での実行時期等と対応付けて予め格納されていることが想定できる。従って、前記並列情報抽出手段１１０は、実際の本番環境で実行される順に対象プログラムを前記記憶手段１０１から読み出す、などと出来る。勿論、入力装置１０５で管理者等からの指示を受けて前記ステップｓ１００の処理を開始するとしてもよい。
【００６６】
次に前記並列情報抽出手段１１０は、前記オブジェクトファイルについて、マルチプロセッサ環境での並列処理有効化のデータを検索する（ｓ１０１）。
【００６７】
前記並列処理有効化のデータとしては、例えば、並列処理有効化コンパイル情報、並列処理有効化リンク情報がある。前記対象プログラムのソースコードがコンパイルされたオブジェクトには、並列処理有効化コンパイル情報が含まれる可能性がある。前記並列情報抽出手段１１０が、前記並列処理有効化コンパイル情報を、前記コンパイルされたオブジェクトから取り出すには、例えば、オペレーティングシステムのコマンド等により取り出す。並列処理有効化コンパイルフラグによりコンパイルされたオブジェクトの場合には、該コマンドの引数としてオブジェクトを与えると並列処理有効化コンパイル情報が出力される。逆に、並列処理有効化コンパイルフラグによりコンパイルされていないオブジェクトの場合には、該コマンドの引数としてオブジェクトを与えると並列処理有効化コンパイル情報が出力されない。
【００６８】
一方、前記並列処理有効化リンク情報は、前記オブジェクトにライブラリがリンクされたロードモジュールに含まれる可能性がある。この並列処理有効化リンク情報を前記並列情報抽出手段１１０が前記ロードモジュールから取り出すには、例えば、オペレーティングシステムのコマンド等により取り出す。並列処理有効化リンクフラグによりライブラリがリンクされたロードモジュールの場合には、該コマンドの引数としてをロードモジュールを与えると並列処理有効化リンク情報が出力される。逆に、並列処理有効化リンクフラグによりライブラリがリンクされていないロードモジュールの場合には、該コマンドの引数としてをロードモジュールを与えると並列処理有効化リンク情報が出力されない。
【００６９】
前記並列情報抽出手段１１０は、上記ステップｓ１０１で得られた検索結果を、前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納する（ｓ１０２）。前記検索の結果、前記並列処理有効化のデータとして、並列処理有効化コンパイル情報、や並列処理有効化リンク情報が得られた場合、前記並列情報抽出手段１１０は、図２で示した多重度判定データベース１２５において、対応する対象プログラムのレコードの、「並列処理有効化コンパイル情報」欄や、「並列処理有効化リンク情報」欄に“１”を設定する。他方、前記並列処理有効化コンパイル情報や並列処理有効化リンク情報が得られなかった場合、同欄に“０”を設定する。
【００７０】
また、前記システム１００のＩＯ処理情報抽出手段１１１は、前記記憶手段１０１より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む読込または書込のＩＯ処理の記述を検索する（ｓ１０３）。そして、ソースコード全体に占める前記ＩＯ処理の比率を算定する（ｓ１０４）。
【００７１】
前記読込処理とは、ハードディスク等の記憶手段１０１からデータを読み込む処理である。前記読込処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する読込処理の行数の比率とできる。なお、プログラムのソースコードの１つの行には１つの改行があるものとする。前記ＩＯ処理情報抽出手段１１１は、例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与え、対象プログラムのソースコードの行数の出力をうる。また、ソースコードの読込処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００７２】
一方、前記書込処理とは、ハードディスク等の記憶手段１０１にデータを書き込む処理である。前記書込処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する書込処理の行数の比率とする。なお、プログラムのソースコードの１つの行には１つの改行があるものとする。前記ＩＯ処理情報抽出手段１１１は、例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与え、対象プログラムのソースコードの行数の出力をうる。また、ソースコードの書込処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００７３】
例えば、対象プログラムのソースコードの行数が“１０００”、読込処理を含む行の行数が“９”であれば、前記ＩＯ処理情報抽出手段１１１は、ソースコード全体に占める前記読込処理の比率を、“０．９％”と算定する。こうした算定結果は、前記ＩＯ処理情報抽出手段１１１が、前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納する（ｓ１０５）。
【００７４】
また、前記システム１００の条件処理情報抽出手段１１３は、前記記憶手段１０１より前記対象プログラムを読み出し、当該対象プログラムのソースコードが含む条件処理の記述を検索する（ｓ１０６）。そして、ソースコード全体に占める前記条件処理の比率を算定する（ｓ１０７）。ここで前記条件処理とは、真偽を判断する処理、所定値との比較処理、前処理までの結果を受けた場合分け処理、などを想定する。前記条件処理が全処理中に占める比率は、対象プログラムのソースコードの行数に対する条件処理の行数の比率とする。なお、プログラムのソースコードの１つの行には１つの改行があるものとする。
【００７５】
前記条件処理情報抽出手段１１３は、例えば、オペレーティングシステムのコマンド等の引数として対象プログラムのソースコードを与え、対象プログラムのソースコードの行数の出力をうる。また、ソースコードの条件処理を含む行の行数を、例えば、オペレーティングシステムのコマンド等により求める。
【００７６】
例えば、対象プログラムのソースコードの行数が“１０００”、条件処理を含む行の行数が“７”であれば、前記条件処理情報抽出手段１１３は、ソースコード全体に占める前記条件処理の比率を、“０．７％”と算定する。前記条件処理情報抽出手段１１３は、こうした算定結果を、前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納する（ｓ１０８）。
【００７７】
こうして、対象プログラムの実行前に、多重度判定用の情報抽出がなされれることとなる。
【００７８】
−−−処理フロー例２（プログラム未実行時の多重度判定）−−−
次に、プログラム実行前の多重度判定処理について説明する。図４は本実施の形態に係る処理手順例２を示すフローチャートである。なお、このフローで判定される多重度の最大値は“２”であるとする。勿論、対象プログラムが実行されるコンピュータシステムの仕様等に応じて任意の多重度を採用してよい。
【００７９】
このフローにおいて、前記システム１００の多重度制御手段１１２は、前記記憶手段１０１の多重度判定データベース１２５において、前記検索結果として並列処理有効化のデータたる、並列処理有効化コンパイル情報の存在情報が対応付けられている対象プログラムを検索する（ｓ２００）。この検索処理で、並列処理有効化コンパイル情報欄に“１”が設定された対象プログラムが検索できた場合（ｓ２００：Yes）、前記多重度制御手段１１２は、ここで検索できた対象プログラムの実行環境をマルチプロセッサ環境、つまり多重度“２”と判定し、この多重度の値を確定前の多重度として前記多重度判定データベース１２５に格納する（ｓ２０１）。図２の例であれば、前記ステップｓ２００で検索できた対象プログラムが“プログラム１”であった時、前記多重度制御手段１１２は、当該“プログラム１”のレコードとして多重度“２”のレコード７５０を生成して、多重度判定データベース１２５に格納する。
【００８０】
また、前記ステップ２００の検索処理で、並列処理有効化コンパイル情報欄に“１”が設定された対象プログラムが検索できなかった場合（ｓ２００：No）、前記多重度制御手段１１２は、前記記憶手段１０１の多重度判定データベース１２５において、前記検索結果として並列処理有効化のデータたる、並列処理有効化リンク情報の存在情報が対応付けられている対象プログラムを検索する（ｓ２０２）。この検索処理で、並列処理有効化リンク情報欄に“１”が設定された対象プログラムが検索できた場合（ｓ２０２：Yes）、前記多重度制御手段１１２は、ここで検索できた対象プログラムの実行環境をマルチプロセッサ環境、つまり多重度“２”と判定し、この多重度の値を確定前の多重度として前記多重度判定データベース１２５に格納する（ｓ２０３）。
【００８１】
一方、前記多重度判定データベース１２５において、前記並列処理有効化のデータの存在情報が対応付けされた対象プログラムが検索できなかった場合（ステップｓ２０２：No）、前記多重度制御手段１１２は、（並列処理有効化のデータの存在情報が対応付けされていない）前記対象プログラムについて、前記ＩＯ処理たる読込処理の比率データを多重度判定データベース１２５から抽出し、前記読込処理の比率値が所定閾値（記憶手段１０１かメモリ１０３に予め格納。他の閾値についても同様）以上であるか判定する（ｓ２０４）。そして、ここで読込処理の比率値が所定閾値以上と判定できた対象プログラムの実行環境をシングルプロセッサ環境、つまり多重度“１”とし、この多重度の値を確定前の多重度として前記多重度判定データベース１２５に格納する（ｓ２０５）。図２に示した多重度判定データベース１２５の例であれば、例えば、“プログラム２”について多重度“１”のレコードを生成して格納している。
【００８２】
他方、前記ステップｓ２０４で、前記読込処理の比率値が所定閾値以下であると判定された対象プログラムについて、前記多重度制御手段１１２は、前記ＩＯ処理たる書込処理の比率データを多重度判定データベース１２５から抽出し、前記書込処理の比率値が所定閾値以上であるか判定する（ｓ２０６）。そして、ここで書込処理の比率値が所定閾値以上と判定できた対象プログラムの実行環境をシングルプロセッサ環境、つまり多重度“１”とし、この多重度の値を確定前の多重度として前記多重度判定データベース１２５に格納する（ｓ２０７）。
【００８３】
前記ステップｓ２０６で、前記ＩＯ処理たる書込処理の比率が所定閾値以下であると判定した（ｓ２０６：＜）、前記多重度制御手段１１２は、前記条件処理の比率データを前記多重度判定データベース１２５から抽出する。そして、前記条件処理の比率値が所定閾値以上であるか判定する（ｓ２０８）。そして、ここで条件処理の比率値が所定閾値以上と判定できた対象プログラムの実行環境をシングルプロセッサ環境、つまり多重度“１”とし、この多重度の値を確定前の多重度として前記多重度判定データベース１２５に格納する（ｓ２０９）。逆に、条件処理の比率値が所定閾値以下と判定できた対象プログラムの実行環境はマルチプロセッサ環境、つまり多重度“２”とし、この多重度の値を確定前の多重度として前記多重度判定データベース１２５に格納する（ｓ２１０）。
【００８４】
こうした一連の処理により、前記対象プログラムを初回実行する前に多重度を選択することができる。これは、対象プログラムを初回実行する前に所定担当者に対し多重度の情報提供をできることとなる。
【００８５】
なお、前記所定閾値たる、読込処理比率の閾値（ステップｓ２０４で利用）は、個々のシステムに依存する値である。ＩＯ処理性能が低いシステムでは、該読込処理比率閾値は大きくなり、逆にＩＯ処理性能が高いシステムでは小さくなる。例えば、ハードディスクドライブのＩＯ性能として、シーク時間および回転数などが注目される。そこで前記多重度制御手段１１２は、これらの性能項目の値（例：ＩＯ性能値として予め記憶手段１０１に格納している）にそれぞれに所定係数を乗じて、ディスクＩＯの読込処理比率閾値を決定することができる。システム全体の読込処理比率閾値は、他のＩＯの読込処理比率閾値とを合わせて総合的に決定する。
【００８６】
また、前記所定閾値たる、書込処理比率閾値（ステップｓ２０６で利用）は、個々のシステムに依存する値である。ＩＯ処理性能が低いシステムでは、該書込処理比率閾値は大きくなり、逆に、ＩＯ処理性能が高いシステムでは小さくなる。例えば、ディスクのＩＯ性能として、シーク時間および回転数などが注目される。そこで前記多重度制御手段１１２は、これらの性能項目の値（例：ＩＯ性能値として予め記憶手段１０１に格納している）にそれぞれに係数を乗じて、ディスクＩＯの書込処理比率閾値を決定することができる。システム全体の書込処理比率閾値は、他のＩＯの書込処理比率閾値とを合わせて総合的に決定する。
【００８７】
更に、前記所定閾値たる、条件処理比率閾値（ステップｓ２０８で利用）は、個々のシステムに依存する値である。ＣＰＵ処理性能が低いシステムでは、該条件処理比率閾値は大きくなり、逆にＣＰＵ処理性能が高いシステムでは小さくなる。例えば、ＣＰＵ性能として、プロセッサの数およびプロセッサの周波数などが注目される。そこで前記多重度制御手段１１２は、これらの性能項目の値（例：ＣＰＵ性能値として予め記憶手段１０１に格納している）にそれぞれに係数を乗じて、システムの条件処理比率閾値を決定する。
【００８８】
−−−処理フロー例３（プログラム実行後の情報抽出）−−−
次に、前記対象プログラムを一旦実行して多重度判定用の情報を抽出する処理について説明する。図５は本実施の形態に係る処理手順例３を示すフローチャートである。この場合、前記システム１００のプロファイリング情報抽出手段１１４は、前記記憶手段１０１より前記対象プログラム、例えば、“プログラム１”と当該対象プログラム“プログラム１”に設定されている確定前の多重度“２”とを読み出し（ｓ３００）、前記確定前の多重度“２”に従った実行環境で前記対象プログラムを実行する（ｓ３０１）。つまり前記“プログラム１”をマルチプロセッサ環境で実行してみるのである。
【００８９】
こうして前記対象プログラムを実行する際、前記プロファイリング情報抽出手段１１４は、例えば、プロファイリング情報出力を指定してプログラム実行を行う。これにより、前記対象プログラムの実行時間、プリフェッチ処理時間、プリロード処理時間、及び並列処理間通信処理時間らが得られる。前記プロファイリング情報抽出手段１１４は、前記対象プログラムの実行にかかる全時間、プリフェッチ、プリロード、並列処理間通信の各処理時間を得る（ｓ３０２）。例えば、全実行時間が“１００秒”、プリフェッチ処理時間が“４．４秒”、プリロード処理時間が“８．７秒”、並列処理間通信処理時間が“１０．２秒”などと取得する。
【００９０】
また前記プロファイリング情報抽出手段１１４は、前記プリフェッチ、プリロード、並列処理間通信の各処理時間が前記全時間に占める比率を算定する（ｓ３０３）。上述の例であれば、前記対象プログラム＝“プログラム１”を多重度“２”で実行した時、各比率は、プリフェッチ処理時間が全実行時間に占める比率が“４．４％”、プリロード処理時間が全実行時間に占める比率が“８．７％”、並列処理間通信処理時間が全処理に占める比率が“１０．２％”などと算定できる。
【００９１】
そして、前記プロファイリング情報抽出手段１１４は、当該算定結果を前記対象プログラムに対応付けて記憶手段１０１の多重度判定データベース１２５に格納する（ｓ３０４）。
【００９２】
−−−処理フロー例４（プログラム実行後の多重度判定）−−−
次に、上記処理フロー例３で示したプログラム実行後に多重度判定を行う処理について説明する。図６は本実施の形態に係る処理手順例４を示すフローチャートである。このように、対象プログラムを一旦実行した後に多重化判定を行うことで、処理フロー例２で得られた確定前の多重度の精度を更に高めて、より高速な実行環境としての多重度を得ることができる。
【００９３】
この場合、前記多重度制御手段１１２は、前記記憶手段１０１の多重度判定データベース１２５において、対象プログラムのプリフェッチ処理時間の比率データを抽出し、この比率値が所定閾値以上であるか判定する（ｓ４００）。前記対象プログラム“プログラム１”のプリフェッチ処理時間の比率“４．３％”と所定閾値とを比較する。前記ステップｓ４００での判定により、プリフェッチ処理時間の比率が所定閾値以上と判定した場合（ｓ４００：＞）、前記多重度制御手段１１２は、前記“プログラム１”について、前記多重度判定データベース１２５における多重度を“２”のままとして増加させない（ｓ４０１）。
【００９４】
一方、前記プリフェッチ処理時間の比率が所定閾値以下と判定した場合（ｓ４００：≦）、前記多重度制御手段１１２は、前記“プログラム１”についてプリロードの処理時間の比率データを多重度判定データベース１２５から抽出しこの比率値が所定閾値以上であるか判定する（ｓ４０２）。前記対象プログラム“プログラム１”のプリロード処理時間の比率“８．８％”と所定閾値とを比較する。前記ステップｓ４０２での判定により、プリロード処理時間の比率が所定閾値以上と判定した場合（ｓ４０２：＞）、前記多重度制御手段１１２は、前記“プログラム１”について、前記多重度判定データベース１２５における多重度を“２”のままとして増加させない（ｓ４０３）。
【００９５】
他方、前記ステップｓ４０２での判定により、プリロード処理時間の比率が所定閾値以下と判定した場合（ｓ４０２：≦）、前記多重度制御手段１１２は、前記多重度判定データベース１２５から、前記“プログラム１”について前記並列処理間通信処理時間の比率データを抽出し、この比率値が所定閾値以上であるか判定する（ｓ４０４）。前記対象プログラム“プログラム１”の並列処理間通信処理時間の比率“５．１％”と所定閾値とを比較する。前記ステップｓ４０４での判定により、並列処理間通信処理時間の比率が所定閾値以上と判定した場合（ｓ４０４：＞）、前記多重度制御手段１１２は、前記“プログラム１”について、前記多重度判定データベース１２５における多重度を“２”のままとして増加させない（ｓ４０６）。
【００９６】
逆に、前記ステップｓ４０４での判定により、並列処理間通信処理時間の比率が所定閾値以下と判定した場合（ｓ４０４：≦）、前記多重度制御手段１１２は、前記“プログラム１”について、前記多重度判定データベース１２５における多重度を“２”（＝確定前の多重度）から、所定割合（ここでは５０％）だけ増大させた多重度“３”を算定し、ここで算定した多重度“３”を、確定した実行環境として前記多重度判定データベース１２５にて設定する（ｓ４０５）。図２に示した多重度判定データベース１２５の例であれば、“プログラム１”について多重度“３”のレコードが生成されている。
【００９７】
こうして定まった多重度のデータは、前記システム１００が、マルチプロセッサ環境とシングルプロセッサ環境の切替手段１１５に対し、前記“プログラム１”についての実行環境の選択指示として通知することとなる（ｓ４０６）。勿論、前記切替手段１１５が、前記システム１００とは別体で、ネットワーク１４０上に存在する装置である場合（つまり、前記システム１００は実行環境選択だけを行って、実際の本番環境は別途存在する場合など）、前記多重度制御手段１１２は、前記通信装置１０７を介して前記選択指示を前記切替手段１１５に送る。
【００９８】
前記切替手段は、前記システム１００におけるオペレーティングシステムに具備された多重度制御用のコマンドを用いて多重度の切替設定を行えば良い。あるいは、シングルプロセッサを複数具備するシステムにおいては、複数のシングルプロセッサを用い実行することにより、マルチプロセッサ環境でのプログラム実行を実現しても良い。例えば、多重度が“２”の場合は、２台のシングルプロセッサを用い処理させる。例えば、多重度が“１０”の場合は、10台のシングルプロセッサを用い処理させる。
【００９９】
或いは、前記多重度制御手段１１２が、前記対象プログラム“プログラム１”についての実行環境の選択指示データとしてディスプレイなどの出力装置１０６に出力するとしてもよい。
【０１００】
なお、上記フロー例では、多重度の増加幅を“１”（ステップｓ４０５）としているが、前記システム１００が選択しうる多重度の最大値に応じて任意の増加幅の選択が勿論可能である。こうした処理を行うことにより、より早く最適な多重度に至ることが想定できる。例えば、前記システム１００が選択しうる最大多重度が“１６”の場合、多重度の増加幅を“４”、或いは“８”などとすれば、多重度の増加幅が“１”の場合に比べて、より早く最適多重度に至る可能性が生まれる。このような増加幅の設定は、例えば、前記システム１００が、前記比率値と閾値との比較に際して、比率値と閾値との差異幅を算定し、この差異幅が所定の基準値より大きいほど所定割合で前記増加幅を大きくし、あるいは逆に比率値と閾値との差異幅が所定の基準値より小さいほど所定割合で前記増加幅を小さくする、といった処理を実行する。
【０１０１】
また、上記したように、多重度の最大値が個々のシステムには存在するが、システム最大の多重度を、前記ステップｓ２０１、ｓ２１０（つまりマルチプロセッサ環境と判定された場合）で最初に選択しておいて、その後、前記ステップｓ４００、ｓ４０２、ｓ４０４の各判定で、各比率値が閾値以上である時に多重度を減少させ、前記ステップｓ４０４の判定で比率値が閾値以下である時に多重度を増加させない、として最適な多重度を得るという処理も可能である。
【０１０２】
なお、前記プリフェッチ処理比率の閾値は、個々のシステムに依存する値である。ＣＰＵ処理性能が低いシステムでは、該プリフェッチ処理比率閾値は大きくなり、逆に、ＣＰＵ処理性能が高いシステムでは、該プリフェッチ処理比率閾値は小さくなる。例えば、ＣＰＵ性能として、プロセッサの数およびプロセッサの周波数などが注目される。そこで前記多重度制御手段１１２は、これらの性能項目の値（例：CPU性能値として予め記憶手段１０１に格納している）にそれぞれに係数を乗じて、システムのプリフェッチ処理比率閾値を決定する。
【０１０３】
また同様に、前記プリロード処理比率の閾値は、個々のシステムに依存する値である。ＣＰＵ処理性能が低いシステムでは、該プリロード処理比率閾値は大きくなり、逆に、ＣＰＵ処理性能が高いシステムでは、該プリロード処理比率閾値は小さくなる。例えば、ＣＰＵ性能として、プロセッサの数およびプロセッサの周波数などが注目される。そこで前記多重度制御手段１１２は、これらの性能項目の値（例：CPU性能値として予め記憶手段１０１に格納している）にそれぞれに係数を乗じて、システムの該プリロード処理比率閾値を決定する。
【０１０４】
また同様に、並列処理間通信処理比率の閾値は、個々のシステムに依存する値である。ＣＰＵ処理性能が低いシステムでは、該並列処理間通信処理比率閾値は大きくなり、逆に、ＣＰＵ処理性能が高いシステムでは、該並列処理間通信処理比率閾値は小さくなる。例えば、ＣＰＵ性能として、プロセッサの数およびプロセッサの周波数などが注目される。そこで前記多重度制御手段１１２は、これらの性能項目（例：CPU性能値として予め記憶手段１０１に格納している）にそれぞれに係数を乗じて、システムの該並列処理間通信処理比率閾値を決定する。
【０１０５】
以上、本実施形態によれば、プログラム個々に適した高速処理の実行環境を効率的かつ確実に選択可能となる。
【０１０６】
以上、本発明の実施の形態について、その実施の形態に基づき具体的に説明したが、これに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【図面の簡単な説明】
【０１０７】
【図１】本実施の形態に係る実行環境選択システムのハードウェア構成を示す図である。
【図２】本実施の形態に係る多重度判定データベースを示す図である。
【図３】本実施の形態に係る処理手順例１を示すフローチャートである。
【図４】本実施の形態に係る処理手順例２を示すフローチャートである。
【図５】本実施の形態に係る処理手順例３を示すフローチャートである。
【図６】本実施の形態に係る処理手順例４を示すフローチャートである。
【符号の説明】
【０１０８】
１００  実行環境選択システム
１０１  記憶手段
１０２  プログラム
１０３  メモリ
１０４  ＣＰＵ
１０５  入力装置
１０６  出力装置
１１０  並列情報抽出手段
１１１  ＩＯ処理情報抽出手段
１１２  多重度制御手段
１１３  条件処理情報抽出手段
１１４  プロファイリング情報抽出手段
１１５  切替手段
１２５  多重度判定データベース
１４０  ネットワーク
【図１】
2010055405.tif 000003
【図２】
2010055405.tif 000004
【図３】
2010055405.tif 000005
【図４】
2010055405.tif 000006
【図５】
2010055405.tif 000007
【図６】
2010055405.tif 000008