(57)【要約】【課題】効率よく実行結果データを取得することが可能なプログラム等を提供する。【解決手段】コンピュータ１は、パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出し、算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する。またコンピュータ１は、前記データに基づき、選択した前記第２の実行情報群の各実行情報に対する第２の実行結果データを算出する。【選択図】図１
2018206042.tif 000002
【特許請求の範囲】
【請求項１】
パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出し、
算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する
処理をコンピュータに実行させるプログラム。
【請求項２】
前記データに基づき、選択した前記第２の実行情報群の各実行情報に対する第２の実行結果データを算出する
請求項１に記載のプログラム。
【請求項３】
前記第１の実行結果データが閾値を超えるか否か判断し、
前記閾値を超えるか否かに応じて、予め記憶された複数種の実行情報群の中から、第２の実行情報群を選択する
請求項１または２に記載のプログラム。
【請求項４】
前記第１の実行結果データにより得られたメモリアクセス待ち時間が閾値を超える場合、Ｌ２キャッシュに関する実行情報を含む第２の実行情報群を選択する
請求項１から３のいずれか一つに記載のプログラム。
【請求項５】
パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出する算出部と、
算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する選択部と
を備える情報処理装置。
【請求項６】
パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出し、
算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する
処理をコンピュータに実行させる情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、採取する情報が膨大である場合でも、分散並列プログラムのチューニングに必要な情報を効率的に採取する性能情報採取装置が知られている（例えば特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１７５４５９号公報
【特許文献２】特許第５５１０５４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では効率よく実行結果データを取得できないという問題がある。
【０００５】
一つの側面では、効率よく実行結果データを取得することが可能なプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの案では、パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出し、算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する処理をコンピュータに実行させる。
【発明の効果】
【０００７】
一つの側面では、効率よく実行結果データを取得することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】算出処理の概要を示す説明図である。
【図２】コンピュータのハードウェア群を示すブロック図である。
【図３】実行情報群ＤＢのレコードレイアウトを示す説明図である。
【図４】制御情報ファイルのレコードレイアウトを示す説明図である。
【図５】算出処理の手順を示すフローチャートである。
【図６】データの取得処理手順を示すフローチャートである。
【図７】選択処理の手順を示すフローチャートである。
【図８】選択処理の手順を示すフローチャートである。
【図９】選択処理の手順を示すフローチャートである。
【図１０】出力処理の手順を示すフローチャートである。
【図１１】出力処理の手順を示すフローチャートである。
【図１２】上述した形態のコンピュータの機能ブロック図である。
【図１３】実施の形態３に係るコンピュータのハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は算出処理の概要を示す説明図である。情報処理装置１は例えば、スーパーコンピュータ、サーバコンピュータまたはパーソナルコンピュータ等である。実施形態では情報処理装置１をコンピュータ１と読み替えて説明する。コンピュータ１はインターネット、ＬＡＮ（Local Area Network）、公衆回線網等の通信網Ｎを介して相互に接続されている。
【００１０】
コンピュータ１はＣＰＵのパフォーマンスカウンタからストア待ち、ロードメモリアクセス待ち等のデータを取得する。コンピュータ１のプロファイラは、取得したデータに基づきストア待ち時間の算出、メモリアクセス待ち時間の算出等の第１の実行情報群に従い、ストア待ち時間等の各実行情報に対する第１の実行結果データを算出する。コンピュータ１は、第１の実行結果データに基づき、Ｌ２キャッシュミス数の算出等の２回目に行う第２の実行情報群を選択する。
【００１１】
コンピュータ１は、パフォーマンスカウンタから得られるデータに基づき、選択した第２の実行情報群の各実行情報に対する第２の実行結果データを算出する。コンピュータ１は第２の実行結果データに基づき、以降の算出処理を終了するか、同様に３回目の算出処理を行うべく、第２の実行情報群を選択する。以下、詳細を説明する。
【００１２】
図２はコンピュータ１のハードウェア群を示すブロック図である。コンピュータ１はＣＰＵ（Central Processing Unit）等の制御部１１、ＲＡＭ（Random Access Memory）１２、入力部１３、表示部１４、記憶部１５、時計部１８、及び、通信部１６等を含む。制御部１１は、バス１７を介してハードウェア各部と接続されている。制御部１１は、記憶部１５に記憶された制御プログラム１５Ｐに従いハードウェア各部を制御する。なお、制御部１１は、複数のプロセッサコアを搭載したマルチコアプロセッサであっても良い。ＲＡＭ１２は例えばＳＲＡＭ（Static RAM）、ＤＲＡＭ(Dynamic RAM)、フラッシュメモリ等である。ＲＡＭ１２は、記憶部としても機能し、制御部１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１３】
入力部１３はマウス、キーボード、タッチパネル、ボタン等の入力デバイスであり、受け付けた操作情報を制御部１１へ出力する。表示部１４は液晶ディスプレイまたは有機ＥＬ（electroluminescence）ディスプレイ等であり、制御部１１の指示に従い各種情報を表示する。通信部１６は通信モジュールであり、図示しない他のコンピュータ等と間で情報の送受信を行う。時計部１８は日時情報を制御部１１へ出力する。記憶部１５は大容量メモリまたはハードディスクであり、制御プログラム１５Ｐ、実行情報群データベース（以下、ＤＢという）１５１及び制御情報ファイル１５２等を記憶している。
【００１４】
図３は実行情報群ＤＢ１５１のレコードレイアウトを示す説明図である。実行情報群ＤＢ１５１はタイプフィールド及び実行情報群フィールドを含む。タイプフィールドには、実行情報群を特定するための固有の識別子としてのタイプが記憶されている。タイプには「指定なし」に加えて、１、２、３、・・・１０１、・・・９９９等の数値が付与されている。実行情報は、ＣＰＵのパフォーマンスカウンタから出力されるデータに対して実行される算出処理命令であり、例えばメモリアクセス待ち時間の算出、ストア待ち時間の算出、Ｌ２アクセス待ち時間の算出等である。例えば、制御部１１はパフォーマンスカウンタからストア待ちを取得し、取得したストア待ちをＣＰＵのクロック周波数で除すことでストア待ち時間を算出する。なお、ＣＰＵのクロック周波数は固有の値として記憶部１５に予め記憶されているものとする。
【００１５】
タイプ「指定なし」に対してはメモリアクセス待ち時間の算出、ストア待ち時間の算出等複数の実行情報群が記憶されている。タイプ１〜タイプ１０１についても第２の実行情報群として複数の実行情報群が記憶されている。タイプ１は分岐待ち時間の算出、フェッチ待ち時間の算出等の実行情報が記憶されている。タイプ２は、Ｌ１キャッシュに関する実行情報として、Ｌ１Ｄキャッシュビジー数の算出、Ｌ１Ｄキャッシュミス数の算出、Ｌ１Ｉキャッシュミス数の算出等が記憶されている。タイプ３は、Ｌ２キャッシュに関する実行情報としてＬ２キャッシュビジー数の算出、Ｌ２キャッシュミス数の算出等の実行情報が記憶されている。
【００１６】
タイプ１０１は、浮動小数点演算待ち時間の算出等の実行情報が記憶されている。タイプ９９９には、実行情報群が対応付けられておらず、後述するように制御部１１はタイプ９９９が割り当てられている場合、パフォーマンスカウンタから得られるデータを取得することなく処理を終了する。
【００１７】
図４は制御情報ファイル１５２のレコードレイアウトを示す説明図である。制御情報ファイル１５２は、算出回数フィールド、タイプフィールド、データフィールド及び実行結果データフィールド等を含む。算出回数フィールドには制御部１１が、一つの実行情報群に基づき算出を行った回数が記憶されている。タイプフィールドには制御部１１が後述する処理により割り当てられたタイプが記憶されている。なお、１回目の算出時には、タイプは「指定なし」とされている。なお、以下ではタイプ「指定なし」を場合によりタイプ０であるものとして説明する。
【００１８】
データフィールドには、制御部１１がタイプに対応する実行情報群に基づきパフォーマンスカウンタから取得したデータが記憶されている。実行結果データフィールドには、パフォーマンスカウンタから取得したデータ、及び、実行情報群ＤＢ１５１の対応する実行情報群に基づき、プロファイラにより算出された結果が記憶されている。なお、データ及び実行結果データについては、制御情報ファイルではなく、ＲＡＭ１２等に記憶しても良い。
【００１９】
以上のハードウェア群において各種ソフトウェア処理を、フローチャートを用いて説明する。図５は算出処理の手順を示すフローチャートである。制御部１１は、算出回数に１を代入する(ステップＳ５１)。制御部１１は、算出回数が１より大きいか否かを判断する(ステップＳ５２)。制御部１１は、算出回数が１より大きくないと判断した場合(ステップＳ５２でＮＯ)、処理をステップＳ５５へ移行させる。制御部１１は、1回目の算出処理であるので、タイプは指定なし（タイプ０）と決定する(ステップＳ５５)。制御部１１は、データの取得処理を行う(ステップＳ５６)サブルーチンへ移行する。
【００２０】
図６はデータの取得処理手順を示すフローチャートである。制御部１１は、実行情報群ＤＢ１５１を参照し、タイプに応じた実行情報群を読み出す(ステップＳ６１)。上述の例ではタイプは指定なしであるため、制御部１１は、実行情報群ＤＢ１５１からメモリアクセス待ち時間の算出処理、ストア待ち時間の算出処理、Ｌ２アクセス待ち時間の算出処理、Ｌ１アクセス待ち時間の算出処理及び演算待ち時間の算出処理等を実行情報群として読み出す。
【００２１】
制御部１１はデータを取得しない設定か否かを判断する(ステップＳ６２)。具体的には、制御部１１は、図３に示す実行情報群ＤＢ１５１及びタイプを参照し、データを取得しない設定か否かを判断する。制御部１１は、データを取得しない設定であると判断した場合(ステップＳ６２でＹＥＳ)、サブルーチンを終了する。具体的に制御部１１は、タイプ９９９の場合、「データを取得せず」の設定となっているため、サブルーチンを終了する。一方、制御部１１は、データを取得する設定である場合(ステップＳ６２でＮＯ)、処理をステップＳ６３へ移行させる。制御部１１は、タイプ９９９以外の場合、実行情報群に基づきデータを取得する設定となっているため、ステップＳ６３へ移行することとなる。
【００２２】
制御部１１は、ステップＳ６１で読み出した実行情報群に基づきパフォーマンスカウンタから必要なデータを取得する(ステップＳ６３)。具体的には、制御部１１は、算出回数が１の場合、ロードメモリアクセス待ち、ロードＬ２アクセス待ち、整数ロードアクセス待ち、整数ロードメモリアクセス待ち、整数ロードＬ２アクセス待ち、整数ロードメモリ・キャッシュビジー待ち及びストア待ちの７つを取得する。なお、算出回数が２回目以降のデータ取得については後述する。
【００２３】
制御部１１は、取得したデータに基づき、読み出した各実行情報に対する実行結果データを算出する(ステップＳ６４)。制御部１１は、ステップＳ６３で取得したデータ及びＣＰＵの周波数等に基づきメモリアクセス待ち時間の算出、ストア待ち時間の算出、Ｌ２アクセス待ち時間の算出、Ｌ１アクセス待ち時間の算出、演算待ち時間の算出、及びサイクルカウントの算出等を行う。例えば、制御部１１は、取得したデータであるストア待ちをＣＰＵのクロック周波数で除すことによりストア待ち時間を算出する。制御部１１は、ＲＡＭ１２にプロファイル結果を書き込む(ステップＳ６５)。制御部１１は、サブルーチンを終了する。
【００２４】
再び図５のステップＳ５７に戻りメインルーチンについて説明する。制御部１１は、制御情報ファイル１５２へ各種情報を書き込む(ステップＳ５７)。具体的には、制御部１１は、算出回数及び算出回数に応じたタイプを制御情報ファイル１５２に書き込む。また制御部１１は、ステップＳ６３で取得したデータ及びステップＳ６４で算出した実行結果データを制御情報ファイル１５２に書き込む。
【００２５】
制御部１１は、タイプが所定の設定値（例えば１００）を超えるか否か判断する(ステップＳ５８)。制御部１１は、タイプが１００を超えると判断した場合(ステップＳ５８でＹＥＳ)、処理をステップＳ５９へ移行させる。制御部１１は、制御情報ファイル１５２の記憶内容を削除する(ステップＳ５９)。図３の例ではタイプが１０１の場合、及び、タイプが９９９の場合、もはやこれ以上のデータ取得は不要であるとして処理を終了する。
【００２６】
制御部１１は、タイプが１００を超えないと判断した場合(ステップＳ５８でＮＯ)、処理をステップＳ５１０へ移行させる。制御部１１は、算出回数に１を加算する(ステップＳ５１０)。制御部１１は、加算後の算出回数が記憶部１５に記憶した所定値を超えるか否か判断する(ステップＳ５１１０)。例えば全ての算出すべき実行結果データ数が８８、算出回数１回あたりの実行結果データ数が８である場合、所定値は１１とすればよい。この所定値は一例であり、算出すべき総実行結果データ数及び１回当たりの実行結果データ数に応じて決定すればよい。
【００２７】
制御部１１は、算出回数が所定値を超えると判断した場合(ステップＳ５１１０でＹＥＳ)、これ以上算出する実行結果データは存在しないことから一連の処理を終了する。制御部１１は、算出回数が所定値を超えないと判断した場合(ステップＳ５１１０でＮＯ)、処理をステップＳ５２へ戻す。制御部１１は、算出回数が１より大きいと判断した場合(ステップＳ５２でＹＥＳ)、処理をステップＳ５３へ移行させる。つまり、初回以外の、算出回数が２回目以降はステップＳ５３及びＳ５４の処理を経て、ステップＳ５６へ移行することとなる。
【００２８】
制御部１１は、制御情報ファイル１５２を読み出す(ステップＳ５３)。制御部１１は、続いて、実行情報群の選択処理を行うサブルーチンへ移行する(ステップＳ５４)。
【００２９】
図７から図９は選択処理の手順を示すフローチャートである。制御部１１は、算出回数が２か否かを判断する(ステップＳ７１)。制御部１１は、算出回数が２であると判断した場合(ステップＳ７１でＹＥＳ)、処理をステップＳ７２へ移行させる。制御部１１は、メモリアクセス待ち時間が全体時間の４０％を超えるか否か判断する(ステップＳ７２)。具体的には制御部１１は、実行結果データとして制御情報ファイル１５２に記憶されたメモリアクセス待ち時間が、パフォーマンスカウンタから取得したサイクルカウントＣＰＵのクロック周波数で除した値である全体時間の４０％を超えるか否かにより判断する。なお、４０％は一例であり、これに限るものではない。ユーザは入力部１３を通じて所定の閾値を適宜設定することが可能である。
【００３０】
制御部１１は、メモリアクセス待ち時間が全体時間の４０％を超えないと判断した場合(ステップＳ７２でＮＯ)、処理をステップＳ７３へ移行させる。制御部１１は、Ｌ２アクセス待ちが全体時間の４０％を超えるか否かを判断する(ステップＳ７３)。制御部１１は、メモリアクセス待ち時間が全体時間の４０％を超えると判断した場合(ステップＳ７２でＹＥＳ)、及び、Ｌ２アクセス待ち時間が全体時間の４０％を超えると判断した場合(ステップＳ７３でＹＥＳ)、処理をステップＳ７４へ移行させる。制御部１１は、タイプを３に決定する(ステップＳ７４)。なお、ステップＳ７２、Ｓ７３の処理はどちらを先に実行しても良い。
【００３１】
タイプ３の場合、制御部１１は、ステップＳ５６のデータ取得処理として、実行情報群ＤＢ１５１を参照し、Ｌ２キャッシュに関するに関する実行情報を含む第２の実行情報群を選択する。具体的には制御部１１は、Ｌ２キャッシュビジー数の算出処理及びＬ２キャッシュミス数の算出処理等を行う。ステップＳ７４の処理後、制御部１１は、処理をメインルーチンに戻す。制御部１１は、Ｌ２アクセス待ち時間が全体時間の４０％を超えないと判断した場合(ステップＳ７３でＮＯ)、処理をステップＳ７５へ移行させる。
【００３２】
制御部１１は、Ｌ１アクセス待ち時間が全体時間の４０％を超えるか否かを判断する(ステップＳ７５)。制御部１１は、超えると判断した場合(ステップＳ７５でＹＥＳ)、処理をステップＳ７６へ移行させる。制御部１１は、タイプを２に決定する(ステップＳ７６)。タイプ２の場合、制御部１１は、ステップＳ５６のデータ取得処理として、実行情報群ＤＢ１５１を参照し、Ｌ１キャッシュに関するに関する実行情報を含む第２の実行情報群を選択する。具体的には制御部１１は、Ｌ１Ｄキャッシュミスビジー数の算出、Ｌ１Ｄキャッシュミス数の算出及びＬ１Ｉキャッシュミス数の算出処理等を行う。その後、制御部１１は、処理をメインルーチンに戻す。
【００３３】
制御部１１は、Ｌ１アクセス待ち時間が全体時間の４０％を超えないと判断した場合(ステップＳ７５でＮＯ)、処理をステップＳ７７へ移行させる。制御部１１は、ストア待ち時間が全体時間の４０％を超えるか否かを判断する(ステップＳ７７)。具体的には制御部１１は、実行結果データとして制御情報ファイル１５２に記憶されたストア待ち時間が全体時間の４０％を超えるか否かにより判断する。制御部１１は、ストア待ち時間が全体時間の４０％を超えると判断した場合(ステップＳ７７でＹＥＳ)、処理をステップＳ７８へ移行させる。
【００３４】
制御部１１は、タイプを１０１に決定する(ステップＳ７８)。制御部１１は、ストア待ち時間が全体時間の４０％を超えないと判断した場合(ステップＳ７７でＮＯ)、処理をステップＳ７９へ移行させる。制御部１１は、タイプを１に決定する(ステップＳ７９)。ステップＳ７８及びＳ７９の後、制御部１１は、処理をメインルーチンに戻す。
タイプ１０１の場合、制御部１１は、パフォーマンスカウンタから取得するデータとして浮動小数点演算待ち、キャッシュビジー待ち及びＳＷＰＦ(ソフトウェアプリフェッチ)ビジー待ちを取得する。なお、さらに、１ＦＬＯＰＳ(Floating-point Operations Per Second)命令数、２ＦＬＯＰＳ命令数、４ＦＬＯＰＳ命令数または８ＦＬＯＰＳ命令数を取得するようにしても良い。制御部１１は、浮動小数点演算待ちをＣＰＵのクロック周波数で除し実行結果データとして浮動小数点演算待ち時間を演算する。
【００３５】
タイプ１の場合制御部１１は、パフォーマンスカウンタから取得するデータとして分岐命令待ち（カウント）、バリア同期待ち、完了命令数が０であるサイクル数、０命令コミット、１命令コミット、２命令コミット、３命令コミット及びサイクルカウントを取得する。制御部１１は、これらのデータに基づき分岐待ち時間、フェッチ待ち時間、バリア待ち時間、１命令コミット待ち時間及び２、３命令コミット待ち時間を算出する。
【００３６】
制御部１１は、算出回数が２でないと判断した場合(ステップＳ７１でＮＯ)、処理をステップＳ８１へ移行させる。制御部１１は、算出回数が３か否かを判断する(ステップＳ８１)。制御部１１は、算出回数が３であると判断した場合(ステップＳ８１でＹＥＳ)、処理をステップＳ８２へ移行させる。制御部１１は、制御情報ファイル１５２を参照し、前回のタイプが２または３か否かを判断する(ステップＳ８２)。制御部１１は、２または３と判断した場合(ステップＳ８２でＹＥＳ)、ステップＳ８３へ移行する。制御部１１は、タイプを１０１に決定する(ステップＳ８３)。
【００３７】
制御部１１は、前回のタイプが２または３でないと判断した場合(ステップＳ８２でＮＯ)、処理をステップＳ８４へ移行させる。制御部１１は、スレッド０以外の全体時間に対するバリア待ち時間が９０％を超えるか否かを判断する(ステップＳ８４)。具体的には制御部１１はスレッド０以外の全体時間に対するバリア待ち時間を、バリア同期待ちをサイクルカウントで除すことで求める。なお、１つのＣＰＵに対して１つのスレッドが割り当てられている。したがって、個々のＣＰＵについてそれぞれのスレッドのデータを取得する。ここで、「スレッド０以外の」とあるのは、スレッド番号０以外のスレッドについて算出処理を行うことを意味し、他の項目についてはスレッド番号０も含めた全てのスレッドについて算出処理を行う。
【００３８】
制御部１１は、スレッド０以外の全体時間に対するバリア待ち時間が９０％を超えないと判断した場合(ステップＳ８４でＮＯ)、処理をステップＳ８５へ移行させる。制御部１１は、バリア待ちを除くスレッド間の処理時間の最大値を最小値で除した値が１０％を以下か否かを判断する(ステップＳ８５)。制御部１１はバリア待ちを除くスレッド間の処理時間を以下の手順により求める。制御部１１は、全てのスレッドについて全体時間、バリア待ち時間及びバリア待ちを除くスレッドの処理時間を算出する。全体時間は、サイクルカウントをＣＰＵクロック周波数で除すことにより得られる。バリア待ち時間はバリア同期待ちをＣＰＵクロック周波数で除すことにより得られる。バリア待ちを除くスレッドの処理時間は全体時間からバリア待ち時間を減じることで得られる。
【００３９】
次いで制御部１１は、バリア待ちを除くスレッドの処理時間の最大値と最小値を抽出する。制御部１１は、「バリア待ちを除くスレッドの処理時間の最大値を、バリア待ちを除くスレッドの処理時間の最小値で除した値が１．１以下か否かを判断する。制御部１１は、スレッド０以外の全体時間に対するバリア待ち時間が９０％を超える場合(ステップＳ８４でＹＥＳ)、処理をステップＳ８６へ移行させる。制御部１１は、バリア待ちを除くスレッド間の処理時間処理時間の最大値を最小値で除した値が１０％以下であると判断した場合(ステップＳ８５でＹＥＳ)、すなわち除した値が閾値である１０％を超える場合、処理をステップＳ８６へ移行させる。
【００４０】
制御部１１はタイプを９９９に決定する(ステップＳ８６)。制御部１１は、処理をメインルーチンに戻す。上述した通り、タイプ９９９の場合、データの取得処理は行われず、一連の処理が終了することになる。制御部１１は、バリア待ちを除くスレッド間の処理時間の最大値を最小値で除した値が１０％以下でないと判断した場合(ステップＳ８５でＮＯ)、処理をステップＳ８７へ移行させる。なお、ステップＳ８４、Ｓ８５の処理はどちらを先に実行しても良い。
【００４１】
制御部１１は、Ｎ命令コミットに対する１命令コミットの時間割合が９５％を超えるか否かを判断する(ステップＳ８７)。なお、ステップＳ８４、Ｓ８５、及びＳ８７等で示した数値は一例であり、これに限るものではない。制御部１１は、Ｎ命令コミットに対する１命令コミット時間割合を、以下の処理により算出する。
【００４２】
０命令コミット待ち時間は、０命令コミット待ちをＣＰＵクロック周波数で除すことにより算出する。１命令コミット待ち時間は、１命令コミット待ちをＣＰＵクロック周波数で除すことにより得られる。３命令コミット待ち時間は２命令コミット待ちと３命令コミット待ちとを加算した値を、ＣＰＵクロック周波数で除すことにより得られる。４命令コミット待ち時間は、全体時間から、０命令コミット待ち時間と１命令コミット待ち時間と２、３命令コミット待ち時間とを加算した値を減じることで得られる。
【００４３】
Ｎ命令コミットに対する１命令コミット時間割合は、１命令コミット待ち時間を、１命令コミット待ち時間と２、３命令コミット待ち時間と４命令コミット待ち時間を加算した値を減じることで求めることができる。また当該値は、１命令コミット待ち時間を、以下に述べる第１加算値と第２加算値との合計値により除した値に等しい。ここで第１加算値は、１命令コミット待ち時間と２、３命令コミット待ち時間とを加算した値である。また第２加算値は、全体時間から、０命令コミット待ち時間と１命令コミット待ち時間と２、３命令コミット待ち時間とを加算した値に等しい。したがって、Ｎ命令コミットに対する１命令コミット時間割合は、最終的に、１命令コミット待ち時間を、全体時間から０命令コミット待ち時間で減じた値を除すことにより得られる。
【００４４】
制御部１１は、Ｎ命令コミットに対する１命令コミット時間割合が９５％を超えると判断した場合(ステップＳ８７でＹＥＳ)、処理をステップＳ８８へ移行させる。制御部１１は、タイプを４に決定する(ステップＳ８８)。制御部１１は、Ｎ命令コミットに対する１命令コミット時間割合が９５％を超えないと判断した場合(ステップＳ８７でＮＯ)、処理をステップＳ８９へ移行させる。ステップＳ８８及びＳ８９の処理後、制御部１１は、処理をメインルーチンに戻す。
【００４５】
制御部１１は、算出回数が３でないと判断した場合(ステップＳ８１でＮＯ)、処理をステップＳ９１へ移行させる。制御部１１は、算出回数が４回目以降は、算出回数が３回の場合と同じく、以下の処理を行う。制御部１１は、前回決定したタイプに応じて新たなタイプを決定する(ステップＳ９１)。例えば制御部１１は、前回がタイプ４の場合、タイプ８等に決定する。制御部１１は、前回が特定のデータである場合において、実行結果データが閾値を超える場合に、タイプ９９９と決定し、閾値を超えない場合、新たなタイプに決定する(ステップＳ９２)。
【００４６】
例えば制御部１１は、前回のタイプが５であり閾値を超える場合、タイプ９９９と決定する。一方、制御部１１は、前回のタイプが５であり閾値を超えない場合、新たなタイプ（例えばタイプ７）に決定する。制御部１１は、ステップＳ９２の処理の後、処理をメインルーチンに戻す。図５のメインルーチンにおいて制御部１１は、ステップＳ５４の実行情報群の選択後、処理をステップＳ５６へ移行させる。これにより、効率よく実行結果データを取得することが可能となる。また、状況に応じて判断に必要な実行結果データを得ることが可能となる。
【００４７】
また実行結果データが閾値を超えるか否かにより適切な第２実行情報群を選択することが可能となる。例えばメモリアクセス待ち時間が閾値を超える場合、Ｌ２キャッシュに関する実行情報を含む第２実行情報群を選択することで、以降に適切な判断を行うことが可能となる。また、例えばＬ２キャッシュに対するアクセス待ち時間が閾値を超える場合、Ｌ２キャッシュに関する実行情報を含む第２実行情報群を選択することで、以降に適切な判断を行うことが可能となる。同様にＬ１キャッシュに対するアクセス待ち時間が閾値を超える場合、Ｌ１キャッシュに関する実行情報を含む第２実行情報群を選択することで、以降に適切な判断を行うことが可能となる。
【００４８】
またストア待ち時間が閾値を超える場合、浮動小数点演算待ち時間に関する実行情報を含む第２実行情報群を選択することで、状況に応じた適切な判断を行うことが可能となる。ストア待ち時間が閾値を超えない場合、分岐命令待ち時間に関する実行情報を含む第２実行情報群を選択することで、状況に応じた適切な判断を行うことが可能となる。またタイプを制御情報ファイル１５２に記憶することで、複数の第２実行情報群から一の第２実行情報群を選択することが可能となる。
【００４９】
さらに、Ｌ２キャッシュに関する実行情報を含む実行情報群が選択されたことを示す識別情報を含む場合、浮動小数点演算待ち時間に関する実行情報を含む第２実行情報群を選択することで、適切な実行結果データを得ることが可能となる。同様にＬ１キャッシュに関する実行情報を含む実行情報群が選択されたことを示す識別情報を含む場合、浮動小数点演算待ち時間に関する実行情報を含む第２実行情報群を選択することで、適切な実行結果データを得ることが可能となる。
【００５０】
また第２の実行結果データが閾値を超える場合、次の実行結果データを算出しないことで、全ての実行結果データを算出する場合と比較して、早期に処理を終えることが可能となる。またコンピュータ１の利用時間をも低減させることが可能となる。一方、第２の実行結果データが閾値を超える場合、引き続き次に実行すべき第２の実行情報群を選択することで、実行結果データの算出処理を継続することが可能となる。
【００５１】
実施の形態２
実施の形態２は閾値を超えた場合に、情報を出力する形態に関する。図１０及び図１１は出力処理の手順を示すフローチャートである。制御部１１は、算出回数が２か否かを判断する(ステップＳ１０１)。制御部１１は、算出回数が２であると判断した場合(ステップＳ１０１でＹＥＳ)、処理をステップＳ１０２へ移行させる。制御部１１は、メモリアクセス待ち時間が全体時間の４０％を超えるか否か判断する(ステップＳ１０２)。
【００５２】
制御部１１は、メモリアクセス待ち時間が全体時間の４０％を超えると判断した場合(ステップＳ１０２でＹＥＳ)、処理をステップＳ１０３へ移行させる。制御部１１は、メモリアクセス待ち時間の全体時間に対する割合、及び、当該割合が閾値を超える旨の第１情報を出力する（ステップＳ１０３）。なお、これらの情報の出力は、表示部１４に行う他、通信部１６を介して他のコンピュータへ出力するようにしても良い。なお、制御部１１はメモリアクセス待ち時間の全体時間に対する割合を、第１の実行結果データに関するデータとして出力する例を示すがこれに限るものではない。制御部１１は、その他メモリアクセス待ち時間等を出力するようにしても良い。
【００５３】
制御部１１は、メモリアクセス待ち時間が全体時間の４０％を超えないと判断した場合(ステップＳ１０２でＮＯ)、処理をステップＳ１０４へ移行させる。制御部１１は、Ｌ２アクセス待ちが全体時間の４０％を超えるか否かを判断する(ステップＳ１０４)。制御部１１は、Ｌ２アクセス待ち時間が全体時間の４０％を超えると判断した場合(ステップＳ１０４でＹＥＳ)、処理をステップＳ１０５へ移行させる。
【００５４】
制御部１１は、Ｌ２アクセス待ち時間の全体時間に対する割合、及び、当該割合が閾値を超える旨の第２情報を出力する(ステップＳ１０５)。制御部１１は、ステップＳ１０３及びＳ１０５の後に、ステップＳ１０６へ移行する。制御部１１は、タイプを３に決定する(ステップＳ１０６)。制御部１１は、Ｌ２アクセス待ち時間が全体時間の４０％を超えないと判断した場合(ステップＳ１０４でＮＯ)、処理をステップＳ１０７へ移行させる。
【００５５】
制御部１１は、Ｌ１アクセス待ち時間が全体時間の４０％を超えるか否かを判断する(ステップＳ１０７)。制御部１１は、超えると判断した場合(ステップＳ１０７でＹＥＳ)、処理をステップＳ１０８へ移行させる。制御部１１は、Ｌ１アクセス待ち時間の全体時間に対する割合、及び、当該割合が閾値を超える旨の第３情報を出力する(ステップＳ１０８)。制御部１１は、その後、タイプを２に決定する(ステップＳ１０９)。
【００５６】
制御部１１は、Ｌ１アクセス待ち時間が全体時間の４０％を超えないと判断した場合(ステップＳ１０７でＮＯ)、処理をステップＳ１１０へ移行させる。制御部１１は、ストア待ち時間が全体時間の４０％を超えるか否かを判断する(ステップＳ１１０)。制御部１１は、ストア待ち時間が全体時間の４０％を超えると判断した場合(ステップＳ１１０でＹＥＳ)、処理をステップＳ１１１へ移行させる。制御部１１は、ストア待ち時間の全体時間に対する割合、及び、当該割合が閾値を超える旨の第４情報を出力する(ステップＳ１１１)。
【００５７】
制御部１１は、その後処理をステップＳ１１２へ移行させる。制御部１１は、タイプを１０１に決定する(ステップＳ１１２)。制御部１１は、ストア待ち時間が全体時間の４０％を超えないと判断した場合(ステップＳ１１０でＮＯ)、処理をステップＳ１１３へ移行させる。制御部１１は、タイプを１に決定する(ステップＳ１１３)。ステップＳ１１２及びＳ１１３の後、制御部１１は、処理をメインルーチンに戻す。
【００５８】
制御部１１は、算出回数が２でないと判断した場合(ステップＳ１０１でＮＯ)、処理をステップＳ８１へ移行させる。なお、ステップＳ８１以降の処理は実施の形態１と同様であるので説明を省略する。これによりどのような原因でボトルネックが生じているかを容易に把握することが可能となる。またどの程度遅れが発生しているかの程度も把握することが可能となる。
【００５９】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００６０】
実施の形態３
図１２は上述した形態のコンピュータ１の機能ブロック図である。制御部１１が制御プログラム１５Ｐを実行することにより、コンピュータ１は以下のように動作する。算出部１２１は、パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出する。選択部１２２は、算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する。
【００６１】
図１３は実施の形態３に係るコンピュータ１のハードウェア群を示すブロック図である。コンピュータ１を動作させるためのプログラムは、ディスクドライブ、メモリーカードスロット等の読み取り部１０ＡにＣＤ−ＲＯＭ、ＤＶＤディスク、メモリーカード、またはＵＳＢメモリ等の可搬型記録媒体１Ａを読み取らせて記憶部１５に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１Ｂをコンピュータ１内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【００６２】
図１３に示すコンピュータ１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１Ａまたは半導体メモリ１Ｂから読み取り、或いは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム１５Ｐとしてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述したコンピュータ１として機能する。
【００６３】
本実施の形態３は以上の如きであり、その他は実施の形態１及び２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。なお、以上述べた各実施形態は適宜組み合わせることが可能である。
【００６４】
以上の実施の形態１から３を含む実施形態に関し、さらに以下の付記を開示する。
【００６５】
（付記１）
パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出し、
算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する
処理をコンピュータに実行させるプログラム。
（付記２）
前記データに基づき、選択した前記第２の実行情報群の各実行情報に対する第２の実行結果データを算出する
付記１に記載のプログラム。
（付記３）
前記第１の実行結果データが閾値を超えるか否か判断し、
前記閾値を超えるか否かに応じて、予め記憶された複数種の実行情報群の中から、第２の実行情報群を選択する
付記１または２に記載のプログラム。
（付記４）
前記第１の実行結果データにより得られたメモリアクセス待ち時間が閾値を超える場合、Ｌ２キャッシュに関する実行情報を含む第２の実行情報群を選択する
付記１から３のいずれか一つに記載のプログラム。
（付記５）
前記第１の実行結果データにより得られたＬ２キャッシュに対するアクセス待ち時間が閾値を超える場合、Ｌ２キャッシュに関する実行情報を含む第２の実行情報群を選択する
付記１から４のいずれか一つに記載のプログラム。
（付記６）
前記第１の実行結果データにより得られたＬ１キャッシュに対するアクセス待ち時間が閾値を超える場合、Ｌ１キャッシュに関する実行情報を含む第２の実行情報群を選択する
付記１から５のいずれか一つに記載のプログラム。
（付記７）
前記第１の実行結果データにより得られたストア待ち時間が閾値を超える場合、浮動小数点演算待ち時間に関する実行情報を含む第２の実行情報群を選択する
付記１から６のいずれか一つに記載のプログラム。
（付記８）
前記第１の実行結果データにより得られたストア待ち時間が閾値を超えない場合、分岐命令待ち時間に関する実行情報を含む第２の実行情報群を選択する
付記１から７のいずれか一つに記載のプログラム。
（付記９）
選択された第２の実行情報群を特定するための識別情報を記憶する
付記１から８のいずれか一つに記載のプログラム。
（付記１０）
Ｌ２キャッシュに関する実行情報を含む第２の実行情報群が選択されたことを示す識別情報を含むか否か判断し、
前記識別情報を含むと判断した場合に、浮動小数点演算待ち時間に関する実行情報を含む第２の実行情報群を選択する
付記９に記載のプログラム。
（付記１１）
Ｌ１キャッシュに関する実行情報を含む第２の実行情報群が選択されたことを示す識別情報を含むか否か判断し、
前記識別情報を含むと判断した場合に、浮動小数点演算待ち時間に関する実行情報を含む第２の実行情報群を選択する
付記９に記載のプログラム。
（付記１２）
前記第２の実行結果データが閾値を超える場合に、次の実行結果データを算出しない
付記２から１１に記載のプログラム。
（付記１３）
前記第２の実行結果データが閾値を超えない場合に、さらに次に実行すべき第２の実行情報群を選択する
付記２から１１に記載のプログラム。
（付記１４）
前記第１の実行結果データにより得られたメモリアクセス待ち時間が閾値を超える場合、第１の実行結果データに関するデータ及びメモリアクセス待ち時間が閾値を超えていることを示す情報を出力する
付記１から１３に記載のプログラム。
（付記１５）
パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出する算出部と、
算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する選択部と
を備える情報処理装置。
（付記１６）
パフォーマンスカウンタから得られるデータに基づき、第１の実行情報群の各実行情報に対する第１の実行結果データを算出し、
算出した前記第１の実行結果データに基づき、次に実行すべき第２の実行情報群を選択する
処理をコンピュータに実行させる情報処理方法。
【符号の説明】
【００６６】
１      コンピュータ（情報処理装置）
１Ａ    可搬型記録媒体
１Ｂ    半導体メモリ
１０Ａ  読み取り部
１１    制御部（ＣＰＵ）
１２    ＲＡＭ
１３    入力部
１４    表示部
１５    記憶部
１５Ｐ  制御プログラム
１６    通信部
１８    時計部
１５１  実行情報群ＤＢ
１５２  制御情報ファイル
１２１  算出部
１２２  選択部
Ｎ      通信網
【図１】
2018206042.tif 000003
【図２】
2018206042.tif 000004
【図３】
2018206042.tif 000005
【図４】
2018206042.tif 000006
【図５】
2018206042.tif 000007
【図６】
2018206042.tif 000008
【図７】
2018206042.tif 000009
【図８】
2018206042.tif 000010
【図９】
2018206042.tif 000011
【図１０】
2018206042.tif 000012
【図１１】
2018206042.tif 000013
【図１２】
2018206042.tif 000014
【図１３】
2018206042.tif 000015