説明

消費電力分析システムおよびアプリケーション開発ツール

【課題】端末の消費電力を容易に分析する。
【解決手段】本発明に係る消費電力分析システム1は、アプリケーションプログラムによって呼び出された各メソッドの実行履歴からなるトレースログと、メソッドの実行時におけるハードウェアごとのリソース消費量が記録されたリソースログと、を取得し、トレースログおよびリソースログに基づいて、メソッドごとに各ハードウェアに対するリソース消費割合を算出するリソース消費割合算出部11と、リソースログに基づいてハードウェアごとに消費電力を算出するリソース消費電力算出部12と、ハードウェアごとの消費電力と、メソッドごとの各ハードウェアに対するリソース消費割合とに基づいて、メソッドごとの消費電力を算出するメソッド消費電力算出部13と、を備えることを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、端末の消費電力を分析する消費電力分析システムおよびアプリケーション開発ツールに関するものである。
【背景技術】
【0002】
バッテリ駆動の無線通信端末は、ハードウェアやソフトウェアの開発時からエンドユーザの使用時に至るまで、バッテリの持つ限られた電力を効率的に消費できるように、消費電力を予め評価した上で設計されるのが好ましい。従来から無線通信端末で使用されるアプリケーションプログラムの消費電力を評価するために、ソースコードレベルで消費電力を見積もる試みがなされてきた。下記の特許文献1には、アプリケーションプログラム実行時にトリガとなるレジストリによって指定されるハードウェアに基づいて消費電力を算出する方法が開示されている。また、下記の特許文献2には、プログラムのソースコードを解析し、演算命令1ステップの消費電力を1として、モジュール内の消費電力を合計することで各モジュールの消費電力を求める方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−75965号公報
【特許文献2】特開2008−186163号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に開示された消費電力の評価方法では、レジストリとハードウェアの関係を解析する必要がある。また、ハードウェアごとの消費電力を求めたテーブルを用意する必要がある。このため、評価対象となる無線通信端末が変更された場合に、その都度解析を行う必要がある。また、上記特許文献2に開示された消費電力の評価方法では、プログラムのソースコードを解析する必要がある。このため、プログラムのソースコードが少し変更された場合でも、その都度ソースコードの解析が必要となる。これらの評価方法では、様々な無線通信端末において様々なアプリケーションプログラムを開発するような場合、所望の消費電力の評価を容易に行うことができない。
【0005】
そこで本発明は、このような問題点を解決するために、端末の消費電力を容易に分析可能な消費電力分析システムおよびアプリケーション開発ツールを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するため、本発明の消費電力分析システムは、端末で実行されるアプリケーションプログラムの消費電力を分析する消費電力分析システムであって、アプリケーションプログラムによって呼び出された各モジュールの実行履歴からなるトレースログと、モジュールの実行時におけるハードウェアごとのリソース消費量が記録されたリソースログと、を取得し、トレースログおよびリソースログに基づいて、モジュールごとに各ハードウェアに対するリソース消費割合を算出するリソース消費割合算出手段と、リソースログに基づいてハードウェアごとに消費電力を算出するリソース消費電力算出手段と、ハードウェアごとの消費電力と、モジュールごとの各ハードウェアに対するリソース消費割合とに基づいて、モジュールごとの消費電力を算出するモジュール消費電力算出手段と、を備えることを特徴とする。
【0007】
本発明によれば、リソースログおよびトレースログに基づいてモジュールごとの消費電力を算出できる。このリソースログおよびトレースログは、いずれも端末に依存しない情報である。このため、様々なハードウェアやアプリケーションプログラムに対してモジュール単位での消費電力を算出することが可能となる。
【0008】
また、本発明の消費電力分析システムにおいて、リソースログは、端末全体でのリソース消費量が記録された第一リソースログであるのが好ましい。このように、第一リソースログを用いることで、端末全体でのリソース消費量を取得することができる。
【0009】
また、本発明の消費電力分析システムにおいて、リソース消費割合算出手段は、トレースログに基づいてモジュールごとのリソース消費割合を算出するのが好ましい。このモジュールごとのリソース消費割合の算出方法は、モジュールのCPU時間の全体に占める割合をリソース消費割合とする方法、対象となるモジュールの実行回数の全体に占める割合をリソース消費割合とする方法などがある。モジュールのCPU時間と第一リソースログに記録されたリソース消費量は比例関係にある。したがって、各モジュールのCPU時間をトレースログから算出し、全体のCPU時間に対してモジュールのCPU時間が占める割合をモジュールのリソース消費割合とすることができる。同様に、モジュールの実行回数と第一リソースログに記録されたリソース消費量は比例関係にある。したがって、モジュールの実行回数をトレースログから算出し、その逆数をモジュールのリソース消費割合とすることができる。
【0010】
また、本発明の消費電力分析システムにおいて、リソースログは、モジュールごとの各ハードウェアに対するリソース消費量が記録された第二リソースログであるのが好ましい。このように、第二リソースログを用いることで、モジュールごとの各ハードウェアに対するリソース消費量を取得することができる。
【0011】
また、本発明の消費電力分析システムにおいて、リソース消費割合算出手段は、第二リソースログに記録されたモジュールごとの各ハードウェアに対するリソース消費量をハードウェアに応じた係数に基づいて補正するのが好ましい。第二リソースログでは、アプリケーションプログラムが使用しているハードウェアのリソース消費量をすべて取得できない場合がある。このような場合に、第二リソースログに記憶されたモジュールごとの各ハードウェアに対するリソース消費量に、ハードウェアに応じた係数を掛ける、又は足すなどすることで、モジュールごとに各ハードウェアに対するリソース消費量を補正できる。
【0012】
また、本発明の消費電力分析システムにおいて、モジュールごとの消費電力を表示する表示手段をさらに備えるのが好ましい。これによれば、モジュールごとの消費電力を可視化することができる。
【0013】
また、本発明の消費電力分析システムにおいて、表示手段は、トレースログに基づいてコールツリーを作成し、モジュールごとの消費電力をコールツリーに重畳して表示する消費電力コールツリー表示手段を備えるのが好ましい。このように、コールツリーの形式で消費電力を表示することで、モジュールの親子関係と共に消費電力を表示することができる。このため、消費電力についてボトルネックとなるモジュールを明確化できる。
【0014】
また、本発明の消費電力分析システムにおいて、消費電力コールツリー表示手段は、指定された期間におけるモジュールの消費電力を表示するのが好ましい。このように、指定された期間の消費電力コールツリーを表示可能とすることで、ボトルネックとなるモジュールをより一層明確化できる。
【0015】
また、本発明の消費電力分析システムにおいて、表示手段は、所定の時間におけるハードウェアごとの消費電力を所定のグラフで表示するグラフ表示手段を備えるのが好ましい。所定の時間におけるハードウェアごとの消費電力をグラフ表示することで、消費電力についてボトルネックとなっているハードウェアを明確化できる。
【0016】
また、本発明の消費電力分析システムにおいて、表示手段は、トレースログに基づいてコールツリーを作成し、モジュールごとの消費電力をコールツリーに重畳して表示する消費電力コールツリー表示手段をさらに備えてもよく、消費電力コールツリー表示手段は、グラフ表示手段によって表示されたグラフにおいて選択された部分に応じ、コールツリーを表示するのが好ましい。このように、選択された部分のコールツリーを表示することで、ボトルネックとなるモジュールをより一層明確化できる。また、選択されたハードウェアについての消費電力が重畳されたコールツリーを表示することも可能で、より詳細な消費電力の分析結果を提示できる。
【0017】
また、本発明の消費電力分析システムにおいて、グラフ表示手段は、棒グラフ又は円グラフで表示するのが好ましい。このように、所定の時間におけるハードウェアごとの消費電力を棒グラフ形式又は円グラフ形式で表示することで、消費電力についてボトルネックとなっているハードウェアを明確化できる。グラフ表示手段は、消費電力を分析したいアプリケーションプログラムを実行中にリアルタイムでグラフ表示してもよい。また、グラフ表示手段は、アプリケーションプログラムを実行し終わってから、開発者によって選択された部分のグラフ表示を行ってもよい。
【0018】
また、本発明の消費電力分析システムにおいて、端末は、無線通信端末であるのが好ましい。無線通信端末上でアプリケーションプログラムを利用するエンドユーザにとって、アプリケーションプログラムの実行やデータ送受信等によってどの程度の電力が消費されるのかを認識するのは容易ではない。また、エンドユーザは、バッテリ駆動の無線通信端末において、限られた電力を好適に利用するのが難しい。しかしながら、本発明よれば、無線通信端末のリソースログやトレースログを利用することで、実際の無線通信端末上で実行されたアプリケーションプログラムのモジュールごとの消費電力を算出することが可能となる。このように、無線通信端末の使用時において、消費電力の評価結果を提供することができる。
【0019】
また、本発明の消費電力分析システムにおいて、端末は、仮想端末であるのが好ましい。これによれば、消費電力分析システムが実行される情報処理端末上で、仮想的なハードウェアを有する仮想端末をソフトウェアで再現し、その仮想端末のリソースログやトレースログを利用することが可能である。このため、実無線通信端末を用意しなくてもアプリケーションプログラムの消費電力を算出することが可能となる。このように、無線通信端末に搭載されるアプリケーションプログラムの開発時において、消費電力の評価結果を提供することができる。
【0020】
また、本発明の消費電力分析システムにおいて、第二リソースログは、仮想端末の低レベルAPIから取得されるのが好ましい。これによれば、仮想端末が使用する低レベルAPIに予め第二リソースログを出力できるように加工しておくことで、各モジュールが使用するリソース消費量を正確に算出できる。その結果、モジュールごとに算出される消費電力の精度が向上する。
【0021】
また、本発明のアプリケーション開発ツールは、ユーザの入力を受け付ける入力手段と、入力手段によって受け付けられた入力に基づいて、アプリケーションプログラムのソースコードを編集するソースコード編集手段と、入力手段によって受け付けられた入力に基づいて、ソースコード編集手段によって編集されたソースコードを実行するソースコード実行手段と、ソースコード実行手段によって実行されたソースコードの消費電力を分析する上記消費電力分析システムと、を備えることを特徴とする。これによれば、無線通信端末に搭載されるアプリケーションプログラムの開発時において、消費電力の評価を行うことができる。
【発明の効果】
【0022】
本発明によれば、端末の消費電力を容易に分析することができる。
【図面の簡単な説明】
【0023】
【図1】本発明の実施形態に係る消費電力分析システムの機能構成を示すブロック図である。
【図2】第一リソースログの一例を示す図である。
【図3】第二リソースログの一例を示す図である。
【図4】各メソッドのCPU時間とWi−Fiによるデータ通信量の一例を示す図である。
【図5】各メソッドのGPS稼働時間の一例を示す図である。
【図6】リソース消費割合算出部の出力の一例を示す図である。
【図7】(a)コールツリーの一例を示す図、(b)CPU時間の一例を示す図である。
【図8】端末全体の消費電力を示す消費電力評価値の一例を示す図である。
【図9】メソッド消費電力算出部の出力の一例を示す図である。
【図10】表示部の機能構成を示すブロック図である。
【図11】円グラフの一例を示す図である。
【図12】棒グラフの一例を示す図である。
【図13】消費電力コールツリーの一例を示す図である。
【図14】図1の消費電力分析システムの処理手順を示すフローチャートである。
【図15】アプリケーション開発ツールの機能構成を示すブロック図である。
【発明を実施するための形態】
【0024】
以下、図面を参照して、本発明に係る消費電力分析システムの好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【0025】
図1は、本実施形態の消費電力分析システム1の機能構成を示すブロック図である。消費電力分析システム1は、無線通信端末などの端末2において実行されるアプリケーションプログラムの消費電力を分析するシステムである。この消費電力分析システム1は、端末2から取得したモジュールごとのリソースログおよびトレースログを用いて、評価の対象となるアプリケーションプログラムで使用されているモジュールごとに消費電力を計算する。消費電力分析システム1は、例えば、サーバ装置などの情報処理装置である。
【0026】
ここで、モジュールとは、アプリケーションプログラムにおける所定の機能を実現するためのプログラム部品であって、アプリケーションプログラムは、複数のモジュールを含んでいる。このモジュールは、他のモジュールによって呼び出されることがあり、また、モジュールの機能を実現するために他のモジュールを呼び出すこともある。アプリケーションプログラムを記述するために用いられるプログラム言語の種類によって、モジュールは、クラス、メソッド、サブルーチンまたは関数などと呼ばれる。例えばJava(登録商標)では、モジュールは、クラスおよびメソッドと呼ばれる。クラスは、1以上のメソッドとデータ構造とを含んでおり、これらを用いて1以上の機能を実現する。このように、アプリケーションプログラムにおいて使用されるモジュールは、プログラム言語によって呼び方および粒度が異なるが、本発明において本質的な違いはない。そこで、本実施形態では、モジュールとしてメソッドを用いて説明を行う。
【0027】
まず、端末2の構成を説明する。端末2は、例えば無線通信端末であって、物理的には、端末HW22(特許請求の範囲の「ハードウェア」に相当)を備えている。端末HW22は、端末2のハードウェア構成部品(以下、単に「ハードウェア」という場合もある)であって、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)およびRAM(Random Access Memory)と、外部機器(例えば、消費電力分析システム1)とデータの送受信を行うための通信装置と、端末2の現在位置を測定するGPS(Global Positioning System)と、各種データが記録されるストレージと、所定の被写体を撮像するカメラと、を有する。端末HW22のCPUは、端末HW22のROMなどの内蔵メモリに格納された所定のコンピュータプログラムを端末HW22のRAMにロードして実行することにより、端末2を統合的に制御する。端末HW22の通信装置は、例えば無線通信を行うWi-Fi(Wireless Fidelity)である。
【0028】
また、端末2は、機能的には、ソフトウェア実行部21と、ソフトウェア実行状態管理部23と、部品状態管理部24と、を備えている。これらのソフトウェア実行部21、ソフトウェア実行状態管理部23および部品状態管理部24は、端末2のCPUが端末2のROM等の内蔵メモリに格納されたコンピュータプログラムを実行することによって実現される機能である。
【0029】
ソフトウェア実行部21は、端末2のROMなどの内蔵メモリ(又は端末2に着脱可能な記録メディア)に格納されたアプリケーションプログラム(端末HW22のCPU等が実行可能なコンピュータプログラム)を実行する。ソフトウェア実行状態管理部23は、ソフトウェア実行部21によって実行されたアプリケーションプログラムについて、当該アプリケーションプログラムで呼び出されたメソッドに関する情報をソフトウェア実行部21から取得する。そして、ソフトウェア実行状態管理部23は、アプリケーションプログラムによって呼び出されたメソッドの実行履歴を示すトレースログを生成する。なお、トレースログには、各メソッドの実行履歴として、例えば、メソッドが呼び出された時刻およびメソッドが実行終了した時刻(呼び出し元メソッドへの戻り時刻)などが記録されている。
【0030】
部品状態管理部24は、端末HW22の動作状態を示す情報を取得し、この取得した情報に基づいて端末HW22の動作状態を示すリソースログを生成する。このリソースログは、例えば、OSから提供される情報であって、端末機種に依存しない情報である。リソースログは、例えば、CPU時間、Wi−Fiの送受信データ量、ストレージの読み書きデータ量、GPSおよびカメラのそれぞれがON、OFFになった時間など、端末HW22の各ハードウェア構成部品の動作状態および処理量といったリソース消費量を記録したログである。
【0031】
本実施形態において、リソースログは、例えば、第一リソースログと第二リソースログとの二種類のログを含む。第一リソースログは、端末2全体でのリソース消費量を記録したログである。すなわち、第一リソースログは、端末HW22の各ハードウェア構成要素について、端末2全体としてのリソース消費量を記録したログである。第一リソースログは、例えば、OS(Operating System)から提供される情報(例えば、OSがLinux(登録商標)の場合、/proc情報)に基づいて、一定時間ごと(例えば、1秒ごと)に取得される。
【0032】
図2は、第一リソースログの一例を示す図である。図2に示すように、第一リソースログは、複数の第一ログ情報から構成されている。第一ログ情報は、例えば、当該第一ログ情報が取得された時間と、CPU稼働率、LCD(Liquid Crystal Display)輝度、ストレージの読み書きデータ量、無線送受信データ量、GPS稼働時間、およびカメラ稼働時間などのリソース消費量と、を含んでいる。図2の第一ログ情報L1は、2010年12月 6日 15時43分48秒の1秒間におけるログ情報であり、CPU稼働率が100%、LCD輝度が20cd/m、ストレージからの読み出しデータ量が0Byte、ストレージへの書き込みデータ量が0Byte、無線送信データ量が36716Byte、無線受信データ量が242490Byteであったことを示している。なお、第一ログ情報の単位は、上記のものに限られず、必要に応じて異なる単位を用いることができる。
【0033】
第二リソースログは、アプリケーションプログラム実行中に発生するメソッド呼び出しごとに、そのメソッドが消費したリソース消費量、又はそのハードウェアが使用されているかどうかを記録したログである。特定のメソッドに対応する低レベルAPI(Application Program Interface)を、API内部で扱われるデータをログ出力するように加工しておくことで、部品状態管理部24は、特定のメソッドが実行される際のリソース消費量を取得し、第二リソースログを生成する。
【0034】
図3は、第二リソースログの一例を示す図である。第二リソースログは、複数の第二ログ情報から構成されている。第二ログ情報は、当該第二ログ情報が取得された時間と、単位時間あたりの通信データ量などのリソース消費量と、メソッド名と、を含んでいる。例えば、図3の第二ログ情報L2は、12時34分56秒の1秒間におけるログ情報であり、「org/apache/harmony/luni/platform/OSNetworkSystem.sendStream」というメソッドが、111Byte/msの通信をしたことを示している。
【0035】
次に、消費電力分析システム1の構成を説明する。消費電力分析システム1は、機能的には、リソース消費割合算出部11(特許請求の範囲の「リソース消費割合算出手段」に相当)と、リソース消費電力算出部12(特許請求の範囲の「リソース消費電力算出手段」に相当)と、メソッド消費電力算出部13(特許請求の範囲の「モジュール消費電力算出手段」に相当)と、表示部14(特許請求の範囲の「表示手段」に相当)とを含んで構成されている。
【0036】
リソース消費割合算出部11は、トレースログおよびリソースログを取得し、トレースログおよびリソースログに基づいて、メソッドごとに各ハードウェアに対するリソース消費割合を算出するリソース消費割合算出手段として機能する。具体的に説明すると、リソース消費割合算出部11は、まず第二リソースログから対象となるメソッドX(Xは、アプリケーションプログラムのメソッドに割り当てられた識別番号)の特定のハードウェアに対するリソース消費量Cmethod_Xを取得する。また、リソース消費割合算出部11は、第二リソースログからすべてのメソッドのリソース消費量Callを取得する。そして、リソース消費割合算出部11は、以下のリソース消費割合算出式(1)に基づいて、対象となるメソッドXの特定のハードウェアに対するリソース消費割合αresource_Xを算出する。
リソース消費割合αresource_X=Cmethod_X/Call…(1)
【0037】
αresouce_Xは、アプリケーションプログラムのメソッドXが所定のハードウェアを消費した量のメソッド全体に占める割合を表している。例えばハードウェアがCPUである場合、リソース消費量Cmethod_Xはある期間においてメソッドXが使用したCPU時間である。また、リソース消費量Callはある期間においてアプリケーションプログラム全体が使用したCPU時間を表している。
【0038】
図4は、第二リソースログから取得したある期間内における各メソッドのCPU時間とWi−Fiによるデータ通信量の一例を示す図である。図4の例では、メソッドAのCPU時間は200tickである。メソッド全体のCPU時間は600tickである。したがって、メソッドAのCPU消費割合αCPU_Aは、1/3と求められる。なお、メソッドA、メソッドBおよびメソッドCは、全て異なるスレッドで動作している低レベルAPIとする。
【0039】
図5は、第二リソースログから取得した各メソッドのGPS稼働時間の一例を示す図である。図5の例では、単位時間(1〜2の期間)において、メソッドAのGPS稼働時間は1、メソッドBのGPS稼働時間は0.5である。したがって、メソッドAのGPS消費割合αGPS_Aは、1/1.5=2/3と求められる。なお、メソッドA、メソッドBおよびメソッドCは、全て異なるスレッドで動作している低レベルAPIとする。
【0040】
ところで、対象となるアプリケーションプログラムの各メソッドのリソース消費量は、第二リソースログに含まれる情報だけでは十分でない場合がある。例えば、無線送受信時のメソッドは、パケットのヘッダ等のデータ量を取得できない。このような場合、リソース消費割合算出部11は、第二リソースログに含まれないリソース消費量を考慮して、対象となるメソッドの特定のハードウェアに対するリソース消費割合を算出する。すなわち、リソース消費割合算出部11は、第二リソースログから取得したリソース消費量Cmethod_Xを係数βresouceおよび定数γresouceに基づいて補正する。例えば、リソース消費割合算出部11は、第二リソースログから取得したリソース消費量Cmethod_Xを、以下の式(2)に基づいて補正する。
補正リソース消費量Cmethod_X’=βresouce×Cmethod_Xresouce…(2)
【0041】
ここで、係数βresouceおよび定数γresouceは、ハードウェア(リソース)に応じて定められた値である。例えば、リソース消費割合算出部11は、無線通信を行う場合、ヘッダおよびコントロール情報について、予め1パケット当たりのデータ量を求め、それを係数βWiFiとする。そして、リソース消費割合算出部11は、OSレベルで得られたパケット数に係数βWiFiを掛け、定数γWiFiを0にすることで、メソッドのWi−Fiに対する補正リソース消費量Cmethod_X’を算出する。続いて、リソース消費割合算出部11は、以下の式(3)に基づいて対象となるメソッドのリソース消費割合を算出する。
リソース消費割合αresource_X=Cmethod_X’/Call…(3)
【0042】
ここで、低レベルAPIまでの呼び出し関係がすべてログとして出力されているので、同じ低レベルAPIでも呼び出し元が違うと、リソース消費割合算出部11は、異なるリソース消費割合αresource_Xとして算出する。
【0043】
図6は、リソース消費割合算出部11が算出したリソース消費割合αresource_Xの出力Drateの一例を示す図である。図6に示すように、出力Drateは、計算対象となる期間の開始時刻を示す時間情報と、リソース消費割合αresource_Xと、メソッドの呼び出し関係を含めたメソッド名と、を有している。図6の出力Drateは、12時34分56秒から1秒間に、メソッド名「org/apache/harmony/luni/platform/OSNetworkSystem.sendStream」のメソッドの消費割合が1/2であったことを示している。
【0044】
一方、例えば、端末2において低レベルAPIを加工することができない場合、端末2の部品状態管理部24は第二リソースログを生成できない。このように、端末2によっては、リソース消費割合算出部11は第二リソースログを取得できない場合がある。このような場合、リソース消費割合算出部11は、第一リソースログとトレースログとに基づいて、メソッドごとのリソース消費割合を算出する。このメソッドごとのリソース消費割合の算出方法を以下に説明する。
【0045】
第一の算出方法は、メソッドの呼び出し回数に基づいて算出する方法である。具体的に説明すると、リソース消費割合算出部11は、期間tにおいて特定のハードウェアを消費するメソッドの呼び出し回数nをトレースログから取得する。そして、リソース消費割合算出部11は、以下の式(4)に基づいて、期間tにおけるメソッドごとのリソース消費割合αresource_Xを算出する。
リソース消費割合αresource_X=1/nt…(4)
【0046】
第二の算出方法は、メソッドのCPU時間に基づいて算出する方法である。この方法は、特定のハードウェアがCPUか否かにより算出方法が異なる。
【0047】
特定のハードウェアがCPUの場合、リソース消費割合算出部11は、期間tにおいてCPUを消費する各メソッドのCPU時間Tmethod_Xをトレースログから取得する。また、同期間tにおいて最上位の親メソッドのCPU時間の総和Tmain_allをトレースログから取得する。ここで、メソッドのCPU時間は、当該メソッドが呼び出されてから実行終了するまでの時間である。そして、リソース消費割合算出部11は、以下の式(5)に基づいて、期間tにおけるメソッドごとのリソース消費割合を算出する。
リソース消費割合αresource_X=Tmethod_X/Tmain_all…(5)
【0048】
図7の(a)はコールツリーの一例を示す図、図7の(b)は(a)のコールツリーで示された各メソッドのCPU時間の一例を示す図である。図7の(a)のコールツリーでは、メインメソッドがメソッドAおよびメソッドBを呼び出している。そして、メソッドAがメソッドA1を呼び出し、メソッドA1がメソッドA2およびメソッドA3を呼び出している。さらに、メソッドBがメソッドB1を呼び出している。
【0049】
図7の(b)の例では、メインメソッドのCPU時間Tmain_allは、期間t内においてメインメソッドが実行されている時間を示している。各子メソッドのCPU時間は、期間t内において子メソッドが親メソッドにより呼び出されてから実行終了するまでの時間を示している。例えば、メソッドA2のCPU時間Tmethod_A2は、メソッドA2がメソッドA1に呼び出されてから実行終了するまでの時間を示している。
【0050】
ここで、特定のハードウェアがCPUの場合、親メソッドは子メソッドを実行する以外に演算等でCPUを動作させている。このため、各メソッドのリソース消費割合(CPU消費割合)は、最上位のメソッドであるメインメソッドのCPU時間Tmain_allに対する各メソッドのCPU時間Tmethod_Xの割合として算出される。例えば、メソッドA2のCPU消費割合αCPU_A2は、以下の式により算出される。
CPU消費割合αCPU_A2=Tmethod_A2/Tmain_all
【0051】
特定のハードウェアがCPU以外の場合、リソース消費割合算出部11は、期間tにおいて特定のハードウェアを消費する各メソッドのCPU時間Tmethod_Xをトレースログから取得する。また、同期間tにおいて特定のハードウェアを消費する全ての低レベルAPIの総CPU時間Tallを取得する。そして、リソース消費割合算出部11は、以下の式(6)に基づいて、期間tにおけるメソッドごとのリソース消費割合を算出する。
リソース消費割合αresource_X=Tmethod_X/Tall…(6)
【0052】
図7の例を用いて具体的に説明する。なお、メソッドA2およびメソッドB1は、特定のハードウェア(例えば、Wi-Fiなど)を消費する低レベルAPIであるとする。ここで、特定のハードウェアがCPU以外の場合、そのハードウェアを消費するメソッドは、低レベルAPIである。また、親メソッドは当該ハードウェアを消費しない。このため、各メソッドのリソース消費割合は、そのハードウェアを消費する低レベルAPIのCPU時間の総和Tallに対する各メソッドのCPU時間Tmethod_Xの割合として算出される。例えば、メソッドA2のリソース消費割合αresouce_A2は、以下の式により算出される。この場合、特定のハードウェアに関する総CPU時間Tallは、メソッドA2のCPU時間Tmethod_A2とメソッドB1のCPU時間Tmethod_B1との和である。
リソース消費割合αresouce_A2=Tmethod_A2/(Tmethod_A2+Tmethod_B1)
【0053】
なお、メソッドの呼び出し関係は、トレースログを解析することによって得ることができる。したがって、リソース消費割合算出部11は、図6で示した出力Drateと同様のフォーマットで出力を行う。
【0054】
図1に戻り、リソース消費電力算出部12は、端末2の部品状態管理部24が取得した第一リソースログに基づいて、端末2全体の消費電力(ハードウェアごとの内訳を含む)を算出するリソース消費電力算出手段として機能する。具体的に説明すると、リソース消費電力算出部12は、第一リソースログと、該第一リソースログに記憶されている第一ログ情報の各パラメータ(後述のp)に応じて予め設定された電力係数(後述のcij)の値と、に基づき、以下の消費電力評価式(7)および式(8)に従って、端末HW22の各ハードウェアの消費電力Presourceおよび端末2全体の消費電力Pallの評価値を算出する。
【数1】


【数2】

【0055】
上記式(7)および式(8)において、iはハードウェアの識別番号を表しており、1〜N(Nは、端末2の端末HW22に含まれる構成部品の総数)の整数値である。Presource_iは、i番目のハードウェアの消費電力を表している。また、上記式(7)において、jは第一ログ情報に含まれているパラメータの識別番号を表しており、1〜M(Mは、第一ログ情報に含まれているパラメータの総数)の整数値である。pは、第一ログ情報に含まれているj番目のパラメータを表している。cijは、j番目のパラメータがi番目のハードウェアの消費電力に与える影響度を示す電力係数を表している。この電力係数cijは、リソース消費電力算出部12に予め設定されている。電力係数cijは、例えば特開2010−225133号公報に記載された手法により算出可能である。なお、電力係数cijの算出方法は、これに限定されない。また、上記式(8)において、Pallは、端末2全体の消費電力を表している。
【0056】
図8は、端末2全体の消費電力を示す消費電力評価値の一例を示す図である。図8に示すように、消費電力評価値は、時間情報と、端末HW22の各ハードウェアの消費電力Presourceと、を含んでいる。時間情報は、消費電力の計算対象となる期間の開始時刻を示している。消費電力Presourceは、時間情報が示す開始時刻から単位時間経過するまでのハードウェアごとの消費電力を示している。例えば、図8の消費電力評価値Prは、12時34分56秒から1秒間を計算の対象としている。そして、この期間においてCPUの消費電力PCPUは0.23W、Wi-Fiの消費電力PWiFiは0.1W、LCDの消費電力PLCDは0.2W、ストレージPSTORAGEの消費電力は0.1W、GPSの消費電力PGPSは0.0Wであったことを示している。また、これらの各ハードウェアの消費電力の総和は、端末2全体の消費電力Pallを示す。このようにして、リソース消費割合算出部11は、ハードウェアごとの消費電力Presourceおよび端末2全体の消費電力Pallを算出する。
【0057】
図1に戻って、メソッド消費電力算出部13は、ハードウェアごとの消費電力Presourceと、メソッドごとの各ハードウェアに対するリソース消費割合αresource_Xとに基づいて、メソッドごとの消費電力Pmethod_Xを算出するメソッド消費電力算出手段として機能する。具体的には、メソッド消費電力算出部13は、以下のメソッド消費電力算出式(9)に基づいて、各メソッドの消費電力Pmethod_Xを算出する。
【数3】

【0058】
上記式(9)において、Pmethod_Xは、メソッドXの消費電力を表している。iはハードウェアの識別番号を表しており、1〜N(Nは、端末2の端末HW22に含まれる構成部品の総数)の整数値である。Presource_iは、i番目のハードウェアの消費電力を表している。また、αresource_i_Xは、i番目のハードウェアに対するメソッドXの消費割合を表している。例えば、端末HW22に含まれるハードウェアがCPUとWi-FiとGPSとカメラである場合、メソッドAの消費電力は、以下の式で算出される。
Pmethod_A=PCPU×αCPU_A+PWiFi×αWiFi_A+PGPS×αGPS_A+Pcamera×αcamera_A
【0059】
図9は、メソッド消費電力算出部13が算出した単位時間におけるメソッドごとの消費電力を含む出力Dpowerの一例を示す図である。図9に示すように、出力Dpowerは、計算対象の開始時刻を示す時間情報と、メソッドが使用した消費電力と、メソッドの呼び出し関係も含めたメソッド名と、を有している。図9の出力Dpowerは、12時34分56秒から1秒間に、メソッド名「org/apache/harmony/luni/platform/OSNetworkSystem.sendStream」のメソッドの消費電力が0.5Wであったことを示している。
【0060】
メソッド消費電力算出部13は、この出力Dpowerを表示部14に送信する。また、メソッド消費電力算出部13は、メソッドが呼び出された時間を示す時間情報を含むトレースログを表示部14に送信する。
【0061】
表示部14は、メソッドごとの消費電力を表示する表示手段として機能する。図10は、表示部14の機能構成を示すブロック図である。図10に示すように、表示部14は、グラフ表示部141(特許請求の範囲の「グラフ表示手段」に相当)と、消費電力コールツリー表示部142(特許請求の範囲の「消費電力コールツリー表示手段」に相当)と、を備えている。
【0062】
グラフ表示部141は、所定の時間におけるハードウェアごとの消費電力を所定のグラフで表示するグラフ表示手段として機能する。グラフ表示部141は、消費電力を分析したいアプリケーションプログラムを実行中にリアルタイムでグラフ表示してもよい。また、グラフ表示部141は、アプリケーションプログラムを実行し終わってから、開発者によって選択された部分のグラフ表示を行ってもよい。グラフ表示部141は、例えば、円グラフ表示部141aと棒グラフ表示部141bとを備えている。
【0063】
円グラフ表示部141aは、ある時間でのハードウェアごとの消費電力の消費割合を円グラフで表示する。具体的に説明すると、円グラフ表示部141aは、リソース消費電力算出部12によって算出された各ハードウェアの消費電力Presourceを端末2全体の消費電力Pallで割ることで各ハードウェアの消費電力の消費割合を算出する。そして、円グラフ表示部141aは、各ハードウェアの消費電力の消費割合を円グラフで表示する。図11は、円グラフ表示部141aによって表示される円グラフの一例を示す図である。
【0064】
表示された円グラフ上で所定のハードウェアの消費割合を示す部分がユーザによって選択された場合、円グラフ表示部141aは、選択されたハードウェアを示す情報を消費電力コールツリー表示部142に送信する。
【0065】
棒グラフ表示部141bは、ある時間でのハードウェアごとの消費電力の消費割合を棒グラフで表示する。具体的に説明すると、棒グラフ表示部141bは、リソース消費電力算出部12によって算出された各ハードウェアの消費電力Presourceを端末2全体の消費電力Pallで割ることで各ハードウェアの消費電力の消費割合を算出する。そして、棒グラフ表示部141bは、各ハードウェアの消費電力の消費割合を棒グラフで表示する。図12は、棒グラフ表示部141bによって表示される棒グラフの一例を示す図である。図12の縦軸は、端末2全体の消費電力Pallを1とした場合の各ハードウェアの消費電力の消費割合を示している。図12の横軸は、計算対象となる期間の開始時刻を識別する識別情報である。
【0066】
表示された棒グラフ上で所定のハードウェアの消費割合を示す部分がユーザによって選択された場合、棒グラフ表示部141bは、選択されたハードウェアを示す情報を消費電力コールツリー表示部142に送信する。
【0067】
消費電力コールツリー表示部142は、トレースログに基づいてコールツリーを作成し、メソッドごとの消費電力をコールツリーに重畳して表示する消費電力コールツリー表示手段として機能する。消費電力コールツリー表示部142は、コールツリー作成部142aと、消費電力重畳部142bと、を備えている。
【0068】
コールツリー作成部142aは、メソッド消費電力算出部13から出力されたトレースログに基づいて、単位時間におけるメソッドごとの呼び出し関係を解析し、コールツリーを作成する。このコールツリーは、時間軸に関係なく、実行されたアプリケーションプログラムが使用したメソッドを表示している。消費電力重畳部142bは、コールツリー作成部142aによって作成されたコールツリーのメソッド名に基づいて、メソッド消費電力算出部13によって算出されたメソッドごとの消費電力Pmethod_Xを重畳する。そして、消費電力コールツリー表示部142は、コールツリーにメソッドごとの消費電力Pmethod_Xを重畳した消費電力コールツリーを表示する。
【0069】
図13は、消費電力コールツリー表示部142によって表示される消費電力コールツリーTpowerの一例を示す図である。図13に示すように、消費電力コールツリーは、コールツリーTcallと、消費電力テーブルPmとを含んでいる。コールツリーTcallは、親メソッドによって呼び出されるメソッドの関係をツリー構造で示している。図13の例では、コールツリーTcallは、アプリケーションプログラムAPがメソッドaおよびメソッドbを呼び出すことを示している。そして、コールツリーTcallは、メソッドaがメソッドaaおよびメソッドabを呼び出し、メソッドbがメソッドbaおよびメソッドbbを呼び出すことを示している。
【0070】
消費電力テーブルPmは、各メソッドの消費電力を示している。図13の例では、消費電力テーブルPmは、メソッドaa、メソッドab、メソッドba、およびメソッドbbの消費電力を示している。具体的には、図13の例では、消費電力テーブルPmは、各メソッドの消費電力Pmethod_Xと、各メソッドのハードウェアごとの消費電力Pmethod_i_Xと、CPU時間と、を表示している。
【0071】
また、消費電力コールツリー表示部142は、ユーザによって選択されたハードウェアの情報をグラフ表示部141から受信すると、そのハードウェアを使用するメソッドに関する消費電力コールツリーを表示する。この際、消費電力コールツリー表示部142は、グラフ表示部141によって表示されたグラフとともに消費電力コールツリーを表示するようにしてもよい。選択したハードウェアを使用するメソッドのコールツリーと消費電力とを重畳表示することで、グラフで示された消費電力をメソッドごとの消費電力に細分化して表示できる。
【0072】
例えば、図11および図12のように、グラフ表示部141によって任意の時間のハードウェアごとの消費電力が表示されている場合、CPU以外ではWi-Fiの消費出力の割合が大きいことが分かる。図11又は図12のグラフにおいてWi-Fiを示す部分が選択されると、消費電力コールツリー表示部142は、グラフ表示部141からWi-Fiが選択されたことを示す情報を受信する。そして、消費電力コールツリー表示部142は、Wi-Fiに関する消費電力とコールツリーとを重畳した消費電力コールツリーを表示する。これにより、Wi-Fiにおいて、消費電力についてボトルネックとなっているメソッドが判明する。
【0073】
次に、図14を参照して、消費電力分析システム1の動作について説明する。図14は、消費電力分析システム1の処理を示すフローチャートである。
【0074】
リソース消費割合算出部11は、端末2からリソースログを取得する(S11)。また、リソース消費割合算出部11は、端末2からトレースログを取得する(S12)。そして、リソース消費割合算出部11は、取得したリソースログとトレースログとを用いて、上記式(1)、上記式(3)、上記式(4)、上記式(5)、又は、上記式(6)によりメソッドごとのリソース消費割合を算出する(S13)。次に、リソース消費電力算出部12は、端末2から取得したリソースログを用いて、上記式(7)および上記式(8)により端末2全体の消費電力(端末HW22のハードウェアごとの消費電力を含む)を算出する(S14)。
【0075】
そして、メソッド消費電力算出部13は、上記式(9)によりメソッドごとのリソース消費割合と端末2全体の消費電力とに基づいて、メソッドごとの消費電力を算出する(S15)。次に、表示部14のコールツリー作成部142aは、端末2から取得したトレースログに基づいて、メソッドの親子関係を解析してコールツリーを作成する(S16)。続いて、消費電力重畳部142bは、コールツリーにメソッドごとの消費電力を重畳して、消費電力コールツリーを作成する。そして、消費電力コールツリー表示部142は、その消費電力コールツリーを表示する(S17)。
【0076】
次に、本実施形態の消費電力分析システム1の作用効果について説明する。消費電力分析システム1において、リソース消費割合算出部11は、アプリケーションプログラムによって呼び出された各メソッドの実行履歴からなるトレースログと、メソッドの実行時における端末HW22ごとのリソース消費量が記録されたリソースログと、を取得し、トレースログおよびリソースログに基づいて、メソッドごとに各端末HW22に対するリソース消費割合を算出する。また、リソース消費電力算出部12は、リソースログに基づいて端末HW22ごとに消費電力を算出する。そして、メソッド消費電力算出部13は、端末HW22ごとの消費電力と、メソッドごとの各端末HW22に対するリソース消費割合とに基づいて、メソッドごとの消費電力を算出する。
【0077】
第一リソースログおよびトレースログは、いずれも端末のOSレベルから取得可能な、端末に依存しない情報である。また、第二リソースログは、API又はアプリケーションプログラムから取得可能な、端末に依存しない情報である。このため、様々なハードウェアおよびアプリケーションプログラムに対してメソッド単位での消費電力を算出することが可能となる。
【0078】
また、消費電力分析システム1において、リソースログは、端末2全体でのリソース消費量が記録された第一リソースログである。端末2によっては、メソッドが消費したリソース消費量を記録した第二リソースログを生成できないことがある。このような場合に、第一リソースログを用いることで、端末2全体および端末HW22ごとのリソース消費量を取得することができる。
【0079】
また、消費電力分析システム1において、リソース消費割合算出部11は、トレースログに基づいて算出されたメソッドの実行回数、または、トレースログに基づいて算出されたメソッドのCPU時間の全体に占める割合を用いてメソッドごとのリソース消費割合を算出する。第一リソースログは実時間性を持って取得することができず、一定時間ごとのリソース消費量のみ取得できる。そこで、メソッドの実行回数と第一リソースログに記録されたリソース消費量とは比例関係にあると仮定すると、第一リソースログ(端末2全体のリソースログ)およびトレースログ(メソッドの実行回数)からメソッドごとのリソース消費量を推定することができる。
【0080】
同様に、メソッドのCPU時間と第一リソースログに記録されたリソース消費量とは比例関係にあると仮定すると、第一リソースログおよびトレースログからメソッドごとのリソース消費量を推定することができる。このため、第二リソースログと同等の情報を推定することができ、メソッドごとのリソース消費割合を求めることができる。これにより同期間の全てのメソッドのリソース消費量、およびメソッド呼び出しごとのリソース消費量を推定できる。
【0081】
また、消費電力分析システム1において、リソースログは、メソッドごとの各ハードウェアに対するリソース消費量が記録された第二リソースログである。このように、第二リソースログを用いることで、メソッドごとの各ハードウェアに対するリソース消費量を取得することができる。
【0082】
また、消費電力分析システム1において、リソース消費割合算出部11は、第二リソースログに記録されたメソッドごとの各ハードウェアに対するリソース消費量をハードウェアに応じた係数に基づいて補正する。第二リソースログは、アプリケーションプログラムが使用しているハードウェアのリソース消費量をすべて取得できない場合がある。このような場合に、第二リソースログに記憶されたメソッドごとの各ハードウェア対するリソース消費量に、ハードウェアに応じた係数を掛ける、又は足すなどすることで、メソッドごとに各ハードウェアに対するリソース消費量を補正できる。その結果、メソッド単位での消費電力を一層精度よく算出することが可能となる。
【0083】
また、消費電力分析システム1において、表示部14は、メソッドごとの消費電力を表示する。これにより、メソッドごとの消費電力を可視化することができ、開発者およびエンドユーザが消費電力を容易に把握することが可能となる。
【0084】
また、消費電力分析システム1において、表示部14の消費電力コールツリー表示部142は、トレースログに基づいてコールツリーを作成し、メソッドごとの消費電力をコールツリーに重畳して表示する。コールツリーの形式で消費電力を表示することで、メソッドの親子関係と共に消費電力を表示することができる。このため、消費電力についてボトルネックとなるメソッドの明確化が可能となる。
【0085】
また、消費電力分析システム1において、消費電力コールツリー表示部142は、指定された期間におけるメソッドの消費電力を表示する。これにより、評価対象の時間帯を指定することができ、時間帯に応じた分析を行うことができる。
【0086】
また、消費電力分析システム1において、表示部14のグラフ表示部141は、所定の時間におけるハードウェアごとの消費電力を所定のグラフで表示する。ハードウェアごとの消費電力をグラフで表示することで、消費電力についてボトルネックとなっているハードウェアを明確化できる。
【0087】
また、消費電力分析システム1において、表示部14の消費電力コールツリー表示部142は、トレースログに基づいてコールツリーを作成し、メソッドごとの消費電力をコールツリーに重畳して表示する。そして、消費電力コールツリー表示部142は、グラフ表示部141によって表示されたグラフにおいて選択された部分に応じ、コールツリーを表示する。選択された部分のコールツリーを表示することで、ボトルネックとなるメソッドをより一層明確化できる。
【0088】
グラフ表示部141は、例えば棒グラフ又は円グラフで表示を行う。所定の時間におけるハードウェアごとの消費電力を棒グラフ形式又は円グラフ形式で表示することで、消費電力についてボトルネックとなっているハードウェアを明確化できる。
【0089】
また、消費電力分析システム1において、端末2は、無線通信端末である。無線通信端末上でアプリケーションプログラムを利用するエンドユーザにとって、アプリケーションプログラムの実行やデータ送受信等によってどの程度の電力が消費されるのかを認識するのは容易ではなく、バッテリ駆動の無線通信端末において、限られた電力を好適に利用するのが難しい。しかしながら、無線通信端末のリソースログやトレースログを利用することで、実際の無線通信端末上で実行されたアプリケーションプログラムのメソッドごとの消費電力を算出することが可能となる。このように、無線通信端末の使用時において、消費電力の評価結果を提供することができる。
【0090】
なお、本発明に係る消費電力分析システムは本実施形態に記載したものに限定されない。本発明に係る消費電力分析システムは、各請求項に記載した要旨を変更しないように実施形態に係る消費電力分析システムを変形し、又は他のものに適用してもよい。上記実施形態では、「消費電力(W)」として説明を行っているが、「消費電力量(Wh)」としてもよい。
【0091】
例えば、上記実施形態において端末2は、無線通信端末であるが、これに限定されない。端末2は、例えば仮想端末とすることもできる。この場合、消費電力分析システム1が動作する情報処理端末上で仮想的な端末HW22を有する仮想端末をソフトウェアで再現してもよい。そして、仮想端末上で評価対象となるアプリケーションプログラムを実行し、そのリソースログやトレースログを利用してもよい。このため、実無線通信端末を用意しなくてもアプリケーションプログラムの消費電力を算出することが可能となる。このように、無線通信端末に搭載されるアプリケーションプログラムの開発時において、消費電力の評価結果を提供することができる。
【0092】
また、上記実施形態において、第二リソースログは、仮想端末の低レベルAPIから取得されるようにしてもよい。仮想端末が使用する低レベルAPIに予め第二リソースログを出力できるように加工しておくことで、各メソッドが使用するリソース消費量を正確に算出できる。その結果、メソッドごとに算出される消費電力の精度を向上させることが可能となる。
【0093】
また、上記実施形態において、リソース消費割合算出部11は、補正リソース消費量Cmethod_i’を、上記式(2)に基づいて求めているが、これに限定されない。例えば、リソース消費割合算出部11は、第二リソースログから取得したリソース消費量Cmethodを係数βresouceで除算する、または、リソース消費量Cmethodから定数γresouceを減算するなどして、補正リソース消費量Cmethod_i’を算出するようにしてもよい。
【0094】
また、グラフ表示部141は、アプリケーションプログラムの稼動時間全体でのハードウェアごとの消費電力を表示するようにしてもよい。また、グラフ表示部141は、ユーザ等によって指定された期間について、ハードウェアごとの消費電力を表示するようにしてもよい。
【0095】
また、消費電力コールツリー表示部142は、開発者およびエンドユーザ等によって指定された時間内で実行されたアプリケーションプログラムが使用したメソッドをコールツリーの形で表示するようにしてもよい。このようにすることで、時間帯に応じた分析が可能となる。
【0096】
また、上記実施形態において、消費電力コールツリー表示部142は、一番末端のメソッドの消費電力のみを表示しているが、親メソッドの消費電力を表示してもよい。また、消費電力コールツリー表示部142は、消費電力コールツリーにおいて、所定のハードウェアの消費電力順にメソッドをソートして表示するようにしてもよい。消費電力の昇順に並び替えることで、アプリケーションプログラムの実行中にトータルとしてボトルネックとなるメソッドを発見することができる。
【0097】
また、消費電力分析システム1を用いて、アプリケーション開発ツール(アプリケーション開発装置)を実装することもできる。図15は、アプリケーション開発ツール100の機能構成を示すブロック図である。図15に示すように、アプリケーション開発ツール100は、消費電力分析システム1と、入力部110(特許請求の範囲の「入力手段」に相当)と、ソースコード編集部120(特許請求の範囲の「ソースコード編集手段」に相当)と、ソースコード実行部130と、を含んで構成されている。入力部110は、ユーザ(例えば、開発者)からの入力を受け付ける入力手段として機能する。ソースコード編集部120は、入力部110によって受け付けられた入力に基づいて、アプリケーションプログラムのソースコードを編集するソースコード編集手段として機能する。ソースコード実行部130は、入力部110によって受け付けられた入力に基づいて、ソースコード編集部120によって編集されたソースコードを実行するソースコード実行手段として機能する。消費電力分析システム1は、ソースコード実行部130によって実行されたアプリケーションプログラムのソースコードに対してメソッドごとの消費電力を分析し、その結果を表示部14に表示する。
【0098】
このアプリケーション開発ツールによれば、開発者は、無線端末および仮想無線端末において消費電力を確認しながらアプリケーションプログラムの開発をすることができる。そして、ボトルネックとなるメソッドおよびハードウェアを削減することで省電力を実現することが可能となる。
【0099】
また、上記実施形態では、アプリケーションプログラムがモジュールとしてメソッドを使用する場合について説明を行ったが、メソッドに代えて、サブルーチン、関数、クラスなどの他のモジュールとしてもよい。
【0100】
また、上記実施形態は、消費電力分析システム1における各機能を実行するためのプログラムモジュールによって実現されてもよい。すなわち、リソース消費割合算出部11に相当するリソース消費割合算出モジュール、リソース消費電力算出部12に相当するリソース消費電力算出モジュール、メソッド消費電力算出部13に相当するメソッド消費電力算出モジュールを備えた消費電力分析プログラムであって、サーバ装置などのコンピュータシステムに当該プログラムを読み込ませることにより、上述の消費電力分析システム1と同等の機能を実現することができる。上述の消費電力分析プログラムは、例えば、フレキシブルディスク、CD−ROM、DVDもしくはROM等の記憶媒体または半導体メモリに格納されて提供される。また、上述の消費電力分析プログラムは、搬送波に重畳されたコンピュータデータ信号としてネットワークを介して提供されてもよい。
【符号の説明】
【0101】
1…消費電力分析システム、2…端末、11…リソース消費割合算出部(リソース消費割合算出手段)、12…リソース消費電力算出部(リソース消費電力算出手段)、13…メソッド消費電力算出部(モジュール消費電力算出手段)、14…表示部(表示手段)、141…グラフ表示部(グラフ表示手段)、142…消費電力コールツリー表示部(消費電力コールツリー表示手段)、22…端末HW(ハードウェア)、100…アプリケーション開発ツール、110…入力部(入力手段)、120…ソースコード編集部(ソースコード編集手段)、130…ソースコード実行部(ソースコード実行手段)

【特許請求の範囲】
【請求項1】
端末で実行されるアプリケーションプログラムの消費電力を分析する消費電力分析システムであって、
前記アプリケーションプログラムによって呼び出された各モジュールの実行履歴からなるトレースログと、前記モジュールの実行時におけるハードウェアごとのリソース消費量が記録されたリソースログと、を取得し、前記トレースログおよび前記リソースログに基づいて、前記モジュールごとに各ハードウェアに対するリソース消費割合を算出するリソース消費割合算出手段と、
前記リソースログに基づいて前記ハードウェアごとに消費電力を算出するリソース消費電力算出手段と、
前記ハードウェアごとの消費電力と、前記モジュールごとの各ハードウェアに対するリソース消費割合とに基づいて、前記モジュールごとの消費電力を算出するモジュール消費電力算出手段と、
を備えることを特徴とする消費電力分析システム。
【請求項2】
前記リソースログは、前記端末全体でのリソース消費量が記録された第一リソースログであることを特徴とする請求項1に記載の消費電力分析システム。
【請求項3】
前記リソース消費割合算出手段は、前記トレースログに基づいて算出された前記モジュールの実行回数、または、前記トレースログに基づいて算出された前記モジュールのCPU時間の全体に占める割合を用いて前記モジュールごとのリソース消費割合を算出することを特徴とする請求項2に記載の消費電力分析システム。
【請求項4】
前記リソースログは、前記モジュールごとの各ハードウェアに対するリソース消費量が記録された第二リソースログであることを特徴とする請求項1に記載の消費電力分析システム。
【請求項5】
前記リソース消費割合算出手段は、前記第二リソースログに記録された前記モジュールごとの各ハードウェアに対するリソース消費量を前記ハードウェアに応じた係数に基づいて補正することを特徴とする請求項4に記載の消費電力分析システム。
【請求項6】
前記モジュールごとの消費電力を表示する表示手段をさらに備えることを特徴とする請求項1〜5のいずれか一項に記載の消費電力分析システム。
【請求項7】
前記表示手段は、前記トレースログに基づいてコールツリーを作成し、前記モジュールごとの消費電力を前記コールツリーに重畳して表示する消費電力コールツリー表示手段を備えることを特徴とする請求項6に記載の消費電力分析システム。
【請求項8】
前記消費電力コールツリー表示手段は、指定された期間における前記モジュールの消費電力を表示することを特徴とする請求項7に記載の消費電力分析システム。
【請求項9】
前記表示手段は、所定の時間における前記ハードウェアごとの消費電力を所定のグラフで表示するグラフ表示手段を備えることを特徴とする請求項6に記載の消費電力分析システム。
【請求項10】
前記表示手段は、前記トレースログに基づいてコールツリーを作成し、前記モジュールごとの消費電力を前記コールツリーに重畳して表示する消費電力コールツリー表示手段をさらに備え、
前記消費電力コールツリー表示手段は、前記グラフ表示手段によって表示された前記グラフにおいて選択された部分に応じ、前記コールツリーを表示することを特徴とする請求項9に記載の消費電力分析システム。
【請求項11】
前記グラフ表示手段は、棒グラフ又は円グラフで表示することを特徴とする請求項9又は10に記載の消費電力分析システム。
【請求項12】
前記端末は、無線通信端末であることを特徴とする請求項1〜11のいずれか一項に記載の消費電力分析システム。
【請求項13】
前記端末は、仮想端末であることを特徴とする請求項1〜11のいずれか一項に記載の消費電力分析システム。
【請求項14】
前記第二リソースログは、前記仮想端末の低レベルAPIから取得されることを特徴する請求項13に記載の消費電力分析システム。
【請求項15】
前記モジュールは、メソッドであることを特徴とする請求項1〜14のいずれか一項に記載の消費電力分析システム。
【請求項16】
ユーザの入力を受け付ける入力手段と、
前記入力手段によって受け付けられた入力に基づいて、アプリケーションプログラムのソースコードを編集するソースコード編集手段と、
前記入力手段によって受け付けられた入力に基づいて、前記ソースコード編集手段によって編集されたソースコードを実行するソースコード実行手段と、
前記ソースコード実行手段によって実行されたソースコードの消費電力を分析する請求項1〜15のいずれか一項に記載の消費電力分析システムと、
を備えることを特徴とするアプリケーション開発ツール。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−190447(P2012−190447A)
【公開日】平成24年10月4日(2012.10.4)
【国際特許分類】
【出願番号】特願2012−36667(P2012−36667)
【出願日】平成24年2月22日(2012.2.22)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【出願人】(504145342)国立大学法人九州大学 (960)
【Fターム(参考)】