(58)【調査した分野】(Int.Cl.,DB名)
前記リソース消費割合算出手段は、前記トレースログに基づいて算出された前記モジュールの実行回数、または、前記トレースログに基づいて算出された前記モジュールのCPU時間の全体に占める割合を用いて前記モジュールごとのリソース消費割合を算出することを特徴とする請求項2に記載の消費電力分析システム。
前記リソースログは、前記モジュールごとの各ハードウェアに対するリソース消費量が記録された第二リソースログであることを特徴とする請求項1に記載の消費電力分析システム。
前記リソース消費割合算出手段は、前記第二リソースログに記録された前記モジュールごとの各ハードウェアに対するリソース消費量を前記ハードウェアに応じた係数に基づいて補正することを特徴とする請求項4に記載の消費電力分析システム。
前記表示手段は、前記トレースログに基づいてコールツリーを作成し、前記モジュールごとの消費電力を前記コールツリーに重畳して表示する消費電力コールツリー表示手段を備えることを特徴とする請求項6に記載の消費電力分析システム。
前記表示手段は、所定の時間における前記ハードウェアごとの消費電力を所定のグラフで表示するグラフ表示手段を備えることを特徴とする請求項6に記載の消費電力分析システム。
前記表示手段は、前記トレースログに基づいてコールツリーを作成し、前記モジュールごとの消費電力を前記コールツリーに重畳して表示する消費電力コールツリー表示手段をさらに備え、
前記消費電力コールツリー表示手段は、前記グラフ表示手段によって表示された前記グラフにおいて選択された部分に応じ、前記コールツリーを表示することを特徴とする請求項9に記載の消費電力分析システム。
【発明を実施するための形態】
【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
2、ストレージからの読み出しデータ量が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は、アプリケーションプログラムのメソッドに割り当てられた識別番号)の特定のハードウェアに対するリソース消費量C
method_Xを取得する。また、リソース消費割合算出部11は、第二リソースログからすべてのメソッドのリソース消費量C
allを取得する。そして、リソース消費割合算出部11は、以下のリソース消費割合算出式(1)に基づいて、対象となるメソッドXの特定のハードウェアに対するリソース消費割合α
resource_Xを算出する。
リソース消費割合α
resource_X=C
method_X/C
all…(1)
【0037】
α
resouce_Xは、アプリケーションプログラムのメソッドXが所定のハードウェアを消費した量のメソッド全体に占める割合を表している。例えばハードウェアがCPUである場合、リソース消費量C
method_Xはある期間においてメソッドXが使用したCPU時間である。また、リソース消費量C
allはある期間においてアプリケーションプログラム全体が使用した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は、第二リソースログから取得したリソース消費量C
method_Xを係数β
resouceおよび定数γ
resouceに基づいて補正する。例えば、リソース消費割合算出部11は、第二リソースログから取得したリソース消費量C
method_Xを、以下の式(2)に基づいて補正する。
補正リソース消費量C
method_X’=β
resouce×C
method_X+γ
resouce…(2)
【0041】
ここで、係数β
resouceおよび定数γ
resouceは、ハードウェア(リソース)に応じて定められた値である。例えば、リソース消費割合算出部11は、無線通信を行う場合、ヘッダおよびコントロール情報について、予め1パケット当たりのデータ量を求め、それを係数β
WiFiとする。そして、リソース消費割合算出部11は、OSレベルで得られたパケット数に係数β
WiFiを掛け、定数γ
WiFiを0にすることで、メソッドのWi−Fiに対する補正リソース消費量C
method_X’を算出する。続いて、リソース消費割合算出部11は、以下の式(3)に基づいて対象となるメソッドのリソース消費割合を算出する。
リソース消費割合α
resource_X=C
method_X’/C
all…(3)
【0042】
ここで、低レベルAPIまでの呼び出し関係がすべてログとして出力されているので、同じ低レベルAPIでも呼び出し元が違うと、リソース消費割合算出部11は、異なるリソース消費割合α
resource_Xとして算出する。
【0043】
図6は、リソース消費割合算出部11が算出したリソース消費割合α
resource_Xの出力D
rateの一例を示す図である。
図6に示すように、出力D
rateは、計算対象となる期間の開始時刻を示す時間情報と、リソース消費割合α
resource_Xと、メソッドの呼び出し関係を含めたメソッド名と、を有している。
図6の出力D
rateは、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
tをトレースログから取得する。そして、リソース消費割合算出部11は、以下の式(4)に基づいて、期間tにおけるメソッドごとのリソース消費割合α
resource_Xを算出する。
リソース消費割合α
resource_X=1/n
t…(4)
【0046】
第二の算出方法は、メソッドのCPU時間に基づいて算出する方法である。この方法は、特定のハードウェアがCPUか否かにより算出方法が異なる。
【0047】
特定のハードウェアがCPUの場合、リソース消費割合算出部11は、期間tにおいてCPUを消費する各メソッドのCPU時間T
method_Xをトレースログから取得する。また、同期間tにおいて最上位の親メソッドのCPU時間の総和T
main_allをトレースログから取得する。ここで、メソッドのCPU時間は、当該メソッドが呼び出されてから実行終了するまでの時間である。そして、リソース消費割合算出部11は、以下の式(5)に基づいて、期間tにおけるメソッドごとのリソース消費割合を算出する。
リソース消費割合α
resource_X=T
method_X/T
main_all…(5)
【0048】
図7の(a)はコールツリーの一例を示す図、
図7の(b)は(a)のコールツリーで示された各メソッドのCPU時間の一例を示す図である。
図7の(a)のコールツリーでは、メインメソッドがメソッドAおよびメソッドBを呼び出している。そして、メソッドAがメソッドA1を呼び出し、メソッドA1がメソッドA2およびメソッドA3を呼び出している。さらに、メソッドBがメソッドB1を呼び出している。
【0049】
図7の(b)の例では、メインメソッドのCPU時間T
main_allは、期間t内においてメインメソッドが実行されている時間を示している。各子メソッドのCPU時間は、期間t内において子メソッドが親メソッドにより呼び出されてから実行終了するまでの時間を示している。例えば、メソッドA2のCPU時間T
method_A2は、メソッドA2がメソッドA1に呼び出されてから実行終了するまでの時間を示している。
【0050】
ここで、特定のハードウェアがCPUの場合、親メソッドは子メソッドを実行する以外に演算等でCPUを動作させている。このため、各メソッドのリソース消費割合(CPU消費割合)は、最上位のメソッドであるメインメソッドのCPU時間T
main_allに対する各メソッドのCPU時間T
method_Xの割合として算出される。例えば、メソッドA2のCPU消費割合α
CPU_A2は、以下の式により算出される。
CPU消費割合α
CPU_A2=T
method_A2/T
main_all
【0051】
特定のハードウェアがCPU以外の場合、リソース消費割合算出部11は、期間tにおいて特定のハードウェアを消費する各メソッドのCPU時間T
method_Xをトレースログから取得する。また、同期間tにおいて特定のハードウェアを消費する全ての低レベルAPIの総CPU時間T
allを取得する。そして、リソース消費割合算出部11は、以下の式(6)に基づいて、期間tにおけるメソッドごとのリソース消費割合を算出する。
リソース消費割合α
resource_X=T
method_X/T
all…(6)
【0052】
図7の例を用いて具体的に説明する。なお、メソッドA2およびメソッドB1は、特定のハードウェア(例えば、Wi-Fiなど)を消費する低レベルAPIであるとする。ここで、特定のハードウェアがCPU以外の場合、そのハードウェアを消費するメソッドは、低レベルAPIである。また、親メソッドは当該ハードウェアを消費しない。このため、各メソッドのリソース消費割合は、そのハードウェアを消費する低レベルAPIのCPU時間の総和T
allに対する各メソッドのCPU時間T
method_Xの割合として算出される。例えば、メソッドA2のリソース消費割合α
resouce_A2は、以下の式により算出される。この場合、特定のハードウェアに関する総CPU時間T
allは、メソッドA2のCPU時間T
method_A2とメソッドB1のCPU時間T
method_B1との和である。
リソース消費割合α
resouce_A2=T
method_A2/(T
method_A2+T
method_B1)
【0053】
なお、メソッドの呼び出し関係は、トレースログを解析することによって得ることができる。したがって、リソース消費割合算出部11は、
図6で示した出力D
rateと同様のフォーマットで出力を行う。
【0054】
図1に戻り、リソース消費電力算出部12は、端末2の部品状態管理部24が取得した第一リソースログに基づいて、端末2全体の消費電力(ハードウェアごとの内訳を含む)を算出するリソース消費電力算出手段として機能する。具体的に説明すると、リソース消費電力算出部12は、第一リソースログと、該第一リソースログに記憶されている第一ログ情報の各パラメータ(後述のp
j)に応じて予め設定された電力係数(後述のc
ij)の値と、に基づき、以下の消費電力評価式(7)および式(8)に従って、端末HW22の各ハードウェアの消費電力P
resourceおよび端末2全体の消費電力P
allの評価値を算出する。
【数1】
【数2】
【0055】
上記式(7)および式(8)において、iはハードウェアの識別番号を表しており、1〜N(Nは、端末2の端末HW22に含まれる構成部品の総数)の整数値である。P
resource_iは、i番目のハードウェアの消費電力を表している。また、上記式(7)において、jは第一ログ情報に含まれているパラメータの識別番号を表しており、1〜M(Mは、第一ログ情報に含まれているパラメータの総数)の整数値である。p
jは、第一ログ情報に含まれているj番目のパラメータを表している。c
ijは、j番目のパラメータがi番目のハードウェアの消費電力に与える影響度を示す電力係数を表している。この電力係数c
ijは、リソース消費電力算出部12に予め設定されている。電力係数c
ijは、例えば特開2010−225133号公報に記載された手法により算出可能である。なお、電力係数c
ijの算出方法は、これに限定されない。また、上記式(8)において、P
allは、端末2全体の消費電力を表している。
【0056】
図8は、端末2全体の消費電力を示す消費電力評価値の一例を示す図である。
図8に示すように、消費電力評価値は、時間情報と、端末HW22の各ハードウェアの消費電力P
resourceと、を含んでいる。時間情報は、消費電力の計算対象となる期間の開始時刻を示している。消費電力P
resourceは、時間情報が示す開始時刻から単位時間経過するまでのハードウェアごとの消費電力を示している。例えば、
図8の消費電力評価値Prは、12時34分56秒から1秒間を計算の対象としている。そして、この期間においてCPUの消費電力P
CPUは0.23W、Wi-Fiの消費電力P
WiFiは0.1W、LCDの消費電力P
LCDは0.2W、ストレージP
STORAGEの消費電力は0.1W、GPSの消費電力P
GPSは0.0Wであったことを示している。また、これらの各ハードウェアの消費電力の総和は、端末2全体の消費電力P
allを示す。このようにして、リソース消費割合算出部11は、ハードウェアごとの消費電力P
resourceおよび端末2全体の消費電力P
allを算出する。
【0057】
図1に戻って、メソッド消費電力算出部13は、ハードウェアごとの消費電力P
resourceと、メソッドごとの各ハードウェアに対するリソース消費割合α
resource_Xとに基づいて、メソッドごとの消費電力P
method_Xを算出するメソッド消費電力算出手段として機能する。具体的には、メソッド消費電力算出部13は、以下のメソッド消費電力算出式(9)に基づいて、各メソッドの消費電力P
method_Xを算出する。
【数3】
【0058】
上記式(9)において、P
method_Xは、メソッドXの消費電力を表している。iはハードウェアの識別番号を表しており、1〜N(Nは、端末2の端末HW22に含まれる構成部品の総数)の整数値である。P
resource_iは、i番目のハードウェアの消費電力を表している。また、α
resource_i_Xは、i番目のハードウェアに対するメソッドXの消費割合を表している。例えば、端末HW22に含まれるハードウェアがCPUとWi-FiとGPSとカメラである場合、メソッドAの消費電力は、以下の式で算出される。
P
method_A=P
CPU×α
CPU_A+P
WiFi×α
WiFi_A+P
GPS×α
GPS_A+P
camera×α
camera_A
【0059】
図9は、メソッド消費電力算出部13が算出した単位時間におけるメソッドごとの消費電力を含む出力D
powerの一例を示す図である。
図9に示すように、出力D
powerは、計算対象の開始時刻を示す時間情報と、メソッドが使用した消費電力と、メソッドの呼び出し関係も含めたメソッド名と、を有している。
図9の出力D
powerは、12時34分56秒から1秒間に、メソッド名「org/apache/harmony/luni/platform/OSNetworkSystem.sendStream」のメソッドの消費電力が0.5Wであったことを示している。
【0060】
メソッド消費電力算出部13は、この出力D
powerを表示部14に送信する。また、メソッド消費電力算出部13は、メソッドが呼び出された時間を示す時間情報を含むトレースログを表示部14に送信する。
【0061】
表示部14は、メソッドごとの消費電力を表示する表示手段として機能する。
図10は、表示部14の機能構成を示すブロック図である。
図10に示すように、表示部14は、グラフ表示部141(特許請求の範囲の「グラフ表示手段」に相当)と、消費電力コールツリー表示部142(特許請求の範囲の「消費電力コールツリー表示手段」に相当)と、を備えている。
【0062】
グラフ表示部141は、所定の時間におけるハードウェアごとの消費電力を所定のグラフで表示するグラフ表示手段として機能する。グラフ表示部141は、消費電力を分析したいアプリケーションプログラムを実行中にリアルタイムでグラフ表示してもよい。また、グラフ表示部141は、アプリケーションプログラムを実行し終わってから、開発者によって選択された部分のグラフ表示を行ってもよい。グラフ表示部141は、例えば、円グラフ表示部141aと棒グラフ表示部141bとを備えている。
【0063】
円グラフ表示部141aは、ある時間でのハードウェアごとの消費電力の消費割合を円グラフで表示する。具体的に説明すると、円グラフ表示部141aは、リソース消費電力算出部12によって算出された各ハードウェアの消費電力P
resourceを端末2全体の消費電力P
allで割ることで各ハードウェアの消費電力の消費割合を算出する。そして、円グラフ表示部141aは、各ハードウェアの消費電力の消費割合を円グラフで表示する。
図11は、円グラフ表示部141aによって表示される円グラフの一例を示す図である。
【0064】
表示された円グラフ上で所定のハードウェアの消費割合を示す部分がユーザによって選択された場合、円グラフ表示部141aは、選択されたハードウェアを示す情報を消費電力コールツリー表示部142に送信する。
【0065】
棒グラフ表示部141bは、ある時間でのハードウェアごとの消費電力の消費割合を棒グラフで表示する。具体的に説明すると、棒グラフ表示部141bは、リソース消費電力算出部12によって算出された各ハードウェアの消費電力P
resourceを端末2全体の消費電力P
allで割ることで各ハードウェアの消費電力の消費割合を算出する。そして、棒グラフ表示部141bは、各ハードウェアの消費電力の消費割合を棒グラフで表示する。
図12は、棒グラフ表示部141bによって表示される棒グラフの一例を示す図である。
図12の縦軸は、端末2全体の消費電力P
allを1とした場合の各ハードウェアの消費電力の消費割合を示している。
図12の横軸は、計算対象となる期間の開始時刻を識別する識別情報である。
【0066】
表示された棒グラフ上で所定のハードウェアの消費割合を示す部分がユーザによって選択された場合、棒グラフ表示部141bは、選択されたハードウェアを示す情報を消費電力コールツリー表示部142に送信する。
【0067】
消費電力コールツリー表示部142は、トレースログに基づいてコールツリーを作成し、メソッドごとの消費電力をコールツリーに重畳して表示する消費電力コールツリー表示手段として機能する。消費電力コールツリー表示部142は、コールツリー作成部142aと、消費電力重畳部142bと、を備えている。
【0068】
コールツリー作成部142aは、メソッド消費電力算出部13から出力されたトレースログに基づいて、単位時間におけるメソッドごとの呼び出し関係を解析し、コールツリーを作成する。このコールツリーは、時間軸に関係なく、実行されたアプリケーションプログラムが使用したメソッドを表示している。消費電力重畳部142bは、コールツリー作成部142aによって作成されたコールツリーのメソッド名に基づいて、メソッド消費電力算出部13によって算出されたメソッドごとの消費電力P
method_Xを重畳する。そして、消費電力コールツリー表示部142は、コールツリーにメソッドごとの消費電力P
method_Xを重畳した消費電力コールツリーを表示する。
【0069】
図13は、消費電力コールツリー表示部142によって表示される消費電力コールツリーT
powerの一例を示す図である。
図13に示すように、消費電力コールツリーは、コールツリーT
callと、消費電力テーブルPmとを含んでいる。コールツリーT
callは、親メソッドによって呼び出されるメソッドの関係をツリー構造で示している。
図13の例では、コールツリーT
callは、アプリケーションプログラムAPがメソッドaおよびメソッドbを呼び出すことを示している。そして、コールツリーT
callは、メソッドaがメソッドaaおよびメソッドabを呼び出し、メソッドbがメソッドbaおよびメソッドbbを呼び出すことを示している。
【0070】
消費電力テーブルPmは、各メソッドの消費電力を示している。
図13の例では、消費電力テーブルPmは、メソッドaa、メソッドab、メソッドba、およびメソッドbbの消費電力を示している。具体的には、
図13の例では、消費電力テーブルPmは、各メソッドの消費電力P
method_Xと、各メソッドのハードウェアごとの消費電力P
method_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は、補正リソース消費量C
method_i’を、上記式(2)に基づいて求めているが、これに限定されない。例えば、リソース消費割合算出部11は、第二リソースログから取得したリソース消費量C
methodを係数β
resouceで除算する、または、リソース消費量C
methodから定数γ
resouceを減算するなどして、補正リソース消費量C
method_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等の記憶媒体または半導体メモリに格納されて提供される。また、上述の消費電力分析プログラムは、搬送波に重畳されたコンピュータデータ信号としてネットワークを介して提供されてもよい。