(57)【要約】      （修正有）【課題】アイドル状態の消費電力量を除き、プログラムの消費電力量を正確に計算できる情報処理装置を提供する。【解決手段】ＣＰＵ２は、イベント計数部２１と、電力取得部２２とを有する。イベント計数部は、ＣＬＫイベント（ＣＰＵが動作している間のサイクル数をカウントするイベント）が設定された回数分発生すると、割込みを発生させる。電力取得部は、プロセッサ、プロセッサに含まれるコア全体、ＤＲＡＭについて消費電力量等の情報を取得する。電力データ解析部７は、判断部７１と算出部７２とを有する。判断部は、ＣＬＫイベントのデータを用いてＣＰＵがアイドル状態（一定時間間隔でＣＬＫイベントの割込みが発生していない）であったか否かを判定する。算出部は、アイドル状態であったと判定された場合に、消費電力モデルを用いて算出した消費電力量とサンプリングデータに含まれる消費電力量に基づいて、アイドル状態の消費電力量を算出する。【選択図】図２
2018139093.tif 000002
【特許請求の範囲】
【請求項１】
イベントベースのサンプリングにより採取されたサンプリングデータを用いてプログラムの消費電力を算出する情報処理装置において、
ＣＰＵがアイドル状態でない場合には一定の時間間隔で割込みを発生し、ＣＰＵがアイドル状態である場合にはＣＰＵがアイドル状態でなくなると割込みを発生するイベントのサンプリングデータを用いてＣＰＵがアイドル状態であるか否かを判定する判定部と、
前記判定部によりＣＰＵがアイドル状態であると判定された場合に、消費電力モデルを用いて算出した消費電力量と前記サンプリングデータに含まれる消費電力量に基づいてアイドル状態の消費電力量を算出する算出部と
を有することを特徴とする情報処理装置。
【請求項２】
前記判定部は、前記イベントに関して連続する２つのサンプリングデータの差が所定の閾値より大きい場合に、ＣＰＵがアイドル状態であると判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記算出部は、前記消費電力モデルを用いて算出した消費電力量を前記サンプリングデータに含まれる消費電力量から引いて得られる消費電力量に基づいてアイドル状態の消費電力量を算出することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記イベントは、ＣＰＵが動作している間のサイクル数をカウントするイベントであることを特徴とする請求項１、２又は３に記載の情報処理装置。
【請求項５】
イベントベースのサンプリングにより採取されたサンプリングデータを用いてプログラムの消費電力を算出する情報処理方法において、
ＣＰＵがアイドル状態でない場合には一定の時間間隔で割込みを発生し、ＣＰＵがアイドル状態である場合にはＣＰＵがアイドル状態でなくなると割込みを発生するイベントのサンプリングデータを用いてＣＰＵがアイドル状態である否かを判定し、
ＣＰＵがアイドル状態であると判定した場合に、消費電力モデルを用いて算出した消費電力量と前記サンプリングデータに含まれる消費電力量に基づいてアイドル状態の消費電力量を算出する
処理を含むことを特徴とする情報処理方法。
【請求項６】
イベントベースのサンプリングにより採取されたサンプリングデータを用いて対象プログラムの消費電力を算出するプログラムにおいて、
ＣＰＵがアイドル状態でない場合には一定の時間間隔で割込みを発生し、ＣＰＵがアイドル状態である場合にはＣＰＵがアイドル状態でなくなると割込みを発生するイベントのサンプリングデータを用いてＣＰＵがアイドル状態である否かを判定し、
ＣＰＵがアイドル状態であると判定した場合に、消費電力モデルを用いて算出した消費電力量と前記サンプリングデータに含まれる消費電力量に基づいてアイドル状態の消費電力量を算出する
処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ＩＣＴ（Information  and  Communication  Technology）システムの消費電力が増加しており、消費電力を抑えることが重要となっている。例えば、スーパーコンピュータでは、消費電力が１５ＭＷを超えている。また、電力効率が良いスーパーコンピュータでは６．６７４ＧＦｌｏｐｓ（ギガフロップス）／Ｗ（ワット）が実現されているが、１ＥＦｌｏｐｓ（エクサフロップス）を実現するためには消費電力は１０18／（６．６７４×１０9）＝１５０ＭＷとなる。このような大きな消費電力のスーパーコンピュータは、実現不可能である。
【０００３】
そこで、省電力化の観点からプログラムを最適化するために、プログラムの消費電力のホットスポットを特定する技術が開発されている。ホットスポットを特定することができれば、ホットスポットをチューニングすることにより、プログラムの消費電力を低減することができる。例えば、一定の時間毎に消費電力量をサンプリングし、同様の時間毎にサンプリングした動作プログラムの情報を用いて消費電力プロファイルを作成し、ホットスポットを特定する技術がある。
【０００４】
図７は、消費電力プロファイルの一例を示す図である。図７は、関数毎に消費電力量及びプログラム全体に占める消費電力量の割合を示す。図７に示すように、モジュール「ｐｒｏｇｒａｍＸ」の関数「ｆｕｎｃＸ」は、消費電力量が「１６０Ｊ（ジュール）」であり、プログラム全体に占める消費電力量の割合が「８０．０％」である。したがって、関数「ｆｕｎｃＸ」は、消費電力のホットスポットである。
【０００５】
消費電力プロファイルを作成するために、一定時間毎に消費電力量をサンプリングすることが行われるが、一定時間毎の消費電力量のサンプリングでは、消費電力量を正確に計測することができない。図８Ａは、一定時間毎のサンプリングを説明するための図である。図８Ａは、一定時間毎の割込みにより消費電力量を取得し、割込み時に実行されていた関数の情報に基づいて関数毎の消費電力量を算出する場合を示す。図８Ａの横軸は時間を示し、縦軸を電力量を示す。電力量の単位はＪ（ジュール）である。
【０００６】
また、図８Ａでは、関数Ａによる消費電力量を模様付きで示し、関数Ｂによる消費電力量を模様なしで示す。図８Ａに示すように、関数Ａによる消費電力量及び関数Ｂによる消費電力量はともに１２Ｊである。しかし、一定時間毎の割込みにより消費電力量をサンプリングすると、最初のサンプリングで７Ｊの消費電力量を取得すると、最初のサンプリング時には関数Ａが実行されているため、関数Ａの消費電力量が７Ｊとなる。
【０００７】
そして、２回目のサンプリングで８Ｊの消費電力量を取得すると、２回目のサンプリング時には関数Ａが実行されているため、関数Ａの消費電力量が７Ｊ＋８Ｊ＝１５Ｊとなる。そして、３回目のサンプリングで６Ｊの消費電力量を取得すると、３回目のサンプリング時には関数Ｂが実行されているため、関数Ｂの消費電力量が６Ｊとなる。そして、４回目のサンプリングで３Ｊの消費電力量を取得すると、４回目のサンプリング時には関数Ａが実行されているため、関数Ａの消費電力量が１５Ｊ＋３Ｊ＝１８Ｊとなる。
【０００８】
すなわち、関数Ａによる消費電力量及び関数Ｂによる消費電力量はともに１２Ｊであるにもかかわらず、４回のサンプリングから得られる消費電力量は、関数Ａが１８Ｊ、関数Ｂが６Ｊとなり、正確な消費電力量が得られない。
【０００９】
そこで、一定消費電力量毎に消費電力をサンプリングする技術が開発されている。図８Ｂは、一定消費電力量毎のサンプリングを説明するための図である。図８Ｂでは、図８Ａと同様に、関数Ａによる消費電力量及び関数Ｂによる消費電力量はともに１２Ｊである。
【００１０】
図８Ｂに示すように、６Ｊという一定の消費電力量毎にサンプリングを行うと、最初のサンプリング時には関数Ａが実行されているため、関数Ａの消費電力量が６Ｊとなる。そして、２回目のサンプリング時には関数Ｂが実行されているため、関数Ｂの消費電力量が６Ｊとなる。
【００１１】
そして、３回目のサンプリング時には関数Ｂが実行されているため、関数Ｂの消費電力量が６Ｊ＋６Ｊ＝１２Ｊとなる。そして、４回目のサンプリング時には関数Ａが実行されているため、関数Ａの消費電力量が６Ｊ＋６Ｊ＝１２Ｊとなる。
【００１２】
このように、一定の消費電力量毎のサンプリングすなわち消費電力量ベースサンプリングを行うことで、一定時間毎のサンプリングすなわちタイムベースサンプリングを行う場合と比較して、各関数の消費電力量をより正確に測定できる。ただし、一定の消費電力量毎に割込みを発生してサンプリングを行うことはできない。そこで、できるだけ一定の消費電力量毎にサンプリングを行うように、消費電力に関係が深いイベントに基づくイベントベースサンプリングが行われる。
【００１３】
図９は、イベントベースサンプリングを説明するための図である。図９では、イベントが１０００回発生すると、オーバーフロー割込みが発生し、消費電力量及び実行されているプログラムのデータが採取される。
【００１４】
なお、プログラムの要求に対応する処理を行うと共に、入力センス回数の単位時間の値を測定し、アイドル状態の値と照合してアイドル状態を検出し、通常動作モードから省電動作モードへの切り替えを行うことで、省電化を効率よく行う技術がある。
【００１５】
また、割り当てる処理に対する処理電力とアイドル電力との差分を該処理にかかる時間で時間積分した値である処理増分電力量に基づいて、該処理を割り当てるサーバの組合せを選択することで、消費電力量の低減効果が高いサーバの組合せを選択する技術がある。
【００１６】
また、プログラム実行による各イベントの回数と予め計測した各イベント発生時の消費電力からプログラムの電力量を計算することで、プログラム単位で情報処理装置の妥当性のある電力使用量を計算する技術がある。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開平６−１９５９２号公報
【特許文献２】特開２０１２−１３３５０５号公報
【特許文献３】国際公開第２０１２／００１７７９号
【非特許文献】
【００１８】
【非特許文献１】小野  美由紀、山本  昌生、中島  耕太、「サンプリングによる消費電力の計測手法」、２０１６年ハイパフォーマンスコンピューティングと計算科学シンポジウム（ＨＰＣＳ２０１６−０３１）、２０１６年６月
【発明の概要】
【発明が解決しようとする課題】
【００１９】
図９に示したイベントベースサンプリングによる電力計測には、アイドル状態で消費された電力がアイドル状態直後に実行されたプログラムが消費したように見えるという問題がある。図１０は、イベントベースサンプリングによる電力計測の問題を説明するための図である。図１０において、Ｊ＃１は、アイドル状態での消費電力量を示し、Ｊ＃２は、プログラム実行での消費電力量を示す。
【００２０】
ＣＰＵ（Central  Processing  Unit）がアイドルしている状態でも電力は消費され、アイドル時間が長くなると、消費電力量も増加する。また、イベントベースサンプリングでは、ＣＰＵがアイドルしていたことがわからない。また、アイドル状態では、イベントが発生しても割込みは発生しない。このため、図１０に示すように、アイドル状態で消費した電力量Ｊ＃１も、アイドル状態の直後に実行されたプログラムが消費したように見え、アイドル状態の直後に実行されたプログラムの消費電力量Ｊ＃２にＪ＃１が上乗せされる。
【００２１】
本発明は、１つの側面では、プログラムの消費電力量について正確に計算することを目的とする。
【課題を解決するための手段】
【００２２】
１つの態様では、情報処理装置は、イベントベースのサンプリングにより採取されたサンプリングデータを用いてプログラムの消費電力を算出し、判定部と算出部とを有する。判定部は、ＣＰＵがアイドル状態でない場合には一定の時間間隔で割込みを発生し、ＣＰＵがアイドル状態である場合にはＣＰＵがアイドル状態でなくなると割込みを発生するイベントのサンプリングデータを用いてＣＰＵがアイドル状態であった否かを判定する。算出部は、判定部によりＣＰＵがアイドル状態であったと判定された場合に、消費電力モデルを用いて算出した消費電力量とサンプリングデータに含まれる消費電力量に基づいてアイドル状態の消費電力量を算出する。
【発明の効果】
【００２３】
１つの側面では、本発明は、プログラムの消費電力量について正確に計算することができる。
【図面の簡単な説明】
【００２４】
【図１】図１は、実施例に係る情報処理装置により採取される採取データを説明するための図である。
【図２】図２は、実施例に係る情報処理装置の構成を示す図である。
【図３】図３は、プロセッサの構成の一例を示す図である。
【図４】図４は、電力測定部及び電力データ解析部による処理のフローを示すフローチャートである。
【図５】図５は、アイドル状態の消費電力量を算出する処理のフローを示すフローチャートである。
【図６】図６は、電力データ解析部の効果を説明するための図である。
【図７】図７は、消費電力プロファイルの一例を示す図である。
【図８Ａ】図８Ａは、一定時間毎のサンプリングを説明するための図である。
【図８Ｂ】図８Ｂは、一定消費電力量毎のサンプリングを説明するための図である。
【図９】図９は、イベントベースサンプリングを説明するための図である。
【図１０】図１０は、イベントベースサンプリングによる電力計測の問題を説明するための図である。
【発明を実施するための形態】
【００２５】
以下に、本願の開示する情報処理装置、情報処理方法及びプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００２６】
まず、実施例に係る情報処理装置により採取される採取データについて説明する。図１は、実施例に係る情報処理装置により採取される採取データを説明するための図である。図１に示すように、実施例に係る情報処理装置により採取される採取データ４１には、性能情報４１ａと、電力情報４１ｂと、プログラム情報４１ｃが含まれる。
【００２７】
性能情報４１ａは、ＣＰＵ２の性能に関する情報であり、例えば、キャッシュミス数、キャッシュに対するアクセスのプリフェッチ数である。性能情報４１ａには、コア２３ａの性能に関する情報が含まれる。
【００２８】
また、性能情報４１ａには、ＣＬＫイベントの値が含まれる。ＣＬＫイベントは、ＣＰＵが動作している間のサイクル数をカウントするイベントであり、一定時間毎にサンプリングするためのイベントとして用いられる。ＣＬＫイベントの値は、アイドル状態が発生したかどうかの判断に用いられる。
【００２９】
性能情報４１ａは、イベントベースサンプリングにより、イベント計数部の値が採取される。なお、ＣＬＫイベントの値を用いてどのようにアイドル状態の発生を判断するかについて、及び、イベント計数部については後述する。
【００３０】
電力情報４１ｂは、消費電力量の情報である。電力情報４１ｂは、イベントベースサンプリングにより、電力取得部の値が採取される。なお、電力取得部については後述する。
【００３１】
プログラム情報４１ｃは、サンプリング時に動作していたアプリケーション／ＯＳ（Operating  System）６に関する情報であり、例えば、プロセスＩＤ、命令アドレスである。プログラム情報４１ｃは、イベントベースサンプリングにより、プロファイラによって採取される。プログラム情報４１ｃにより、プログラムと消費電力量の対応付けが可能となる。
【００３２】
次に、実施例に係る情報処理装置の構成について説明する。図２は、実施例に係る情報処理装置の構成を示す図である。図２に示すように、情報処理装置１は、ハードウェアとしてＣＰＵ２と、メインメモリ３と、ＨＤＤ（Hard  Disk  Drive）４とを有し、ソフトウェアで実現される電力測定部５と電力データ解析部７とを有する。
【００３３】
ＣＰＵ２は、メインメモリ３からプログラムを読み出して実行する中央処理装置である。メインメモリ３は、プログラムやプログラムの実行途中結果などを記憶するＲＡＭ（Random  Access  Memory）である。ＨＤＤ４は、プログラムやデータを格納するディスク装置である。
【００３４】
ＣＰＵ２は、イベント計数部２１と、電力取得部２２とを有する。イベント計数部２１は、ＣＰＵ２で発生するイベントの種別が設定されるイベント設定レジスタと、イベントの発生回数をカウントするためのカウンタレジスタとを有する。ここで、イベントには、例えば、Ｌ（Level）３キャッシュのキャッシュミス、Ｌ２キャッシュに対するアクセスのプリフェッチがある。また、イベントには、ＣＬＫイベントがある。イベント計数部２１は、イベント設定レジスタとカウンタレジスタの組を複数個有する。イベントの種別及び発生回数がサンプリング時に性能情報４１ａとして採取される。
【００３５】
イベント設定レジスタでは割込みを発生させるか否かが指定可能となっており、割込み発生が指定されたイベントがカウンタレジスタに設定された回数分発生すると、イベント計数部２１はＣＰＵ２に割込みを発生する。イベント計数部２１は、例えばｘ−８６アーキテクチャでは、ＰＭＣ（Performance  Monitoring  Counter）である。
【００３６】
電力取得部２２は、プロセッサ、プロセッサに含まれるコア全体、及び、ＤＲＡＭについて消費電力量等の情報を取得する。図３は、プロセッサの構成の一例を示す図である。プロセッサ２３は、コア部として４つのコア２３ａを有し、非コア部としてＬ３キャッシュ２３ｂ、メモリコントローラ２３ｃを有する。
【００３７】
コア２３ａは、演算を行う演算処理装置である。Ｌ３キャッシュ２３ｂは、ＤＲＡＭ３ａに記憶されたデータの一部を記憶するキャッシュメモリである。メモリコントローラ２３ｃは、ＤＲＡＭ３ａへのアクセスを制御する。ＤＲＡＭ３ａは、図２に示したメインメモリ３に対応する。プロセッサ２３は、図２に示したＣＰＵ２に含まれる。
【００３８】
電力取得部２２は、コア全体の消費電力量は取得できるが、コア毎の消費電力量を取得することはできない。また、電力取得部２２は、消費電力量毎に割込みを発生することはできない。電力取得部２２は、例えばインテル（登録商標）のＲＡＰＬ（Running  Average  Power  Limit）である。
【００３９】
図２に戻って、電力測定部５は、イベント計数部２１及び電力取得部２２を用いて、できるだけ一定の消費電力量毎にデータをサンプリングする。情報処理装置１は一定の消費電力量毎に割込みを発生する機能がないため、電力測定部５は、消費電力に関係するイベントを特定し、特定したイベントを用いて割込みを発生させることにより、できるだけ一定の消費電力量毎にデータをサンプリングする。
【００４０】
すなわち、電力測定部５は、イベントベースサンプリングを行う。電力測定部５は、イベントベースサンプリングにより、性能情報４１ａ、電力情報４１ｂ及びプログラム情報４１ｃを採取する。電力測定部５は、測定制御部５１とカーネル部５２とを有する。
【００４１】
測定制御部５１は、イベント及びイベントのサンプリング間隔によりデータのサンプリングを制御する。測定制御部５１は、イベント決定部５１ａと測定部５１ｂとを有する。イベント決定部５１ａは、消費電力モデル、データのサンプリング間隔、及び、イベント数を入力し、データのサンプリングに用いるイベントに関する処理を行う。
【００４２】
消費電力モデルは、ＣＰＵ２で発生するイベントに基づいてプロセッサ２３、ＤＲＡＭ３ａ等の消費電力を算出するためのモデルである。例えば、コア２３ａの消費電力モデルとして、
消費電力［Ｗ］＝１３．０６＋
７．１３６×Ｃ＋
１．１５７×１０-8×Ｌ２＿ＴＲＡＮＳ．ＡＬＬ＿ＰＦ＋
３．８４１×１０-8×ＬＯＮＧＥＳＴ＿ＬＡＴ＿ＣＡＣＨＥ．ＭＩＳＳ
がある。
【００４３】
ここで、Ｃは、ＣＰＵ２がアクティブに動作した割合であり、コア性能情報から算出される。Ｌ２＿ＴＲＡＮＳ．ＡＬＬ＿ＰＦは、Ｌ２キャッシュに対するアクセスのプリフェッチ数であり、Ｌ２キャッシュに対するアクセスのプリフェッチは、イベント設定レジスタに設定可能なイベントである。ＬＯＮＧＥＳＴ＿ＬＡＴ＿ＣＡＣＨＥ．ＭＩＳＳは、Ｌ３キャッシュ２３ｂのキャッシュミス数であり、Ｌ３キャッシュ２３ｂのキャッシュミスは、イベント設定レジスタに設定可能なイベントである。
【００４４】
また、ＤＲＡＭ３ａの消費電力モデルとして、
消費電力［Ｗ］＝２．７５３＋
２．１８×１０-7×ＬＯＮＧＥＳＴ＿ＬＡＴ＿ＣＡＣＨＥ．ＭＩＳＳ
がある。
【００４５】
データのサンプリング間隔は、次のサンプリングまでの消費電力量である。イベント数は、割込み発生に用いられるイベントの数である。ただし、イベント数には、ＣＬＫイベントは含まれない。すなわち、ＣＬＫイベントを含めると、イベント数＋１のイベントによる割込みが発生する。
【００４６】
イベント決定部５１ａは、イベント特定部６１と、サンプリング間隔特定部６２と、設定部６３とを有する。イベント特定部６１は、消費電力モデルとイベント数を入力し、ＣＬＫイベント以外に割込みを発生させるイベントを特定する。イベント特定部６１は、例えば、イベント数が１である場合には、消費電力モデルの係数が最も大きいイベントを、割込みを発生させるイベントとして特定する。
【００４７】
消費電力モデルを
消費電力＝０．００３×Ｌ３キャッシュミス数＋０．００１×Ｌ２キャッシュアクセス数      ・・・（１）
とすると、イベント数が１である場合には、Ｌ３キャッシュミスが割込みを発生させるイベントとして特定される。
【００４８】
また、イベント特定部６１は、例えば、イベント数が複数である場合には、消費電力モデルの係数が大きいイベントから指定個数だけ選択し、割込みを発生させるイベントとして特定する。消費電力モデルが上記式（１）であり、イベント数が２である場合には、Ｌ３キャッシュミスとＬ２キャッシュアクセスが割込みを発生させるイベントとして特定される。ただし、他の係数と比較して値が著しく小さいイベントは、指定個数以内でも選択されない。
【００４９】
イベント特定部６１は、例えば、複数の消費電力モデルを表示装置に表示し、ユーザにマウスで選択させることにより消費電力モデルを入力する。イベント特定部６１は、例えば、イベント数をユーザにキーボードから入力させる。
【００５０】
サンプリング間隔特定部６２は、イベント特定部６１により特定されたイベントのサンプリング間隔を、データのサンプリング間隔と消費電力モデルのイベントの係数に基づいて特定する。具体的には、サンプリング間隔特定部６２は、各イベントの係数の逆数を消費電力のサンプリング間隔に掛けて、各イベントのサンプリング間隔を算出する。すなわち、イベントのサンプリング間隔＝消費電力量のサンプリング間隔／イベントの係数である。
【００５１】
例えば、消費電力量のサンプリング間隔が６Ｊであり、消費電力モデルが上記式（１）である場合には、Ｌ３キャッシュミスのサンプリング間隔＝６／０．００３＝２０００回である。また、Ｌ２キャッシュアクセスのサンプリング間隔＝６／０．００１＝６０００回である。
【００５２】
なお、サンプリング間隔特定部６２は、イベント数が１である場合には他のイベントで消費する分を考慮しないことになるので、イベントの係数に一定の値αを加えて、サンプリング間隔を狭めてもよい。例えば、Ｌ３キャッシュミス数だけをイベントとし、α＝０．００１とする場合には、サンプリング間隔＝６／（０．００３＋０．００１）＝１５００回としてもよい。
【００５３】
また、サンプリング間隔特定部６２は、データのサンプリング間隔をユーザにキーボードから入力させる。あるいは、サンプリング間隔特定部６２は、測定対象プログラムの総消費電力量と採取したいサンプル数をユーザにキーボードから入力させ、消費電力量のサンプリング間隔を総消費電力量／サンプル数として算出する。例えば、総消費電力量が１２０００Ｊであり、サンプル数が２０００個である場合には、データのサンプリング間隔＝１２０００Ｊ／２０００＝６Ｊである。
【００５４】
設定部６３は、イベント決定部５１ａにより特定されたイベント及びサンプリング間隔を、カーネル部５２に指示して、イベント計数部２１に設定させる。また、設定部６３は、ＣＬＫイベント及びサンプリング間隔をカーネル部５２に指示して、イベント計数部２１に設定させる。
【００５５】
測定部５１ｂは、設定部６３により設定されたイベント及びサンプリング間隔を用いて消費電力の測定を開始するようにカーネル部５２に指示する。また、測定部５１ｂは、測定時間を指定することにより測定の終了をカーネル部５２に指示する。
【００５６】
カーネル部５２は、ＯＳ（オペレーティングシステム）のカーネル機能により実現される。カーネル部５２は、割込み処理部５２ａとデータ記憶部５２ｂとを有する。
【００５７】
割込み処理部５２ａは、イベント計数部２１からの割込みにより起動され、採取データ４１すなわち性能情報４１ａ、電力情報４１ｂ及びプログラム情報４１ｃを採取する。割込み処理部５２ａは、採取したデータをサンプリングデータとしてデータ記憶部５２ｂに保存する。
【００５８】
データ記憶部５２ｂは、割込み処理部５２ａにより採取された採取データ４１を記憶する。データ記憶部５２ｂが記憶する採取データ４１は、測定終了後にＨＤＤ４に書き出される。ＨＤＤ４に書き出された採取データ４１は、電力データ解析部７により解析され、消費電力プロファイルの作成等が行われる。
【００５９】
電力データ解析部７は、採取データ４１を解析して消費電力プロファイルの作成等を行う。電力データ解析部７は、コア２３ａの性能に関する情報をもとにコア２３ａに消費電力量を分配し、各コア２３ａで動作した関数の消費電力量を算出する。
【００６０】
電力データ解析部７は、アイドル状態の消費電力量及び全体に占める割合も算出する。電力データ解析部７は、算出した消費電力量、全体に占める割合等を解析データ４２としてＨＤＤ４に書き込む。
【００６１】
電力データ解析部７は、判断部７１と算出部７２とを有する。判断部７１は、性能情報４１ａに含まれるＣＬＫイベントのデータを用いてアイドル状態が発生したかどうかを判断する。具体的には、判断部７１は、一定時間間隔でＣＬＫイベントの割込みが発生していない場合をアイドル状態と判断する。
【００６２】
ＣＬＫイベントの割込みは、一定時間間隔で発生するが、アイドル状態であると割込みが発生せず、ＣＬＫイベントの値が加算されていく。そこで、判断部７１は、２つの連続するＣＬＫイベントの値をｔn-1とｔnとすると、ｔn−ｔn-1に基づいてアイドル状態の有無を判断する。
【００６３】
すなわち、判断部７１は、
ＣＬＫイベントのデータ間の経過時間＞ＣＬＫイベントのサンプリング間隔×Ｎ
である場合に、アイドル状態が発生したと判断する。ここで、Ｎは、正の整数であり、アイドル状態の粒度に基づいて決定される値である。Ｎは、例えば、５〜１０である。
【００６４】
算出部７２は、ｔnと同じサンプリングデータに含まれる他のイベントの値を用いてアイドル状態で消費される電力量を算出する。具体的には、算出部７２は、イベント決定部５１ａが用いた消費電力モデルに、サンプリングデータのイベントの値を当てはめて、消費電力モデルに基づく消費電力量を計算し、同じサンプリングデータに含まれる消費電力量との差分をアイドル状態での消費電力量とする。
【００６５】
なお、電力測定部５及び電力データ解析部７は、ＨＤＤ４に格納された電力測定プログラム及び電力データ解析プログラムが、それぞれＨＤＤ４からメインメモリ３に読み出されてＣＰＵ２により実行されることによって実現される。また、電力測定プログラム及び電力データ解析プログラムは、例えば、ＤＶＤから読出されて情報処理装置１にインストールされる。あるいは、電力測定プログラム及び電力データ解析プログラムは、ＬＡＮ（Local  Area  Network）を介して接続された他の情報処理装置のデータベースなどに記憶され、これらのデータベースから読み出されて情報処理装置１にインストールされる。
【００６６】
次に、電力測定部５及び電力データ解析部７による処理のフローについて説明する。図４は、電力測定部５及び電力データ解析部７による処理のフローを示すフローチャートである。図４に示すように、電力測定部５は、ＣＬＫイベント以外で割込みを発生させるイベント及びサンプリング間隔を決定し（ステップＳ１）、決定したイベントとＣＬＫイベントについて、イベント及びサンプリング間隔をイベント計数部２１に設定する（ステップＳ２）。なお、ステップＳ１及びステップＳ２の処理は測定制御部５１により行われる。
【００６７】
その後、測定対象プログラムが実行され、測定が開始されると、割込み処理部５２ａが、イベント計数部２１からの割込みをキャッチし（ステップＳ３）、性能情報４１ａ、電力情報４１ｂ及びプログラム情報４１ｃを採取する（ステップＳ４）。そして、割込み処理部５２ａは、採取したデータを１つのサンプリングデータとしてデータ記憶部５２ｂに保存し（ステップＳ５）、割込みを発生したイベントに対応するカウンタレジスタに初期値を設定する（ステップＳ６）。
【００６８】
そして、割込み処理部５２ａは、測定時間が終了したか否かを判定し（ステップＳ７）、測定時間が終了していない場合には、ステップＳ３に戻り、測定時間が終了した場合には、測定処理を終了する。
【００６９】
その後、測定が終了すると、電力測定部５は、データ記憶部５２ｂが記憶する採取データ４１をＨＤＤ４に書き出し、処理を終了する。そして、電力データ解析部７が、ＨＤＤ４から採取データ４１を読み込み、採取データ４１を解析し（ステップＳ８）、解析結果をＨＤＤ４に解析データ４２として書き出す。
【００７０】
次に、アイドル状態の消費電力量を算出する処理のフローについて説明する。図５は、アイドル状態の消費電力量を算出する処理のフローを示すフローチャートである。なお、アイドル状態の消費電力量を算出する処理は、図４のステップＳ８の処理すなわち採取データ４１を解析する処理の一部として行われる。
【００７１】
図５に示すように、電力データ解析部７は、ｐｒｅ＿ｃｌｋをｃｕｒｒｅｎｔ＿ｃｌｋとする（ステップＳ１１）。ここで、ｐｒｅ＿ｃｌｋは、１つ前のデータのＣＬＫイベントの値であり、ｃｕｒｒｅｎｔ＿ｃｌｋは、現データのＣＬＫイベントの値である。なお、データはＣＬＫイベントの割込みによる１回のサンプリングにより採取された採取データ４１である。そして、電力データ解析部７は、次のデータを取り出し、次のデータのＣＬＫイベントの値をｃｕｒｒｅｎｔ＿ｃｌｋとする（ステップＳ１２）。
【００７２】
そして、電力データ解析部７は、ｃｕｒｒｅｎｔ＿ｃｌｋからｐｒｅ＿ｃｌｋを引いた値が一定間隔より大きいか否かを判定する（ステップＳ１３）。ここで、一定間隔は、サンプリング間隔×Ｎである。そして、ｃｕｒｒｅｎｔ＿ｃｌｋからｐｒｅ＿ｃｌｋを引いた値が一定間隔より大きくない場合には、電力データ解析部７は、ステップＳ１７へ進む。
【００７３】
一方、ｃｕｒｒｅｎｔ＿ｃｌｋからｐｒｅ＿ｃｌｋを引いた値が一定間隔より大きい場合には、電力データ解析部７は、消費電力モデルの式に現データのイベント値を当てはめで消費電力モデルに基づく消費電力量Ｐを計算する（ステップＳ１４）。そして、電力データ解析部７は、現データに含まれる消費電力量からＰを引いてアイドル状態の消費電力量とし（ステップＳ１５）、アイドル状態の消費電力量を現データに追加する（ステップＳ１６）。
【００７４】
そして、電力データ解析部７は、データが終了したか否かを判定し（ステップＳ１７）、データが終了していない場合には、ステップＳ１２に戻り、データが終了した場合には、アイドル状態の消費電力量を算出する処理を終了する。なお、電力データ解析部７は、アイドル状態の消費電力量が追加された採取データ４１を用いて消費電力プロファイルを作成する。
【００７５】
このように、電力データ解析部７は、ＣＬＫイベントの値を用いてアイドル状態の発生を特定し、アイドル状態が発生していた場合には、アイドル状態の消費電力量を計算することで、プログラムの消費電力量を正確に計算することができる。
【００７６】
図６は、電力データ解析部７の効果を説明するための図である。図６（ａ）は、アイドル状態は未把握である場合の消費電力プロファイルを示し、図６（ｂ）は、アイドル状態を把握した場合の消費電力プロファイルを示す。図６（ａ）では、「ＰｒｏｇｒａｍＡ」の「ｆｕｎｃＡ」の消費電力量が、「１００Ｊ」で割合が「５０．０％」であり、最も多い。
【００７７】
一方、図６（ｂ）では、アイドル状態を示す「ＩＤＬＥ」の消費電力量が「４０Ｊ」で割合が「２０．０％」であり、「ＰｒｏｇｒａｍＡ」の「ｆｕｎｃＢ」の消費電力量が、「８０Ｊ」で割合が「４０．０％」であり、最も多い。図６から、アイドル状態を把握しないと、アイドル状態の消費電力量が「ＰｒｏｇｒａｍＡ」の「ｆｕｎｃＡ」の消費電力量に上乗せされていたことがわかる。
【００７８】
上述してきたように、実施例では、電力データ解析部７の判断部７１が、ＣＬＫイベントのサンプリングデータを用いてＣＰＵ２がアイドル状態であったか否かを判定する。そして、判定部７１によりＣＰＵ２がアイドル状態であったと判定された場合に、算出部７２が、消費電力モデルを用いて算出した消費電力量Ｐとサンプリングデータに含まれる消費電力量に基づいて、アイドル状態の消費電力量を算出する。したがって、電力データ解析部７は、アイドル状態で消費された電力量を除き、プログラムの消費電力量を正確に計算することができる。
【００７９】
また、実施例では、判断部７１は、ＣＬＫイベントの連続する２つのサンプリングデータの差が所定の閾値より大きい場合に、ＣＰＵ２がアイドル状態であったと判定するので、アイドル状態を正確に特定することができる。
【００８０】
また、実施例では、算出部７２は、消費電力モデルを用いて算出した消費電力量Ｐをサンプリンデータに含まれる消費電力量から引いて得られる消費電力量に基づいてアイドル状態の消費電力量を算出する。したがって、算出部７２は、アイドル状態の消費電力量を正確に計算することができる。
【００８１】
なお、実施例では、電力データ解析部７が電力測定部５と同じハードウェアにより実現される場合について説明したが、電力データ解析部７は電力測定部５と異なるハードウェアにより実現されてもよい。電力データ解析部７を実現するハードウエアのＣＰＵは、イベント計数部２１及び電力取得部２２を有しなくてもよい。
【００８２】
また、実施例では、ＣＰＵ２がアイドル状態であるかを判断するためにＣＬＫイベントを用いる場合について説明したが、情報処理装置１は、一定時間で割込みが可能な他のイベントを用いてもよい。
【００８３】
また、実施例では、消費電力プロファイルとして、モジュールの関数毎に消費電力量と割合を算出する場合について説明したが、電力データ解析部７は、モジュール毎、プログラム毎等の他のプログラム単位毎に消費電力量と割合を算出してもよい。
【符号の説明】
【００８４】
１    情報処理装置
２    ＣＰＵ
３    メインメモリ
３ａ    ＤＲＡＭ
４    ＨＤＤ
５    電力測定部
６    アプリケーション／ＯＳ
７    電力データ解析部
２１    イベント計数部
２２    電力取得部
２３    プロセッサ
２３ａ    コア
２３ｂ    Ｌ３キャッシュ
２３ｃ    メモリコントローラ
４１    採取データ
４１ａ    性能情報
４１ｂ    電力情報
４１ｃ    プログラム情報
４２    解析データ
５１    測定制御部
５１ａ    イベント決定部
５１ｂ    測定部
５２    カーネル部
５２ａ    割込み処理部
５２ｂ    データ記憶部
６１    イベント特定部
６２    サンプリング間隔特定部
６３    設定部
７１    判定部
７２    算出部
【図１】
2018139093.tif 000003
【図２】
2018139093.tif 000004
【図３】
2018139093.tif 000005
【図４】
2018139093.tif 000006
【図５】
2018139093.tif 000007
【図６】
2018139093.tif 000008
【図７】
2018139093.tif 000009
【図８Ａ】
2018139093.tif 000010
【図８Ｂ】
2018139093.tif 000011
【図９】
2018139093.tif 000012
【図１０】
2018139093.tif 000013