JP5799797B2 - 算出方法、算出プログラム及びコンピュータ - Google Patents

算出方法、算出プログラム及びコンピュータ Download PDF

Info

Publication number
JP5799797B2
JP5799797B2 JP2011280551A JP2011280551A JP5799797B2 JP 5799797 B2 JP5799797 B2 JP 5799797B2 JP 2011280551 A JP2011280551 A JP 2011280551A JP 2011280551 A JP2011280551 A JP 2011280551A JP 5799797 B2 JP5799797 B2 JP 5799797B2
Authority
JP
Japan
Prior art keywords
processing unit
processing
difference
unit
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011280551A
Other languages
English (en)
Other versions
JP2013131076A (ja
Inventor
美保 加藤
美保 加藤
鈴木 啓之
啓之 鈴木
翼 北山
翼 北山
法男 黒羽
法男 黒羽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011280551A priority Critical patent/JP5799797B2/ja
Priority to EP12195833.4A priority patent/EP2608042B1/en
Priority to US13/707,746 priority patent/US9323642B2/en
Priority to CN201210559889.8A priority patent/CN103176836B/zh
Publication of JP2013131076A publication Critical patent/JP2013131076A/ja
Application granted granted Critical
Publication of JP5799797B2 publication Critical patent/JP5799797B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Power Sources (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、コンピュータに対して用いられる計測技術に関する。
1つの物理マシンにおいて、複数の仮想マシンによる処理が実行されることがある。物理マシンで処理を実行する仮想マシンについての消費電力の推定を、仮想マシンのCPU(Central Processing Unit)使用率に基づいて行なう技術がある(例えば、特許文献1)。
特開2010−039513号公報
CPUの使用率は、算出対象のプログラムについての処理により、どの程度の時間CPUが占有されるかに基づいて算出される。一方で、CPUの消費電力や発熱を抑制させるため、CPUの処理負荷などに応じて、回路の同期に用いられる動作周波数(クロック周波数)を変動させる技術がある。CPUの動作周波数を変動させる制御が行なわれると、変動の前後においてCPUが実際に単位時間当たりに動作した量が変化してしまう。CPUが動作することで電力が消費されるので、CPUの動作周波数が変動してCPUの動作量が変わると、CPUの消費電力も変動する。CPUを占有する時間に応じて消費電力を見積もる従来の方法では、動作周波数の変動による消費電力の変化が考慮されない。そのため、算出対象のプログラムについて、動作周波数の変動前後でCPUの占有時間が同じ場合には、CPUが実際に動作した量が変動しているにも関わらず、変動前後の消費電力が同じであると見積もられてしまう、という問題がある。
本発明の一側面においては、異なる周波数のクロック信号が供給され得るプロセッサへの割り当て制御対象である処理単位について、プロセッサの動作量を算出することを目的とする。
開示の算出プログラムは、異なる周波数のクロック信号が供給され得るプロセッサを備えるコンピュータに、 前記プロセッサへの割り当て制御の対象である複数の処理単位の中の第1の処理単位の処理の開始制御に応じて、前記クロック信号のパルスを計数するクロックカウンタから読み出した第1の値と、前記第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を第1の差分として前記第1の処理単位を識別する第1の識別情報と関連付けて記憶部に記憶し、前記第1の処理単位がさらに実行される場合に、前記さらに実行される第1の処理単位の処理の開始制御に応じて前記クロックカウンタから読みだされた第3の値と、前記さらに実行される第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読みだされた第4の値との差分を第2の差分として前記第1の識別情報と関連付けて前記記憶部に記憶し、前記第2の差分を、前記記憶部に前記第1の識別情報と関連付けて記憶された前記第1の差分に積算して得られる積算値を第1の積算値として、前記第1の識別情報に関連付けて前記記憶部に記憶し、前記複数の処理単位の中の第2の処理単位が実行される場合に、前記第2の処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第5の値と、前記第2の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第6の値との差分である第3の差分を算出し、前記第2の処理単位と前記第1の処理単位とが同じプログラムについて割り当てられた処理単位である場合に、前記第3の差分と、前記第1の積算値との和を第2の積算値として、前記プログラムを識別するプログラム識別情報に関連付けて前記記憶部に記憶する、処理を実行させる。
開示のコンピュータは、異なる周波数のクロック信号が供給され得るプロセッサと、前記クロック信号を計数するクロックカウンタと、メモリを含み、前記プロセッサが、 前記プロセッサへの割り当て制御の対象である複数の処理単位の中の第1の処理単位の処理の開始制御に応じて、前記クロックカウンタから読み出した第1の値と、前記第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を第1の差分として前記第1の処理単位を識別する第1の識別情報と関連付けて前記メモリに記憶し前記第1の処理単位がさらに実行される場合に、前記さらに実行される第1の処理単位の処理の開始制御に応じて前記クロックカウンタから読みだされた第3の値と、前記さらに実行される第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読みだされた第4の値との差分を第2の差分として前記第1の識別情報と関連付けて前記メモリに記憶し、前記第2の差分を、前記メモリに前記第1の識別情報と関連付けて記憶された前記第1の差分に積算して得られる積算値を第1の積算値として、前記第1の識別情報に関連付けて前記メモリに記憶し、前記複数の処理単位の中の第2の処理単位が実行される場合に、前記第2の処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第5の値と、前記第2の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第6の値との差分である第3の差分を算出し、前記第2の処理単位と前記第1の処理単位とが同じプログラムについて割り当てられた処理単位である場合に、前記第3の差分と、前記第1の積算値との和を第2の積算値として、前記プログラムを識別するプログラム識別情報に関連付けて前記メモリに記憶する、処理を実行する。
開示の算出方法は、異なる周波数のクロック信号が供給され得るプロセッサ、メモリ、及びクロックカウンタを含むコンピュータが、前記クロックカウンタにより、前記クロック信号のパルスを計数し、前記プロセッサへの割り当て制御の対象である複数の処理単位の中の第1の処理単位の処理の開始制御に応じて、前記クロックカウンタから読み出した第1の値と、前記第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を第1の差分として前記第1の処理単位を識別する第1の識別情報と関連付けて前記メモリに記憶し前記第1の処理単位がさらに実行される場合に、前記さらに実行される第1の処理単位の処理の開始制御に応じて前記クロックカウンタから読みだされた第3の値と、前記さらに実行される第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読みだされた第4の値との差分を第2の差分として前記第1の識別情報と関連付けて前記メモリに記憶し、前記第2の差分を、前記記憶部に前記第1の識別情報と関連付けて記憶された前記第1の差分に積算して得られる積算値を第1の積算値として、前記第1の識別情報に関連付けて前記メモリに記憶し、前記複数の処理単位の中の第2の処理単位が実行される場合に、前記第2の処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第5の値と、前記第2の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第6の値との差分である第3の差分を算出し、前記第2の処理単位と前記第1の処理単位とが同じプログラムについて割り当てられた処理単位である場合に、前記第3の差分と、前記第1の積算値との和を第2の積算値として、前記プログラムを識別するプログラム識別情報に関連付けて前記メモリに記憶する
本発明の一側面において、異なる周波数のクロック信号が供給され得るプロセッサへの割り当て制御対象である処理単位について、プロセッサの動作量を算出することができる。
図1は、コンピュータ1の機能構成例を示す。 図2は、コンピュータ1のソフトウェア構成例を示す。 図3は、コンピュータ1のハードウェア構成例を示す。 図4は、スレッド制御に応じたデータ読出しの関係を示す。 図5は、スレッドコンテキストのデータ構造例を示す。 図6は、スレッド制御に応じたデータ読出しの関係を示す。 図7は、実行制御部111の制御フローを示す。 図8は、スレッド停止・終了の処理フローを示す。 図9は、スレッド起動・生成の処理フローを示す。 図10(a)−(c)は、プロセスとスレッドとの関係を示す。 図11は、プログラムとプロセスとの関係を示す。 図12は、プログラムごとの動作量を示す。 図13は、プログラムごとの動作量算出のフローを示す。 図14は、プログラムごとの動作量算出のフローを示す。 図15は、計測結果を表示する画面情報の例を示す。 図16は、コンピュータ1のソフトウェア構成例を示す。 図17は、仮想マシンごとの動作量算出のフローを示す。 図18は、仮想マシンとプログラムとの関係を示す。 図19は、仮想マシンごとの動作量を示す。 図20は、計測結果を表示する画面情報の例を示す。 図21は、コンピュータ1のソフトウェア構成を示す。 図22は、仮想マシンとプログラムとの関係を示す。 図23は、仮想マシンごとの動作量を示す。 図24は、システムの構成例を示す。 図25は、コンピュータ1のソフトウェア構成例を示す。 図26は、処理対象の単位の切り替えについてのシーケンスを示す。 図27(a)−(c)は、プロセスとスレッドとの関係を示す。 図28は、プログラムとプロセスとの関係を示す。 図29は、プログラムごとの動作量を示す。
プロセッサの消費電力は、プロセッサに供給されるクロック信号の周波数の変動に応じて変動する。プロセッサは、1周期分のクロック信号に応じてプロセッサ内の回路の充放電を1回行なうため、クロック信号の周波数の変動により単位時間当たりの充放電回数が変動するためである。クロック信号の周波数の変動は、例えば、クロック信号の供給元を、異なる周波数のクロック信号を生成する複数の発振器間で切り替えた場合や、1つの発振器により生成されるクロック信号の周波数に経時的にズレが生じた場合などに起こる。
例えば、ある時間間隔tにおいて、周波数f1で動作した場合と、周波数f2で動作した場合とにおけるプロセッサの充放電回数は、それぞれf1・t,f2・tとなる。プロセッサが動作した時間で消費電力を見積もる方法があるが、時間でプロセッサの動作量を評価する場合には、数式1で示すtを越えた時間計測すると、充放電1回分以上の誤差が生じることとなる。言い換えると、ある時間範囲tにおけるプロセッサの動作量を計測する場合には、クロックの周波数が数式1に示す(f1−f2)以上に変動すると、クロック周期1回分以上の誤差が生じる。そのため、計測したい時間範囲tに対して周波数が数式1に示す(f1−f2)以上に変動する場合においては、クロック信号の周波数の変動を考慮する必要が生じる。
t≦|1/(f1−f2)| ・・・ (数式1)
以下に本発明の実施形態について図面に基づいて説明する。まず、第1の実施形態のコンピュータ1の構成について、図1〜3に基づいて説明する。
図1は、コンピュータ1の機能構成例を示す。コンピュータ1は、処理部11及び記憶部12を含み、処理部11は実行部110、実行制御部111、クロックカウンタ112、読出処理部113、算出部114及び記憶制御部115を含む。
図2は、コンピュータ1のソフトウェア構成例を示す。図2に示すソフトウェア構成例においては、アプリケーションプログラム23a、アプリケーションプログラム23b、アプリケーションプログラム23cの複数種類のアプリケーションプログラムがコンピュータ1において動作する。コンピュータ1で動作するアプリケーションプログラムはアプリケーションプログラム23a−cに限定するものでなく、例えば、アプリケーションプログラム23a―c以外のアプリケーションプログラムもコンピュータ1で動作しうる。さらに、コンピュータ1において、アプリケーション23a−cの処理をハードウェア(HW)21に実行させるための制御・管理を行なうオペレーションシステム(OS)22aが動作する。ハードウェア21は、図3を用いて後述されるハードウェアである。
図3は、コンピュータ1のハードウェア構成例を示す。コンピュータ1は、プロセッサ301、RAM(Random Access Memory)302、ROM(Read Only Memory)303、ドライブ装置304、記録媒体305、通信インターフェース(I/F)306、入力インターフェース(I/F)307、出力インターフェース(I/F)308を含む。プロセッサ301は、プロセッサ301の動作に関連する回路との同期に用いられる動作周波数を変動させて動作する。プロセッサ301、RAM302、ROM303、ドライブ装置304、通信インターフェース306、入力インターフェース307、出力インターフェース308は、バス309と接続されている。通信インターフェース306は、ネットワーク310と接続されている。入力インターフェース307は、入力装置311と接続されており、出力インターフェース308は、出力装置312と接続されている。
図1〜3に示されるコンピュータ1の各構成について説明する。
処理部11の機能は、例えば、プロセッサ301がOS22a、アプリケーションプログラム23a−cなどに基づいて処理を行なうことで実現される。また、記憶部12の機能は、例えば、RAM302または記録媒体305などにプロセッサ301の制御により情報が読み書きされることで実現される。
実行部110は、後述される実行制御部111の制御に応じて、アプリケーションプログラム23a−cの処理を実行する。実行部110の機能は、例えば、記録媒体305からRAM302に読みだされたアプリケーションプログラム23a−cをプロセッサ301が読み込み、読み込んだプログラムに含まれる命令をプロセッサ301が処理することで実現される。
実行制御部111は、実行部110により行なわれるアプリケーションプログラム23a−cの処理のスケジューリングを行なう。各アプリケーションプログラムの処理をマルチプロセスで行なう場合には、実行制御部111は、各アプリケーションプログラムの処理単位であるプロセスをプロセッサ301に割り当てる制御を行なう。プロセスを割り当てるタイミングは、実行制御部111に含まれるプロセススケジューラのアルゴリズムに基づく処理状況についての判断により決められる。また、各アプリケーションプログラムの処理をマルチスレッドで行なう場合にも同様に、実行制御部111は、各アプリケーションプログラムの処理単位であるスレッドをプロセッサ301に割り当てる制御を行なう。スレッドを割り当てるタイミングは、実行制御部111に含まれるスレッドスケジューラのアルゴリズムに基づく処理状況についての判断により決められる。実行制御部111の機能は、例えば、プロセススケジューラ又はスレッドスケジューラを含むOS22aに基づいて、プロセッサ301とRAM302が動作することにより実現される。
クロックカウンタ112は、プロセッサ301の処理において回路の同期に用いられるクロックが動作する周期に応じて加算されるカウンタであり、プロセッサ301に備えられている。プロセッサ301がマルチコアであれば、各コアについてカウンタが備えられる。マルチコアである場合には、各コアにおける動作量は、各コアに設けられたカウンタに基づいて計測される。以下の説明において特にことわらない限り、プロセッサ301が1つのコアを含む場合を例に挙げて説明する。クロックカウンタ112は、あるタイミングにおいて、プロセッサ301がそのタイミングまでにどれだけの動作を行なったかを示す。例えば、クロックカウンタ112は、ハードウェア21の起動時に計数を開始し、プロセッサ301の動作周波数で時間が1周期経過するたびに(1パルスごとに)、クロックカウンタ112用に設けられたレジスタに例えば1bitずつ加算するなどの制御を行なう。クロックカウンタ112の値を格納するレジスタは、例えば、32bitや64bitなどのサイズの領域を設ける。以下の説明においては、読出し命令により読みだされたクロック値が、変数clk1として扱われる。
読出処理部113は、実行制御部111によるスケジューリングのうち、プロセス又はスレッドを生成、起動(実行状態にさせる)、停止(休眠状態にさせる)又は終了させる制御に応じて、プロセッサ301に備えられたクロックカウンタ112から、クロック値を読み出す処理を行なう。読出し処理部113の機能は、例えば、プロセッサ301が、スケジューリング制御を実行させる命令群に読出し命令を追加されたOS22aに基づく制御を実行することにより実現される。
この読出し命令は、プロセッサ301に備えられたクロックカウンタ112の値を読み出す命令であって、例えば、Performance monitoring機構(CPU種毎に実装)などである。
算出部114は、実行制御部111の制御に応じて、読出処理部113により読みだされたクロック値(clk1)を用いた演算(数式2〜4参照)を行なう。例えば、算出部114は、実行制御部111によるプロセス又はスレッドの生成又は起動に応じて読出処理部113がクロック値(clk1)を読み出した場合には、変数clk0にクロック値(clk1)を代入する演算(数式2参照)を行なう。また、算出部114は、実行制御部111によるプロセス又はスレッドの停止又は終了に応じて読出処理部113がクロック値(clk1)を読み出した場合には、クロック値(clk1)と、値(clk0)との差分dを算出する(数式3参照)。さらに、例えば、算出部114は、クロック値(clk1)と値(clk0)との差分dを積算値Sに積算する演算(数式4参照)を行なう。この積算値Sは、後述の記憶制御部115により、記憶部12に対して書込みと読出しが行なわれる値である。値(clk0)と積算値Sの初期値は、例えば0などの値である。また、数式2〜4に含まれる「=」は、等号ではなく、代入を示す演算子である。
clk0=clk1 ・・・ (数式2)
d=clk1−clk0 ・・・ (数式3)
S=S+d ・・・ (数式4)
算出部114の機能は、OS22aによるプロセス又はスレッドのスレッド制御(スレッドの生成、起動、停止、終了の制御)の際に、プロセッサ301にクロック値(clk1)に基づいて、数式2〜4の演算を実行させることにより実現される。クロック値clk0、クロック値clk1は、それぞれプロセッサ301内のレジスタなどに格納される。
記憶制御部115は、実行制御部111に応じて記憶部12に記憶されたデータの読み出し、書き込みを行なう。例えば、記憶制御部115は、記憶部12から、プロセス又はスレッドの停止又は終了制御に応じて、停止又は終了制御の対象のプロセス又はスレッドのコンテキストを読み出す。コンテキストは、それぞれのプロセス又はスレッドに関する情報であり、それぞれのプロセス又はスレッドに対応する積算値Sを含む。この記憶制御部115の機能は、プロセッサ301が、RAM302に格納された、停止又は終了制御の対象となるプロセス又はスレッドに対応するプロセスコンテキスト又はスレッドコンテキストから積算値Sを読み出すことで実現される。
また、例えば、記憶制御部115は、算出部114によって算出された積算値Sと、実行制御部111で停止又は終了されるプロセス又はスレッドとを関連付けた情報と、を記憶部12に記憶させる。記憶制御部115の機能は、プロセッサ301が、プロセッサ301の数式3及び数式4の演算により算出された積算値Sを、RAM302に格納された、停止又は終了されるプロセス又はスレッドに対応するプロセスコンテキスト又はスレッドコンテキストに書き込むことにより実現される。さらには、例えば、実行制御部111によるプロセスまたはスレッドの起動または生成においては、記憶制御部115は、プロセッサ301の数式2の演算により算出された値clk0を、起動または生成されるプロセスコンテキストまたはスレッドコンテキストに格納する。
また、他の方法では、記憶制御部115は、算出部114が差分dを算出するたびに、算出された差分dを対応するプロセスコンテキストまたはスレッドコンテキストに格納する。同じプロセスまたはスレッドが複数回実行された場合には、差分dが同じプロセスコンテキストまたはスレッドコンテキストに複数格納される。
処理部11に含まれる実行部110、実行制御部111、クロックカウンタ112、読出処理部113、算出部114及び記憶制御部115の上記の処理により、プロセッサ301で実行されるプロセス又はスレッドごとに、プロセス又はスレッドの処理に要したクロック数が計測される。
図3に示した各ハードウェアについて、さらに以下に説明する。
RAM302は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAMでなくてもフラッシュメモリなどが用いられる。ROM303は、PROM(Programmable ROM)なども含む。ドライブ装置304は、記録媒体305に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記録媒体305は、ドライブ装置304によって書き込まれた情報を記憶する。記録媒体305は、例えば、ハードディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの記録媒体である。また、例えば、コンピュータ1は、複数種類の記録媒体それぞれについて、ドライブ装置304及び記録媒体305を設ける。
入力装置311は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ1の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力装置は、コンピュータ1の制御に応じて情報を出力する装置である。出力装置は、例えば、ディスプレイなどの画像出力装置や、スピーカーなどの音声出力装置などである。また、タッチスクリーンなどの入出力装置は、例えば、入力装置311及び出力装置312として用いられる。
図4〜6に基づいて、スレッド制御の際のデータ読出しの関係について説明する。図4〜6においては、マルチスレッド制御が行なわれる場合について説明しているが、マルチプロセス制御が行なわれる場合であっても、データ読出しの関係は同様である。
図4は、実行部110及びクロックカウンタ112と、記憶部12に格納されたスレッドコンテキストとのデータ読出しの関係を示す。
実行制御部111は、スレッドスケジューラに基づいて、スレッドの起動を行なう(スレッドが存在しない場合にはスレッドの生成を行なう)。実行制御部111のスレッド起動処理中に読出処理部113は、クロックカウンタ112からクロック数の読み出し処理を行なう(矢印(1)、(2))。読み出したクロック数(clk1)は、算出部114及び記憶制御部115の処理により、起動時クロック数(clk0)として、図5に示すスレッドコンテキストT1に書き込まれる(clk0の書き込み:矢印(3))。スレッドの起動が完了すると、実行部110は、図5に示すスレッドコンテキストに含まれる情報に基づいて、起動されたスレッドについての処理を行なう。
図5は、スレッドコンテキストT1のデータ構造の一例を示す。スレッドコンテキストT1は、プロセッサ301がスレッドの処理に用いられる処理情報と、スレッドの管理情報と、を含む。処理情報は、プログラムカウンタ、スタックポインタなどのデータ読み出し位置を指定する情報である。実行部110は、スレッドコンテキストT1中の情報に指定されたプログラムカウンタ、スタックポインタなどに基づいて処理を行なう。スレッドの管理情報は、スレッドのID、時刻情報(スレッドが起動された時刻t0、スレッド処理時間の積算値Stなど)、クロック数情報(スレッドが起動された際のクロック数clk0、スレッド処理に要したクロック数の積算値S)を含む。
マルチプロセス制御に用いるプロセスコンテキストは、例えば、図5に示すスレッドコンテキストと同様のデータ構造図を有し、スレッドIDではなくプロセスIDを含む。また、プロセスコンテキストは、例えば、さらに、プロセス内で動作するスレッドを示す情報を含む。
実行制御部111は、他のスレッドへの切り換えなどにより、スレッドの停止処理を行なう。記憶制御部115は、スレッドの停止処理において、プログラムカウンタ、スタックポインタなどの処理情報をスレッドコンテキストT1に保存する。スレッド停止処理中に、読出処理部113は、クロックカウンタ112からクロック数の読み出し処理を行なう(矢印(4)、(5))。算出部114及び記憶制御部115は、読み出したクロック数(clk1)と、起動処理時にスレッドコンテキストT1に書き込んだクロック数(clk0の取得:矢印(6))とに基づいて、積算値Sを算出して、スレッドコンテキストT1に書き込む(矢印(7))。
コンピュータ1は、上述の処理により、矢印(1)(2)の読み出し時点から、矢印(4)(5)の読み出し時点までのクロック数をスレッドコンテキストに反映させることができる。
図6は、スレッドが複数存在する場合のデータ読出しの関係を示す。図6の「スレッドa」で示す期間は、スレッドaについてのスレッド起動、スレッドの処理及びスレッド停止の処理に要する期間を示す。
スレッドaの起動及び停止における記憶制御部115の書き込み処理は、スレッドコンテキスト(a)に対して、矢印(1)(2)で読みだしたクロック数に基づいて行なわれる。スレッドコンテキスト(a)は、スレッドaに関するスレッドコンテキストである。また、スレッドbの起動及び停止における記憶制御部115の書き込み処理は、スレッドコンテキスト(b)に対して、矢印(3)(4)で読みだしたクロック数に基づいて行なわれる。スレッドコンテキスト(b)はスレッドbに関するスレッドコンテキストである。さらに、スレッドbについての処理後に、再度スレッドaの処理が行なわれた場合には、スレッドaの起動及び停止における記憶制御部115の書き込み処理は、スレッドコンテキスト(a)に対して、矢印(5)(6)で読みだしたクロック数に基づいて行なわれる。上記の記憶制御部115によりスレッドコンテキストに含まれる積算値Sが更新されることで、スレッドごとに処理に要したクロック数が計測される。
また、本実施形態において、プロセッサ301の動作周波数は変動する。例えば、矢印Xで示した時点でプロセッサの動作周波数が変化したとすると、矢印(1)(2)間と矢印(5)(6)間とでは、プロセッサ301の動作周波数が異なる。すなわち、単位時間当たりの動作量が異なる。したがって従来のプロセッサ301を占有する時間を計測する方法により、矢印(1)(2)間の時間と矢印(5)(6)間の時間とに基づいてプロセッサ301の負荷を評価すると、単位時間あたりの実際の動作量が異なるので不整合が生じてしまう。しかしながら、本実施形態においては、動作周波数が変動する場合にも、変動前後の矢印(1)(2)間と矢印(5)(6)間とについて、実際にプロセッサ301が動作した量を計測できる。
図7は、スレッドごとに処理に要したクロック数をカウントするための処理部11の制御フローを示す。この制御は、例えば、プロセッサ301がOS22aに基づいて行なう制御である。プロセスごとに処理に要するクロック数をカウントする場合も図7と同様のフローが行なわれる。ただし、その場合はスレッドではなく、プロセスを対象として制御が行なわれる。
まず実行制御部111は、スレッド制御のイベントが発生したか否かを判断する(S11)。実行制御部111によりイベントが発生したと判断された場合(S11:Yes)に、実行制御部111は、スレッドの終了または停止の処理(S12)を開始する。このS12の処理については後述する。また、S12の処理が終わると、実行制御部111は、スレッド生成または起動の処理(S13)を開始する。S13の処理についても後述する。スレッド制御のイベントを発生させる判断は、実行中のスレッドの処理が完了する場合や、他のスレッドによる割り込みが発生した場合などのプロセッサ301に割り当てられる処理の状況に応じて、OS22aに含まれるマルチスレッドのスケジューラによって行なわれる。
図8は、前述のスレッド停止または終了の処理(S12)の処理例を示す。まず、実行制御部111は、発生したイベントがスレッド停止であるか否かを判断する(S21)。発生したイベントが、スレッド停止ではない場合(S21:No)には、実行制御部111は、発生したイベントがスレッド終了であるか否かを判断する(S29)。イベントの発生やイベントの発生に応じて行なう処理は、OS22aに含まれるマルチスレッドのスケジューラによって、割り込みが起きたか否か、スレッドを処理が終了したか、などの状況に基づいて判断される。
発生したイベントがスレッド停止である場合(S21:Yes)には、実行制御部111は、プロセッサ301が処理中のスレッドについて命令の読み出しを行なうことを停止する(S22)。S22の処理後、実行制御部111は、命令の読み出しを停止されたスレッドに関する処理情報を取得する。例えば、実行制御部111は、プロセッサ301のプログラムカウンタとスタックポインタの値を読み出す。さらに、実行制御部111は、記憶制御部115に、読み出した処理情報を、記憶部12に記憶された、停止処理中のスレッドに対応するスレッドコンテキストに記憶させる制御を行なう(S23)。
S23の処理が行なわれた場合に、読出処理部113、算出部114及び記憶制御部115の処理により、S24〜S27の停止処理中のスレッドのクロック数の更新処理が行なわれる。まず、読出処理部113が、クロックカウンタ112からクロック値(clk1)を読み出し(S24)、記憶制御部115が、停止処理中のスレッドに対応するスレッドコンテキストから、起動時クロック値(clk0)と積算値Sとを読み出す(S25)。このS25の処理は、S24よりも先に行なわれてもよい。
算出部114は、S24、S25で読み出したクロック値(clk1)と起動時クロック値(clk0)と積算値Sとを用いて、数式3及び数式4の演算を行なって、積算値Sを更新する(S26)。記憶制御部115は、更新された積算値Sを、記憶部12の停止処理中のスレッドに対応するスレッドコンテキストに記憶させる(S27)。S27の処理を実行すると、S12の処理が終了する(S28)。
S29の判断の結果、発生したイベントがスレッド終了である場合(S29:Yes)には、読出処理部113、算出部114及び記憶制御部115の処理により、S30〜S33の終了処理中のスレッドのクロック数の更新処理が行なわれる。S30〜S33の処理は、S24〜S27と同様の処理である。
S33の処理後、記憶制御部115は、終了処理中のスレッドに対応するスレッドコンテキストに含まれるスレッドIDと積算値Sとを、記憶部12に含まれる別の記憶領域に記憶させる(S34)。これにより、スレッドコンテキストの記憶領域が解放されても、終了されたスレッドについての動作量を示すデータを残しておくことができる。S34の処理が終了した場合に、S12の処理が終了する(S28)。
S29の判断の結果、スレッド終了でない場合(S29:No)には、S12の処理が終了する(S28)。例えば、コンピュータ1が起動した直後にスレッドを立ち上げる場合などには、事前に処理中のスレッドがないため、S29の判断においてスレッド終了でないという判断が行なわれる。
図9は、前述のスレッド生成または起動の処理(S13)の処理例を示す。まず、実行制御部111は、発生したイベントがスレッド起動であるか否かを判断する(S41)。発生したイベントがスレッド停止ではない場合(S41:No)には、実行制御部111は、発生したイベントがスレッド終了であるか否かを判断する(S47)。イベントの発生やイベントの発生に応じて行なう処理は、OS22aに含まれるマルチスレッドのスケジューラによって、割り込みが起きたか否か、スレッドを処理が終了したか、などの状況に基づいて判断される。
発生したイベントがスレッド起動である場合(S41:Yes)には、読出処理部113は、クロック値(clk1)をクロックカウンタ112から読み出す(S42)。S42の処理の処理によりクロック値(clk1)が読み出されると、算出部114は数式2に基づいて、変数clk0にクロック値(clk1)を代入する。記憶制御部115は、値を代入されたclk0を、起動させるスレッドに対応するスレッドコンテキストに記憶させる(S43)。
さらに、記憶制御部115は、記憶部12から、記憶させるスレッドに対応するスレッドコンテキスト内の処理情報を読み出す(S44)。処理情報は、起動させるスレッドの処理に用いられる情報であり、例えばプログラムカウンタやスタックポインタの値などである。S44の処理は、S42やS43の処理と前後しても構わない。S44の処理が行なわれると、実行制御部111は、S44で読み出した処理情報に基づく処理を実行部110に開始させる(S45)。S45の処理を行なうと、S13の処理は終了する(S46)。
S47の判断の結果、発生したイベントがスレッド生成である場合(S47:Yes)には、実行制御部111はスレッドコンテキストの生成を行なう(S48)。S48の処理において、実行制御部111の指示に基づいて、記憶制御部115は、記憶部12にスレッドコンテキストを記憶する記憶領域を決定し、生成されるスレッドのスレッドIDをその記憶領域内に記憶させる。
また、読出処理部113は、クロックカウンタ112からクロック値(clk1)を読み出す(S49)。S49の処理は、S48の処理よりも前に行われてもよい。S49の処理の処理によりクロック値(clk1)が読み出されると、算出部114は数式2に基づいて、変数clk0にクロック値(clk1)を代入する。記憶制御部115は、値を代入されたclk0を、起動させるスレッドに対応するスレッドコンテキストに記憶させる(S50)。S50の処理が行なわれると、実行制御部111は、実行部110による処理を開始させる(S51)。S51の処理を行なうと、S13の処理は終了する(S46)。S13の処理が終了すると、実行制御部111は、S11の処理を行ない、スレッド制御のイベントの発生を検知する。
コンピュータ1が上記の処理を実行することにより、コンピュータ1で動作するスレッドまたはプロセスごとに、プロセッサが処理に要したクロック数が計測される。プロセッサの動作により電力が消費されるので、プロセッサが実際に動作した量を計測することは、プロセッサの消費電力などのプロセッサの動作に要したコストの推定に有用である。例えば、占有時間に応じてプロセッサの消費電力を見積もる従来の方法では、動作周波数の変動前後で消費電力に不整合が生じてしまう。その一方、上記の処理によれば、プロセッサの実際の動作量を取得しているため、プロセッサの動作周波数に変動があっても変動した動作周波数に応じて消費される電力値を見積もることができる。本実施形態では、プロセスやスレッドごとに、処理に要したクロック数を測定することができるので、プロセスやスレッドごとの消費電力の推定に有用な動作量が把握可能となる。また、コンピュータ1は、プロセッサの動作に要したコストの量として、消費電力以外にも、例えば、プロセッサが消費する電力の発電により生じた二酸化炭素の量、プロセッサから発熱される熱量などについてプロセッサの動作量に応じて推定する。
消費電力の推定値は、例えば、プロセッサの1クロック当たりの消費電力量を予め算出しておき、本実施形態により計測したクロック数と、予め算出した1クロック当たりの消費電力量との乗算により算出される。二酸化炭素量の推定値についても同様に、例えば、予め算出したプロセッサの1クロック当たりの排出二酸化炭素量と、本実施形態により計測したクロック数との乗算により算出される。また、例えば、排出二酸化炭素量の算出において、プロセッサに共有される電力の発電形態に応じて、本実施形態により計測されるクロック数に乗じる値の切り替えが行なわれる。例えば、化石燃料を用いた発電と、自然エネルギーを用いた発電とで、2種類の値が用いられる。プロセッサから発生する熱量についても同様に、例えば、予め算出したプロセッサの1クロック当たりの発熱量を示す値をクロック数に乗算するなどの演算により求めることができる。
また、プロセッサは、プロセッサ内の回路への充放電に加えてリーク電流によっても電力を消費する。そのため、一つの例としては、実行部110は、電力消費を算出する場合に、リーク電流による消費電力量を、クロック数に基づいて求められた消費電力量に合算し、合算した値を出力する。リーク電流による消費電力量は、例えば、処理部10によるクロック数の計数と同様の処理により、プロセスやスレッドごとに、処理に要した時間が計測され、計測された時間に、実行部110が、リーク電流による単位時間当たりの消費電力量を乗算することで算出される。その際、処理部10に含まれる読出部113は、クロックカウンタ112からクロック数を読み出す際に、タイマから時刻情報を取得する。さらに、実行制御部111、記憶制御部115は、クロック数の計数と同様の処理を行ない、プロセスコンテキストまたはスレッドコンテキストに、処理に要した積算時間を格納する。
第2の実施形態について、以下に説明する。第2の実施形態においては、第1の実施形態のコンピュータ1が用いられる。第2の実施形態においては、コンピュータ1において動作するアプリケーションプログラム23cにより、アプリケーションプログラム23a、23bの処理によるプロセッサ301の動作量の可視化処理が行なわれる。実行部110は、アプリケーションプログラム23cに基づいて、例えば以下に説明する可視化処理を行なう。
図10(a)−(c)は、プロセスとスレッドの関係を示すテーブルT2a−T2cを示す。図10(a)のテーブルT2aは、プロセスIDが「A−1」であるプロセスが、スレッドID「a」のスレッドを含むプロセスであることを示す。図10(b)のテーブルT2bは、プロセスIDが「B−1」であるプロセスが、スレッドID「b」のスレッドと、スレッドID「c」のスレッドと、を含むプロセスであることを示す。図10(c)のテーブルT2cは、プロセスIDが「A−2」であるプロセスが、スレッドID「d」のスレッドを含むプロセスであることを示す。図10(b)に示すように、1つのプロセスにおいて、2つ以上のスレッドが生成されることもある。プロセスとスレッドの関係を示すテーブルは、図10(a)−(c)に限らず、コンピュータ1で動作するプロセスそれぞれについて生成される。
図11は、プログラムとプロセスとの関係を示すテーブルを示す。テーブルT2には、コンピュータ1で実行中または過去に実行されたプログラムと、各プログラムの処理単位であるプロセスとを対応付けた情報である。テーブルT2及びテーブルT3は、記憶部12に記憶される。図11では、プログラムID「A」とプロセスID「A−1」及び「A−2」とが関連付けられており、プログラムID「B」とプロセスID「B−1」及び「B−2」とが関連付けられており、プログラムID「C」とプロセスID「C−1」が関連付けられている。ちなみに、アプリケーションプログラム23aのプログラムIDが「A」であり、アプリケーションプログラム23bのプログラムIDが「B」であり、アプリケーションプログラム23cのプログラムIDが「C」であるとする。
実行部110は、コンピュータ1で動作するプログラム、プロセス、スレッドの情報を抽出し、プロセスとスレッドとの関係を示すテーブルT2と、プログラムとプロセスの関係を示すテーブルT3と、を更新する。この更新は、定期的、コンピュータ1に行なわれる操作に応じたタイミング、予め定められたタイミングなどのタイミングで行なわれる。実行部110は、更新するタイミングになると、各プロセスのプロセスコンテキスト内に格納されたスレッドIDを取得し、取得したスレッドIDを各プロセスに対応するテーブルT2に格納することで、テーブルT2を更新する。また、実行部110は、更新するタイミングになると、実行制御部111がプロセス制御に用いるプロセス管理テーブル(不図示)に格納されたプロセスIDを取得し、取得したプロセスIDを各プログラムに対応づけてテーブルT3に格納して、テーブルT3を更新する。
さらに、実行部110は、コンピュータ1で実行された各スレッドコンテキスト又は各プロセスコンテキスト内の積算値Sを収集して、収集した積算値SとテーブルT2、T3とに基づいてコンピュータ1で動作するプログラムそれぞれの動作量を算出する。プロセスコンテキストまたはスレッドコンテキストに、積算値Sでなく、差分dを複数格納している場合には、プロセスコンテキストまたはスレッドコンテキスト内に記憶された差分dの総和を算出し、その総和を積算値Sとして取り扱う。各プログラムについての動作量は、例えば図12に示テーブルT4で管理される。テーブルT4においては、各プログラムのプログラムIDと、そのプログラムについてのプログラム動作量Tとが関連付けられている。
図13は、各プログラムのプログラム動作量Tを算出するフローを示す。この処理は、実行部110がアプリケーションプログラム23cに従って行なう処理である。プログラム動作量Tの算出は、テーブルT2、T3の更新と同様に、定期的、コンピュータ1に行なわれる操作に応じたタイミング、予め定められたタイミングなどのタイミングで行なわれる。S61の処理においては、そのタイミングであるか否かが判断される。実行部110は、プログラム動作量T算出のタイミングであると判断された場合(S61:Yes)に、テーブルT3に示されるプログラムIDのうち、未選択のプログラムIDを選択する(S62)。実行制御部110は、S62で選択されたプログラムIDについての動作量を示す変数Dをクリアする(S63)。S63の処理はS62の処理よりも前に行なわれてもよい。
次に、実行部110は、テーブルT3で、S62で選択されたプログラムIDに関連づけられたプロセスIDのうち、未選択のプロセスIDを選択する(S64)。S64の処理後、実行部110は、テーブルT2で、S64で選択されたプロセスIDに関連付けられたスレッドIDのうち、未選択のスレッドIDを選択する(S65)。
実行部110は、S65で選択されたスレッドIDに対応するスレッドコンテキストから積算値Sを読み出す(S66)。S66の処理後、実行部110は、変数Dの値を、S66で読みだした積算値Sと変数Dとの合計に更新する(S67)。すなわち、実行部110は、D=D+Sの演算を行なう。この場合の「=」は代入を示す演算子である。この際、実行部110はスレッドコンテキストに含まれる積算値Sをクリア(S=0)する(S68)。
S68の処理後、実行部110は、テーブルT2で、S64で選択されたプロセスIDに関連付けられたスレッドIDのうち、未選択のスレッドIDがないかどうかを判断する。S68の判断の結果、未選択のスレッドIDがある場合(S69:No)に、実行部110は、再度S65の処理を行なう。S69の判断の結果、未選択のスレッドIDがない場合(S69:Yes)に、実行部110は、テーブルT3で、S62で選択されたプログラムIDに関連付けられたプロセスIDのうち、未選択のプロセスIDがないかどうかを判断する(S70)。S70の判断の結果、未選択のプロセスIDがある場合(S70:No)に、実行部110は、再度S64の処理を行なう。
S70の判断の結果、未選択のプロセスIDがない場合(S70:Yes)に、実行部110は、テーブルT4で、選択されたプログラムIDに関連付けられたプログラム動作量Tを更新する(S71)。すなわち、実行部110は、T=T+Dの演算を行なう。この場合の「=」は代入を示す演算子である。S72の処理後、実行部110は、テーブルT3に示されるプログラムIDのうち、未選択のプログラムIDがないかどうかを判断する。S72の判断の結果、未選択のスレッドIDがある場合(S72:No)に、実行部110は、再度S62の処理を行なう。
S72の判断の結果、未選択のプログラムがない場合(S72:Yes)に、実行部110は、表示処理を要求されたか否かを判断する(S73)。これは、例えば、ユーザから表示要求を入力された場合、他の装置から表示要求を受信した場合などに、表示処理が要求されたと判断する。表示処理が要求されない場合(S73:No)には、実行部110は、処理を終了する(S75)。
S73の判断の結果、表示処理が要求されたと判断された場合(S73:Yes)に、例えば、図15に示す画面情報41を生成する(S74)。実行部110は、ユーザから表示要求が受信された場合には、生成された画面情報41を出力装置312に表示させ、他の装置から表示要求を受信した場合には、表示要求の送信元の装置に画面情報41を送信する。図15に示す画面情報41は、各アプリケーションについてのクロック数と、消費電力と、二酸化炭素消費量と、を示す情報を含む。各アプリケーションについての消費電力と、二酸化炭素排出量と、については、第1の実施形態で説明したように、例えば、1クロック当たりの消費電力値、二酸化炭素排出量のそれぞれについてプログラム動作量Tを乗じることで算出される。
第3の実施形態について以下に説明する。第3の実施形態においては、第1の実施形態のコンピュータ1のハードウェアが用いられる。第3の実施形態は、第1の実施形態、第2の実施形態とソフトウェア構成が異なる。
図16は、第3の実施形態におけるコンピュータ1のソフトウェア構成例を示す。コンピュータ1で複数の仮想マシン26a−cが動作し、各仮想マシンの処理を実行するためのハードウェア21の制御がハイパーバイザ22bにより行なわれる。
第3の実施形態においても、コンピュータ1は、実行部110、実行制御部111、クロックカウンタ112、読出し処理部113、算出部114、記憶制御部115を含む。第3の実施形態のハイパーバイザ22bに基づく処理により、プロセッサ301は、第1の実施形態の実行制御部111、読出し処理部113、算出部114及び記憶制御部115の機能を実現する。第3の実施形態においては、各仮想マシンについての処理の処理単位であるプロセスやスレッドについてのプロセッサ301の動作量が、ハイパーバイザの制御によりカウントされる。
第3の実施形態においては、仮想マシン26cは、動作量管理の仮想マシンである。その場合の仮想マシン26cに基づく実行部110の処理について、図17に基づいて以下に説明する。
まず、実行部110は、第2の実施形態おけるS61〜S72の処理と同様に、アプリケーションプログラムごとに動作量を計測する処理を行なう(S81)。次に、実行部110は、図18に示す仮想マシン管理テーブルT5に含まれる仮想マシンの識別情報(VMID)のうち、未選択のVMIDを選択する(S82)。ここで、仮想マシン26aのVMIDを「X」とし、仮想マシン26bのVMIDを「Y」とし、仮想マシン26cのVMIDを「Z」とする。S82の処理が行なわれると、仮想マシンごとの動作量を示す変数Uをクリアする(S83)。さらに、実行部110は、図18の仮想マシン管理テーブルT5において、S82で選択されたVMIDに関連付けられたプログラムのうち、未選択のプログラムを選択する(S84)。実行部110は、S84で選択されたプログラムについてのプログラム動作量TをテーブルT4から読み出し、読みだしたプログラム動作量Tに基づいて変数Uを更新する。例えば、実行部110は、変数Uとプログラム動作量Tとの和を、変数Uに代入して変数Uを更新する。
S84の処理を行なうと、実行部110は、図18の仮想マシン管理テーブルT5において、S82で選択されたVMIDに関連付けられたプログラムのうち、未選択のプログラムが無いかどうかを判断する(S86)。S86の判断の結果、未選択のプログラムがある場合(S86:No)には、実行部110は、再度S84の処理を行なう。
S86の判断の結果、未選択のプログラムがない場合(S86:Yes)には、実行部110は、変数Uの値と、S82で選択したVMIDと、を関連付けて図19に示すテーブルT6に記憶する(S87)。S87の処理後、実行部110はテーブルT5に含まれるVMIDのうち、未選択のVMIDがないかどうか判断する(S88)。S88の判断の結果、未選択のVMIDがある場合(S88:No)には、実行部110は、S82の処理を再度行なう。
S88の処理の結果、未選択のVMがない場合(S88:Yes)には、実行部110は、第2の実施形態のS73、S74の処理を行なう(S89)。例えば、要求に応じて画面情報を生成し、生成した画面情報の送信、または生成した画面情報の表示処理を行なう。
図20に、第3の実施形態における画面情報の例を示す。画面情報42は、仮想マシン26aを利用するユーザ向けに仮想マシン26の動作量を示す画面情報である。図20に示すごとく、各月の使用状況を含む画面情報を生成するために、例えば、実行部110は、各月の終わりにテーブルT6を別の記憶領域にコピーし、テーブルT6に含まれるVM動作量の情報をクリアすることを行なう。さらに、実行部110は、画面情報を生成する場合には、表示対象のVMIDについて、テーブルT6に記憶されたVM動作量と、別の記憶領域に記憶された過去の月のVM動作量と、を読み出す。第2の実施形態と同様に、実行部110は、読みだしたVM動作量のそれぞれに、1クロック当たりの消費電力量、1クロック当たりの二酸化炭素排出量を乗算して、各月の消費電力と二酸化炭素排出量とを算出する。各月の課金額は、例えば、消費電力と同様に1クロック当たりの課金額とクロック数との乗算により算出された値、予め行なわれた契約などで定められる。
第4の実施形態について以下に説明する。第4の実施形態においては、第3の実施形態と同様に仮想マシンがコンピュータ1で動作し、コンピュータ1で動作する各仮想マシンの処理を行なうハードウェア21を制御するドライバの機能を有する仮想マシンが、さらにコンピュータ1で動作する。一方、第3の実施形態においては、例えば、ハイパーバイザ22bがドライバ機能を有している。また、第3の実施形態と同様に、仮想マシン26cは、例えば、動作量管理の仮想マシンなどである。
図21は、第4の実施形態のコンピュータ1におけるソフトウェア構成例を示す。図16に示す第3の実施形態のソフトウェア構成に加えて、ドライバVM27aとドライバVM27bとが動作している。VM26aに関する処理を行なうハードウェアはドライバVM27aに基づいて制御される。また、VM26bに関する入出力を行なうハードウェアはドライバVM27bに基づいて制御される。
図22のテーブルT7は、第4の実施形態の仮想マシン管理テーブルを示す。仮想マシン管理テーブルT7は、コンピュータ1で動作する仮想マシン(ドライバVMを含む)のIDと、各仮想マシンで動作するプログラムのIDと、を関係づけたデータを格納するテーブルである。仮想マシン管理テーブルにおいて、ドライバVM27aのIDは「XX」であり、ドライバVM27bのIDは「YY」である。また、仮想マシン管理テーブルT7では、VM間対応関係も示している。例えば、仮想マシン管理テーブルT7は、対応関係を示す情報として、VMID「XX」と関連付けられたVMID「X」を含む。この情報により、VMIDが「XX」である仮想マシンが、VMID「X」の仮想マシンについての処理を行なう仮想マシンであることが示される。
第4の実施形態においては、仮想マシン26cに基づいて実行部110が図17のフローを実行する。第3の実施形態と異なり、S82では、ドライバVM26a、26b、26cも選択される。実行部110がS82〜S88のフローを実行することで、コンピュータ1で動作する各仮想マシンについての動作量が算出される。図23は、各仮想マシンについての動作量を示す。さらに、図17のS89のフローにおいて、実行部110は、前述の表示処理を行なう。第4の実施形態においては、実行部110は、仮想マシン管理テーブルT7に対応関係を示される仮想マシンについては、対応関係を示された仮想マシン同士の動作量の和を算出して、算出した和を表示する。
第4の実施形態で、上記の処理を行なうことで、プロセッサにより行なわれる計測対象のプログラムに関する演算処理に加え、プロセッサにより行なわれるハードウェア制御についての動作量も計測できる。また、消費電力を算出する際に乗じる係数は、例えば、仮想マシン26a〜cの動作量に乗じる係数とドライバVM27a,bに乗じる係数とで、異なる値を用いる。その場合には、例えば、さらに、ドライバVM27a,bについて各ドライバに制御される各ハードウェアの消費電力も含めた係数が設定される。
以下に第5の実施形態について説明する。第5の実施形態は、例えば、第1の実施形態のコンピュータ1を含む図24のシステムにおいて実施される形態である。
図24に例示されるシステムは、コンピュータ1と、コンピュータ2と、中継装置3と、中継装置4と、ネットワーク5と、を含む。コンピュータ1は、第1〜4の実施形態のコンピュータ1と同様のハードウェア構成と機能構成を有する。コンピュータ2は、例えば、コンピュータ1と同様のハードウェア構成を有するコンピュータである。中継装置3は、コンピュータ1とネットワーク5との間で通信の中継を行なう装置である。中継装置3は、コンピュータ2とネットワーク5との間で通信の中継を行なう装置である。また、例えば、コンピュータ2が、コンピュータ1で動作する仮想マシンによりサービスを提供されるコンピュータである。また、サービスを提供されるコンピュータは、図24に示されるコンピュータ2でなくても、例えば、不図示の複数のコンピュータに対してサービスが提供される。
第5の実施形態においては、サービスの提供先ごとにプロセッサ301の動作量の計測を行なう。サービスの提供先ごとの計測とは、サービスの提供を要求するアクセス元に関して行なわれる処理ごとに行なわれるプロセッサ301の動作量についての計測である。例えば、サービスの認証を受けたユーザ単位(ユーザIDなどで識別されるアカウント単位)や、サービスに関する要求の送信元IPアドレスなどの単位で行なわれる処理についてのコンピュータ1の動作量の計測である。
図25は、コンピュータ1のソフトウェア構成例を示す。コンピュータ1では、第3の実施形態と同様に、ハイパーバイザ22bと、仮想マシン26a〜cが動作する。第5の実施形態においては、仮想マシン26aは、OS28aとアプリケーションプログラム29aとアプリケーションプログラム29bとを含み、仮想マシン26bは、OS28bとアプリケーションプログラム29cとアプリケーションプログラム29dとを含む。仮想マシン26a、26bともに、図25に示すソフトウェア構成に限定するものでなく、他のアプリケーションプログラムもコンピュータ1で動作しうる。
第5の実施形態においては、アプリケーションプログラム29aに基づいて、他のコンピュータへのサービスの提供を行なわれ、アプリケーションプログラム29bに基づいて仮想マシン26aに含まれるアプリケーションプログラムによる動作量の管理が行なわれる。また、OS28aは、第1の実施形態のOS22aと同様に、OS28a上で動作するアプリケーションプログラムに応じたハードウェア制御を行なうためのソフトウェアであって、OS28a上で動作する各アプリケーションプログラムについて動作量をカウントさせる。しかしながら、第5の実施形態では、第1の実施形態と異なり、OS28aによる制御は、ハードウェア21をエミュレートするハイパーバイザ22bに対する制御となる。ハードウェア21は、ハイパーバイザ22bの制御に応じて処理を実行する。
図26は、計測対象となる単位の切り替えタイミングを示すシーケンス図である。すなわち、図26に示される切り替タイミングとは、アプリケーションプログラム29aにおける処理の対象となる単位の切り替え、OS28aにおける処理対象のアプリケーションプログラムの切り替え、HV22bにおける処理対象のVMの切り替え、などである。アプリケーションプログラム29aにおける処理の対象となる単位とは、サービス(アプリケーションプログラム26aにより提供される)によって識別される単位(ユーザ(アカウント)、アドレスなどの処理の対象となる単位)で、図26においては、CLIDという識別情報で識別される。識別情報CLIDは、例えば、ユーザID、処理要求の送信元アドレスなどである。
ハイパーバイザ22bにより、処理対象のVMの切り替えが行なわれる。ハイパーバイザ22bにより、VM26aの処理が行なわれる期間に、OS28aが処理対象とするアプリケーションプログラムの処理が行なわれる。
OS28bにより、処理対象のアプリケーションの切り替えが行なわれる。処理対象のアプリケーションの切り替えとは、実質的に、第1の実施形態において説明したように、プロセスまたはスレッドの切り替えにより行なわれる。OS28bの制御により、プロセスまたはスレッドの切り替え(プロセスまたはスレッドについての停止、終了、起動、生成などを含む)に応じて、クロックカウンタの値が読み出される。このとき読み出されるクロックカウンタの値は、ハイパーバイザ22bによりエミュレートされたクロックカウンタであり、VM26aに関する処理に要したクロック数をカウントして得られる値である。
アプリケーションプログラム29aにより、処理対象の単位の切り替えが行なわれる。図26においては、識別情報CLIDがC1の単位から、C2の単位に切り替えられる(X1)。アプリケーションプログラム29aは、切り替え(X1)において、OSに対する切り替えの通知を実行させる。切り替えの通知は、切り替え先の単位の識別情報CLIDを含む。アプリケーション28aから切り替えの通知に応じて、OS28aによって、クロックのカウント処理及びカウンタ値の記憶場所変更が行なわれる。クロックのカウント処理については、アプリケーションの切り替えに応じたカウントと同様に行なわれる(図7〜9参照)。カウンタ値の記憶場所変更は、クロック数の積算値Sを格納するスレッドコンテキストまたはプロセスコンテキストを切り替える処理である。後述するが、第5の実施形態においては、スレッドコンテキスト及びプロセスコンテキストは、処理対象の単位ごとに設けられる。
図27、28は、第5の実施形態におけるプログラム、プロセス及びスレッドを管理するための管理テーブル例を示す。第5の実施形態においては、例えば、プログラム、プロセス及びスレッドが、処理対象ごとに管理される。すなわち、図5、11及び12に示すテーブルに含まれるプログラム、プロセス及びスレッドのIDのそれぞれに処理対象の識別情報CLIDが付加されて管理される。
図27(a)−(c)は、プロセスとスレッドとの対応関係を示す。第5の実施形態においては、OS28aにより、プロセスIDとスレッドIDとの双方に、通知された識別情報CLIDが付加される。図28は、プログラムとプロセスとの対応関係を示す。第5の実施形態においては、OS28aにより、プログラムIDとプロセスIDとの双方に、通知された識別情報CLIDが付加される。
OS28aにより、記憶場所変更が行なわれるにあたって、切り替え先の処理対象の単位について、図27、図28に示される情報がない場合については、アプリケーションプログラム29aからの通知に含まれる識別情報CLIDに基づいて、管理のための情報を生成する。例えば、図27、図28に示すプログラムとプロセスとの関係及びプロセスとスレッドとの関係を示す情報と、CLIDそれぞれに対応するスレッドコンテキスト及びプロセスコンテキストと、が生成される。
また、アプリケーションプログラム29bは、第2の実施形態のアプリーションプログラム23cと同様に、例えば、OS28a上で動作するアプリケーションの動作量管理のアプリケーションプログラムである。アプリケーションプログラム29bにより、図29に示すテーブルT11が管理される。図29は、OS28a上で動作する各プログラムについて各処理単位の動作量を格納するテーブルを示す。
アプリケーションプログラム29bにより、図27、図28に示される関係と、各スレッドコンテキストまたは各プロセスコンテキストに格納される積算値Sの情報に基づいて、図29のテーブルT11が更新される。これは図13、14に示すテーブルT4の更新と同様の処理で行なわれる。これにより、アプリケーションプログラム29aによって識別される処理対象の単位ごとに、処理に要したプロセッサ301の動作量が計測される。アプリケーションプログラム29bにより生成される画面情報は、例えば、対応する処理対象に対して、メールなどの手段により送信される。この画面情報とは、例えば図15や図20に示される、動作量の計測結果を示す画面情報である。これにより、サービスの提供を受けるユーザが、サービスの提供に要したプロセッサ301の動作量を把握可能となる。
以上の第1の実施形態から第5の実施形態のいずれにおいても、1つの例においては、プロセッサ301のコアが複数設けられる。OSによって、プロセスまたはスレッドの制御に応じて、プロセスまたはスレッドが割り当てられるプロセッサのコアそれぞれに設けられたクロックカウンタから値を読み出すことにより、複数のコアのそれぞれで処理に要した動作量が算出される。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
異なる周波数のクロック信号が供給され得るプロセッサを備えるコンピュータに、
前記プロセッサへの割り当て制御の対象である処理単位の処理の開始制御に応じて、前記クロック信号のパルスを計数するクロックカウンタから読み出した第1の値と、前記処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を算出する、
処理を実行させることを特徴とする算出プログラム。
(付記2)
前記コンピュータに、さらに、
算出された前記差分に、単位クロック数当たりの所定種類のコスト値を示す係数を乗じて得られるコスト値を算出する、
処理を実行させることを特徴とする付記1に記載の算出プログラム。
(付記3)
前記処理の停止制御の実行は、前記処理の処理過程における前記プロセッサの処理状況に応じて判断される、
ことを特徴とする付記1または付記2に記載の算出プログラム。
(付記4)
前記コンピュータに、さらに、
算出した前記差分を、前記処理単位を識別する識別情報と関連付けて記憶部に記憶する、
処理を実行させることを特徴とする付記1〜付記3のいずれか1つに記載の算出プログラム。
(付記5)
前記コンピュータに、さらに、
前記処理単位の処理がさらに実行される場合に、さらに実行される処理の開始制御に応じて前記クロックカウンタから読みだされた第3の値と、前記さらに実行される処理の停止制御に応じて前記クロックカウンタから読みだされた第4の値との差分を算出し、
前記第3の値と前記第4の値とに基づいて算出された前記差分を、前記識別情報と関連付けられて前記記憶部に記憶された前記差分に積算して得られる積算値を、前記識別情報に関連付けて前記記憶部に記憶する、
処理を実行させることを特徴とする付記4に記載の算出プログラム。
(付記6)
前記コンピュータに、さらに、
他の処理単位が実行される場合に、前記他の処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第5の値と、前記他の処理単位の前記処理の停止制御に応じて前記クロックカウンタから読み出した第6の値との差分を算出し、
前記他の処理単位が前記処理単位と同じプログラムについての処理単位である場合に、前記第5の値及び前記第6の値に基づいて算出された差分と、前記積算値との和を、前記プログラムを識別するプログラム識別情報に関連付けて前記記憶部に記憶する、
処理を実行させることを特徴とする付記5に記載の算出プログラム。
(付記7)
前記コンピュータに、さらに、
前記プログラムに関する入力制御または出力制御のうち、少なくとも一方の制御を実行させるドライバプログラムの処理単位の処理が実行される場合に、前記ドライバプログラムの処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第7の値と、前記ドライバプログラムの前記処理単位の前記の停止処理の停止制御に応じて前記クロックカウンタから読み出した第8の値との差分を算出し、
前記第7の値と前記第8の値とに基づく前記差分と、前記和との和を、前記プログラム識別情報と関連付けて前記記憶部に記憶する、
処理を実行させることを特徴とする付記6に記載の算出プログラム。
(付記8)
前記処理単位は、マルチスレッド制御の対象となるスレッドであるか、マルチプロセス制御の対象となるプロセスであるか、または前記コンピュータへのアクセス元に関して行なわれる処理の単位である、
ことを特徴とする付記1〜7のいずれか1つに記載の算出プログラム。
(付記9)
異なる周波数のクロック信号が供給され得るプロセッサと、前記クロック信号を計数するクロックカウンタと、を含み、
前記プロセッサが、
前記プロセッサへの割り当て制御の対象である処理単位の処理の開始制御に応じて、前記クロックカウンタから読み出した第1の値と、前記処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を算出する、
処理を実行することを特徴とするコンピュータ。
(付記10)
前記クロックカウンタが、
前記クロック信号が前記プロセッサに供給されたパルスの数を計数する、
ことを特徴とする付記9に記載のコンピュータ。
(付記11)
前記コンピュータは、さらにメモリを備え、
前記プロセッサが、
前記算出した前記差分を、前記処理単位を識別する識別情報と関連付けて前記メモリに記憶する、
処理を実行することを特徴とする付記9または付記10に記載のコンピュータ。
(付記11)
異なる周波数のクロック信号が供給され得るプロセッサ、及びクロックカウンタを含むコンピュータが、
前記クロックカウンタにより、前記クロック信号のパルスを計数し、
前記プロセッサへの割り当て制御の対象である処理単位の処理の開始制御に応じて、前記クロックカウンタから読み出した第1の値と、前記処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を算出する、
ことを実行させることを特徴とする算出方法。
1 コンピュータ
11 処理部
12 記憶部
13 通信部
14 処理部
15 通信部
16 出力部
17 入力部
110 実行部
111 実行制御部
112 クロックカウンタ
113 読出処理部
114 算出部
115 記憶制御部
21 ハードウェア
22a オペレーションシステム
22b ハイパーバイザ
23a−23c アプリケーションプログラム
26a−26c 仮想マシン
27a、27b ドライバVM
28a、28b オペレーションシステム
29a−29d アプリケーションプログラム

Claims (8)

  1. 異なる周波数のクロック信号が供給され得るプロセッサを備えるコンピュータに、
    前記プロセッサへの割り当て制御の対象である複数の処理単位の中の第1の処理単位の処理の開始制御に応じて、前記クロック信号のパルスを計数するクロックカウンタから読み出した第1の値と、前記第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を第1の差分として前記第1の処理単位を識別する第1の識別情報と関連付けて記憶部に記憶し、
    前記第1の処理単位がさらに実行される場合に、前記さらに実行される第1の処理単位の処理の開始制御に応じて前記クロックカウンタから読みだされた第3の値と、前記さらに実行される第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読みだされた第4の値との差分を第2の差分として前記第1の識別情報と関連付けて前記記憶部に記憶し、
    前記第2の差分を、前記記憶部に前記第1の識別情報と関連付けて記憶された前記第1の差分に積算して得られる積算値を第1の積算値として、前記第1の識別情報に関連付けて前記記憶部に記憶し、
    前記複数の処理単位の中の第2の処理単位が実行される場合に、前記第2の処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第5の値と、前記第2の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第6の値との差分である第3の差分を算出し、
    前記第2の処理単位と前記第1の処理単位とが同じプログラムについて割り当てられた処理単位である場合に、前記第3の差分と、前記第1の積算値との和を第2の積算値として、前記プログラムを識別するプログラム識別情報に関連付けて前記記憶部に記憶する、
    処理を実行させることを特徴とする算出プログラム。
  2. 前記コンピュータに、さらに、
    算出された前記第1ないし第3の差分に、単位クロック数当たりの所定種類のコスト値を示す係数を乗じて得られるコスト値を算出する、
    処理を実行させることを特徴とする請求項1に記載の算出プログラム。
  3. 前記処理の停止制御の実行は、前記処理の処理過程における前記プロセッサの処理状況に応じて判断される、
    ことを特徴とする請求項1または請求項2に記載の算出プログラム。
  4. 前記コンピュータに、さらに、
    前記プログラムに関する入力制御または出力制御のうち、少なくとも一方の制御を実行させるドライバプログラムの処理単位となる前記複数の処理単位の中の第3の処理単位の処理が実行される場合に、前記第3の処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第7の値と、前記第3の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第8の値との差分である第4の差分を算出し、
    前記第4の差分と、前記第2の積算値との和を第3の積算値として、前記プログラム識別情報と関連付けて前記記憶部に記憶する、
    処理を実行させることを特徴とする請求項1に記載の算出プログラム。
  5. 前記処理単位は、マルチスレッド制御の対象となるスレッドであるか、マルチプロセス制御の対象となるプロセスであるか、または前記コンピュータへのアクセス元に関して行なわれる処理の単位である、
    ことを特徴とする請求項1〜3のいずれか1つに記載の算出プログラム。
  6. 異なる周波数のクロック信号が供給され得るプロセッサと、前記クロック信号を計数するクロックカウンタと、メモリを含み、
    前記プロセッサが、
    前記プロセッサへの割り当て制御の対象である複数の処理単位の中の第1の処理単位の処理の開始制御に応じて、前記クロックカウンタから読み出した第1の値と、前記第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を第1の差分として前記第1の処理単位を識別する第1の識別情報と関連付けて前記メモリに記憶し、
    前記第1の処理単位がさらに実行される場合に、前記さらに実行される第1の処理単位の処理の開始制御に応じて前記クロックカウンタから読みだされた第3の値と、前記さらに実行される第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読みだされた第4の値との差分を第2の差分として前記第1の識別情報と関連付けて前記メモリに記憶し、
    前記第2の差分を、前記メモリに前記第1の識別情報と関連付けて記憶された前記第1の差分に積算して得られる積算値を第1の積算値として、前記第1の識別情報に関連付けて前記メモリに記憶し、
    前記複数の処理単位の中の第2の処理単位が実行される場合に、前記第2の処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第5の値と、前記第2の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第6の値との差分である第3の差分を算出し、
    前記第2の処理単位と前記第1の処理単位とが同じプログラムについて割り当てられた処理単位である場合に、前記第3の差分と、前記第1の積算値との和を第2の積算値として、前記プログラムを識別するプログラム識別情報に関連付けて前記メモリに記憶する、
    処理を実行することを特徴とするコンピュータ。
  7. 前記クロックカウンタが、
    前記クロック信号が前記プロセッサに供給されたパルスの数を計数する、
    ことを特徴とする請求項6に記載のコンピュータ。
  8. 異なる周波数のクロック信号が供給され得るプロセッサ、メモリ、及びクロックカウンタを含むコンピュータが、
    前記クロックカウンタにより、前記クロック信号のパルスを計数し、
    前記プロセッサへの割り当て制御の対象である複数の処理単位の中の第1の処理単位の処理の開始制御に応じて、前記クロックカウンタから読み出した第1の値と、前記第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第2の値との差分を第1の差分として前記第1の処理単位を識別する第1の識別情報と関連付けて前記メモリに記憶し、
    前記第1の処理単位がさらに実行される場合に、前記さらに実行される第1の処理単位の処理の開始制御に応じて前記クロックカウンタから読みだされた第3の値と、前記さらに実行される第1の処理単位の処理の停止制御に応じて前記クロックカウンタから読みだされた第4の値との差分を第2の差分として前記第1の識別情報と関連付けて前記メモリに記憶し、
    前記第2の差分を、前記記憶部に前記第1の識別情報と関連付けて記憶された前記第1の差分に積算して得られる積算値を第1の積算値として、前記第1の識別情報に関連付けて前記メモリに記憶し、
    前記複数の処理単位の中の第2の処理単位が実行される場合に、前記第2の処理単位の処理の開始制御に応じて前記クロックカウンタから読み出した第5の値と、前記第2の処理単位の処理の停止制御に応じて前記クロックカウンタから読み出した第6の値との差分である第3の差分を算出し、
    前記第2の処理単位と前記第1の処理単位とが同じプログラムについて割り当てられた処理単位である場合に、前記第3の差分と、前記第1の積算値との和を第2の積算値として、前記プログラムを識別するプログラム識別情報に関連付けて前記メモリに記憶する、
    ことを実行させることを特徴とする算出方法。
JP2011280551A 2011-12-21 2011-12-21 算出方法、算出プログラム及びコンピュータ Active JP5799797B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2011280551A JP5799797B2 (ja) 2011-12-21 2011-12-21 算出方法、算出プログラム及びコンピュータ
EP12195833.4A EP2608042B1 (en) 2011-12-21 2012-12-06 Method for estimating power consumption of a virtual machine and corresponding apparatus and recording medium
US13/707,746 US9323642B2 (en) 2011-12-21 2012-12-07 Calculation apparatus, calculation method, and recording medium for calculation program
CN201210559889.8A CN103176836B (zh) 2011-12-21 2012-12-20 计算设备、计算方法及计算程序的记录介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011280551A JP5799797B2 (ja) 2011-12-21 2011-12-21 算出方法、算出プログラム及びコンピュータ

Publications (2)

Publication Number Publication Date
JP2013131076A JP2013131076A (ja) 2013-07-04
JP5799797B2 true JP5799797B2 (ja) 2015-10-28

Family

ID=47561078

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011280551A Active JP5799797B2 (ja) 2011-12-21 2011-12-21 算出方法、算出プログラム及びコンピュータ

Country Status (4)

Country Link
US (1) US9323642B2 (ja)
EP (1) EP2608042B1 (ja)
JP (1) JP5799797B2 (ja)
CN (1) CN103176836B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6670525B2 (ja) * 2013-11-01 2020-03-25 長井 信二 温室効果ガス排出量自動計算装置、倉庫管理システムおよび温室効果ガス排出量自動計算装置用コンピュータソフトウェア
US9558035B2 (en) * 2013-12-18 2017-01-31 Oracle International Corporation System and method for supporting adaptive busy wait in a computing environment
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
CN110309036B (zh) * 2018-03-27 2023-02-10 华为技术有限公司 一种cpu占用率检测方法及检测设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63170744A (ja) * 1987-01-08 1988-07-14 Mitsubishi Electric Corp 情報処理装置
US5838976A (en) * 1995-11-28 1998-11-17 Hewlett-Packard Co. System and method for profiling code on symmetric multiprocessor architectures
US7242223B1 (en) * 2003-03-10 2007-07-10 National Semiconductor Corporation Clock frequency monitor
US7571338B2 (en) * 2004-05-24 2009-08-04 Telefonaktiebolaget Lm Ericsson (Publ) Determining a time difference between first and second clock domains
JP4661509B2 (ja) * 2005-09-30 2011-03-30 富士通株式会社 伝送装置
KR100741470B1 (ko) * 2006-09-26 2007-07-20 삼성전자주식회사 유에스비 장치를 위한 클럭 발생기
US7788511B2 (en) * 2007-08-16 2010-08-31 Texas Instruments Incorporated Method for measuring utilization of a power managed CPU
US7881895B2 (en) * 2008-05-27 2011-02-01 Sony Ericsson Mobile Communications Ab Methods of calibrating a clock using multiple clock periods with a single counter and related devices and methods
EP2313827B1 (en) 2008-06-11 2019-07-24 QUALCOMM Incorporated Method and system for measuring task load
JP5153503B2 (ja) 2008-07-31 2013-02-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 消費電力を推定するシステムおよび方法
JP2011018163A (ja) * 2009-07-08 2011-01-27 Renesas Electronics Corp 半導体装置
CN102184125B (zh) * 2011-06-02 2013-11-13 首都师范大学 异构多核环境下基于程序行为在线分析的负载均衡方法

Also Published As

Publication number Publication date
CN103176836A (zh) 2013-06-26
EP2608042A2 (en) 2013-06-26
EP2608042B1 (en) 2020-09-16
JP2013131076A (ja) 2013-07-04
CN103176836B (zh) 2016-10-05
EP2608042A3 (en) 2017-02-15
US20130166941A1 (en) 2013-06-27
US9323642B2 (en) 2016-04-26

Similar Documents

Publication Publication Date Title
US9430353B2 (en) Analysis and visualization of concurrent thread execution on processor cores
Zheng et al. Goldrush: Resource efficient in situ scientific data analytics using fine-grained interference aware execution
JP6911670B2 (ja) 情報提供プログラム、情報提供装置および情報提供方法
JP5756478B2 (ja) データ・センタにおける電力消費の最適化
JP5353227B2 (ja) 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。
JP5799797B2 (ja) 算出方法、算出プログラム及びコンピュータ
JP6424208B2 (ja) リアルタイムで決定論的エラー回復を可能にするタスク時間割当て方法
KR20170054485A (ko) 운영체제에서의 휴리스틱 프로세서 전력 관리
Dietrich et al. Lightweight graphics instrumentation for game state-specific power management in Android
US8683160B2 (en) Method and apparatus for supporting memory usage accounting
JP2011138219A (ja) 並列プログラム解析結果表示装置および並列プログラム解析結果表示方法
WO2018066040A1 (ja) 管理計算機及びテスト環境決定方法
JP6186862B2 (ja) 情報処理装置、省電力化制御方法および省電力化制御プログラム
JPWO2013140529A1 (ja) 情報処理方法、プログラム、および情報処理装置
WO2012095762A1 (en) Activity recording system for a concurrent software environment
US20160117199A1 (en) Computing system with thermal mechanism and method of operation thereof
JP2017151656A (ja) 並列処理装置、電力係数算出プログラムおよび電力係数算出方法
JP5321748B2 (ja) マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP5178778B2 (ja) 仮想計算機およびcpu割り当て方法
Liu et al. High-responsive scheduling with MapReduce performance prediction on hadoop YARN
JP5342003B2 (ja) ストレージシステム
JP7410379B2 (ja) 資源使用量予測方法および資源使用量予測プログラム
JP5659054B2 (ja) システム管理装置、システム管理方法及びシステム管理プログラム
Roitzsch et al. Atlas: Look-ahead scheduling using workload metrics
Ivers et al. Probabilistic network loads with dependencies and the effect on queue sojourn times

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150709

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150728

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150810

R150 Certificate of patent or registration of utility model

Ref document number: 5799797

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150