(57)【特許請求の範囲】
【請求項１】
第１時間間隔毎に出力される前記第１時間間隔毎の消費電力量を、前記第１時間間隔よりも短い第２時間間隔に対応する複数の区間に配分し、前記複数の区間のうち、前記第１時間間隔よりも実行時間が短い所定のプログラムが実行された１以上の区間に配分された値の合計値を算出し、算出した前記合計値を前記所定のプログラムの実行に要した消費電力量として特定する電力推定部を有する、
ことを特徴とする情報処理装置。
【請求項２】
請求項１において、
前記電力推定部は、連続する複数の前記第１時間間隔毎の消費電力量を加算した値を、前記第１時間間隔よりも短い第２時間間隔毎に配分し、前記第２時間間隔のうち、前記所定のプログラムが実行された第２時間間隔に配分された値を、前記所定のプログラムの実行に要した消費電力量として算出する、
ことを特徴とする情報処理装置。
【請求項３】
請求項２において、
前記電力推定部は、連続する複数の前記第１時間間隔毎の消費電力量にそれぞれ所定の重み付け値を乗算し、前記乗算して算出したそれぞれの値を加算し、前記加算して算出した値を前記第２時間間隔毎に配分する、
ことを特徴とする情報処理装置。
【請求項４】
請求項１において、
前記電力推定部は、
前記第２時間間隔毎に出力される前記第２時間間隔毎の第２イベントの発生回数を取得し、
前記第２時間間隔毎に配分される消費電力量の比が、前記第２時間間隔毎の第２イベントの発生回数の比と等しくなるように、前記第１時間間隔毎の消費電力量の配分を行う、
ことを特徴とする情報処理装置。
【請求項５】
請求項１において、さらに、
前記第１時間間隔毎に通知を行う通知部と、
前記通知の受信に応じて、前記第１時間間隔毎の消費電力量と、前記第１時間間隔内に発生した第１イベントの発生時刻を取得する情報取得部と、を有する、
ことを特徴とする情報処理装置。
【請求項６】
コンピュータに、
第１時間間隔毎に出力される前記第１時間間隔毎の消費電力量を、前記第１時間間隔よりも短い第２時間間隔に対応する複数の区間に配分し、前記複数の区間のうち、前記第１時間間隔よりも実行時間が短い所定のプログラムが実行された１以上の区間に配分された値の合計値を算出し、算出した前記合計値を前記所定のプログラムの実行に要した消費電力量として特定する、
処理を実行させることを特徴とする電力推定プログラム。
【請求項７】
第１時間間隔毎に出力される前記第１時間間隔毎の消費電力量を、前記第１時間間隔よりも短い第２時間間隔に対応する複数の区間に配分し、前記複数の区間のうち、前記第１時間間隔よりも実行時間が短い所定のプログラムが実行された１以上の区間に配分された値の合計値を算出し、算出した前記合計値を前記所定のプログラムの実行に要した消費電力量として特定する、
ことを特徴とする電力推定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、電力推定プログラム及び電力推定方法に関する。
【背景技術】
【０００２】
例えば、稼働中の業務システムにおいて、利用者に対するサービスの提供等を行う事業者（以下、単に事業者とも呼ぶ）は、業務システムで動作しているプログラムや業務システムで動作させる予定のプログラムに対して電力プロファイルを行う。
【０００３】
電力プロファイルは、プログラムの実行時における消費電力量の特性を解析するものである。事業者は、電力プロファイルを行うことにより、例えば、プログラム（以下、解析対象プログラムとも呼ぶ）に含まれる関数毎の消費電力量を取得することが可能になる。そのため、事業者は、これにより、解析対象プログラムに含まれる関数のうちの消費電力量が大きい関数を、性能改善のために改修すべき箇所として特定することが可能になる（例えば、特許文献１乃至３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１９１９３７号公報
【特許文献２】特開２０１２−０３９３７５号公報
【特許文献３】特開２０１３−２３８４２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のような電力プロファイルを行う場合、事業者は、例えば、電力計測器（例えば、外付けの電力計測器）によって、解析対象プログラムの実行に伴うＣＰＵ（Ｃｅｎｔｒａｌ  Ｃｏｍｐｕｔｉｎｇ  Ｕｎｉｔ）の消費電力量を取得する。そして、事業者は、取得した消費電力量と、解析対象プログラムに含まれる各関数の実行履歴情報（以下、トレース情報とも呼ぶ）とを突き合わせる。これにより、事業者は、解析対象プログラムに含まれる関数毎の消費電力量を取得することが可能になる。
【０００６】
しかしながら、事業者は、この場合、電力プロファイルを行うための電力計測器を用意する必要がある。また、トレース情報の情報量によっては、トレース情報と消費電力量との突合せを行うことによる処理負担が膨大になる場合がある。
【０００７】
これに対し、事業者は、上記のような電力プロファイルを行う際に、ＣＰＵに既に備わっている電力計測機能を利用する場合がある。この場合、事業者は、例えば、電力計測機能が計測した消費電力量と、ＣＰＵにおいて処理が行われている関数の情報とを所定時間間隔毎に取得して対応付けを行う。これにより、事業者は、上記のような電力計測器を用意することなく、電力プロファイルを行うことが可能になる。
【０００８】
しかしながら、解析対象プログラムに含まれる関数には、その処理時間が上記の電力計測機能による消費電力量の計測間隔よりも短いものが存在する場合がある。そのため、事業者は、電力計測機能による消費電力量の計測間隔よりも短い時間で処理が完了する関数については、精度の高い電力プロファイルを行うことができない。
【０００９】
そこで、一つの側面では、プログラム実行時における消費電力量の推定を行うことができる情報処理装置、電力推定プログラム及び電力推定方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
実施の形態の一つの態様によれば、第１時間間隔毎に出力される前記第１時間間隔毎の消費電力量と、前記第１時間間隔内に発生した第１イベントの発生時刻とに基づき、前記第１イベントの発生時の消費電力量を算出する電力推定部を有する。
【発明の効果】
【００１１】
一つの側面によれば、プログラム実行時における消費電力量の推定を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】情報処理装置１の全体構成を示す図である。
【図２】情報取得部１２１の処理の具体例を説明する図である。
【図３】情報取得部１２１の処理の具体例を説明する図である。
【図４】情報取得部１２１の処理の具体例を説明する図である。
【図５】情報取得部１２１の処理の具体例を説明する図である。
【図６】情報処理装置１のハードウエア構成を説明する図である。
【図７】情報処理装置１のハードウエア構成を説明する図である。
【図８】情報処理装置１のハードウエア構成を説明する図である。
【図９】ＣＰＵ１０１とプログラム１１０とが協働することにより実現される機能のブロック図である。
【図１０】第１の実施の形態における推定処理の概略を説明する図である。
【図１１】第１の実施の形態における推定処理の詳細を説明するフローチャートである。
【図１２】第１の実施の形態における推定処理の詳細を説明するフローチャートである。
【図１３】第１の実施の形態における推定処理の詳細を説明するフローチャートである。
【図１４】サンプリング情報１３１の具体例を説明する図である。
【図１５】Ｓ２３の処理を行った後の取得済サンプリング情報１３２の具体例を説明する図である。
【図１６】Ｓ２３の処理を６回行った場合の取得済サンプリング情報１３２を説明する図である。
【図１７】Ｓ２３の処理を６回行った場合の取得済サンプリング情報１３２を説明する図である。
【図１８】Ｓ２３の処理を６回行った場合の取得済サンプリング情報１３２を説明する図である。
【図１９】Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。
【図２０】Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。
【図２１】第２の実施の形態における推定処理を説明するフローチャートである。
【図２２】Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。
【図２３】Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。
【図２４】第３の実施の形態における推定処理を説明するフローチャートである。
【図２５】Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。
【図２６】Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。
【図２７】第４の実施の形態における推定処理を説明するフローチャートである。
【図２８】第４の実施の形態における推定処理を説明するフローチャートである。
【図２９】第４の実施の形態における情報処理装置１の構成を説明する図である。
【図３０】Ｓ２３の処理を６回行った場合の取得済サンプリング情報１３２を説明する図である。
【図３１】Ｓ２３の処理を６回行った場合の取得済サンプリング情報１３２を説明する図である。
【図３２】Ｓ２３の処理を６回行った場合の取得済サンプリング情報１３２を説明する図である。
【発明を実施するための形態】
【００１３】
［情報処理装置の構成］
図１は、情報処理装置１の全体構成を示す図である。図１に示す情報処理装置１（以下、コンピュータ１とも呼ぶ）は、ＣＰＵ１０１と、記憶媒体１ａとを有している。
【００１４】
図１に示す情報処理装置１は、ＣＰＵ１０１（ＣＰＵ１０１の一部であるプログラム実行部１１１）が実行する解析対象プログラムの電力プロファイルを行う。具体的に、図１に示す情報処理装置１において、ＣＰＵ１０１上で動作するソフトウエアであるカーネルＫＮの一部である情報取得部１２１は、ＣＰＵ１０１による解析対象プログラムの実行に応じて、その解析対象プログラムに含まれる関数毎の消費電力量を取得する。そして、情報取得部１２１は、取得した消費電力量をサンプリングデータ１３１（以下、サンプリング情報１３１とも呼ぶ）として記憶媒体１ａに記憶する。
【００１５】
その後、図１に示す情報処理装置１において、カーネルＫＮ上で動作するアプリケーションＡＰの一部である情報解析部１２２は、記憶媒体１ａに記憶されたサンプリング情報１３１に基づいて、電力プロファイルを行う。これにより、情報処理装置１は、事業者は、解析対象プログラムに含まれる関数毎の消費電力量を取得することが可能になる。
【００１６】
［情報取得部の処理の具体例］
次に、情報取得部１２１の処理の具体例について説明する。図２から図５は、情報取得部１２１の処理の具体例を説明する図である。
【００１７】
図２に示すＣＰＵ１０１は、プログラム実行部１１１の他に、ＣＰＵ１０１で動作する解析対象プログラムの実行情報であるトレース情報を取得するためのトレース情報２３１を出力するトレース出力部２１１を有する。また、ＣＰＵ１０１の外部には、解析対象プログラムの実行時におけるＣＰＵ１０１の消費電力量を計測するための電力計測器２０１が設けられている。
【００１８】
そして、図２に示す情報取得部１２１は、図２に示すように、例えば、情報解析部１２２が電力プロファイルを行う際に、電力計測器２０１が取得した消費電力量とトレース情報２３１との突合せを行い、サンプリング情報１３１の作成を行う。以下、サンプリング情報１３１の具体例について説明を行う。
【００１９】
図３は、サンプリング情報１３１の具体例を説明する図である。図３に示すサンプリング情報１３１は、サンプリング情報１３１に含まれる各情報を識別する「情報ＩＤ」と、ＣＰＵ１０１で実行されていたプロセスのＩＤを示す「プロセスＩＤ」とを項目として有する。また、図３に示すサンプリング情報１３１は、ＣＰＵ１０１で実行されていた命令の格納先を示す「命令アドレス」と、ＣＰＵ１０１における消費電力量を示す「電力値」と、サンプリング情報１３１に含まれる各情報の作成時刻を示す「時刻」とを項目として有する。
【００２０】
図３に示すサンプリング情報１３１において、「プロセスＩＤ」に設定された情報と、「命令アドレス」に設定された情報との組み合わせることにより、解析対象プログラムに含まれる各関数を特定することが可能になる。また、図３に示す例において、「電力値」に設定された情報の単位は、ジュール（Ｊ）である。
【００２１】
なお、図３に示すサンプリング情報１３１に含まれる情報のうち、「プロセスＩＤ」及び「命令アドレス」に設定された情報は、トレース情報２３１に含まれていた情報である。また、図３に示すサンプリング情報１３１に含まれる情報のうち、「電力値」に設定された情報は、電力計測器２０１から取得された情報である。
【００２２】
具体的に、図３に示すサンプリング情報１３１において、「ＩＤ」が「１」である情報には、「プロセスＩＤ」として「１２９８０」が設定され、「命令アドレス」として「０ｘ００４０４６０」が設定され、「電力値」として「２（Ｊ）」が設定されている。また、図３に示すサンプリング情報１３１において、「ＩＤ」が「１」である情報には、「時刻」として「１０：１０：００．００００００」が設定されている。
【００２３】
すなわち、「ＩＤ」が「１」である情報は、「時刻」が「１０：１０：００．００００００」であるときに、「プロセスＩＤ」が「１２９８０」であって「命令アドレス」が「０ｘ００４０４６０」である関数が実行されていたことを示している。また、「ＩＤ」が「１」である情報は、その時の消費電力量が「２（Ｊ）」であったことを示している。図３に含まれる他の情報については説明を省略する。
【００２４】
ここで、図２で説明した方法で解析対象プログラムの電力プロファイルを行う場合、電力プロファイルを行う作業者（以下、単に作業者とも呼ぶ）は、ＣＰＵ１０１の外部に設置する電力計測器２０１を用意する必要がある。そして、作業者は、サンプリング情報１３１の作成を行う際に、電力計測器２０１とＣＰＵ１０１（情報処理装置１）との間で時刻調整を行う必要がある。
【００２５】
また、作業者は、図２で説明した方法で解析対象プログラムの電力プロファイルを行う場合、サンプリング情報１３１を作成するために、電力計測器２０１が取得した消費電力量とトレース情報２３１との突合せを行う必要がある。そのため、トレース情報２３１の情報量によっては、サンプリング情報１３１を作成するために要する負荷や時間が大きくなる。
【００２６】
これに対し、作業者は、上記のような電力プロファイルを行う際に、ＣＰＵ１０１が有する電力計測機能を利用する場合がある。図４は、電力計測機能（以下、電力計測部１１３とも呼ぶ）を有するＣＰＵ１０１を利用する場合の情報取得部１２１の処理の具体例を説明する図である。
【００２７】
図４に示すＣＰＵ１０１は、プログラム実行部１１１及び電力計測部１１３の他に、割り込み通知部１１２（以下、単に通知部１１２とも呼ぶ）を有する。割り込み通知部１１２は、例えば、ＣＰＵ１０１が有するＰＭＣ（Ｐｅｒｆｏｒｍａｎｃｅ  Ｍｏｎｉｔｏｒｉｎｇ  Ｃｏｕｎｔｅｒ）の機能を利用するものである。
【００２８】
図４に示す例において、割り込み通知部１１２は、例えば、所定の時間間隔（例えば、１（ミリ秒）間隔）で情報取得部１２１に通知（割り込み通知）を行う。そして、割り込み通知部１１２から通知を受信した情報取得部１２１は、プログラム実行部１１１にアクセスすることにより、プログラム実行部１１１が現在実行している解析対象プログラムの動作情報（プロセスＩＤ及び命令アドレス）を取得する。さらに、情報取得部１２１は、この場合、電力計測部１１３にアクセスすることにより、ＣＰＵ１０１の現在の消費電力量を取得する。これにより、事業者は、図２で説明した外付けの電力計測器２０１を用いることなく、図３で説明したようなサンプリング情報１３１を作成することが可能になる。
【００２９】
しかしながら、プログラムに含まれる関数には、処理時間が電力計測部１１３の消費電力量の計測間隔よりも短いものが存在する場合がある。そのため、事業者は、図５に示すように、電力計測部１１３による消費電力量の計測間隔よりも短い時間で処理が完了する関数については、精度の高い電力プロファイルを行うことができない場合がある。
【００３０】
そこで、本実施の形態における情報処理装置１は、ある時間間隔（以下、第１時間間隔とも呼ぶ）毎に出力される第１時間間隔毎の消費電力量と、第１時間間隔内に発生したイベント（以下、第１イベントとも呼ぶ）の発生時刻とを取得する。そして、情報処理装置１は、取得した消費電力量と、第１イベントの発生時刻とに基づき、第１イベントの発生時における消費電力量を推定（算出）する。
【００３１】
すなわち、本実施の形態における情報処理装置１は、第１イベント（例えば、プログラムに含まれる関数の実行）が第１時間間隔よりも短い時間で完了するイベントであっても、第１イベントの発生に伴う消費電力量を推定することにより取得する。そのため、情報処理装置１は、第１イベントが第１時間間隔よりも短い時間で完了するイベントであるか否かに関わらず、第１イベントについての電力プロファイルを行うことが可能になる。
【００３２】
［情報処理装置のハードウエア構成］
次に、情報処理装置１のハードウエア構成について説明する。図６及び図７は、情報処理装置１のハードウエア構成を説明する図である。
【００３３】
情報処理装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体（ストレージ）１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００３４】
記憶媒体１０４は、記憶媒体１０４内のプログラム格納領域（図示しない）に、消費電力量の推定を行う処理（以下、推定処理または電力推定処理とも呼ぶ）を行うためのプログラム１１０（以下、推定プログラム１１０または電力推定プログラム１１０とも呼ぶ）を記憶する。
【００３５】
ＣＰＵ１０１は、図６に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働して推定処理を行う。
【００３６】
記憶媒体１０４は、例えば、推定処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。また、外部インターフェース１０３は、例えば、他の情報処理装置（例えば、物理マシンや仮想マシン）と通信を行う。なお、図１で説明した記憶媒体１ａは、記憶媒体１０４に対応するものであってよい。
【００３７】
次に、ＣＰＵ１０１が有する機能について説明を行う。図７は、ＣＰＵ１０１が有する機能のブロック図である。図７に示すＣＰＵ１０１は、図２等で説明したように、プログラム実行部１１１と、割り込み通知部１１２と、電力計測部１１３とを有する。また、図７に示すＣＰＵ１０１は、指標計測部１１４を有する。
【００３８】
指標計測部１１４は、第１時間間隔よりも短い時間間隔（以下、第２時間間隔とも呼ぶ）毎に出力される第２時間間隔毎のイベント（以下、第２イベントとも呼ぶ）の発生回数を取得する。第２イベントは、例えば、ＣＰＵ１０１のキャッシュメモリ（図示しない）において発生するキャッシュミスである。なお、指標計測部１１４は、例えば、ＣＰＵ１０１が有するＰＭＣの機能を利用するものであり、これによって、ＣＰＵ１０１のキャッシュメモリで発生したキャッシュミスの回数の計測を行うものであってよい。
【００３９】
[情報処理装置のソフトウエア構成]
次に、情報処理装置１のソフトウエア構成について説明する。図８は、ＣＰＵ１０１とプログラム１１０とが協働することにより実現される機能のブロック図である。ＣＰＵ１０１は、プログラム１１０と協働することにより、図４等で説明したように、情報取得部１２１と、情報解析部１２２として動作する。また、ＣＰＵ１０１は、プログラム１１０と協働することにより、電力推定部１２３として動作する。
【００４０】
また、図８に示すように、情報格納領域１３０には、サンプリング情報１３１と、取得済サンプリング情報１３２と、第１重み付け情報１３３と、第２重み付け情報１３４とが記憶されている。
【００４１】
電力推定部１２３は、第１時間間隔毎に出力される第１時間間隔毎の消費電力量と、第１時間間隔内に発生した第１イベントの発生時刻とに基づき、第１イベントの発生時の消費電力量を推定する。すなわち、電力推定部１２３は、情報取得部１２１が取得したサンプリング情報１３１に含まれる情報を参照することにより、第１イベントの発生時の消費電力量を算出する。
【００４２】
具体的に、電力推定部１２３は、例えば、第１時間間隔毎の消費電力量を第２時間間隔毎に配分し、第２時間間隔のうち、第１イベントの発生時刻が含まれる第２時間間隔に配分された値を、第１イベントの発生時の消費電力量として推定する。電力推定部１２３による処理の具体例については後述する。また、取得済サンプリング情報１３２、第１重み付け情報１３３及び第２重み付け情報１３４については後述する。
【００４３】
[第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図９は、第１の実施の形態における推定処理の概略を説明するフローチャートである。また、図１０は、第１の実施の形態における推定処理の概略を説明する図である。図１０を参照しながら、図９の推定処理について説明を行う。
【００４４】
情報処理装置１は、図９に示すように、第１時間間隔毎に出力される第１時間間隔毎の消費電力量を取得する（Ｓ１）。また、情報処理装置１は、第１時間間隔内に発生した第１イベントの発生時刻を取得する（Ｓ２）。具体的に、情報処理装置１は、情報格納領域１３０に記憶されたサンプリング情報１３１を取得することにより、第１時間間隔毎の消費電力量と、第１イベントの発生時刻の情報とを取得する。第１の実施の形態におけるサンプリング情報１３１の具体例については後述する。
【００４５】
その後、情報処理装置１は、図１０に示すように、Ｓ１で取得した消費電力量と、Ｓ２で取得した発生時刻とに基づき、第１イベントの発生時における消費電力量を算出する（Ｓ３）。
【００４６】
すなわち、第１イベント（例えば、プログラムに含まれる関数の実行）が完了するまでに要する時間が、ＣＰＵ１０１の電力計測部１１３がＣＰＵ１０１の消費電力量を計測することができる時間間隔（第１時間間隔）よりも短い時間である場合がある。この場合、情報処理装置１の情報取得部１２１及び情報解析部１２２は、第１イベントの発生に伴う消費電力量を取得することができず、第１イベントの発生に対応する電力プロファイルを精度高く行うことができない。
【００４７】
そこで、本実施の形態における情報処理装置１（電力推定部１２３）は、電力計測部１１３が出力した第１時間間隔毎の消費電力量に基づいて、第１イベントの発生に伴う消費電力量を算出する。具体的に、情報処理装置１は、例えば、第１時間間隔毎の消費電力量を第２時間間隔毎に配分し、第２時間間隔のうち、第１イベントの発生時刻が含まれる第２時間間隔に配分された値を、第１イベントの発生時の消費電力量として算出する。
【００４８】
これにより、情報処理装置１（情報解析部１２２）は、第１イベントが第１時間間隔よりも短い時間で完了するイベントであっても、推定された第１イベントの発生時の消費電力量により、第１イベントについての電力プロファイルを精度高く行うことが可能になる。
【００４９】
[第１の実施の形態の詳細]
次に、第１の実施の形態の詳細について説明する。図１１から図１３は、第１の実施の形態における推定処理の詳細を説明するフローチャートである。また、図１４から図２０は、第１の実施の形態における推定処理の詳細を説明する図である。図１４から図２０を参照しながら、図１１から図１３の推定処理を説明する。
【００５０】
初めに、情報取得部１２１は、図１１に示すように、割り込み通知部１１２から割り込み通知を受信するまで待機する（Ｓ１１のＮＯ）。すなわち、ＣＰＵ１０１がＰＭＣを有する場合、ＣＰＵ１０１（割り込み通知部１１２）は、所定時間間隔（例えば、１（ミリ秒）間隔や１００（マイクロ秒）間隔）で情報取得部１２１に割り込み通知を行うことができる。そのため、情報取得部１２１は、割り込み通知部１１２から割り込み通知を受信したことに応じて、Ｓ１２以降の処理を行う。
【００５１】
そして、割り込み通知を受信した場合（Ｓ１１のＹＥＳ）、情報取得部１２１は、例えば、プログラム実行部１１１にアクセスし、プログラム実行部１１１が現在動作させている解析対象プログラムの動作情報を取得する（Ｓ１２）。プログラムの動作情報は、例えば、解析対象プログラムに含まれる関数を特定するための情報である。具体的に、解析対象プログラムの動作情報は、例えば、プロセスＩＤ及び命令アドレスである。すなわち、ＣＰＵ１０１が有する機能等によっては、ＣＰＵ１０１の電力計測部１１３は、計測した情報（ＣＰＵ１０１の消費電力量）を情報取得部１２１に通知できない場合がある。そのため、情報取得部１２１は、例えば、割り込み通知部１１２から割り込み通知を受信したことに応じて、電力計測部１１３にアクセスし、ＣＰＵ１０１の消費電力量を取得する。
【００５２】
その後、情報取得部１２１は、Ｓ１２で取得した動作情報と、Ｓ１３で取得した電力値とを対応付けてサンプリング情報１３１を作成する（Ｓ１４）。そして、情報取得部１２１は、作成したサンプリング情報１３１を情報格納領域１３０に記憶する（Ｓ１４）。これにより、電力推定部１２３は、後述するように、第１イベントの発生に伴う消費電力量を推定することが可能になる。以下、本実施の形態におけるサンプリング情報１３１の具体例について説明を行う。
【００５３】
[サンプリング情報１３１の具体例]
図１４は、サンプリング情報１３１の具体例を説明する図である。図１４に示すサンプリング情報１３１は、図３で説明したサンプリング情報１３１が有する項目に加え、「電力値」に設定された値を配分した結果を設定する「配分値」を項目として有している。
【００５４】
なお、以下、割り込み通知部１１２は、情報取得部１２１に対して２００（マイクロ秒）毎に割り込み通知を行うものとして説明を行う。また、電力計測部１１３は、１（ミリ秒）毎にＣＰＵ１０１の消費電力量を計測するものとして説明を行う。すなわち、以下、第１時間間隔が１（ミリ秒）であり、第２時間間隔が２００（マイクロ秒）であるものとして説明を行う。
【００５５】
具体的に、図１４に示すサンプリング情報１３１において、「ＩＤ」が「１」である情報には、「プロセスＩＤ」として「１２９８０」が設定され、「命令アドレス」として「０ｘ００４０４６０」が設定され、「電力値」として「８（Ｊ）」が設定されている。また、図１４に示すサンプリング情報１３１において、「ＩＤ」が「１」である情報には、「配分値」として、初期値である「０」が設定され、「時刻」として「１０：１０：００．００００００」が設定されている。なお、図１４に示す例において、「配分値」に設定される初期値は、「０」以外の情報であってもよい。
【００５６】
ここで、情報取得部１２１は、割り込み通知部１１２から送信された割り込み通知を受信する毎に、サンプリング情報１３１を情報格納領域１３０に記憶する（Ｓ１４）。そのため、図１４に示すサンプリング情報１３１に含まれる「時刻」には、２００（マイクロ秒）毎の時刻が記憶されている。
【００５７】
これに対し、電力計測部１１３は、１（ミリ秒）毎にＣＰＵ１０１の消費電力量の計測を行う。すなわち、図１４に示す例において、「時刻」が「１０：１０：００．００００００」から「１０：１０：００．０００８００」までの間、電力計測部１１３によるＣＰＵ１０１の消費電力量の計測結果は更新されない。そのため、図１４に示すサンプリング情報１３１に含まれる「電力値」に設定された情報のうち、「情報ＩＤ」が「１」から「５」に対応する情報には、全て同じ値（「８（Ｊ）」）が設定されている。図１４に含まれる他の情報については説明を省略する。
【００５８】
図１１に戻り、情報取得部１２１は、予め設定等されたサンプリング情報１３１の測定時間が終了したか否かについて判定する（Ｓ１５）。そして、サンプリング情報１３１の測定時間が終了していないと判定した場合（Ｓ１５のＮＯ）、情報取得部１２１は、Ｓ１１以降の処理を繰り返し実行する。
【００５９】
一方、サンプリング情報１３１の測定時間が終了したと判定した場合（Ｓ１５のＹＥＳ）、電力推定部１２３は、図１２に示すように、電力推定タイミングまで待機する（Ｓ２１のＮＯ）。電力推定タイミングは、例えば、作業者によって情報処理装置１に予め設定されたタイミングであってよい。また、電力推定タイミングは、例えば、サンプリング情報１３１の測定時間が終了した直後のタイミングであってもよい。
【００６０】
その後、電力推定タイミングになった場合（Ｓ２１のＹＥＳ）、電力推定部１２３は、情報格納領域１３０に記憶したサンプリング情報１３１から、情報を１組取得する（Ｓ２２）。具体的に、電力推定部１２３は、例えば、図１４で説明したサンプリング情報１３１に含まれる情報のうち、１行分の情報を取得する。
【００６１】
そして、電力推定部１２３は、Ｓ２２で取得したサンプリング情報１３１を取得済サンプリング情報１３２として情報格納領域１３０に記憶する（Ｓ２３）。以下、Ｓ２３の処理を行った後の取得済サンプリング情報１３２の具体例について説明する。
【００６２】
[取得済サンプリング情報１３２の具体例（１）]
図１５は、Ｓ２３の処理を行った後の取得済サンプリング情報１３２の具体例を説明する図である。図１５に示す取得済サンプリング情報１３２は、情報格納領域１３０に記憶されたサンプリング情報１３１を取得した情報である。そのため、図１５に示す取得済サンプリング情報１３２は、図１４で説明したサンプリング情報１３１と同じ項目を有している。具体的に、図１５に示す取得済サンプリング情報１３２は、図１４で説明したサンプリング情報１３１のうち、「情報ＩＤ」が「１」である情報と同じ情報を含んでいる。
【００６３】
図１２に戻り、電力推定部１２３は、Ｓ２２で取得した情報の「電力値」に設定された情報が、前回取得した情報の「電力値」に設定された情報と異なるか否かを判定する（Ｓ２４）。そして、「電力値」に設定された情報が異なっている場合（Ｓ２４のＹＥＳ）、電力推定部１２３は、取得済サンプリング情報１３２の「配分値」に設定すべき情報の推定を行い、取得済サンプリング情報１３２に含まれる情報の更新を行う（Ｓ２５）。すなわち、電力推定部１２３は、取得済サンプリング情報１３２の「配分値」に、取得済サンプリング情報１３２に情報が含まれる各関数の実行に伴う消費電力量の推定結果を示す情報を設定する。
【００６４】
一方、Ｓ２３で取得した情報の「電力値」に設定された情報が、前回取得した情報の「電力値」に設定された情報と異なっていない場合（Ｓ２４のＮＯ）、電力推定部１２３は、Ｓ２５の処理を実行しない。Ｓ２５の処理の詳細については後述する。
【００６５】
具体的に、図１５に示す取得済サンプリング情報１３２は、「情報ＩＤ」が「１」である情報のみを含んでいるため、前回取得した情報が含まれていない。そのため、この場合、電力推定部１２３は、Ｓ２５の処理を実行しない（Ｓ２４のＮＯ）。
【００６６】
そして、情報格納領域１３０に記憶された全てのサンプリング情報１３１の取得が完了した場合（Ｓ２６のＹＥＳ）、電力推定部１２３は、推定処理を終了する。一方、情報格納領域１３０に記憶された全てのサンプリング情報１３１の取得が完了していない場合（Ｓ２６のＮＯ）、電力推定部１２３は、Ｓ２２以降の処理を繰り返し実行する。具体的に、図１５に示す例において、図１４に示すサンプリング情報１３１の全ての取得が完了していない。そのため、電力推定部１２３は、Ｓ２２以降の処理を実行する。
【００６７】
[取得済サンプリング情報１３２の具体例（２）]
次に、電力推定部１２３がＳ２２からＳ２６の処理を５回繰り返した後の処理（６回目の処理）について説明を行う。
【００６８】
図１６から図１８は、Ｓ２３の処理を６回行った場合の取得済サンプリング情報１３２を説明する図である。具体的に、図１６に示す取得済サンプリング情報１３２には、図１４で説明したサンプリング情報１３１のうち、「情報ＩＤ」が「１」から「６」までに対応する情報が含まれる。
【００６９】
ここで、図１６に示す取得済サンプリング情報１３２において、「情報ＩＤ」が「６」である情報に対応する「電力値」には、今まで「電力値」に設定されていた値以外の値が設定されている。すなわち、Ｓ２２で取得した情報（「情報ＩＤ」が「６」である情報）の「電力値」に設定された情報（「２３（Ｊ）」）は、前回取得した情報（「情報ＩＤ」が「５」である情報）の「電力値」に設定された情報（「８（Ｊ）」）と異なる（Ｓ２４のＹＥＳ）。そのため、電力推定部１２３は、この場合、Ｓ２５の処理を実行する。以下、Ｓ２５の処理の詳細について説明を行う。
【００７０】
[Ｓ２５の処理の詳細]
電力推定部１２３は、図１３に示すように、前回取得した情報の「電力値」に設定された情報に対する今回取得した情報の「電力値」に設定された情報の変化量を算出する（Ｓ３１）。
【００７１】
具体的に、図１６に示す取得済サンプリング情報１３２において、「情報ＩＤ」が「５」である情報の「電力値」には「８（Ｊ）」が設定されており、「情報ＩＤ」が「６」である情報の「電力値」には「２３（Ｊ）」が設定されている。そのため、電力推定部１２３は、この場合、「電力値」に設定された情報の変化量として「１５（Ｊ）」を算出する。
【００７２】
次に、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２の数を取得する（Ｓ３２）。なお、「電力値」に設定された値が変化した取得済サンプリング情報１３２には、電力推定部１２３が最初に取得した情報（図１６に示す例においては「情報ＩＤ」が「１」である情報）を含むものとする。
【００７３】
具体的に、図１６に示す取得済サンプリング情報１３２において、「電力値」に設定された値が前回変化した情報は、「情報ＩＤ」が「１」である情報であり、「電力値」に設定された値が今回変化した情報は、「情報ＩＤ」が「６」である情報である。そのため、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２は、「情報ＩＤ」が「２」から「６」である情報が該当する。したがって、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２の数として「５」を取得する。
【００７４】
なお、情報取得部１２１によるサンプリング情報１３１の作成間隔が等しい場合、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの時間を、サンプリング情報１３１の作成間隔で除算してもよい。
【００７５】
具体的に、図１６に示す例において、「情報ＩＤ」が「１」である情報の「時刻」である「１０：１０：００．００００００」から「情報ＩＤ」が「６」である情報の「時刻」である「１０：１０：１０：０００１００」までの時間は、１（ミリ秒）である。そして、図１６に示す例において、サンプリング情報１３１の作成間隔は、２００（マイクロ秒）である。そのため、電力推定部１２３は、１（ミリ秒）を２００（マイクロ秒）で除算することにより、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２の数である「５」を算出してもよい。
【００７６】
続いて、電力推定部１２３は、Ｓ３１で算出した値を、Ｓ３２で取得した数で除算する（Ｓ３３）。具体的に、図１６に示す例において、電力推定部１２３は、Ｓ３１で算出した「１５（Ｊ）」を、Ｓ３２で取得した「５」で除算した結果である「３（Ｊ）」を取得する。
【００７７】
さらに、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでに取得された取得済サンプリング情報１３２であって、「配分値」に設定された値が更新されていない情報のうちの先頭の情報を特定する。そして、電力推定部１２３は、特定した情報の「配分値」に設定された値を、Ｓ３３で算出した値に更新する（Ｓ３４）。
【００７８】
具体的に、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでに取得された取得済サンプリング情報１３２は、「情報ＩＤ」が「２」から「６」である情報である。そして、これらの情報のうち、取得済サンプリング情報１３２の「配分値」に設定された値が更新されていない情報のうちの先頭の情報は、「情報ＩＤ」が「２」である情報である。そのため、電力推定部１２３は、図１７の下線部分に示すように、「情報ＩＤ」が「２」である情報の「配分値」に設定された情報を「３（Ｊ）」に更新する。
【００７９】
そして、「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得された取得済サンプリング情報１３２の「配分値」に設定された情報が全て更新済である場合（Ｓ３５のＹＥＳ）、電力推定部１２３は、Ｓ２５の処理を終了する。一方、「配分値」に設定された情報の全てが更新済でない場合（Ｓ３５のＮＯ）は、Ｓ３４以降の処理を繰り返し実行する。これにより、電力推定部１２３は、図１８の下線部分に示すように、「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得された取得済サンプリング情報１３２の「配分値」に設定された情報の更新を行うことが可能になる。
【００８０】
[取得済サンプリング情報１３２の具体例（３）]
次に、電力推定部１２３がＳ２２からＳ２６の処理を１０回繰り返した後の処理（１１回目の処理）について説明を行う。
【００８１】
図１９及び図２０は、Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。図１９に示す取得済サンプリング情報１３２は、図１４で説明したサンプリング情報１３１のうち、「情報ＩＤ」が「１」から「１１」までに対応する情報が含まれる。
【００８２】
ここで、図１９に示す取得済サンプリング情報１３２において、「情報ＩＤ」が「１１」である情報の「電力値」には、「情報ＩＤ」が「１０」である情報の「電力値」に設定された情報である「２３（Ｊ）」と異なる情報である「２８（Ｊ）」が設定されている。
【００８３】
そのため、電力推定部１２３は、この場合、「電力値」に設定された情報の変化量として「５（Ｊ）」を算出する（Ｓ３１）。また、電力推定部１２３は、取得した情報の「電力値」に設定された情報の変化についての判定を前回行ってから今回行うまでの間に、取得した取得済サンプリング情報の数として「５」を取得する（Ｓ３２）そして、電力推定部１２３は、Ｓ３１で算出した値である「５（Ｊ）」を、Ｓ３２で取得した値である「５」で除算することにより、「１（Ｊ）」を算出する（Ｓ３３）。
【００８４】
続いて、電力推定部１２３は、図２０の下線部分に示すように、「情報ＩＤ」が「７」から「１１」である情報の「配分値」に、Ｓ３３で取得した「１」を先頭から順に設定する（Ｓ３４、Ｓ３５）。
【００８５】
このように、本実施の形態における情報処理装置１は、第１時間間隔毎に出力される第１時間間隔毎の消費電力量と、第１時間間隔内に発生した第１イベントの発生時刻とに基づき、第１イベントの発生時の消費電力量を推定する電力推定部１２３を有する。
【００８６】
すなわち、本実施の形態における情報処理装置１は、第１イベント（例えば、プログラムに含まれる関数の実行）が第１時間間隔よりも短い時間で完了するイベントであっても、第１イベントの発生に伴う消費電力量を推定することにより取得する。そのため、情報処理装置１は、第１イベントが第１時間間隔よりも短い時間で完了するイベントであるか否かに関わらず、第１イベントについての電力プロファイルを精度高く行うことが可能になる。
【００８７】
[第２の実施の形態]
次に、第２の実施の形態について説明する。図２１は、第２の実施の形態における推定処理を説明するフローチャートである。また、図２２及び図２３は、第２の実施の形態における推定処理を説明する図である。具体的に、図２２及び図２３は、Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。図２２及び図２３を参照しながら、図２１の推定処理を説明する。
【００８８】
第２の実施の形態における推定処理は、第１の実施の形態と異なり、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した際の状態を示す情報のみでなく、前々回変化した際の状態を示す情報についても考慮する。すなわち、第２の実施の形態における電力推定部１２３は、連続する複数の第１時間間隔毎の消費電力量に基づき、サンプリング情報１３１に情報が含まれる各関数の実行に伴う消費電力量の推定を行う。これにより、電力推定部１２３は、消費電力量の推定をより精度高く行うことが可能になる。なお、第２の実施の形態における推定処理は、第１の実施の形態と比較して、Ｓ２５の処理のみが異なる。そのため、以下、第２の実施の形態におけるＳ２５の処理について説明を行う。
【００８９】
[第２の実施の形態におけるＳ２５の処理の詳細]
電力推定部１２３は、図２１に示すように、取得済サンプリング情報１３２に含まれる情報のうち、「電力値」に設定された値が前回変化する前に「電力値」に設定されていた値から、今回取得した情報の「電力値」に設定された値までの変化量を算出する（Ｓ４１）。
【００９０】
具体的に、例えば、図１９に示す取得済サンプリング情報１３２において、今回取得した情報（「情報ＩＤ」が「１１」である情報）の「電力値」は、「２８（Ｊ）」である。また、図１９に示す取得済サンプリング情報１３２において、前回変化した後の「電力値」に設定された値は、「２３（Ｊ）」（例えば、「情報ＩＤ」が「６」である情報）であり、前回変化する前（前々回変化した後）の「電力値」は、「８（Ｊ）」（例えば、「情報ＩＤ」が「１」である情報）である。そのため、電力推定部１２３は、この場合、「８（Ｊ）」に対する「２８（Ｊ）」の変化量である「２０（Ｊ）」を算出する。
【００９１】
次に、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前々回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２の数を取得する（Ｓ４２）。
【００９２】
具体的に、図１９に示す取得済サンプリング情報１３２において、「電力値」に設定された値が前々回変化した情報は、「情報ＩＤ」が「１」である情報であり、「電力値」に設定された値が今回変化した情報は、「情報ＩＤ」が「１１」である情報である。そのため、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２は、「情報ＩＤ」が「２」から「１１」である情報が該当する。したがって、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２の数として「１０」を取得する。
【００９３】
続いて、電力推定部１２３は、Ｓ４１で算出した値を、Ｓ４２で取得した数で除算する（Ｓ４３）。具体的に、図１９に示す例において、電力推定部１２３は、Ｓ４１で算出した「２０（Ｊ）」を、Ｓ４２で取得した「１０」で除算した結果である「２（Ｊ）」を取得する。
【００９４】
さらに、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでに取得された取得済サンプリング情報１３２であって、「配分値」に設定された値が更新されていない情報を特定する。そして、電力推定部１２３は、特定した情報のうち、先頭の情報の「配分値」に設定された値を、Ｓ４３で算出した値に更新する（Ｓ４４）。
【００９５】
具体的に、図１９に示す例において、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでに取得された取得済サンプリング情報１３２は、「情報ＩＤ」が「２」から「１１」である情報である。そして、その情報のうち、取得済サンプリング情報１３２の「配分値」に設定された値が更新されていない情報のうちの先頭の情報は、「情報ＩＤ」が「２」である情報である。そのため、電力推定部１２３は、図２２の下線部分に示すように、「情報ＩＤ」が「２」である情報の「配分値」に設定された情報を「２（Ｊ）」に更新する。なお、第２の実施の形態における電力推定部１２３は、図２２における「情報ＩＤ」が「２」である情報（図１９において「配分値」が既に「３（Ｊ）」に更新されている情報）のように、取得済サンプリング情報１３２に含まれる情報の「配分値」に設定された値を２回ずつ更新する。
【００９６】
そして、「電力値」に設定された値が前々回変化した後、今回変化するまでの間に取得された取得済サンプリング情報１３２の「配分値」に設定された情報が全て更新済である場合（Ｓ４５のＹＥＳ）、電力推定部１２３は、Ｓ２５の処理を終了する。一方、「配分値」に設定された情報の全てが更新済でない場合（Ｓ４５のＮＯ）は、Ｓ４４以降の処理を繰り返し実行する。これにより、電力推定部１２３は、図２３の下線部分に示すように、「電力値」に設定された値が前々回変化した後、今回変化するまでの間に取得された取得済サンプリング情報１３２の「配分値」に設定された情報の更新を行うことが可能になる。
【００９７】
[第３の実施の形態]
次に、第３の実施の形態について説明する。図２４は、第３の実施の形態における推定処理を説明するフローチャートである。また、図２５及び図２６は、第３の実施の形態における推定処理を説明する図である。具体的に、図２５及び図２６は、Ｓ２３の処理を１１回行った場合の取得済サンプリング情報１３２を説明する図である。図２５及び図２６を参照しながら、図２４の推定処理を説明する。
【００９８】
第３の実施の形態における推定処理は、第２の実施の形態と異なり、第１重み付け情報１３３と第２重み付け情報１３４とに基づき、取得済サンプリング情報１３２の「配分値」に設定する値を決定する。第１重み付け情報１３３及び第２重み付け情報１３４は、取得済サンプリング情報１３２の「配分値」に設定する値を決定する際に用いられる重み付け値を決定するための情報である。これにより、電力推定部１２３は、消費電力量の推定をより精度高く行うことが可能になる。なお、第３の実施の形態における推定処理は、第１の実施の形態及び第２の実施の形態と比較して、Ｓ２５の処理のみが異なる。そのため、以下、第３の実施の形態におけるＳ２５の処理の詳細について説明を行う。
【００９９】
[第３の実施の形態におけるＳ２５の処理の詳細]
電力推定部１２３は、図２４に示すように、取得済サンプリング情報１３２に含まれる情報のうちの前回変化する前の「電力値」に設定された値と、前回変化した後の「電力値」に設定された値との変化量（以下、第１変化量とも呼ぶ）を算出する。また、電力推定部１２３は、取得済サンプリング情報１３２に含まれる情報のうちの前回変化した後の「電力値」に設定された値と、今回取得した取得済サンプリング情報１３２の「電力値」に設定された値との変化量（以下、第２変化量とも呼ぶ）を算出する（Ｓ５１）。
【０１００】
具体的に、図１９に示す取得済サンプリング情報１３２において、今回取得した情報（「情報ＩＤ」が「１１」である情報）の「電力値」は、「２８（Ｊ）」である。また、図１９に示す取得済サンプリング情報１３２において、前回変化する前の「電力値」は、「８（Ｊ）」（例えば、「情報ＩＤ」が「１」である情報）であり、前回変化した後の「電力値」は、「２３（Ｊ）」（例えば、「情報ＩＤ」が「６」である情報）である。そのため、電力推定部１２３は、この場合、第１変化量として、「８（Ｊ）」に対する「２３（Ｊ）」の変化量である「１５（Ｊ）」を算出する。さらに、電力推定部１２３は、第２変化量として、「２３（Ｊ）」に対する「２８（Ｊ）」の変化量である「５（Ｊ）」を算出する。
【０１０１】
次に、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前々回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２の数を取得する（Ｓ５２）。
【０１０２】
具体的に、図１９に示す取得済サンプリング情報１３２において、「電力値」に設定された値が前々回変化した情報は、「情報ＩＤ」が「１」である情報であり、「電力値」に設定された値が今回変化した情報は、「情報ＩＤ」が「１１」である情報である。そのため、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２は、「情報ＩＤ」が「２」から「１１」である情報が該当する。したがって、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得した取得済サンプリング情報１３２の数として「１０」を取得する。
【０１０３】
続いて、電力推定部１２３は、Ｓ５１で算出した第１変化量及び第２変化量に対し、「２」を乗算し、Ｓ５２で取得した値で除算することにより、第１基準値及び第２基準値を算出する（Ｓ５３）。
【０１０４】
具体的に、図１９に示す例において、電力推定部１２３は、Ｓ５１で算出した第１変化量である「１５（Ｊ）」に「２」を乗算した値（「３０（Ｊ）」）を、Ｓ５２で取得した値（「１０」）で除算することにより、第１基準値として「３（Ｊ）」を算出する。また、図１９に示す例において、電力推定部１２３は、Ｓ５１で算出した第２変化量である「５（Ｊ）」に「２」を乗算した値（「１０（Ｊ）」）を、Ｓ５２で取得した値（「１０」）で除算することにより、第１基準値として「１（Ｊ）」を算出する。なお、第１変化量及び第２変化量がそれぞれ第１時間間隔（図１９に示す例では１（ミリ秒）間隔）に対応する値であるのに対し、Ｓ５２で取得した値は、第１時間間隔を２倍した時間間隔（図１９に示す例では２（ミリ秒）間隔）に対応する値である。そのため、電力推定部１２３は、Ｓ５３の処理において、第１変化量及び第２変化量に「２」を乗算してからＳ５２で取得した値を除算する。
【０１０５】
その後、電力推定部１２３は、「電力値」に設定された値が前々回変化した後、今回変化するまでの取得済サンプリング情報１３２であって、「配分値」に設定された値が更新されていない情報のうち、先頭の情報を特定する。そして、電力推定部１２３は、情報格納領域１３０に記憶された第１重み付け情報１３３及び第２重み付け情報１３４に基づき、特定した情報の「配分値」に設定された値に対応する重み付け値を算出する（Ｓ５４）。以下、第１重み付け情報１３３及び第２重み付け情報１３４について説明を行う。
【０１０６】
第１重み付け情報１３３は、取得済サンプリング情報１３２の「配分値」に設定する値を決定する際に、第１基準値に乗算すべき重み付け値（以下、第１重み付け値とも呼ぶ）を決定するための情報である。具体的に、第１重み付け情報１３３は、例えば、以下の式（１）からなるものであってよい。なお、以下、「電力値」に設定された値が前々回変化した後、今回変化するまでの取得済サンプリング情報１３２の数を、単純に「サンプル数」とも表記する。また、「電力値」に設定された値が前々回変化した後、今回変化するまでの取得済サンプリング情報１３２に含まれる各情報の先頭からの順番を、単純に「順番」とも表記する。
【０１０７】
第１重み付け値＝１−（１／（サンプル数−１））＊（順番−１）  ・・・  式（１）
すなわち、図１９に示す取得済サンプリング情報１３２において、「サンプル数」は、「１０」（「情報ＩＤ」が「２」から「１１」である情報）である。そのため、例えば、「情報ＩＤ」が「２」である情報（「順番」が「１」である情報）の場合、第１重み付け値は「１」になる。また、例えば、「情報ＩＤ」が「４」である情報（「順番」が「３」である情報）の場合、第１重み付け値は「０．７８（有効数字２桁）」になる。
【０１０８】
次に、第２重み付け情報１３４について説明を行う。第２重み付け情報１３４は、取得済サンプリング情報１３２の「配分値」に設定する値を決定する際に、第２基準値に乗算すべき重み付け値（以下、第２重み付け値とも呼ぶ）を決定するための情報である。具体的に、第２重み付け情報１３４は、例えば、以下の式（２）からなるものであってよい。
【０１０９】
第２重み付け値＝（１／（サンプル数−１））＊（順番−１）  ・・・  式（２）
すなわち、図１９に示す取得済サンプリング情報１３２において、「サンプル数」は、「１０」である。そのため、例えば、「情報ＩＤ」が「２」である情報（「順番」が「１」である情報）の場合、第１重み付け値は「０」になる。また、例えば、「情報ＩＤ」が「５」である情報（「順番」が「４」である情報）の場合、第２重み付け値は「０．３３（有効数字２桁）」になる。
【０１１０】
図２４に戻り、電力推定部１２３は、第１基準量に第１重み付け値を乗算した値と、第２基準値に第２重み付け値を乗算した値とを加算する（Ｓ５５）。具体的に、図１９に示す例において、電力推定部１２３は、第１基準値である「３（Ｊ）」と第１重み付け値である「１」とを乗算した値と、第２基準値である「１（Ｊ）」と第２重み付け値である「０」とを乗算した値とを加算した値である「３（Ｊ）」を算出する。
【０１１１】
その後、電力推定部１２３は、「電力値」に設定された値が前々回変化した後、今回変化するまでの取得済サンプリング情報１３２であって、「配分値」に設定された値が更新されていない情報のうちの先頭の情報を特定する。そして、電力推定部１２３は、特定した情報の「配分値」に設定された値をＳ５５で算出した値に更新する（Ｓ５６）。具体的に、図１９に示す例において、電力推定部１２３は、図２５の下線部分に示すように、「情報ＩＤ」が「２」である情報の「配分値」を、Ｓ５５で算出した「３（Ｊ）」に更新する。
【０１１２】
そして、「電力値」に設定された値が前々回変化した後、今回変化するまでの間に取得された取得済サンプリング情報１３２の「配分値」に設定された情報が全て更新済である場合（Ｓ５７のＹＥＳ）、電力推定部１２３は、Ｓ２５の処理を終了する。一方、「配分値」に設定された情報の全てが更新済でない場合（Ｓ５７のＮＯ）は、Ｓ５４以降の処理を繰り返し実行する。
【０１１３】
これにより、電力推定部１２３は、図２６の下線部分に示すように、「電力値」に設定された値が前々回変化した後、今回変化するまでの間に取得された取得済サンプリング情報１３２の「配分値」に設定された情報の更新を行うことが可能になる。なお、図２６に示す取得済サンプリング情報１３２の「配分値」に設定された値の有効数字は２桁である。
【０１１４】
[第４の実施の形態]
次に、第４の実施の形態について説明する。図２７及び図２８は、第４の実施の形態における推定処理を説明するフローチャートである。また、図２９から図３２は、第４の実施の形態における推定処理を説明する図である。具体的に、図２９は、第４の実施の形態における情報処理装置１の構成を説明する図である。また、図３０から図３２は、Ｓ２３の処理を６回行った場合の取得済サンプリング情報１３２を説明する図である。図２９から図３２を参照しながら、図２７及び図２８の推定処理を説明する。
【０１１５】
第４の実施の形態における推定処理では、第１の実施の形態から第３の実施の形態と異なり、情報取得部１２１がＣＰＵ１０１の消費電力量を取得する際に、その時のＣＰＵ１０１の動作と関連する指標値（以下、電力配分指標値とも呼ぶ）を取得する。そして、電力推定部１２３は、電力配分指標値に基づいて消費電力量の推定を行う。これにより、電力推定部１２３は、消費電力量の推定をより精度高く行うことが可能になる。なお、第２の実施の形態における推定処理は、第１の実施の形態と比較して、Ｓ１２からＳ２４の処理及びＳ２５の処理のみが異なる。そのため、以下、第１の実施の形態と異なる処理についてのみ説明を行う。
【０１１６】
[第４の実施の形態におけるＳ１２からＳ１４の処理]
図１１で説明したＳ１１の処理で割り込み通知を受信した場合（図１１のＳ１１のＹＥＳ）、情報取得部１２１は、図２７に示すように、第１の実施の形態と同様に、プログラム実行部１１１にアクセスし、解析対象プログラムの動作情報を取得する（図１１のＳ１２、Ｓ６１）。また、情報取得部１２１は、割り込み通知部１１２から割り込み通知を受信したことに応じて、電力計測部１１３にアクセスし、ＣＰＵ１０１の消費電力量を取得する（図１１のＳ１３、Ｓ６２）。
【０１１７】
さらに、第４の実施の形態における情報取得部１２１は、第１の実施の形態と異なり、指標計測部１１４にアクセスし、電力配分指標値を取得する（Ｓ６３）。電力配分指標値は、例えば、メモリアクセスに関連するイベントに基づく指標値であってよい。具体的に、電力配分指標値は、例えば、メモリアクセスの際に発生するキャッシュミスの回数を示す値である。なお、指標計測部１１４は、例えば、図２９に示すように、ＣＰＵ１０１が有する機能（例えば、ＰＭＣ）の一部からなるものであってよい。
【０１１８】
その後、情報取得部１２１は、Ｓ６１で取得した動作情報と、Ｓ６２で取得した電力値と、Ｓ６３で取得した電力配分指標値とを対応付けてサンプリング情報１３１を作成する（Ｓ６４）。そして、情報取得部１２１は、作成したサンプリング情報１３１を情報格納領域１３０に記憶する（Ｓ６４）。
【０１１９】
[取得済サンプリング情報１３２の具体例（４）]
次に、第４の実施の形態における取得済サンプリング情報１３２の具体例について説明を行う。図３０は、第４の実施の形態における取得済サンプリング情報１３２の具体例を説明する図である。
【０１２０】
図３０に示す取得済サンプリング情報１３２は、図１６等で説明した取得済サンプリング情報１３２と比較して、電力配分指標値を設定する「電力配分指標値」の項目を有している。具体的に、図３０に示す取得済サンプリング情報１３２には、「電力配分指標値」として、それぞれ「２００」、「１００」、「４００」、「２００」、「１００」及び「２００」が設定されている。なお、第４の実施の形態におけるサンプリング情報１３１は、図３０で説明した取得済サンプリング情報１３２と同じ内容からなる情報であるため説明を省略する。
【０１２１】
[第４の実施の形態におけるＳ２５の処理]
次に、第４の実施の形態におけるＳ２５の処理の詳細について説明を行う。図２８は、第４の実施の形態におけるＳ２５の処理の詳細について説明する図である。
【０１２２】
電力推定部１２３は、図２８に示すように、前回取得した情報の「電力値」に設定された情報に対する今回取得した情報の「電力値」に設定された情報の変化量を算出する（Ｓ７１）。
【０１２３】
具体的に、図３０に示す例において、「情報ＩＤ」が「５」である情報の「電力値」には「８（Ｊ）」が設定されており、「情報ＩＤ」が「６」である情報の「電力値」には「２３（Ｊ）」が設定されている。そのため、電力推定部１２３は、「電力値」に設定された情報の変化量として「１５（Ｊ）」を算出する。
【０１２４】
そして、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの取得済サンプリング情報１３２の「電力配分指標値」に設定された値の合計値を算出する（Ｓ７２）。
【０１２５】
具体的に、図３０に示す例において、電力推定部１２３は、取得済サンプリング情報１３２の「電力値」に設定された値が前回変化した後、今回変化するまでの取得済サンプリング情報１３２として、「情報ＩＤ」が「２」から「６」である情報を特定する。その後、電力推定部１２３は、「情報ＩＤ」が「２」から「６」である情報の「電力配分指標値」に設定された値の合計値である「１０００」を算出する（Ｓ７２）。
【０１２６】
次に、電力推定部１２３は、「電力値」に設定された値が前回変化した後、今回変化するまでの取得済サンプリング情報１３２であって、「配分値」に設定された値が更新されていない情報のうちの先頭の情報を特定する。そして、電力推定部１２３は、特定した情報の「電力配分指標値」に設定された情報に、Ｓ７１で算出した値を乗算し、Ｓ７２で算出した値で除算する（Ｓ７３）。
【０１２７】
具体的に、図３０に示す例において、電力推定部１２３は、「情報ＩＤ」が「２」である情報の「電力配分指標値」である「１００」に、Ｓ７１で算出した値である「１５（Ｊ）」を乗算し、Ｓ７２で算出した値である「１０００」で除算した結果である「１．５（Ｊ）」を取得する。
【０１２８】
その後、電力推定部１２３は、Ｓ７３で特定した情報の「配分値」に、Ｓ７３で算出した値を設定する（Ｓ７４）。具体的に、電力推定部１２３は、図３１の下線部分に示すように、「情報ＩＤ」が「２」である情報の「配分値」に「１．５（Ｊ）」を設定する。
【０１２９】
そして、「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得された取得済サンプリング情報１３２の「配分値」に設定された情報が全て更新済である場合（Ｓ７５のＹＥＳ）、電力推定部１２３は、Ｓ２５の処理を終了する。一方、「配分値」に設定された情報の全てが更新済でない場合（Ｓ７５のＮＯ）は、Ｓ７３以降の処理を繰り返し実行する。これにより、電力推定部１２３は、図３２の下線部分に示すように、「電力値」に設定された値が前回変化した後、今回変化するまでの間に取得された取得済サンプリング情報１３２の「電力値」に設定された情報の更新を行うことが可能になる。
【０１３０】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１３１】
（付記１）
第１時間間隔毎に出力される前記第１時間間隔毎の消費電力量と、前記第１時間間隔内に発生した第１イベントの発生時刻とに基づき、前記第１イベントの発生時の消費電力量を算出する電力推定部を有する、
ことを特徴とする情報処理装置。
【０１３２】
（付記２）
付記１において、
前記電力推定部は、前記第１時間間隔毎の消費電力量を、前記第１時間間隔よりも短い時間間隔である第２時間間隔毎に配分し、前記第２時間間隔のうち、前記第１イベントの発生時刻が含まれる第２時間間隔に配分された値を、前記第１イベントの発生時の消費電力量として算出する、
ことを特徴とする情報処理装置。
【０１３３】
（付記３）
付記１において、
前記電力推定部は、連続する複数の前記第１時間間隔毎の消費電力量を加算した値を、前記第１時間間隔よりも短い第２時間間隔毎に配分し、前記第２時間間隔のうち、前記第１イベントの発生時刻が含まれる第２時間間隔に配分された値を、前記第１イベントの発生時の消費電力量として算出する、
ことを特徴とする情報処理装置。
【０１３４】
（付記４）
付記３において、
前記電力推定部は、連続する複数の前記第１時間間隔毎の消費電力量にそれぞれ所定の重み付け値を乗算し、前記乗算して算出したそれぞれの値を加算し、前記加算して算出した値を前記第２時間間隔毎に配分する、
ことを特徴とする情報処理装置。
【０１３５】
（付記５）
付記２において、
前記電力推定部は、
前記第２時間間隔毎に出力される前記第２時間間隔毎の第２イベントの発生回数を取得し、
前記第２時間間隔毎に配分される消費電力量の比が、前記第２時間間隔毎の第２イベントの発生回数の比と等しくなるように、前記第１時間間隔毎の消費電力量の配分を行う、
ことを特徴とする情報処理装置。
【０１３６】
（付記６）
付記１において、さらに、
前記第１時間間隔毎に通知を行う通知部と、
前記通知の受信に応じて、前記第１時間間隔毎の消費電力量と、前記第１時間間隔内に発生した第１イベントの発生時刻を取得する情報取得部と、を有する、
ことを特徴とする情報処理装置。
【０１３７】
（付記７）
付記１において、
前記第１イベントは、プログラムまたはプログラムに含まれる関数の実行である、
ことを特徴とする情報処理装置。
【０１３８】
（付記８）
付記４において、
前記第２イベントは、キャッシュメモリへのメモリアクセスに伴うキャッシュミスの発生である、
ことを特徴とする情報処理装置。
【０１３９】
（付記９）
コンピュータに、
第１時間間隔毎に出力される前記第１時間間隔毎の消費電力量と、前記第１時間間隔内に発生した第１イベントの発生時刻とに基づき、前記第１イベントの発生時の消費電力量を算出する、
処理を実行させることを特徴とする電力推定プログラム。
【０１４０】
（付記１０）
第１時間間隔毎に出力される前記第１時間間隔毎の消費電力量と、前記第１時間間隔内に発生した第１イベントの発生時刻とに基づき、前記第１イベントの発生時の消費電力量を算出する、
ことを特徴とする電力推定方法。
【符号の説明】
【０１４１】
１：情報処理装置            １ａ：記憶媒体
１０１：ＣＰＵ              １１１：プログラム実行部
１２１：情報取得部          １２２：情報解析部
１２３：電力推定部          １３１：サンプリング情報
【図１】
0006646201.tif 000002
【図２】
0006646201.tif 000003
【図３】
0006646201.tif 000004
【図４】
0006646201.tif 000005
【図５】
0006646201.tif 000006
【図６】
0006646201.tif 000007
【図７】
0006646201.tif 000008
【図８】
0006646201.tif 000009
【図９】
0006646201.tif 000010
【図１０】
0006646201.tif 000011
【図１１】
0006646201.tif 000012
【図１２】
0006646201.tif 000013
【図１３】
0006646201.tif 000014
【図１４】
0006646201.tif 000015
【図１５】
0006646201.tif 000016
【図１６】
0006646201.tif 000017
【図１７】
0006646201.tif 000018
【図１８】
0006646201.tif 000019
【図１９】
0006646201.tif 000020
【図２０】
0006646201.tif 000021
【図２１】
0006646201.tif 000022
【図２２】
0006646201.tif 000023
【図２３】
0006646201.tif 000024
【図２４】
0006646201.tif 000025
【図２５】
0006646201.tif 000026
【図２６】
0006646201.tif 000027
【図２７】
0006646201.tif 000028
【図２８】
0006646201.tif 000029
【図２９】
0006646201.tif 000030
【図３０】
0006646201.tif 000031
【図３１】
0006646201.tif 000032
【図３２】
0006646201.tif 000033