(57)【特許請求の範囲】
【請求項１】
検証用プログラムの実行に伴う消費電力の第１制限値をＣＰＵに対して設定する設定部と、
前記検証用プログラムの実行を前記ＣＰＵに対して指示する実行指示部と、
前記検証用プログラムの実行中に前記ＣＰＵに対して割り込みを発生させ、実行中の関数を示す実行関数情報と、前記検証用プログラムの実行中における前記ＣＰＵの第１動作周波数とを対応させて取得する取得部と、
前記設定部に対する前記第１制限値の設定によって前記第１動作周波数が制限されているか否かを示す制限情報を、前記実行関数情報と対応させて記憶装置に出力する出力部と、を有する、
ことを特徴とする情報処理装置。
【請求項２】
請求項１において、さらに、
前記取得部が取得した前記第１動作周波数に基づき、前記検証用プログラムの実行中に前記消費電力が前記第１制限値に到達したか否かを判定する判定部を有し、
前記出力部は、前記消費電力が前記第１制限値に到達したか否かを示す情報を、前記制限情報として出力する、
ことを特徴とする情報処理装置。
【請求項３】
請求項２において、
前記判定部は、前記取得部が取得した前記第１動作周波数と、前記消費電力が前記第１制限値に到達しなかった場合における、前記検証用プログラムを実行する際の前記ＣＰＵの第２動作周波数とを比較し、前記第１動作周波数が前記第２動作周波数を下回る場合、前記検証用プログラムの実行中に前記消費電力が前記第１制限値に到達したと判定し、前記第１動作周波数が前記第２動作周波数を下回らない場合、前記検証用プログラムの実行中に前記消費電力が前記第１制限値を到達しなかったと判定する、
ことを特徴とする情報処理装置。
【請求項４】
請求項１において、
前記取得部は、前記ＣＰＵからの割り込み要求があったことに応じて、前記実行関数情報及び前記第１動作周波数の取得を行う、
ことを特徴とする情報処理装置。
【請求項５】
請求項２において、
前記出力部は、前記検証用プログラムの実行中に前記消費電力が前記第１制限値に到達したと判定された場合に、前記消費電力が前記第１制限値に到達したことを示す情報を、前記制限情報として出力する、
ことを特徴とする情報処理装置。
【請求項６】
請求項３において、
前記設定部は、前記第１制限値が設定された際に実行された前記検証用プログラムの実行の終了後、前記第１制限値よりも大きい第２制限値を前記ＣＰＵに対して設定し、
前記判定部は、前記第２制限値が設定された際に実行された前記検証用プログラムの実行中に、前記第１動作周波数が前記第２動作周波数を下回ると判定された場合、前記検証用プログラムの実行中に前記消費電力が前記第２制限値に到達したと判定し、前記第１動作周波数が前記第２動作周波数を下回らないと判定された場合、前記検証用プログラムの実行中に前記消費電力が前記第２制限値に到達していないと判定し、
前記出力部は、前記消費電力が前記第２制限値に到達したか否かを示す情報を、前記制限情報として出力する、
ことを特徴とする情報処理装置。
【請求項７】
請求項１において、
前記取得部は、
前記検証用プログラムを実行中に、前記ＣＰＵの第１動作レベルを取得し、
前記ＣＰＵの動作レベルと前記ＣＰＵの動作周波数とを対応させた対応情報を参照し、取得した前記第１動作レベルに対応する動作周波数を前記第１動作周波数として取得する、
ことを特徴とする情報処理装置。
【請求項８】
コンピュータに、
検証用プログラムの実行に伴う消費電力の第１制限値をＣＰＵに対して設定し、
前記検証用プログラムの実行を前記ＣＰＵに対して指示し、
前記検証用プログラムの実行中に前記ＣＰＵに対して割り込みを発生させ、実行中の関数を示す実行関数情報と、前記検証用プログラムの実行中における前記ＣＰＵの第１動作周波数とを対応させて取得し、
前記第１制限値の設定によって前記第１動作周波数が制限されているか否かを示す制限情報を、前記実行関数情報と対応させて記憶装置に出力する、
ことを特徴とする動作状況収集プログラム。
【請求項９】
検証用プログラムの実行に伴う消費電力の第１制限値をＣＰＵに対して設定し、
前記検証用プログラムの実行を前記ＣＰＵに対して指示し、
前記検証用プログラムの実行中に前記ＣＰＵに対する割り込みを発生させ、実行中の関数を示す実行関数情報と、前記検証用プログラムの実行中における前記ＣＰＵの第１動作周波数とを対応させて取得し、
前記第１制限値の設定によって前記第１動作周波数が制限されているか否かを示す制限情報を、前記実行関数情報と対応させて記憶装置に出力する、
ことを特徴とする動作状況収集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、動作状況収集プログラム及び動作状況収集方法に関する。
【背景技術】
【０００２】
例えば、利用者に対するサービスの提供等を行う事業者（以下、単に事業者とも呼ぶ）は、計算機システムで動作するプログラムや計算機システムで動作させる予定のプログラムに対して電力プロファイルを行う。
【０００３】
電力プロファイルは、例えば、プログラムの実行時における消費電力量の特性を解析するものである。事業者は、電力プロファイルを行うことにより、例えば、プログラム（以下、解析対象プログラムまたは検証用プログラムとも呼ぶ）に含まれる関数毎の消費電力量の特性を取得することが可能になる。そのため、事業者は、例えば、解析対象プログラムに含まれる関数のうちの消費電力量が大きい関数や、単位時間あたりの消費電力量（以下、消費電力とも呼ぶ）が大きい関数を、性能改善のために改修すべき箇所として特定することが可能になる（例えば、非特許文献１及び２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】小野美由紀、外２名、「ソフトウェアの消費電力分析手法」、情報処理学会研究報告  Ｖｏｌ．２０１５−ＨＰＣ−１５０、Ｎｏ．２９、２０１５／８／５、ｐ．２
【非特許文献２】Ｋａｓｈｉｆ  Ｎｉｚａｍ  Ｋｈａｎ，外７名，“Ｅｎｅｒｇｙ  Ｐｒｏｆｉｌｉｎｇ  ｕｓｉｎｇ  ｌｇＰｒｏｆ”，２０１５  １５ｔｈ  ＩＥＥＥ／ＡＣＭ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｌｕｓｔｅｒ，  Ｃｌｏｕｄ  ａｎｄ  Ｇｒｉｄ  Ｃｏｍｐｕｔｉｎｇ，ｐ．１１１５−ｐ．１１１７
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のような電力プロファイルを行う場合、事業者は、例えば、所定の時間間隔毎に、解析対象プログラムの実行に伴うＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に対してサンプリングを行う。このとき、同時にＣＰＵが計測する消費電力量を実行箇所に割り付けて集計することにより、プログラムの電力プロファイルを実現している。この場合、事業者は、サンプリングを行う間隔（以下、単にサンプリング間隔とも呼ぶ）をある程度短くする必要がある。なぜなら、サンプリング間隔が長い場合においては、前回のサンプリングから様々な関数が実行されるため、今回サンプリングされたプログラム実行箇所の消費電力量としては不正確になってしまうためである。また、サンプリング間隔が長い場合においては、例えば、短い時間で実行される関数のサンプリングが困難になることがある。
【０００６】
しかしながら、サンプリング間隔が短い場合、ＣＰＵに対して行われる割り込みの頻度が高くなる。そのため、この場合、計算機システムでは、サンプリングを行うための割り込みに起因した性能低下が発生し、事業者が想定している挙動と異なる挙動が行われる可能性がある。
【０００７】
また、サンプリング間隔が短い場合、サンプリングにより取得される情報が多くなる。そのため、この場合、取得された情報を記憶するために必要な記憶領域が大きくなる場合や、分析対象とするプログラムの実行時間が長い場合に、プログラム全体の電力プロファイルの取得が困難になる場合がある。
【０００８】
そこで、一つの側面では、サンプリング間隔を短くすることなく閾値よりも消費電力の大きい関数を特定することを可能とする情報処理装置、動作状況収集プログラム及び動作状況収集方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施の形態の一つの態様によれば、情報処理装置は、検証用プログラムの実行に伴う消費電力の第１制限値をＣＰＵに対して設定する設定部と、前記検証用プログラムの実行を前記ＣＰＵに対して指示する実行指示部と、前記検証用プログラムの実行中に前記ＣＰＵに対して割り込みを発生させ、実行中の関数を示す実行関数情報と、前記検証用プログラムの実行中における前記ＣＰＵの第１動作周波数とを対応させて取得する取得部と、前記設定部に対する前記第１制限値の設定によって前記第１動作周波数が制限されているか否かを示す制限情報を、前記実行関数情報と対応させて記憶装置に出力する出力部と、を有する。
【発明の効果】
【００１０】
一つの側面によれば、サンプリング間隔を短くすることなく閾値よりも消費電力の大きい関数を特定することを可能とする。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置１の全体構成を示す図である。
【図２】情報処理装置１の全体構成を示す図である。
【図３】情報処理装置１の全体構成を示す図である。
【図４】情報処理装置１のハードウエア構成を説明する図である。
【図５】第１の実施の形態における動作状況収集処理の概略を説明するフローチャートである。
【図６】第１の実施の形態における動作状況収集処理の概略を説明する図である。
【図７】第１の実施の形態における動作状況収集処理の概略を説明する図である。
【図８】第１の実施の形態における動作状況収集処理の詳細を説明するフローチャートである。
【図９】第１の実施の形態における動作状況収集処理の詳細を説明するフローチャートである。
【図１０】第１の実施の形態における動作状況収集処理の詳細を説明するフローチャートである。
【図１１】第１の実施の形態における動作状況収集処理の詳細を説明するフローチャートである。
【図１２】第１の実施の形態における動作状況収集処理の詳細を説明するフローチャートである。
【図１３】第１の実施の形態における動作状況収集処理の詳細を説明するフローチャートである。
【図１４】サンプリング情報１３１の具体例を説明する図である。
【図１５】対応情報１３５の具体例を説明する図である。
【図１６】関数情報１３２の具体例を説明する図である。
【図１７】制限情報１３４の具体例を説明する図である。
【図１８】第２の制限値について第１制限値と同様の処理を行うことが有効である場合を説明する図である。
【図１９】第２の制限値について第１制限値と同様の処理を行うことが有効である場合を説明する図である。
【図２０】サンプリング情報１３１ａの具体例を説明する図である。
【図２１】制限情報１３４ａの具体例を説明する図である。
【図２２】制限情報１３４の具体例を説明する図である。
【発明を実施するための形態】
【００１２】
［情報処理装置の構成］
図１から図３は、情報処理装置１の全体構成を示す図である。図１から図３に示す情報処理装置１は、ＣＰＵ１０１と、記憶部１ａ（以下、記憶装置１ａとも呼ぶ）とを有している。
【００１３】
図１に示す情報処理装置１は、ＣＰＵ１０１（ＣＰＵ１０１の一部であるプログラム実行部１１１）が実行する解析対象プログラムの電力プロファイルを行う。具体的に、図１に示す情報処理装置１において、ＣＰＵ１０１がオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を構成するプログラムであるカーネルＫＬと協働することにより動作する情報取得部１２１は、例えば、プログラム実行部１１１による解析対象プログラムの実行に応じて、その解析対象プログラムに含まれる関数毎の消費電力量を取得する。そして、情報取得部１２１は、例えば、取得した消費電力量を含む情報からサンプリングデータ１３１（以下、サンプリング情報１３１とも呼ぶ）を作成し、記憶部１ａに記憶する。
【００１４】
その後、図１に示す情報処理装置１において、ＣＰＵ１０１がカーネルＫＮ上で動作するアプリケーションＡＰと協働することにより動作する情報解析部１２２は、記憶部１ａに記憶されたサンプリング情報１３１に基づいて、電力プロファイルを行う。これにより、情報処理装置１は、事業者は、解析対象プログラムに含まれる関数毎の消費電力量の特性を解析することが可能になる。サンプリング情報１３１の具体例については後述する。
【００１５】
［情報取得部の処理の具体例］
次に、情報取得部１２１の処理の具体例について説明する。
【００１６】
図１に示すＣＰＵ１０１は、プログラム実行部１１１の他に、情報取得部１２１に対して割り込みが発生したことを通知する割り込み処理部１１２と、ＣＰＵ１０１の消費電力量の制限等を行う電力制限部１１４とを有する。割り込み処理部１１２は、例えば、ＣＰＵ１０１が有するＰＭＣ（Ｐｅｒｆｏｒｍａｎｃｅ  Ｍｏｎｉｔｏｒｉｎｇ  Ｃｏｕｎｔｅｒ）の機能を利用するものである。また、電力制限部１１４は、例えば、ＣＰＵ１０１が有するＲＡＰＬ（Ｒｕｎｎｉｎｇ  Ａｖｅｒａｇｅ  Ｐｏｗｅｒ  Ｌｉｍｉｔ）の機能を利用するものである。
【００１７】
具体的に、図１に示す例において、割り込み処理部１１２は、例えば、所定の時間間隔（例えば、１０（ミリ秒）間隔）で情報取得部１２１に通知（割り込み通知）を行う。そして、割り込み処理部１１２から通知を受信した情報取得部１２１は、プログラム実行部１１１にアクセスすることにより、プログラム実行部１１１が現在実行している解析対象プログラムの動作情報（命令アドレス）を取得し、また、カーネルＫＮで生成されるプロセスＩＤを取得する。さらに、情報取得部１２１は、この場合、例えば、電力制限部１１４にアクセスすることにより、ＣＰＵ１０１の現在の消費電力量を取得する。これにより、事業者は、サンプリング情報１３１を作成することが可能になる。
【００１８】
ここで、上記のような電力プロファイルを取得する場合、事業者は、例えば、所定の時間間隔毎に、解析対象プログラムの実行に伴うＣＰＵ１０１に対してサンプリングを行う。この場合、事業者は、サンプリングを行う間隔をある程度短くする必要がある。なぜなら、サンプリング間隔が長い場合においては、前回のサンプリングから様々な関数の実行が行われるため、今回サンプリングされたプログラム実行箇所の消費電力量としては不正確になってしまうためである。また、サンプリング間隔が長い場合においては、例えば、短い時間で実行される関数のサンプリングが困難になることがある。
【００１９】
しかしながら、割り込み処理部１１２に設定されたサンプリング間隔が短い場合、ＣＰＵ１０１に対して行われる割り込みの頻度が高くなる。そのため、この場合、情報処理装置１では、図３に示すように、サンプリングを行うための割り込みに起因した性能低下が発生し、事業者が想定している挙動と異なる挙動が行われる可能性がある。
【００２０】
また、サンプリング間隔が短い場合、サンプリングにより取得される情報が多くなる。そのため、この場合、取得された情報を記憶するために必要な記憶領域が大きくなる場合や、分析対象とするプログラムの実行時間が長い場合に、プログラム全体の電力プロファイルの取得が困難になる場合がある。
【００２１】
そこで、本実施の形態における情報処理装置１のＣＰＵ制御部１４１は、図２に示すように、解析対象プログラムの実行に伴う消費電力の制限値（以下、第１制限値とも呼ぶ）をＣＰＵ１０１に対して設定する。そして、ＣＰＵ制御部１４１は、解析対象プログラムの実行をＣＰＵ１０１に対して指示する。
【００２２】
さらに、ＣＰＵ制御部１４１は、図３に示すように、解析対象プログラムの実行中にＣＰＵ１０１に対して割り込みを発生させ、実行中の関数を示す実行関数情報と、解析対象プログラムの実行中におけるＣＰＵ１０１の動作周波数（以下、第１動作周波数とも呼ぶ）とを対応させて取得する。そして、ＣＰＵ制御部１４１は、取得した情報からサンプリング情報１３１を作成し、記憶部１ａ等に記憶する。その後、情報処理装置１の情報解析部１４２（以下、判定部とも呼ぶ）は、作成されたサンプリング情報１３１に基づき、第１制限値の設定によって第１動作周波数が制限されているか否かを示す制限情報を、実行関数情報と対応させて記憶装置に出力する。
【００２３】
すなわち、解析対象プログラムの実行中において、消費電力が第１制限値に到達した場合、ＣＰＵ１０１の電力制限部１１４は、解析対象プログラムの動作周波数を調整する。具体的に、電力制限部１１４は、消費電力が第１制限値を上回らないように、解析対象プログラムの動作周波数を抑制する。
【００２４】
そのため、解析対象プログラムの実行中において、消費電力が第１制限値に到達した場合における動作周波数は、消費電力が第１制限値に到達していない場合における動作周波数よりも小さくなる。そこで、情報解析部１４２は、例えば、解析対象プログラムの実行中におけるＣＰＵ１０１の第１動作周波数と、消費電力が第１制限値に到達していない場合における動作周波数（以下、第２動作周波数とも呼ぶ）とを比較する。そして、第１動作周波数が第２動作周波数を下回る場合、情報解析部１４２は、解析対象プログラムの実行中において消費電力が第１制限値に到達したものと判定する。
【００２５】
これにより、情報処理装置１は、第１動作周波数を取得した際に実行されていた関数の消費電力（第１制限値によって制限が行われていない場合の消費電力）が、第１制限値よりも高いか否かについて判定することが可能になる。
【００２６】
さらに、ＣＰＵ１０１が解析対象プログラムの動作周波数を抑制した場合、動作周波数が抑制された際に実行中であった関数の処理時間が長くなる。そのため、情報処理装置１は、制限が行われていない場合の消費電力が第１制限値を上回る関数の実行中にサンプリングが行われる確率を高めることが可能になる。
【００２７】
これにより、情報処理装置１は、解析対象プログラムの実行中において、サンプリング間隔を短くすることなく、消費電力が所定の閾値よりも大きい関数を特定することを可能とする。また、情報処理装置１は、サンプリングされた情報（記憶部１ａ等に記憶する必要がある情報）の情報量を抑制することが可能になる。
【００２８】
［情報処理装置のハードウエア構成］
次に、情報処理装置１のハードウエア構成について説明する。図４は、情報処理装置１のハードウエア構成を説明する図である。
【００２９】
情報処理装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体（ストレージ）１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００３０】
記憶媒体１０４は、記憶媒体１０４内のプログラム格納領域（図示しない）に、消費電力が所定の閾値よりも大きい関数を特定する処理（以下、動作状況収集処理とも呼ぶ）を行うためのプログラム１１０を記憶する。
【００３１】
ＣＰＵ１０１は、図４に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働して動作状況収集処理を行う。
【００３２】
記憶媒体１０４は、例えば、動作状況収集処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０または記憶装置１３０とも呼ぶ）を有する。また、外部インターフェース１０３は、例えば、他の情報処理装置（例えば、物理マシンや仮想マシン）と通信を行う。なお、図１で説明した記憶部１ａは、情報格納領域１３０に対応するものであってよい。
【００３３】
次に、ＣＰＵ１０１が有する機能について説明を行う。図２等に示すＣＰＵ１０１は、プログラム実行部１１１と、割り込み処理部１１２と、動作レベル計測部１１３と、電力制限部１１４とを有する。
【００３４】
動作レベル計測部１１３は、例えば、ＣＰＵ１０１の所定のレジスタを参照し、ＣＰＵ１０１の現在の動作周波数に対応する情報であるＰ−ｓｔａｔｅを、ＣＰＵ１０１の現在の動作レベルとして取得する。
【００３５】
電力制限部１１４は、消費電力の第１制限値の設定が行われた場合、プログラム実行部１１１において解析対象プログラムの実行に伴う消費電力が第１制限値を上回らないように、プログラム実行部１１１に対する制御を行う。電力制限部１１４は、例えば、第１制限値が設定された所定のレジスタ（以下、第１レジスタとも呼ぶ）を参照することにより、プログラム実行部１１１に対する制御を行う。
【００３６】
[情報処理装置のソフトウェア構成]
次に、情報処理装置１のＣＰＵ制御部１４１及び情報解析部１４２の機能について説明を行う。ＣＰＵ１０１は、プログラム１１０と協働することにより、図２等で説明したように、ＣＰＵ制御部１４１と、情報解析部１４２として動作する。
【００３７】
ＣＰＵ制御部１４１は、解析対象プログラムの実行に伴う消費電力の第１制限値を第１レジスタに設定する設定部を有する。ＣＰＵ制御部１４１の設定部は、例えば、事業者からの入力があった場合に、第１制限値を第１レジスタに設定する。これにより、電力制限部１１４は、解析対象プログラムの実行時における消費電力が第１制限値を上回らないように、動作周波数を抑制することが可能になる。
【００３８】
なお、第１制限値は、例えば、消費電力が消費電力を上回らないように動作周波数を抑制するために、抑制を行う時間区間と、その時間区間における平均消費電力量の制限値とからなるものであってもよい。そして、電力制限部１１４は、この場合、平均消費電力量の制限値を時間区間で除算した値によって動作周波数の抑制を行うものであってよい。
【００３９】
また、ＣＰＵ制御部１４１は、解析対象プログラムの実行をＣＰＵ１０１に対して指示する実行指示部を有する。そして、ＣＰＵ制御部１４１は、解析対象プログラムの実行中にＣＰＵ１０１に対して割り込みを発生させ、実行中の関数を示す実行関数情報１３３と、解析対象プログラムの実行中におけるＣＰＵ１０１の動作レベル（以下、第１動作レベルとも呼ぶ）とを対応させて取得する取得部を有する。なお、ＣＰＵ制御部１４１の取得部は、例えば、ＣＰＵ１０１が設定可能な各動作レベルと、ＣＰＵ１０１が設定可能な各動作周波数とを対応させた対応情報１３５を参照し、取得した第１動作レベルに対応する動作周波数を第１動作周波数として取得する。
【００４０】
さらに、ＣＰＵ制御部１４１は、第１制限値の設定によって第１動作周波数が制限されているか否かを示す制限情報１３４を、実行関数情報１３３と対応させて情報格納領域１３０に出力する出力部を有する。制限情報１３４は、第１制限値の設定によりＣＰＵ１０１の第１動作周波数が制限されているか否かを示す情報、すなわち、消費電力が第１制限値に到達したか否かを示す情報である。
【００４１】
情報解析部１４２は、ＣＰＵ制御部１４１が取得した第１動作周波数に基づき、解析対象プログラムの実行中に消費電力が第１制限値に到達したか否かを判定する。
【００４２】
具体的に、情報解析部１４２は、例えば、ＣＰＵ制御部１４１が取得した第１動作周波数と、消費電力が第１制限値に到達しなかった場合における、解析対象プログラムを実行する際のＣＰＵ１０１の第２動作周波数とを比較する。そして、情報解析部１４２は、第１動作周波数が第２動作周波数を下回る場合、解析対象プログラムの実行中に消費電力が第１制限値に到達したと判定する。すなわち、情報解析部１４２は、この場合、ＣＰＵ制御部１４１から第１動作周波数とともに取得された実行関数情報１３３に対応した関数を、電力制限部１１４によって制限されていない場合の消費電力が第１制限値を上回る関数として判定する。また、情報解析部１４２は、第１動作周波数が第２動作周波数を下回らない場合、解析対象プログラムの実行中に消費電力が第１制限値を到達しなかったと判定する。すなわち、情報解析部１４２は、この場合、ＣＰＵ制御部１４１から第１動作周波数とともに取得された実行関数情報１３３に対応した関数を、電力制限部１１４によって制限されていない場合の消費電力が第１制限値を上回らない関数として判定する。
【００４３】
なお、ＣＰＵ制御部１４１は、実行中の関数を示すプロセスＩＤ及び命令アドレスを取得するものであってもよい。そして、情報解析部１４２は、この場合、各関数の命令アドレスと関数名とを対応付けた関数情報１３２を参照し、ＣＰＵ制御部１４１が取得した命令アドレスに対応する関数名を実行関数情報１３３として特定するものであってもよい。
【００４４】
[第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図５は、第１の実施の形態における動作状況収集処理の概略を説明するフローチャートである。また、図６及び図７は、第１の実施の形態における動作状況収集処理の概略を説明する図である。図６及び図７を参照しながら、図５の動作状況収集処理について説明を行う。
【００４５】
情報処理装置１は、図５に示すように、プログラム実行タイミングまで待機する（Ｓ１のＮＯ）。プログラム実行タイミングは、例えば、解析対象プログラムの実行時における第１制限値を事業者が入力したタイミングであってよい。そして、プログラム実行タイミングになった場合（Ｓ１のＹＥＳ）、情報処理装置１は、解析対象プログラムの実行に伴う消費電力の第１制限値をＣＰＵ１０１に設定する（Ｓ２）。具体的に、情報処理装置１は、例えば、第１制限値を第１レジスタに設定する。すなわち、情報処理装置１は、解析対象プログラムに実行時の消費電力が第１制限値を上回る場合に、ＣＰＵ１０１の動作周波数が抑制されるように設定を行う。
【００４６】
その後、情報処理装置１は、解析対象プログラムの実行をＣＰＵ１０１に対して指示する（Ｓ３）。そして、情報処理装置１は、解析対象プログラムの実行中にＣＰＵ１０１に対して割り込みを発生させ、実行中の関数を示す実行関数情報１３３と、解析対象プログラムの実行中におけるＣＰＵ１０１の第１動作周波数とを対応させて取得する（Ｓ４）。さらに、情報処理装置１は、第１制限値の設定によって第１動作周波数が制限されているか否かを示す制限情報１３４を、実行関数情報１３３と対応させて情報処理装置１３０に出力する。
【００４７】
具体的に、情報処理装置１は、解析対象プログラムの実行中における実行関数情報１３３と、ＣＰＵ１０１の第１動作レベルとを対応させて取得する。情報処理装置１は、例えば、予め定められた時間間隔毎に実行関数情報１３３と第１動作レベルとの取得を行う。そして、情報処理装置１は、取得した実行関数情報１３３と第１動作レベルとを含むサンプリング情報１３１を作成し、情報格納領域１３０に記憶する。
【００４８】
その後、情報処理装置１は、対応情報１３５を参照し、サンプリング情報１３１に含まれる第１動作レベルに対応する動作周波数を第１動作周波数として取得する。そして、情報処理装置１は、取得した第１動作周波数に基づき、解析対象プログラムの実行中に消費電力が第１制限値に到達したか否かを判定する。具体的に、情報処理装置１は、例えば、ＣＰＵ制御部１４１が取得した第１動作周波数と、消費電力が第１制限値に到達しなかった場合における、解析対象プログラムを実行する際のＣＰＵ１０１の第２動作周波数とを比較する。その結果、第１動作周波数が第２動作周波数を下回る場合、情報解析部１４２は、解析対象プログラムの実行中に消費電力が第１制限値に到達したと判定する。また、第１動作周波数が第２動作周波数を下回らない場合、情報解析部１４２は、解析対象プログラムの実行中に消費電力が第１制限値を到達しなかったと判定する。
【００４９】
すなわち、解析対象プログラムの実行中において、消費電力が第１制限値に到達した場合、ＣＰＵ１０１の電力制限部１１４は、解析対象プログラムの動作周波数を抑制する。そのため、情報処理装置１は、第１動作周波数が第２動作周波数を下回る場合に、解析対象プログラムの実行中に消費電力が第１制限値に到達したと判定することが可能になる。以下、消費電力と第１制限値との関係について説明を行う。
【００５０】
図６及び図７は、消費電力と第１制限値との関係について説明する図である。図６及び図７において、横軸は時間（単位はマイクロ秒）であり、縦軸は消費電力（単位はワット（Ｗ））である。また、図６及び図７は、解析対象プログラムにおいて、関数Ａと関数Ｂと関数Ｃとが時系列順に実行される場合を示す例である。
【００５１】
具体的に、図６に示す例では、ＣＰＵ１０１に第１制限値が設定されていない。そのため、ＣＰＵ１０１は、消費電力の制限を受けることなく関数Ａ、関数Ｂ及び関数Ｃを実行する。
【００５２】
これに対し、図７に示す例では、ＣＰＵ１０１に第１制限値（５０（Ｗ））が設定されている。そのため、電力制限部１１４は、この場合、各関数の実行時における消費電力が５０（Ｗ）を超えないように動作周波数の制御を行う。そして、図７に示す例では、関数Ｂの消費電力が図１０で説明した場合と比較して抑制されている。すなわち、図７に示す例は、電力制限部１１４によって、関数Ｂの実行時の動作周波数が関数Ａ及び関数Ｃの実行時の動作周波数よりも小さくなるように制御が行われている状態である。
【００５３】
そのため、情報処理装置１は、関数Ａ、関数Ｂ及び関数Ｃの実行時における動作周波数を比較することにより、実行中における消費電力が第１制限値（５０（Ｗ））に到達した関数が関数Ｂであると特定することが可能になる。
【００５４】
また、図７に示す関数Ｂの実行時間は、図６で説明した例と比較して長くなっている。そのため、電力制限部１１４が解析対象プログラムの動作周波数を抑制した場合、動作周波数が抑制された際に実行中であった関数の処理時間は長くなる。これにより、情報処理装置１は、消費電力が第１制限値に到達する関数の実行中にサンプリングが行われる確率を高めることが可能になる。
【００５５】
そして、情報処理装置１は、図６に示すように、解析対象プログラムの実行中に取得された実行関数情報１３３と、実行関数情報１３３の実行時において、第１制限値の設定によりＣＰＵ１０１の動作周波数が制限されているか否かを示す制限情報１３４とを情報格納領域１３０に出力（記憶）する。
【００５６】
このように、本実施の形態における情報処理装置１のＣＰＵ制御部１４１は、解析対象プログラムの実行に伴う消費電力の第１制限値をＣＰＵ１０１に対して設定する。そして、ＣＰＵ制御部１４１は、解析対象プログラムの実行をＣＰＵ１０１に対して指示する。
【００５７】
さらに、ＣＰＵ制御部１４１は、図３に示すように、解析対象プログラムの実行中にＣＰＵ１０１に対して割り込みを発生させ、実行中の関数を示す実行関数情報と、解析対象プログラムの実行中におけるＣＰＵ１０１の第１動作周波数とを対応させて取得する。そして、ＣＰＵ制御部１４１は、取得した情報からサンプリング情報１３１を作成し、記憶部１ａ等に記憶する。その後、情報処理装置１の情報解析部１４２は、作成されたサンプリング情報１３１に基づき、第１制限値の設定によって第１動作周波数が制限されているか否かを示す制限情報１３４を、実行関数情報と対応させて記憶装置に出力する。
【００５８】
すなわち、情報処理装置１は、実行中の消費電力が所定の閾値よりも大きい関数の実行時における動作周波数を抑制するように設定を行う。これにより、情報処理装置１は、各関数の実行中にサンプリングした情報を参照することで、各関数の消費電力が所定の閾値よりも大きいか否かを判定することが可能になる。
【００５９】
また、情報処理装置１は、実行中の消費電力が所定の閾値よりも大きい関数の実行時における動作周波数を抑制することにより、実行中の消費電力が所定の閾値よりも大きい関数の実行時間を長くすることが可能になる。そのため、情報処理装置１は、実行中の消費電力が所定の閾値よりも大きい関数の実行中にサンプリングが行われる確率を高めることが可能になる。
【００６０】
したがって、情報処理装置１は、解析対象プログラムの実行中において、サンプリング間隔を短くすることなく、消費電力が所定の閾値よりも大きい関数を特定することを可能とする。そして、情報処理装置１は、作成されたサンプリング情報１３１の情報量を抑制することが可能になる。
【００６１】
[第１の実施の形態の詳細]
次に、第１の実施の形態の詳細について説明する。図８から図１３は、第１の実施の形態における動作状況収集処理の詳細を説明するフローチャートである。また、図１４から図２２は、第１の実施の形態における動作状況収集処理の詳細を説明する図である。図１４から図２２を参照しながら、図８から図１３の動作状況収集処理を説明する。
【００６２】
[プログラム実行処理]
初めに、ＣＰＵ制御部１４１が解析対象プログラムを実行する処理（以下、プログラム実行処理とも呼ぶ）について説明を行う。
【００６３】
情報処理装置１のＣＰＵ制御部１４１は、図８に示すように、プログラム実行タイミングまで待機する（Ｓ１１のＮＯ）。そして、プログラム実行タイミングになった場合（Ｓ１１のＹＥＳ）、ＣＰＵ制御部１４１は、解析対象プログラムの実行に伴う消費電力の第１制限値をＣＰＵ１０１に設定する（Ｓ１２）。具体的に、ＣＰＵ制御部１４１は、この場合、電力制限部１１４に対して第１制限値の設定を行う。
【００６４】
さらに、ＣＰＵ制御部１４１は、割り込み発生の有効化をＣＰＵ１０１に対して指示する（Ｓ１３）。具体的に、ＣＰＵ制御部１４１は、割り込み処理部１１２に対して割り込み発生の有効化の指示を行う。そして、ＣＰＵ制御部１４１は、解析対象プログラムの実行をＣＰＵ１０１に対して指示する（Ｓ１４）。具体的に、ＣＰＵ制御部１４１は、プログラム実行部１１１に対して解析対象プログラムの実行を指示する。
【００６５】
これにより、ＣＰＵ制御部１４１は、後述するように、サンプリング情報１３１を作成するために必要な情報の取得を行うことが可能になる。
【００６６】
その後、ＣＰＵ制御部１４１は、解析対象プログラムの実行が終了するまで待機する（Ｓ１５のＮＯ）。そして、ＣＰＵ制御部１４１は、解析対象プログラムの実行が終了した場合（Ｓ１５のＹＥＳ）、ＣＰＵ制御部１４１は、割り込み発生の無効化をＣＰＵ１０１に対して指示する（Ｓ１６）。具体的に、ＣＰＵ制御部１４１は、この場合、割り込み処理部１１２に対して割り込み発生の無効化の指示を行う。
【００６７】
Ｓ１６の処理の後、ＣＰＵ制御部１４１は、第１制限値よりも大きい制限値（以下、第２制限値とも呼ぶ）について、第１制限値と同様の処理を行うか否かを判定する（Ｓ１７）。その結果、第２制御部について第１制御部と同様の処理を行わない場合（Ｓ１７のＮＯ）、ＣＰＵ制御部１４１は、プログラム実行処理を終了する。Ｓ１７の処理の詳細については後述する。また、第２制御部について第１制御部と同様の処理を行う場合の処理については後述する。
【００６８】
[動作状況収集処理の詳細]
次に、動作状況収集処理の詳細について説明を行う。
【００６９】
ＣＰＵ制御部１４１は、図９に示すように、割り込み処理部１１２が割り込みを受信するまで待機する（Ｓ２１のＮＯ）。そして、割り込み処理部１１２が割り込みを受信した場合（Ｓ２１のＹＥＳ）、ＣＰＵ制御部１４１は、プログラム実行部１１１にアクセスすることにより、プログラム実行部１１１が現在実行している関数を示すプロセスＩＤ及び命令アドレスを取得する（Ｓ２２）。
【００７０】
また、ＣＰＵ制御部１４１は、この場合、動作レベル計測部１１３にアクセスすることにより、ＣＰＵ１０１の現在の動作レベルである第１動作レベルを取得する（Ｓ２３）。そして、ＣＰＵ制御部１４１は、Ｓ２２の処理で取得した情報と、Ｓ２３の処理で取得した第１動作レベルからサンプリング情報１３１を作成する（Ｓ２４）。以下、サンプリング情報１３１の具体例について説明を行う。
【００７１】
[サンプリング情報の具体例]
図１４は、サンプリング情報１３１の具体例を説明する図である。図１４に示すサンプリング情報１３１は、サンプリング情報１３１に含まれる各情報を識別する「情報ＩＤ」と、ＣＰＵ１０１で実行されていたプロセスのＩＤ（Ｓ２２において取得したプロセスＩＤ）を示す「プロセスＩＤ」とを項目として有する。また、図１４に示すサンプリング情報１３１は、ＣＰＵ１０１で実行されていた命令の格納先アドレス（Ｓ２２において取得した命令アドレス）を識別する「命令アドレス」と、ＣＰＵ１０１の第１動作レベル（Ｓ２３において取得した第１動作レベル）が設定される「動作レベル」とを項目として有する。さらに、図１４に示すサンプリング情報１３１は、サンプリング情報１３１に含まれる各情報の作成時刻を示す「時刻」を項目として有する。
【００７２】
具体的に、図１４に示すサンプリング情報１３１において、「ＩＤ」が「１」である情報には、「プロセスＩＤ」として「Ａ」が設定され、「命令アドレス」として「０ｘ００００３１２１」が設定され、「動作レベル」として「０ｘ１４００」が設定されている。また、図１４に示すサンプリング情報１３１において、「ＩＤ」が「１」である情報には、「時刻」として「１０：１０：００．００００００」が設定されている。
【００７３】
すなわち、「ＩＤ」が「１」である情報は、「時刻」が「１０：１０：００．００００００」であるときに、「プロセスＩＤ」が「Ａ」であって「命令アドレス」が「０ｘ００００３１２１」である関数が実行されていたことを示している。また、「ＩＤ」が「１」である情報は、その時の動作レベルが「０ｘ１４００」であったことを示している。図１４に含まれる他の情報については説明を省略する。
【００７４】
図９に戻り、ＣＰＵ制御部１４１は、消費電力が第１制限値に到達しなかった場合における、解析対象プログラムを実行する際のＣＰＵ１０１の第２動作周波数を取得する（Ｓ２５）。すなわち、ＣＰＵ制御部１４１は、電力制限部１１４による消費電力の制限が行われていない場合における、解析対象プログラムを実行する際のＣＰＵ１０１の動作周波数を第２動作周波数として取得する。第２動作周波数は、例えば、事業者によって計測され、情報格納領域１３０に予め記憶されるものであってよい。なお、以下、第２動作周波数が２．０（ＧＨｚ）であるものとして説明を行う。
【００７５】
そして、ＣＰＵ制御部１４１は、図１０に示すように、Ｓ２４の処理で作成したサンプリング情報１３１のうち、第１動作周波数が第２動作周波数を下回っている情報が存在するか否かを判定する（Ｓ３１）。
【００７６】
具体的に、ＣＰＵ制御部１４１は、対応情報１３５を参照し、Ｓ２４の処理で作成したサンプリング情報１３１に含まれる第１動作レベルに対応する動作周波数を第１動作周波数としてそれぞれ取得する。以下、対応情報１３５の具体例について説明を行う。
【００７７】
[対応情報の具体例]
図１５は、対応情報１３５の具体例を説明する図である。図１５に示す対応情報１３５は、対応情報１３５に含まれる各情報を識別する「情報ＩＤ」と、ＣＰＵ１０１の動作レベルが設定される「動作レベル」と、ＣＰＵ１０１の動作周波数が設定される「動作周波数」とを項目として有している。
【００７８】
具体的に、図１５に示す対応情報１３５において、「情報ＩＤ」が「１」である情報には、「動作レベル」として「０ｘ１４００」が設定され、「動作周波数」として「２．０（ＧＨｚ）」が設定されている。図１５に含まれる他の情報については説明を省略する。
【００７９】
そのため、ＣＰＵ制御部１４１は、Ｓ３１の処理において、図１４に示すサンプリング情報１３１における「情報ＩＤ」が「１」から「５」である情報の「動作レベル」に対応する「動作周波数」として、それぞれ「２．０（ＧＨｚ）」、「１．８（ＧＨｚ）」、「２．０（ＧＨｚ）」、「１．７（ＧＨｚ）」及び「２．０（ＧＨｚ）」を特定する。したがって、情報解析部１４２は、図１４に示すサンプリング情報１３１における「情報ＩＤ」が「２」及び「４」である情報の「動作レベル」に設定された情報に対応する「動作周波数」が、第２動作周波数を下回っていると判定する。
【００８０】
図１０に戻り、第１動作周波数が第２動作周波数を下回っている情報が存在する場合（Ｓ３１のＹＥＳ）、情報解析部１４２は、Ｓ３１の処理において存在した情報に対応する関数の実行中に、消費電力が第１制限値を上回ったと判定する（Ｓ３２）。一方、第１動作周波数が第２動作周波数を下回っている情報が存在しない場合（Ｓ３１のＮＯ）、情報解析部１４２は、Ｓ３２の処理を実行しない。
【００８１】
具体的に、情報解析部１４２は、図１４に示すサンプリング情報１３１において、「情報ＩＤ」が「２」及び「４」である情報に対応する関数の実行中に、消費電力が第１制限値を上回ったと判定する。
【００８２】
その後、情報解析部１４２は、Ｓ２４の処理において作成したサンプリング情報１３１と関数情報１３２とを参照し、Ｓ３１の処理で存在した情報に対応する実行関数情報１３３を取得する（Ｓ３３）。以下、関数情報１３２の具体例について説明を行う。
【００８３】
[関数情報の具体例]
図１６は、関数情報１３２の具体例を説明する図である。図１６に示す関数情報１３２は、関数情報１３２に含まれる各情報を識別する「情報ＩＤ」と、各命令の格納先を識別する「命令アドレス」とを項目として有する。また、図１６に示す関数情報１３２は、解析対象プログラムに含まれる関数名を識別する「関数名」を項目として有する。
【００８４】
具体的に、図１６に示す関数情報１３２において、「ＩＤ」が「１」である情報には、「命令アドレス」として「０ｘ００００３０００−０ｘ００００４ｆｆｆ」が設定され、「関数名」として「関数Ａ」が設定されている。すなわち、「ＩＤ」が「１」である情報は、「関数名」が「関数Ａ」である関数が、「命令アドレス」が「０ｘ００００３０００」から「０ｘ００００４ｆｆｆ」である領域（メモリ領域）に格納されていることを示している。図１６に含まれる他の情報については説明を省略する。
【００８５】
したがって、情報解析部１４２は、Ｓ３３の処理において、例えば、図１４に示すサンプリング情報１３１を参照し、「情報ＩＤ」が「２」及び「４」である情報における「命令アドレス」に設定された情報である「０ｘ００００６ｂ３３」及び「０ｘ００００９００２」を特定する。そして、ＣＰＵ制御部１４１は、図１６に示す関数情報１３２を参照し、「命令アドレス」に「０ｘ００００６ｂ３３」及び「０ｘ００００９００２」を含む命令アドレスが設定された情報の「関数名」に設定された情報である「関数Ｂ」及び「関数Ｃ」を実行関数情報１３３として取得する。
【００８６】
図１０に戻り、情報出力部１２４は、Ｓ３３の処理で取得した実行関数情報１３３を含む制限情報１３４を情報格納領域１３０に記憶する（Ｓ３４）。以下、制限情報１３４の具体例について説明を行う。
【００８７】
[制限情報の具体例]
図１７及び図２２は、制限情報１３４の具体例を説明する図である。図１７及び図２２に示す制限情報１３４は、制限情報１３４に含まれる各情報を識別する「情報ＩＤ」と、Ｓ３３の処理で取得された実行関数情報１３３を識別する「関数名」とを項目として有する。なお、以下、情報出力部１２４が、実行中に消費電力が第１制限値に到達した関数に関する情報のみを制限情報１３４として出力するものとして説明を行う。
【００８８】
具体的に、図１７に示す制限情報１３４において、「ＩＤ」が「１」である情報には、「関数名」として「関数Ｂ」が設定され、「ＩＤ」が「２」である情報には、「関数名」として「関数Ｃ」が設定されている。すなわち、図１７に示す制限情報１３４は、実行中に消費電力が第１制限値に到達した関数が、「関数Ｂ」及び「関数Ｃ」であることを示している。図２２の説明については後述する。
【００８９】
[Ｓ１７の処理の詳細]
次に、Ｓ１７の処理の詳細について説明を行う。情報解析部１４２は、Ｓ１７の処理において、例えば、事業者が予め情報格納領域１３０に設定した情報を参照し、第２制限値について第１制限値と同様の処理を行うか否かの判定を行う。以下、第２の制限値について第１制限値と同様の処理を行うことが有効である場合の説明を行う。
【００９０】
[第２の制限値について第１制限値と同様の処理を行うことが有効である場合]
図１８及び図１９は、第２の制限値について第１制限値と同様の処理を行うことが有効である場合を説明する図である。具体的に、図１８は、第１制限値が５０（Ｗ）である場合の消費電力と第１制限値との関係について説明する図である。また、図１９は、第２制限値が６０（Ｗ）である場合の消費電力と第２制限値との関係について説明する図である。
【００９１】
図１８に示す例において、関数Ｂと関数Ｃの消費電力は、第１制限値を上回らないように制限されている。すなわち、図１８に示す例は、電力制限部１１４による制限が行われていない場合における関数Ｂ及び関数Ｃの消費電力が５０（Ｗ）を上回ることを示している。しかしながら、情報処理装置１は、この場合、関数Ｂ及び関数Ｃのうち、どちらの関数の消費電力の方が大きいか判断することができない。
【００９２】
一方、図１９に示す例において、関数Ｂ及び関数Ｃのうち、関数Ｃの消費電力のみが第２制限値を上回らないように制限されている。すなわち、図１９に示す例は、電力制限部１１４による制限が行われていない場合における関数Ｃの消費電力が６０（Ｗ）を上回ることを示している。
【００９３】
そのため、情報処理装置１は、図１８及び図１９に示す内容を参照することにより、電力制限部１１４による制限が行われていない場合における関数Ｃの消費電力が、６０（Ｗ）以上であると判定することが可能になる。また、情報処理装置１は、図１８及び図１９に示す内容を参照することにより、電力制限部１１４による制限が行われていない場合における関数Ｂの消費電力が、５０（Ｗ）以上であって６０（Ｗ）以下であると判定することが可能になる。したがって、情報処理装置１は、この場合、電力制限部１１４による制限が行われていない場合における関数Ｃの消費電力の方が、関数Ｂの消費電力よりも大きいと判定することが可能になる。
【００９４】
[第２制限値が設定される場合のプログラム実行処理]
初めに、第２制限値が設定される場合のプログラム実行処理について説明を行う。Ｓ１７の処理において、第２制限値について第１制限値と同様の処理を行う旨の判定が行われた場合（Ｓ１７のＹＥＳ）、ＣＰＵ制御部１４１は、図１１に示すように、プログラム実行タイミングまで待機する（Ｓ４１のＮＯ）。そして、プログラム実行タイミングになった場合（Ｓ４１のＹＥＳ）、ＣＰＵ制御部１４１は、解析対象プログラムの実行に伴う消費電力の第２制限値をＣＰＵ１０１に設定する（Ｓ４２）。具体的に、ＣＰＵ制御部１４１は、この場合、電力制限部１１４に対して第２制限値の設定を行う。
【００９５】
さらに、ＣＰＵ制御部１４１は、割り込み発生の有効化をＣＰＵ１０１に対して指示する（Ｓ４３）。具体的に、ＣＰＵ制御部１４１は、割り込み処理部１１２に対して割り込み発生の有効化の指示を行う。そして、ＣＰＵ制御部１４１は、解析対象プログラムの実行をＣＰＵ１０１に対して指示する（Ｓ４４）。具体的に、ＣＰＵ制御部１４１は、プログラム実行部１１１に対して解析対象プログラムの実行を指示する。すなわち、ＣＰＵ制御部１４１は、この場合、第１制限値よりも大きい第２制限値をＣＰＵ１０１に設定した状態で、解析対象プログラムの実行を再度行う。
【００９６】
その後、ＣＰＵ制御部１４１は、解析対象プログラムの実行が終了するまで待機する（Ｓ４５のＮＯ）。そして、ＣＰＵ制御部１４１は、解析対象プログラムの実行が終了した場合（Ｓ４５のＹＥＳ）、ＣＰＵ制御部１４１は、割り込み発生の無効化をＣＰＵ１０１に対して指示する（Ｓ４６）。具体的に、ＣＰＵ制御部１４１は、この場合、割り込み処理部１１２に対して割り込み発生の無効化の指示を行う。
【００９７】
[第２制限値が設定された場合の動作状況収集処理の詳細]
次に、第２制限値が設定された場合の動作状況収集処理の詳細について説明を行う。ＣＰＵ制御部１４１は、図１２に示すように、割り込み処理部１１２が割り込みを受信するまで待機する（Ｓ５１のＮＯ）。すなわち、ＣＰＵ制御部１４１は、Ｓ２２及びＳ２３の処理を実行する際に実行されていた解析対象プログラムが再度実行され、割り込み処理部１１２が割り込みの通知を行うまで待機する。
【００９８】
そして、割り込み処理部１１２が割り込みを受信した場合（Ｓ５１のＹＥＳ）、ＣＰＵ制御部１４１は、Ｓ２２の処理と同様に、プログラム実行部１１１にアクセスすることにより、プログラム実行部１１１が現在実行している関数を示すプロセスＩＤ及び命令アドレスを取得する（Ｓ５２）。また、ＣＰＵ制御部１４１は、この場合、Ｓ２３の処理と同様に、動作レベル計測部１１３にアクセスすることにより、ＣＰＵ１０１の現在の動作レベルである第１動作レベルを取得する（Ｓ５３）。さらに、ＣＰＵ制御部１４１は、この場合、Ｓ２４の処理と同様に、Ｓ５２の処理で取得した情報と、Ｓ５３の処理で取得した第１動作周波数からサンプリング情報１３１を作成する（Ｓ５４）。以下、Ｓ５４の処理で作成されるサンプリング情報１３１（以下、サンプリング情報１３１ａとも呼ぶ）の具体例について説明を行う。
【００９９】
[サンプリング情報の具体例]
図２０は、サンプリング情報１３１ａの具体例を説明する図である。図２０に示すサンプリング情報１３１ａは、図１４で説明したサンプリング情報１３１と同じ項目を有している。そして、図２０に示すサンプリング情報１３１ａは、図１４で説明したサンプリング情報１３１と比較して、「動作レベル」に設定された値のみが異なる。
【０１００】
具体的に、図２０に示すサンプリング情報１３１ａにおいて、「情報ＩＤ」が「１」から「５」である情報の「動作レベル」には、それぞれ「０ｘ１４００」、「０ｘ１４００」、「０ｘ１４００」、「０ｘ１２００」及び「０ｘ１４００」が設定されている。
【０１０１】
すなわち、図２０に示すサンプリング情報１３１ａでは、図１４で説明したサンプリング情報１３１と異なり、「情報ＩＤ」が「２」である情報の「動作周波数」に第２動作周波数である「０ｘ１４００」が設定されている。そして、図１５で説明した対応情報１３５によれば、「動作レベル」が「０ｘ１４００」である情報の「動作周波数」は、「２．０（ＧＨｚ）」である。
【０１０２】
一方、図２０に示すサンプリング情報１３１ａでは、「情報ＩＤ」が「２」である情報の「動作周波数」に第２動作周波数である「０ｘ１２００」が設定されている。そして、図１５で説明した対応情報１３５によれば、「動作レベル」が「０ｘ１２００」である情報の「動作周波数」は、「１．８（ＧＨｚ）」である。そのため、情報解析部１４２は、電力制限部１１４による制限が行われていない場合、「情報ＩＤ」が「４」である情報に対応する関数の消費電力の方が、「情報ＩＤ」が「２」である情報に対応する消費電力よりも大きいと判定することが可能になる。
【０１０３】
図１２に戻り、ＣＰＵ制御部１４１は、Ｓ２５の処理と同様に、消費電力が第１制限値に到達しなかった場合における、解析対象プログラムを実行する際のＣＰＵ１０１の第２動作周波数を取得する（Ｓ５５）。
【０１０４】
そして、情報解析部１４２は、図１３に示すように、Ｓ３１の処理と同様に、Ｓ５５の処理で作成したサンプリング情報１３１のうち、第１動作周波数が第２動作周波数を下回っている情報が存在するか否かを判定する（Ｓ６１）。その結果、第１動作周波数が第２動作周波数を下回っている情報が存在する場合（Ｓ６１のＹＥＳ）、情報解析部１４２は、Ｓ６１の処理において存在した情報に対応する関数の実行中に、消費電力が第２制限値を上回ったと判定する（Ｓ６２）。一方、第１動作周波数が第２動作周波数を下回っている情報が存在しない場合（Ｓ６１のＮＯ）、情報解析部１４２は、Ｓ６２の処理を実行しない。
【０１０５】
具体的に、情報解析部１４２は、例えば、図２０で説明したサンプリング情報１３１ａを参照し、「情報ＩＤ」が「４」である情報に対応する関数の実行中に、消費電力が第２制限値を上回ったと判定する。
【０１０６】
その後、情報解析部１４２は、Ｓ５４の処理において作成したサンプリング情報１３１と関数情報１３２とを参照し、Ｓ６１の処理で存在した情報に対応する実行関数情報１３３を取得する（Ｓ６３）。
【０１０７】
具体的に、情報解析部１４２は、図２０に示すサンプリング情報１３１ａを参照し、「情報ＩＤ」が「４」である情報における「命令アドレス」に設定された情報である「０ｘ００００９００２」を特定する。そして、ＣＰＵ制御部１４１は、図２０に示す関数情報１３２を参照し、「命令アドレス」に「０ｘ００００９００２」を含む命令アドレスが設定された情報の「関数名」に設定された情報である「関数Ｃ」を実行関数情報１３３として取得する（Ｓ６３）。
【０１０８】
図１１に戻り、情報出力部１２４は、Ｓ６３の処理で取得した実行関数情報１３３を含む制限情報１３４を情報格納領域１３０に記憶する（Ｓ６４）。以下、Ｓ６４の処理において情報格納領域１３０に記憶される制限情報（以下、制限情報１３４ａとも呼ぶ）の具体例について説明を行う。
【０１０９】
[制限情報の具体例]
図２１は、制限情報１３４ａの具体例を説明する図である。図２１に示す制限情報１３４ａは、図１７で説明した制限情報１３４と同じ項目を有する。具体的に、図２１に示す制限情報１３４ａにおいて、「ＩＤ」が「１」である情報には、「関数名」として「関数Ｃ」が設定されている。すなわち、図２１に示す制限情報１３４ａは、実行中の消費電力が第２制限値を上回る関数が、「関数Ｃ」であることを示している。
【０１１０】
なお、情報解析部１４２は、Ｓ６４の処理において、図１７で説明した制限情報１３４と、図２１で説明した制限情報１３４ａとを参照し、図１７で説明した制限情報１３４に含まれる情報を、実行中の消費電力が大きい関数に対応する情報の順に並び替えるものであってもよい。
【０１１１】
具体的に、図１７で説明した制限情報１３４に情報が含まれる関数（関数Ｂ及び関数Ｃ）のうち、図２１で説明した制限情報１３４ａに情報が含まれる関数は、関数Ｃである。すなわち、電力制限部１１４が制限していない場合における実行中の消費電力は、関数Ｂよりも関数Ｃの方が大きい。
【０１１２】
そのため、情報解析部１４２は、例えば、図２２に示すように、「情報ＩＤ」が「１」である情報の「関数名」として「関数Ｃ」を設定し、「情報ＩＤ」が「２」である情報の「関数名」として「関数Ｂ」を設定するものであってよい。これにより、事業者は、電力制限部１１４が制限していない場合における実行中の消費電力が第１制限値に到達する関数についての情報を、消費電力が大きい関数の順に取得することが可能になる。
【０１１３】
このように、本実施の形態における情報処理装置１のＣＰＵ制御部１４１は、解析対象プログラムの実行に伴う消費電力の第１制限値をＣＰＵ１０１に対して設定する。そして、ＣＰＵ制御部１４１は、解析対象プログラムの実行をＣＰＵ１０１に対して指示する。
【０１１４】
さらに、ＣＰＵ制御部１４１は、図３に示すように、解析対象プログラムの実行中にＣＰＵ１０１に対して割り込みを発生させ、実行中の関数を示す実行関数情報と、解析対象プログラムの実行中におけるＣＰＵ１０１の第１動作周波数とを対応させて取得する。そして、ＣＰＵ制御部１４１は、取得した情報からサンプリング情報１３１を作成し、記憶部１ａ等に記憶する。その後、情報処理装置１の情報解析部１４２は、作成されたサンプリング情報１３１に基づき、第１制限値の設定によって第１動作周波数が制限されているか否かを示す制限情報１３４を、実行関数情報と対応させて記憶装置に出力する。
【０１１５】
これにより、情報処理装置１は、解析対象プログラムの実行中において、サンプリング間隔を短くすることなく、消費電力が所定の閾値よりも大きい関数を特定することを可能とする。また、情報処理装置１は、サンプリングされた情報の情報量を抑制することが可能になる。
【０１１６】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１１７】
（付記１）
検証用プログラムの実行に伴う消費電力の第１制限値をＣＰＵに対して設定する設定部と、
前記検証用プログラムの実行を前記ＣＰＵに対して指示する実行指示部と、
前記検証用プログラムの実行中に前記ＣＰＵに対して割り込みを発生させ、実行中の関数を示す実行関数情報と、前記検証用プログラムの実行中における前記ＣＰＵの第１動作周波数とを対応させて取得する取得部と、
前記設定部に対する前記第１制限値の設定によって前記第１動作周波数が制限されているか否かを示す制限情報を、前記実行関数情報と対応させて記憶装置に出力する出力部と、を有する、
ことを特徴とする情報処理装置。
【０１１８】
（付記２）
付記１において、さらに、
前記取得部が取得した前記第１動作周波数に基づき、前記検証用の実行中に前記消費電力が前記第１制限値に到達したか否かを判定する判定部を有し、
前記出力部は、前記消費電力が前記第１制限値に到達したか否かを示す情報を、前記制限情報として出力する、
ことを特徴とする情報処理装置。
【０１１９】
（付記３）
付記２において、
前記判定部は、前記取得部が取得した前記第１動作周波数と、前記消費電力が前記第１制限値に到達しなかった場合における、前記検証用プログラムを実行する際の前記ＣＰＵの第２動作周波数とを比較し、前記第１動作周波数が前記第２動作周波数を下回る場合、前記検証用プログラムの実行中に前記消費電力が前記第１制限値に到達したと判定し、前記第１動作周波数が前記第２動作周波数を下回らない場合、前記検証用プログラムの実行中に前記消費電力が前記第１制限値を到達しなかったと判定する、
ことを特徴とする情報処理装置。
【０１２０】
（付記４）
付記１において、
前記取得部は、前記ＣＰＵからの割り込み要求があったことに応じて、前記実行関数情報及び前記第１動作周波数の取得を行う、
ことを特徴とする情報処理装置。
【０１２１】
（付記５）
付記４において、
前記ＣＰＵは、一定間隔毎に前記取得部に対して割り込みを発生させる、
ことを特徴とする情報処理装置。
【０１２２】
（付記６）
付記２において、
前記出力部は、前記検証用プログラムの実行中に前記消費電力が前記第１制限値に到達したと判定された場合に、前記消費電力が前記第１制限値に到達したことを示す情報を、前記制限情報として出力する、
ことを特徴とする情報処理装置。
【０１２３】
（付記７）
付記３において、
前記設定部は、前記第１制限値が設定された際に実行された前記検証用プログラムの実行の終了後、前記第１制限値よりも大きい第２制限値を前記ＣＰＵに対して設定し、
前記判定部は、前記第２制限値が設定された際に実行された前記検証用プログラムの実行中に、前記第１動作周波数が前記第２動作周波数を下回ると判定された場合、前記検証用プログラムの実行中に前記消費電力が前記第２制限値に到達したと判定し、前記第１動作周波数が前記第２動作周波数を下回らないと判定された場合、前記検証用プログラムの実行中に前記消費電力が前記第２制限値に到達していないと判定し、
前記出力部は、前記消費電力が前記第２制限値に到達したか否かを示す情報を、前記制限情報として出力する、
ことを特徴とする情報処理装置。
【０１２４】
（付記８）
付記１において、
前記取得部は、
前記検証用プログラムを実行中に、前記ＣＰＵの第１動作レベルを取得し、
前記ＣＰＵの動作レベルと前記ＣＰＵの動作周波数とを対応させた対応情報を参照し、取得した前記第１動作レベルに対応する動作周波数を前記第１動作周波数として取得する、
ことを特徴とする情報処理装置。
【０１２５】
（付記９）
コンピュータに、
検証用プログラムの実行に伴う消費電力の第１制限値をＣＰＵに対して設定し、
前記検証用プログラムの実行を前記ＣＰＵに対して指示し、
前記検証用プログラムの実行中に前記ＣＰＵに対する割り込みを発生させ、実行中の関数を示す実行関数情報と、前記検証用プログラムの実行中における前記ＣＰＵの第１動作周波数とを対応させて取得し、
前記設定部に対する前記第１制限値の設定によって前記第１動作周波数が制限されているか否かを示す制限情報を、前記実行関数情報と対応させて記憶装置に出力する、
ことを特徴とする動作状況収集プログラム。
【０１２６】
（付記１０）
検証用プログラムの実行に伴う消費電力の第１制限値をＣＰＵに対して設定し、
前記検証用プログラムの実行を前記ＣＰＵに対して指示し、
前記検証用プログラムの実行中に前記ＣＰＵに対する割り込みを発生させ、実行中の関数を示す実行関数情報と、前記検証用プログラムの実行中における前記ＣＰＵの第１動作周波数とを対応させて取得し、
前記設定部に対する前記第１制限値の設定によって前記第１動作周波数が制限されているか否かを示す制限情報を、前記実行関数情報と対応させて記憶装置に出力する、
ことを特徴とする動作状況収集方法。
【符号の説明】
【０１２７】
１：情報処理装置            １０１：ＣＰＵ
１１１：プログラム実行部    １３１：サンプリング情報
１４１：ＣＰＵ制御部        １４２：情報解析部
【図１】
0006631374.tif 000002
【図２】
0006631374.tif 000003
【図３】
0006631374.tif 000004
【図４】
0006631374.tif 000005
【図５】
0006631374.tif 000006
【図６】
0006631374.tif 000007
【図７】
0006631374.tif 000008
【図８】
0006631374.tif 000009
【図９】
0006631374.tif 000010
【図１０】
0006631374.tif 000011
【図１１】
0006631374.tif 000012
【図１２】
0006631374.tif 000013
【図１３】
0006631374.tif 000014
【図１４】
0006631374.tif 000015
【図１５】
0006631374.tif 000016
【図１６】
0006631374.tif 000017
【図１７】
0006631374.tif 000018
【図１８】
0006631374.tif 000019
【図１９】
0006631374.tif 000020
【図２０】
0006631374.tif 000021
【図２１】
0006631374.tif 000022
【図２２】
0006631374.tif 000023