特許第6790913号(P6790913)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6790913情報処理装置、情報処理方法及びプログラム
<>
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000002
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000003
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000004
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000005
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000006
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000007
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000008
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000009
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000010
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000011
  • 特許6790913-情報処理装置、情報処理方法及びプログラム 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6790913
(24)【登録日】2020年11月9日
(45)【発行日】2020年11月25日
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
   G06F 11/30 20060101AFI20201116BHJP
   G06F 11/34 20060101ALI20201116BHJP
【FI】
   G06F11/30 162
   G06F11/30 140H
   G06F11/34 147
   G06F11/34 176
【請求項の数】6
【全頁数】15
(21)【出願番号】特願2017-34078(P2017-34078)
(22)【出願日】2017年2月24日
(65)【公開番号】特開2018-139093(P2018-139093A)
(43)【公開日】2018年9月6日
【審査請求日】2019年11月12日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】松尾 美由紀
(72)【発明者】
【氏名】中島 耕太
【審査官】 塚田 肇
(56)【参考文献】
【文献】 特開2010−244202(JP,A)
【文献】 特開2016−224811(JP,A)
【文献】 特開2010−44460(JP,A)
【文献】 小野 美由紀ほか,イベントベースサンプリングによるソフトウェア消費電力の計測手法の評価,情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC) 2016−HPC−156 [online],情報処理学会,2016年 9月16日,pp.1-7
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/30
G06F 11/34
(57)【特許請求の範囲】
【請求項1】
イベントベースのサンプリングにより採取されたサンプリングデータを用いてプログラムの消費電力を算出する情報処理装置において、
CPUがアイドル状態でない場合には一定の時間間隔で割込みを発生し、CPUがアイドル状態である場合にはCPUがアイドル状態でなくなると割込みを発生するイベントのサンプリングデータを用いてCPUがアイドル状態であるか否かを判定する判定部と、
前記判定部によりCPUがアイドル状態であると判定された場合に、消費電力モデルを用いて算出した消費電力量と前記サンプリングデータに含まれる消費電力量に基づいてアイドル状態の消費電力量を算出する算出部と
を有することを特徴とする情報処理装置。
【請求項2】
前記判定部は、前記イベントに関して連続する2つのサンプリングデータの差が所定の閾値より大きい場合に、CPUがアイドル状態であると判定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記算出部は、前記消費電力モデルを用いて算出した消費電力量を前記サンプリングデータに含まれる消費電力量から引いて得られる消費電力量に基づいてアイドル状態の消費電力量を算出することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記イベントは、CPUが動作している間のサイクル数をカウントするイベントであることを特徴とする請求項1、2又は3に記載の情報処理装置。
【請求項5】
イベントベースのサンプリングにより採取されたサンプリングデータを用いてプログラムの消費電力を算出する情報処理方法において、
CPUがアイドル状態でない場合には一定の時間間隔で割込みを発生し、CPUがアイドル状態である場合にはCPUがアイドル状態でなくなると割込みを発生するイベントのサンプリングデータを用いてCPUがアイドル状態である否かを判定し、
CPUがアイドル状態であると判定した場合に、消費電力モデルを用いて算出した消費電力量と前記サンプリングデータに含まれる消費電力量に基づいてアイドル状態の消費電力量を算出する
処理を含むことを特徴とする情報処理方法。
【請求項6】
イベントベースのサンプリングにより採取されたサンプリングデータを用いて対象プログラムの消費電力を算出するプログラムにおいて、
CPUがアイドル状態でない場合には一定の時間間隔で割込みを発生し、CPUがアイドル状態である場合にはCPUがアイドル状態でなくなると割込みを発生するイベントのサンプリングデータを用いてCPUがアイドル状態である否かを判定し、
CPUがアイドル状態であると判定した場合に、消費電力モデルを用いて算出した消費電力量と前記サンプリングデータに含まれる消費電力量に基づいてアイドル状態の消費電力量を算出する
処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
近年、ICT(Information and Communication Technology)システムの消費電力が増加しており、消費電力を抑えることが重要となっている。例えば、スーパーコンピュータでは、消費電力が15MWを超えている。また、電力効率が良いスーパーコンピュータでは6.674GFlops(ギガフロップス)/W(ワット)が実現されているが、1EFlops(エクサフロップス)を実現するためには消費電力は1018/(6.674×109)=150MWとなる。このような大きな消費電力のスーパーコンピュータは、実現不可能である。
【0003】
そこで、省電力化の観点からプログラムを最適化するために、プログラムの消費電力のホットスポットを特定する技術が開発されている。ホットスポットを特定することができれば、ホットスポットをチューニングすることにより、プログラムの消費電力を低減することができる。例えば、一定の時間毎に消費電力量をサンプリングし、同様の時間毎にサンプリングした動作プログラムの情報を用いて消費電力プロファイルを作成し、ホットスポットを特定する技術がある。
【0004】
図7は、消費電力プロファイルの一例を示す図である。図7は、関数毎に消費電力量及びプログラム全体に占める消費電力量の割合を示す。図7に示すように、モジュール「programX」の関数「funcX」は、消費電力量が「160J(ジュール)」であり、プログラム全体に占める消費電力量の割合が「80.0%」である。したがって、関数「funcX」は、消費電力のホットスポットである。
【0005】
消費電力プロファイルを作成するために、一定時間毎に消費電力量をサンプリングすることが行われるが、一定時間毎の消費電力量のサンプリングでは、消費電力量を正確に計測することができない。図8Aは、一定時間毎のサンプリングを説明するための図である。図8Aは、一定時間毎の割込みにより消費電力量を取得し、割込み時に実行されていた関数の情報に基づいて関数毎の消費電力量を算出する場合を示す。図8Aの横軸は時間を示し、縦軸を電力量を示す。電力量の単位はJ(ジュール)である。
【0006】
また、図8Aでは、関数Aによる消費電力量を模様付きで示し、関数Bによる消費電力量を模様なしで示す。図8Aに示すように、関数Aによる消費電力量及び関数Bによる消費電力量はともに12Jである。しかし、一定時間毎の割込みにより消費電力量をサンプリングすると、最初のサンプリングで7Jの消費電力量を取得すると、最初のサンプリング時には関数Aが実行されているため、関数Aの消費電力量が7Jとなる。
【0007】
そして、2回目のサンプリングで8Jの消費電力量を取得すると、2回目のサンプリング時には関数Aが実行されているため、関数Aの消費電力量が7J+8J=15Jとなる。そして、3回目のサンプリングで6Jの消費電力量を取得すると、3回目のサンプリング時には関数Bが実行されているため、関数Bの消費電力量が6Jとなる。そして、4回目のサンプリングで3Jの消費電力量を取得すると、4回目のサンプリング時には関数Aが実行されているため、関数Aの消費電力量が15J+3J=18Jとなる。
【0008】
すなわち、関数Aによる消費電力量及び関数Bによる消費電力量はともに12Jであるにもかかわらず、4回のサンプリングから得られる消費電力量は、関数Aが18J、関数Bが6Jとなり、正確な消費電力量が得られない。
【0009】
そこで、一定消費電力量毎に消費電力をサンプリングする技術が開発されている。図8Bは、一定消費電力量毎のサンプリングを説明するための図である。図8Bでは、図8Aと同様に、関数Aによる消費電力量及び関数Bによる消費電力量はともに12Jである。
【0010】
図8Bに示すように、6Jという一定の消費電力量毎にサンプリングを行うと、最初のサンプリング時には関数Aが実行されているため、関数Aの消費電力量が6Jとなる。そして、2回目のサンプリング時には関数Bが実行されているため、関数Bの消費電力量が6Jとなる。
【0011】
そして、3回目のサンプリング時には関数Bが実行されているため、関数Bの消費電力量が6J+6J=12Jとなる。そして、4回目のサンプリング時には関数Aが実行されているため、関数Aの消費電力量が6J+6J=12Jとなる。
【0012】
このように、一定の消費電力量毎のサンプリングすなわち消費電力量ベースサンプリングを行うことで、一定時間毎のサンプリングすなわちタイムベースサンプリングを行う場合と比較して、各関数の消費電力量をより正確に測定できる。ただし、一定の消費電力量毎に割込みを発生してサンプリングを行うことはできない。そこで、できるだけ一定の消費電力量毎にサンプリングを行うように、消費電力に関係が深いイベントに基づくイベントベースサンプリングが行われる。
【0013】
図9は、イベントベースサンプリングを説明するための図である。図9では、イベントが1000回発生すると、オーバーフロー割込みが発生し、消費電力量及び実行されているプログラムのデータが採取される。
【0014】
なお、プログラムの要求に対応する処理を行うと共に、入力センス回数の単位時間の値を測定し、アイドル状態の値と照合してアイドル状態を検出し、通常動作モードから省電動作モードへの切り替えを行うことで、省電化を効率よく行う技術がある。
【0015】
また、割り当てる処理に対する処理電力とアイドル電力との差分を該処理にかかる時間で時間積分した値である処理増分電力量に基づいて、該処理を割り当てるサーバの組合せを選択することで、消費電力量の低減効果が高いサーバの組合せを選択する技術がある。
【0016】
また、プログラム実行による各イベントの回数と予め計測した各イベント発生時の消費電力からプログラムの電力量を計算することで、プログラム単位で情報処理装置の妥当性のある電力使用量を計算する技術がある。
【先行技術文献】
【特許文献】
【0017】
【特許文献1】特開平6−19592号公報
【特許文献2】特開2012−133505号公報
【特許文献3】国際公開第2012/001779号
【非特許文献】
【0018】
【非特許文献1】小野 美由紀、山本 昌生、中島 耕太、「サンプリングによる消費電力の計測手法」、2016年ハイパフォーマンスコンピューティングと計算科学シンポジウム(HPCS2016−031)、2016年6月
【発明の概要】
【発明が解決しようとする課題】
【0019】
図9に示したイベントベースサンプリングによる電力計測には、アイドル状態で消費された電力がアイドル状態直後に実行されたプログラムが消費したように見えるという問題がある。図10は、イベントベースサンプリングによる電力計測の問題を説明するための図である。図10において、J#1は、アイドル状態での消費電力量を示し、J#2は、プログラム実行での消費電力量を示す。
【0020】
CPU(Central Processing Unit)がアイドルしている状態でも電力は消費され、アイドル時間が長くなると、消費電力量も増加する。また、イベントベースサンプリングでは、CPUがアイドルしていたことがわからない。また、アイドル状態では、イベントが発生しても割込みは発生しない。このため、図10に示すように、アイドル状態で消費した電力量J#1も、アイドル状態の直後に実行されたプログラムが消費したように見え、アイドル状態の直後に実行されたプログラムの消費電力量J#2にJ#1が上乗せされる。
【0021】
本発明は、1つの側面では、プログラムの消費電力量について正確に計算することを目的とする。
【課題を解決するための手段】
【0022】
1つの態様では、情報処理装置は、イベントベースのサンプリングにより採取されたサンプリングデータを用いてプログラムの消費電力を算出し、判定部と算出部とを有する。判定部は、CPUがアイドル状態でない場合には一定の時間間隔で割込みを発生し、CPUがアイドル状態である場合にはCPUがアイドル状態でなくなると割込みを発生するイベントのサンプリングデータを用いてCPUがアイドル状態であった否かを判定する。算出部は、判定部によりCPUがアイドル状態であったと判定された場合に、消費電力モデルを用いて算出した消費電力量とサンプリングデータに含まれる消費電力量に基づいてアイドル状態の消費電力量を算出する。
【発明の効果】
【0023】
1つの側面では、本発明は、プログラムの消費電力量について正確に計算することができる。
【図面の簡単な説明】
【0024】
図1図1は、実施例に係る情報処理装置により採取される採取データを説明するための図である。
図2図2は、実施例に係る情報処理装置の構成を示す図である。
図3図3は、プロセッサの構成の一例を示す図である。
図4図4は、電力測定部及び電力データ解析部による処理のフローを示すフローチャートである。
図5図5は、アイドル状態の消費電力量を算出する処理のフローを示すフローチャートである。
図6図6は、電力データ解析部の効果を説明するための図である。
図7図7は、消費電力プロファイルの一例を示す図である。
図8A図8Aは、一定時間毎のサンプリングを説明するための図である。
図8B図8Bは、一定消費電力量毎のサンプリングを説明するための図である。
図9図9は、イベントベースサンプリングを説明するための図である。
図10図10は、イベントベースサンプリングによる電力計測の問題を説明するための図である。
【発明を実施するための形態】
【0025】
以下に、本願の開示する情報処理装置、情報処理方法及びプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【0026】
まず、実施例に係る情報処理装置により採取される採取データについて説明する。図1は、実施例に係る情報処理装置により採取される採取データを説明するための図である。図1に示すように、実施例に係る情報処理装置により採取される採取データ41には、性能情報41aと、電力情報41bと、プログラム情報41cが含まれる。
【0027】
性能情報41aは、CPU2の性能に関する情報であり、例えば、キャッシュミス数、キャッシュに対するアクセスのプリフェッチ数である。性能情報41aには、コア23aの性能に関する情報が含まれる。
【0028】
また、性能情報41aには、CLKイベントの値が含まれる。CLKイベントは、CPUが動作している間のサイクル数をカウントするイベントであり、一定時間毎にサンプリングするためのイベントとして用いられる。CLKイベントの値は、アイドル状態が発生したかどうかの判断に用いられる。
【0029】
性能情報41aは、イベントベースサンプリングにより、イベント計数部の値が採取される。なお、CLKイベントの値を用いてどのようにアイドル状態の発生を判断するかについて、及び、イベント計数部については後述する。
【0030】
電力情報41bは、消費電力量の情報である。電力情報41bは、イベントベースサンプリングにより、電力取得部の値が採取される。なお、電力取得部については後述する。
【0031】
プログラム情報41cは、サンプリング時に動作していたアプリケーション/OS(Operating System)6に関する情報であり、例えば、プロセスID、命令アドレスである。プログラム情報41cは、イベントベースサンプリングにより、プロファイラによって採取される。プログラム情報41cにより、プログラムと消費電力量の対応付けが可能となる。
【0032】
次に、実施例に係る情報処理装置の構成について説明する。図2は、実施例に係る情報処理装置の構成を示す図である。図2に示すように、情報処理装置1は、ハードウェアとしてCPU2と、メインメモリ3と、HDD(Hard Disk Drive)4とを有し、ソフトウェアで実現される電力測定部5と電力データ解析部7とを有する。
【0033】
CPU2は、メインメモリ3からプログラムを読み出して実行する中央処理装置である。メインメモリ3は、プログラムやプログラムの実行途中結果などを記憶するRAM(Random Access Memory)である。HDD4は、プログラムやデータを格納するディスク装置である。
【0034】
CPU2は、イベント計数部21と、電力取得部22とを有する。イベント計数部21は、CPU2で発生するイベントの種別が設定されるイベント設定レジスタと、イベントの発生回数をカウントするためのカウンタレジスタとを有する。ここで、イベントには、例えば、L(Level)3キャッシュのキャッシュミス、L2キャッシュに対するアクセスのプリフェッチがある。また、イベントには、CLKイベントがある。イベント計数部21は、イベント設定レジスタとカウンタレジスタの組を複数個有する。イベントの種別及び発生回数がサンプリング時に性能情報41aとして採取される。
【0035】
イベント設定レジスタでは割込みを発生させるか否かが指定可能となっており、割込み発生が指定されたイベントがカウンタレジスタに設定された回数分発生すると、イベント計数部21はCPU2に割込みを発生する。イベント計数部21は、例えばx−86アーキテクチャでは、PMC(Performance Monitoring Counter)である。
【0036】
電力取得部22は、プロセッサ、プロセッサに含まれるコア全体、及び、DRAMについて消費電力量等の情報を取得する。図3は、プロセッサの構成の一例を示す図である。プロセッサ23は、コア部として4つのコア23aを有し、非コア部としてL3キャッシュ23b、メモリコントローラ23cを有する。
【0037】
コア23aは、演算を行う演算処理装置である。L3キャッシュ23bは、DRAM3aに記憶されたデータの一部を記憶するキャッシュメモリである。メモリコントローラ23cは、DRAM3aへのアクセスを制御する。DRAM3aは、図2に示したメインメモリ3に対応する。プロセッサ23は、図2に示したCPU2に含まれる。
【0038】
電力取得部22は、コア全体の消費電力量は取得できるが、コア毎の消費電力量を取得することはできない。また、電力取得部22は、消費電力量毎に割込みを発生することはできない。電力取得部22は、例えばインテル(登録商標)のRAPL(Running Average Power Limit)である。
【0039】
図2に戻って、電力測定部5は、イベント計数部21及び電力取得部22を用いて、できるだけ一定の消費電力量毎にデータをサンプリングする。情報処理装置1は一定の消費電力量毎に割込みを発生する機能がないため、電力測定部5は、消費電力に関係するイベントを特定し、特定したイベントを用いて割込みを発生させることにより、できるだけ一定の消費電力量毎にデータをサンプリングする。
【0040】
すなわち、電力測定部5は、イベントベースサンプリングを行う。電力測定部5は、イベントベースサンプリングにより、性能情報41a、電力情報41b及びプログラム情報41cを採取する。電力測定部5は、測定制御部51とカーネル部52とを有する。
【0041】
測定制御部51は、イベント及びイベントのサンプリング間隔によりデータのサンプリングを制御する。測定制御部51は、イベント決定部51aと測定部51bとを有する。イベント決定部51aは、消費電力モデル、データのサンプリング間隔、及び、イベント数を入力し、データのサンプリングに用いるイベントに関する処理を行う。
【0042】
消費電力モデルは、CPU2で発生するイベントに基づいてプロセッサ23、DRAM3a等の消費電力を算出するためのモデルである。例えば、コア23aの消費電力モデルとして、
消費電力[W]=13.06+
7.136×C+
1.157×10-8×L2_TRANS.ALL_PF+
3.841×10-8×LONGEST_LAT_CACHE.MISS
がある。
【0043】
ここで、Cは、CPU2がアクティブに動作した割合であり、コア性能情報から算出される。L2_TRANS.ALL_PFは、L2キャッシュに対するアクセスのプリフェッチ数であり、L2キャッシュに対するアクセスのプリフェッチは、イベント設定レジスタに設定可能なイベントである。LONGEST_LAT_CACHE.MISSは、L3キャッシュ23bのキャッシュミス数であり、L3キャッシュ23bのキャッシュミスは、イベント設定レジスタに設定可能なイベントである。
【0044】
また、DRAM3aの消費電力モデルとして、
消費電力[W]=2.753+
2.18×10-7×LONGEST_LAT_CACHE.MISS
がある。
【0045】
データのサンプリング間隔は、次のサンプリングまでの消費電力量である。イベント数は、割込み発生に用いられるイベントの数である。ただし、イベント数には、CLKイベントは含まれない。すなわち、CLKイベントを含めると、イベント数+1のイベントによる割込みが発生する。
【0046】
イベント決定部51aは、イベント特定部61と、サンプリング間隔特定部62と、設定部63とを有する。イベント特定部61は、消費電力モデルとイベント数を入力し、CLKイベント以外に割込みを発生させるイベントを特定する。イベント特定部61は、例えば、イベント数が1である場合には、消費電力モデルの係数が最も大きいイベントを、割込みを発生させるイベントとして特定する。
【0047】
消費電力モデルを
消費電力=0.003×L3キャッシュミス数+0.001×L2キャッシュアクセス数 ・・・(1)
とすると、イベント数が1である場合には、L3キャッシュミスが割込みを発生させるイベントとして特定される。
【0048】
また、イベント特定部61は、例えば、イベント数が複数である場合には、消費電力モデルの係数が大きいイベントから指定個数だけ選択し、割込みを発生させるイベントとして特定する。消費電力モデルが上記式(1)であり、イベント数が2である場合には、L3キャッシュミスとL2キャッシュアクセスが割込みを発生させるイベントとして特定される。ただし、他の係数と比較して値が著しく小さいイベントは、指定個数以内でも選択されない。
【0049】
イベント特定部61は、例えば、複数の消費電力モデルを表示装置に表示し、ユーザにマウスで選択させることにより消費電力モデルを入力する。イベント特定部61は、例えば、イベント数をユーザにキーボードから入力させる。
【0050】
サンプリング間隔特定部62は、イベント特定部61により特定されたイベントのサンプリング間隔を、データのサンプリング間隔と消費電力モデルのイベントの係数に基づいて特定する。具体的には、サンプリング間隔特定部62は、各イベントの係数の逆数を消費電力のサンプリング間隔に掛けて、各イベントのサンプリング間隔を算出する。すなわち、イベントのサンプリング間隔=消費電力量のサンプリング間隔/イベントの係数である。
【0051】
例えば、消費電力量のサンプリング間隔が6Jであり、消費電力モデルが上記式(1)である場合には、L3キャッシュミスのサンプリング間隔=6/0.003=2000回である。また、L2キャッシュアクセスのサンプリング間隔=6/0.001=6000回である。
【0052】
なお、サンプリング間隔特定部62は、イベント数が1である場合には他のイベントで消費する分を考慮しないことになるので、イベントの係数に一定の値αを加えて、サンプリング間隔を狭めてもよい。例えば、L3キャッシュミス数だけをイベントとし、α=0.001とする場合には、サンプリング間隔=6/(0.003+0.001)=1500回としてもよい。
【0053】
また、サンプリング間隔特定部62は、データのサンプリング間隔をユーザにキーボードから入力させる。あるいは、サンプリング間隔特定部62は、測定対象プログラムの総消費電力量と採取したいサンプル数をユーザにキーボードから入力させ、消費電力量のサンプリング間隔を総消費電力量/サンプル数として算出する。例えば、総消費電力量が12000Jであり、サンプル数が2000個である場合には、データのサンプリング間隔=12000J/2000=6Jである。
【0054】
設定部63は、イベント決定部51aにより特定されたイベント及びサンプリング間隔を、カーネル部52に指示して、イベント計数部21に設定させる。また、設定部63は、CLKイベント及びサンプリング間隔をカーネル部52に指示して、イベント計数部21に設定させる。
【0055】
測定部51bは、設定部63により設定されたイベント及びサンプリング間隔を用いて消費電力の測定を開始するようにカーネル部52に指示する。また、測定部51bは、測定時間を指定することにより測定の終了をカーネル部52に指示する。
【0056】
カーネル部52は、OS(オペレーティングシステム)のカーネル機能により実現される。カーネル部52は、割込み処理部52aとデータ記憶部52bとを有する。
【0057】
割込み処理部52aは、イベント計数部21からの割込みにより起動され、採取データ41すなわち性能情報41a、電力情報41b及びプログラム情報41cを採取する。割込み処理部52aは、採取したデータをサンプリングデータとしてデータ記憶部52bに保存する。
【0058】
データ記憶部52bは、割込み処理部52aにより採取された採取データ41を記憶する。データ記憶部52bが記憶する採取データ41は、測定終了後にHDD4に書き出される。HDD4に書き出された採取データ41は、電力データ解析部7により解析され、消費電力プロファイルの作成等が行われる。
【0059】
電力データ解析部7は、採取データ41を解析して消費電力プロファイルの作成等を行う。電力データ解析部7は、コア23aの性能に関する情報をもとにコア23aに消費電力量を分配し、各コア23aで動作した関数の消費電力量を算出する。
【0060】
電力データ解析部7は、アイドル状態の消費電力量及び全体に占める割合も算出する。電力データ解析部7は、算出した消費電力量、全体に占める割合等を解析データ42としてHDD4に書き込む。
【0061】
電力データ解析部7は、判断部71と算出部72とを有する。判断部71は、性能情報41aに含まれるCLKイベントのデータを用いてアイドル状態が発生したかどうかを判断する。具体的には、判断部71は、一定時間間隔でCLKイベントの割込みが発生していない場合をアイドル状態と判断する。
【0062】
CLKイベントの割込みは、一定時間間隔で発生するが、アイドル状態であると割込みが発生せず、CLKイベントの値が加算されていく。そこで、判断部71は、2つの連続するCLKイベントの値をtn-1とtnとすると、tn−tn-1に基づいてアイドル状態の有無を判断する。
【0063】
すなわち、判断部71は、
CLKイベントのデータ間の経過時間>CLKイベントのサンプリング間隔×N
である場合に、アイドル状態が発生したと判断する。ここで、Nは、正の整数であり、アイドル状態の粒度に基づいて決定される値である。Nは、例えば、5〜10である。
【0064】
算出部72は、tnと同じサンプリングデータに含まれる他のイベントの値を用いてアイドル状態で消費される電力量を算出する。具体的には、算出部72は、イベント決定部51aが用いた消費電力モデルに、サンプリングデータのイベントの値を当てはめて、消費電力モデルに基づく消費電力量を計算し、同じサンプリングデータに含まれる消費電力量との差分をアイドル状態での消費電力量とする。
【0065】
なお、電力測定部5及び電力データ解析部7は、HDD4に格納された電力測定プログラム及び電力データ解析プログラムが、それぞれHDD4からメインメモリ3に読み出されてCPU2により実行されることによって実現される。また、電力測定プログラム及び電力データ解析プログラムは、例えば、DVDから読出されて情報処理装置1にインストールされる。あるいは、電力測定プログラム及び電力データ解析プログラムは、LAN(Local Area Network)を介して接続された他の情報処理装置のデータベースなどに記憶され、これらのデータベースから読み出されて情報処理装置1にインストールされる。
【0066】
次に、電力測定部5及び電力データ解析部7による処理のフローについて説明する。図4は、電力測定部5及び電力データ解析部7による処理のフローを示すフローチャートである。図4に示すように、電力測定部5は、CLKイベント以外で割込みを発生させるイベント及びサンプリング間隔を決定し(ステップS1)、決定したイベントとCLKイベントについて、イベント及びサンプリング間隔をイベント計数部21に設定する(ステップS2)。なお、ステップS1及びステップS2の処理は測定制御部51により行われる。
【0067】
その後、測定対象プログラムが実行され、測定が開始されると、割込み処理部52aが、イベント計数部21からの割込みをキャッチし(ステップS3)、性能情報41a、電力情報41b及びプログラム情報41cを採取する(ステップS4)。そして、割込み処理部52aは、採取したデータを1つのサンプリングデータとしてデータ記憶部52bに保存し(ステップS5)、割込みを発生したイベントに対応するカウンタレジスタに初期値を設定する(ステップS6)。
【0068】
そして、割込み処理部52aは、測定時間が終了したか否かを判定し(ステップS7)、測定時間が終了していない場合には、ステップS3に戻り、測定時間が終了した場合には、測定処理を終了する。
【0069】
その後、測定が終了すると、電力測定部5は、データ記憶部52bが記憶する採取データ41をHDD4に書き出し、処理を終了する。そして、電力データ解析部7が、HDD4から採取データ41を読み込み、採取データ41を解析し(ステップS8)、解析結果をHDD4に解析データ42として書き出す。
【0070】
次に、アイドル状態の消費電力量を算出する処理のフローについて説明する。図5は、アイドル状態の消費電力量を算出する処理のフローを示すフローチャートである。なお、アイドル状態の消費電力量を算出する処理は、図4のステップS8の処理すなわち採取データ41を解析する処理の一部として行われる。
【0071】
図5に示すように、電力データ解析部7は、pre_clkをcurrent_clkとする(ステップS11)。ここで、pre_clkは、1つ前のデータのCLKイベントの値であり、current_clkは、現データのCLKイベントの値である。なお、データはCLKイベントの割込みによる1回のサンプリングにより採取された採取データ41である。そして、電力データ解析部7は、次のデータを取り出し、次のデータのCLKイベントの値をcurrent_clkとする(ステップS12)。
【0072】
そして、電力データ解析部7は、current_clkからpre_clkを引いた値が一定間隔より大きいか否かを判定する(ステップS13)。ここで、一定間隔は、サンプリング間隔×Nである。そして、current_clkからpre_clkを引いた値が一定間隔より大きくない場合には、電力データ解析部7は、ステップS17へ進む。
【0073】
一方、current_clkからpre_clkを引いた値が一定間隔より大きい場合には、電力データ解析部7は、消費電力モデルの式に現データのイベント値を当てはめで消費電力モデルに基づく消費電力量Pを計算する(ステップS14)。そして、電力データ解析部7は、現データに含まれる消費電力量からPを引いてアイドル状態の消費電力量とし(ステップS15)、アイドル状態の消費電力量を現データに追加する(ステップS16)。
【0074】
そして、電力データ解析部7は、データが終了したか否かを判定し(ステップS17)、データが終了していない場合には、ステップS12に戻り、データが終了した場合には、アイドル状態の消費電力量を算出する処理を終了する。なお、電力データ解析部7は、アイドル状態の消費電力量が追加された採取データ41を用いて消費電力プロファイルを作成する。
【0075】
このように、電力データ解析部7は、CLKイベントの値を用いてアイドル状態の発生を特定し、アイドル状態が発生していた場合には、アイドル状態の消費電力量を計算することで、プログラムの消費電力量を正確に計算することができる。
【0076】
図6は、電力データ解析部7の効果を説明するための図である。図6(a)は、アイドル状態は未把握である場合の消費電力プロファイルを示し、図6(b)は、アイドル状態を把握した場合の消費電力プロファイルを示す。図6(a)では、「ProgramA」の「funcA」の消費電力量が、「100J」で割合が「50.0%」であり、最も多い。
【0077】
一方、図6(b)では、アイドル状態を示す「IDLE」の消費電力量が「40J」で割合が「20.0%」であり、「ProgramA」の「funcB」の消費電力量が、「80J」で割合が「40.0%」であり、最も多い。図6から、アイドル状態を把握しないと、アイドル状態の消費電力量が「ProgramA」の「funcA」の消費電力量に上乗せされていたことがわかる。
【0078】
上述してきたように、実施例では、電力データ解析部7の判断部71が、CLKイベントのサンプリングデータを用いてCPU2がアイドル状態であったか否かを判定する。そして、判定部71によりCPU2がアイドル状態であったと判定された場合に、算出部72が、消費電力モデルを用いて算出した消費電力量Pとサンプリングデータに含まれる消費電力量に基づいて、アイドル状態の消費電力量を算出する。したがって、電力データ解析部7は、アイドル状態で消費された電力量を除き、プログラムの消費電力量を正確に計算することができる。
【0079】
また、実施例では、判断部71は、CLKイベントの連続する2つのサンプリングデータの差が所定の閾値より大きい場合に、CPU2がアイドル状態であったと判定するので、アイドル状態を正確に特定することができる。
【0080】
また、実施例では、算出部72は、消費電力モデルを用いて算出した消費電力量Pをサンプリンデータに含まれる消費電力量から引いて得られる消費電力量に基づいてアイドル状態の消費電力量を算出する。したがって、算出部72は、アイドル状態の消費電力量を正確に計算することができる。
【0081】
なお、実施例では、電力データ解析部7が電力測定部5と同じハードウェアにより実現される場合について説明したが、電力データ解析部7は電力測定部5と異なるハードウェアにより実現されてもよい。電力データ解析部7を実現するハードウエアのCPUは、イベント計数部21及び電力取得部22を有しなくてもよい。
【0082】
また、実施例では、CPU2がアイドル状態であるかを判断するためにCLKイベントを用いる場合について説明したが、情報処理装置1は、一定時間で割込みが可能な他のイベントを用いてもよい。
【0083】
また、実施例では、消費電力プロファイルとして、モジュールの関数毎に消費電力量と割合を算出する場合について説明したが、電力データ解析部7は、モジュール毎、プログラム毎等の他のプログラム単位毎に消費電力量と割合を算出してもよい。
【符号の説明】
【0084】
1 情報処理装置
2 CPU
3 メインメモリ
3a DRAM
4 HDD
5 電力測定部
6 アプリケーション/OS
7 電力データ解析部
21 イベント計数部
22 電力取得部
23 プロセッサ
23a コア
23b L3キャッシュ
23c メモリコントローラ
41 採取データ
41a 性能情報
41b 電力情報
41c プログラム情報
42 解析データ
51 測定制御部
51a イベント決定部
51b 測定部
52 カーネル部
52a 割込み処理部
52b データ記憶部
61 イベント特定部
62 サンプリング間隔特定部
63 設定部
71 判定部
72 算出部
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10