(57)【要約】【課題】汎用性を確保しつつ仮想マシンに物理マシンのプロセッサの使用率を伝達できる情報処理装置、情報処理装置の性能測定方法および情報処理装置の性能測定プログラムを提供することにある。【解決手段】情報処理装置は、カウント値を特定するカウント特定部１１Ａと、仮想マシンの退避時にカウント特定部１１Ａが特定したカウント値と仮想マシンの復元時にカウント特定部１１Ａで特定されたカウント値との差分であるカウント差分値を算出するカウント算出部１１Ｂと、イベント値を特定するイベント特定部１１Ｃと、所定のイベント値と特定されたイベント値との差分であるイベント差分値を算出するイベント算出部１１Ｄと、カウント差分値がイベント差分値を超えたかについて判定する判定部１１Ｅと、判定部１１Ｅの判定結果に基づき、イベント値とカウント差分値とを更新する更新部１１Ｆを有する。【選択図】図１２
2015118534.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンを実行する演算処理装置を有する情報処理装置において、
前記演算処理装置の動作に応じてインクリメントされるカウント値を特定するカウント特定部と、
仮想マシンの退避時に前記カウント特定部が特定したカウント値と前記仮想マシンの復元時に前記カウント特定部で特定されたカウント値との差分であるカウント差分値を算出するカウント算出部と、
所定の条件に基づき、前記仮想マシンがイベントを実行する際にインクリメントされるイベント値を特定するイベント特定部と、
所定のイベント値と特定された前記イベント値との差分であるイベント差分値を算出するイベント算出部と、
前記カウント差分値が前記イベント差分値を超えたかについて判定する判定部と、
前記判定部の判定結果に基づき、前記イベント値と前記カウント差分値とを更新する更新部を有する情報処理装置。
【請求項２】
前記情報処理装置はさらに、
前記仮想マシンの退避時から前記仮想マシンの復元時まで、前記仮想マシンに対応する演算処理装置が停止していたことを示す情報を前記仮想マシンに出力する出力部
を有する請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置はさらに、
前記仮想マシンの退避時における前記仮想マシンのレジスタの状態を示すアドレス値を、前記仮想マシンに対応する情報処理装置が管理する記憶領域に記憶させるアドレス記憶部と、
前記仮想マシンの復元時に、前記アドレス記憶部に記憶されたアドレス値を前記仮想マシンに出力するアドレス出力部と
を有する請求項１又は請求項２に記載の情報処理装置。
【請求項４】
複数の仮想マシンを実行する演算処理装置を有する情報処理装置の性能測定方法において、
前記情報処理装置が有するカウント特定部が、前記演算処理装置の動作に応じてインクリメントされるカウント値を特定し、
前記情報処理装置が有するカウント算出部が、仮想マシンの退避時に前記カウント特定部が特定したカウント値と前記仮想マシンの復元時に前記カウント特定部で特定されたカウント値との差分であるカウント差分値を算出し、
前記情報処理装置が有するイベント特定部が、所定の条件に基づき、前記仮想マシンがイベントを実行する際にインクリメントされるイベント値を特定し、
前記情報処理装置が有するイベント算出部が、所定のイベント値と特定された前記イベント値との差分であるイベント差分値を算出し、
前記情報処理装置が有する判定部が、前記カウント差分値が前記イベント差分値を超えたかについて判定し、
前記情報処理装置が有する更新部が、前記判定部の判定結果に基づき、前記イベント値と前記カウント差分値とを更新する情報処理装置の性能測定方法。
【請求項５】
複数の仮想マシンを実行する演算処理装置を有する情報処理装置の性能測定プログラムにおいて、
前記情報処理装置が有するカウント特定部に、前記演算処理装置の動作に応じてインクリメントされるカウント値を特定させ、
前記情報処理装置が有するカウント算出部に、仮想マシンの退避時に前記カウント特定部が特定したカウント値と前記仮想マシンの復元時に前記カウント特定部で特定されたカウント値との差分であるカウント差分値を算出させ、
前記情報処理装置が有するイベント特定部に、所定の条件に基づき、前記仮想マシンがイベントを実行する際にインクリメントされるイベント値を特定させ、
前記情報処理装置が有するイベント算出部に、所定のイベント値と特定された前記イベント値との差分であるイベント差分値を算出させ、
前記情報処理装置が有する判定部に、前記カウント差分値が前記イベント差分値を超えたかについて判定させ、
前記情報処理装置が有する更新部に、前記判定部の判定結果に基づき、前記イベント値と前記カウント差分値とを更新させる情報処理装置の性能測定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の性能測定方法および情報処理装置の性能測定プログラムに関する。
【背景技術】
【０００２】
近年、仮想マシン上から、演算処理装置としてのプロセッサ（以下、ＣＰＵ(Central Processing Unit)と呼ぶ）がアプリケーションプログラムを実行することにより発生するイベントを計測するパフォーマンスカウンタ（以下、ＶＰＭＣ（Virtual Performance Monitoring Counter）とする）の値を取得することにより、従来よりも正確な仮想マシンのＣＰＵ使用率の算出が可能になってきている。しかし、ＶＰＭＣは他の仮想マシンのＣＰＵ上で発生するイベントを計測することが難しいため、仮想マシン上から物理マシン全体のＣＰＵ使用率を計測することが望まれている。
【０００３】
そこで仮想マシン上で物理マシン全体におけるＣＰＵ使用率を計測する方法として、仮想アドレスと論理アドレスとを対応させた情報を保管するＴＬＢ（Translation Look aside Buffer）のイベントのうち、仮想マシン切替えに伴い発生するイベント（ＴＬＢフラッシュ）を利用する技術（例えば、特許文献１）及び仮想マシンの休止時間を利用する技術が知られている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１５２４５８号公報
【特許文献２】特開２００８−２２５６５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術は、現在のＣＰＵが仮想マシン切替えに伴うＴＬＢのイベント発生を抑止する機能を搭載しているため、ＴＬＢにおけるイベント発生をＣＰＵ使用率の計測に利用することが難しいという問題があった。また特許文献２の技術は仮想マシンのＯＳのプログラムに修正が必要であるため、任意の仮想マシン環境で実行することが難しいという問題があった。
【０００６】
一つの側面では、本発明は、汎用性を確保しつつ仮想マシンに物理マシンのプロセッサの使用率を伝達できる情報処理装置、情報処理装置の性能測定方法および情報処理装置の性能測定プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
一態様の情報処理装置は複数の仮想マシンを実行する演算処理装置を有する情報処理装置において、前記演算処理装置の動作に応じてインクリメントされるカウント値を特定するカウント特定部と、仮想マシンの退避時に前記カウント特定部が特定したカウント値と前記仮想マシンの復元時に前記カウント特定部で特定されたカウント値との差分であるカウント差分値を算出するカウント算出部と、所定の条件に基づき、前記仮想マシンがイベントを実行する際にインクリメントされるイベント値を特定するイベント特定部と、所定のイベント値と特定された前記イベント値との差分であるイベント差分値を算出するイベント算出部と、前記カウント差分値が前記イベント差分値を超えたかについて判定する判定部と、前記判定部の判定結果に基づき、前記イベント値と前記カウント差分値とを更新する更新部を有する情報処理装置。
【発明の効果】
【０００８】
一態様によれば、汎用性を確保しつつ仮想マシンに物理マシンのプロセッサの使用率を伝達することができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置のハードウェア群を示すブロック図である。
【図２】情報処理装置を仮想化したソフトウェアを示す説明図である。
【図３】動作テーブルのレコードレイアウトの一例を示す説明図である。
【図４】ＣＰＵが行う処理の手順の一例を示すフローチャートである。
【図５】ＣＰＵが行う処理の手順の一例を示すフローチャートである。
【図６】実施の形態２に係る情報処理装置のハードウェア群を示すブロック図である。
【図７】ＣＰＵが実行するアドレス設定処理のソフトウェアを示す説明図である。
【図８】実施の形態２に係るＣＰＵが行う処理の手順の一例を示すフローチャートである。
【図９】実施の形態２に係るＣＰＵが行う処理の手順の一例を示すフローチャートである。
【図１０】実施の形態２に係るＣＰＵが行う処理の手順の一例を示すフローチャートである。
【図１１】実施の形態３に係る情報処理装置のハードウェア群を示すブロック図である。
【図１２】実施の形態３に係る情報処理装置の機能ブロック図である。
【発明を実施するための形態】
【００１０】
実施の形態１
図１は情報処理装置１のハードウェア群を示すブロック図である。情報処理装置１はＶＭ（Virtual Machine）を動かすコンピュータであり、例えばパーソナルコンピュータ、サーバコンピュータ等である。図１に示す情報処理装置１は、演算処理装置としてのＣＰＵ（プロセッサ）１１、記憶部１２、ＲＡＭ（Random Access Memory）１３、入力部１４、表示部１５を備える。
【００１１】
ＣＰＵ１１は、バスを介してハードウェア各部と接続されている。ＣＰＵ１１は例えば一もしくは複数のＣＰＵ又はマルチコアＣＰＵ等を備える。ＣＰＵ１１は、記憶部１２に記憶されたプログラム（性能測定プログラム）１２Ｐに従いハードウェアの各部を制御する。ＣＰＵ１１はタイムスタンプカウンタ（以下、ＴＳＣ（Time Stamp Counter）という）１１１及びパフォーマンスカウンタ（以下、ＰＭＣ（Performance Monitoring Counter）という）１１２を含む。ＴＳＣ１１１はＣＰＵ１１のクロックサイクル毎に増加するレジスタであり、１クロックに付き１ずつ値が加算される値を出力する。すなわちＴＳＣ１１１はプロセッサの動作に係るクロックパルスでインクリメントされる。
【００１２】
ＰＭＣ１１２はＣＰＵ１１のイベントをＰＭＣ値（イベント値）として計測する。すなわちＰＭＣ１１２は所定の条件に従い仮想マシンでイベントが実行される際にインクリメントされる。所定の条件とはプログラム１２Ｐで設定された条件であり、例えば１ｍｓ又は２ｍｓ毎に実行される割込み等である。イベントとは例えば、プログラム１２Ｐ実行期間中に、ＣＰＵ１１が停止していなかった（すなわちビジー状態であった）サイクル、分岐命令、実行命令、バストトランザクション、または、分岐予測失敗等である。ＣＰＵ１１はＰＭＣ値が所定のＰＭＣフル値を超えた場合、ＰＭＣ値を所定のＰＭＣ設定値（所定のイベント値）に設定する。所定のＰＭＣフル値とは予め記憶部１２に記憶された値であり、例えば９９クロックである。所定のＰＭＣ設定値とはＰＭＣフル値から所定の周期（所定の周期とは例えば１０クロックである）を減算した値に１を加算した値であり、例えば９０クロックである。ＣＰＵ１１はＰＭＣ値が所定のＰＭＣフル値を超える際に、後述する割込発生ハンドル２２２を実行する。
【００１３】
ＲＡＭ１３は例えばＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、フラッシュメモリ等である。ＲＡＭ１３は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１４】
記憶部１２は例えばハードディスクまたは大容量メモリ等である。記憶部１２にはＣＰＵ１１が処理を行う際に必要とする種々のデータ、プログラム１２Ｐ、動作テーブルＴ１を格納する。プログラム１２Ｐは仮想化環境を実現するためのプログラムであり、後述するハイパーバイザ上で仮想マシンを動作させる。
【００１５】
入力部１４はマウス、キーボード又はタッチパネル等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ出力する。表示部１５は表示装置（図示せず）に表示させる画像データを出力する。
【００１６】
図２は情報処理装置１を仮想化したソフトウェアを示す説明図である。図２に示すように、情報処理装置１は物理的なハードウェアを示す物理マシン上にハイパーバイザ２２と呼ばれるソフトウェアにより物理マシンに含まれるＣＰＵ、メモリ等の資源を論理的に分割し、独立したＶＭ（仮想マシン）が複数動作可能となっている。各ＶＭは夫々のＯＳ（Operating System）が動作し、夫々のＯＳ上でアプリケーションプログラムが動作し、ユーザにサービスを提供している。ＣＰＵ１１はＶＭの切替をハイパーバイザ２２上で行うことができる。
【００１７】
図２に示す例では、情報処理装置１には２つのＶＭ１、ＶＭ２が動作している。ＶＭ１は、仮想ＣＰＵ１（ＶＣＰＵ１）、仮想ＰＭＣ１（ＶＰＭＣ１）を備える。ＶＣＰＵ１は仮想化され、ＶＭ１上で動作するＣＰＵであり、ＶＰＭＣ１はＶＣＰＵ１のイベントを計測するカウンタである。ＶＭ２はＶＣＰＵ２、ＶＰＭＣ２を備える。ＶＣＰＵ２、ＶＰＭＣ２の機能及び動作はＶＣＰＵ１、ＶＰＭＣ１と略同様であるため記載を省略する。なお、本実施の形態において２つのＶＭが動作している情報処理装置１について記載しているが、情報処理装置１は３つ以上のＶＭが動作してもよい。
【００１８】
ハイパーバイザ２２はＶＰＭＣ退避領域２２１、割込発生ハンドル２２２、残カウント値記憶領域２２３、ＴＳＣ退避領域２２４を備える。ＶＰＭＣ退避領域２２１とはＣＰＵ１１がＶＭの切替を行った場合、ＶＰＭＣの値を退避させておくための領域である。ＶＰＭＣ退避領域２２１には夫々のＶＭに対応し、退避時のＶＰＭＣの値を示す退避ＰＭＣ値が記憶されている。ＣＰＵ１１はＶＭの切替を行った場合、切替を行う前のＶＭに対応する退避ＰＭＣ値をＶＭから取得する。ＣＰＵ１１は取得した退避ＰＭＣ値をＶＰＭＣ退避領域２２１に記憶する。ＣＰＵ１１は例えば、ＶＭ１からＶＭ２に切替を行った場合、ＶＰＭＣ１の値をＶＰＭＣ退避領域２２１に記憶する。
【００１９】
ＴＳＣ退避領域２２４とはＣＰＵ１１がＶＭの切替を行った場合、退避時のＴＳＣ１１１の値を示す退避ＴＳＣ値（カウント値）を退避させておくための領域である。ＴＳＣ退避領域２２４には夫々のＶＭに対応する退避ＴＳＣ値が記憶されている。ＣＰＵ１１はＶＭの切替を行った場合、切替を行う前のＶＭに対応する退避ＴＳＣ値をＴＳＣ１１１から取得する。ＣＰＵ１１は取得した退避ＴＳＣ値をＴＳＣ退避領域２２４に記憶する。ＣＰＵ１１は例えば、ＶＭ１からＶＭ２に切替を行った場合、ＴＳＣ１１１の値をＴＳＣ退避領域２２４に記憶する。ＣＰＵ１１はＶＰＭＣ値に退避ＰＭＣ値を設定する。
【００２０】
残カウント値記憶領域２２３は以前に切替が行われたＶＭに対応する退避ＴＳＣ値と復元時のＴＳＣ１１１の値との差分を示す残カウント値（カウント差分）を記憶させておくための領域である。ＣＰＵ１１は以前に切替が行われたＶＭに切替が行われた場合、復元時のＴＳＣ値を取得する。ＣＰＵ１１は以前に切替が行われたＶＭに対応する退避ＴＳＣ値と復元時のＴＳＣ１１１の値との差分をとることにより残カウント値を算出する。ＣＰＵ１１は算出した残カウント値を残カウント値記憶領域２２３に記憶する。ＣＰＵ１１は例えば、ＶＭ１からＶＭ２に切替を行った後、ＶＭ２からＶＭ１に切替を行った場合、ＶＭ１に対応する退避ＴＳＣ値と復元時におけるＴＳＣ１１１の値との差分をとることにより残カウント値を算出する。ＣＰＵ１１は算出した残カウント値を残カウント値記憶領域２２３に記憶する。
【００２１】
割込発生ハンドル２２２とは所定のＰＭＣ設定値とＶＰＭＣ退避領域２２１に記憶された退避ＰＭＣ値との差分を算出した残ＰＭＣカウント値（イベント差分）及び残カウント値に基づいて退避ＰＭＣ値を設定するプログラムである。ＣＰＵ１１は算出した残カウント値を残カウント値記憶領域２２３に記憶した後、所定のＰＭＣ設定値と退避ＰＭＣ値との差分を算出することにより残ＰＭＣカウント値を算出する。ＣＰＵ１１は残カウント値が残ＰＭＣカウント値を超えたか否かを判定する。ＣＰＵ１１は残カウント値が残ＰＭＣカウント値を超えたと判定した場合、残カウント値から残ＰＭＣカウント値を減算する。ＣＰＵ１１は以前に切替を行ったＶＭへ切替が行われた場合、残ＰＭＣカウント値を切替を行った先のＶＭのＶＰＭＣ値に加算する。ＣＰＵ１１は切替を行った先のＶＭに対応する退避ＰＭＣ値に所定のＰＭＣフル値を設定する。ＣＰＵ１１は切替を行った先のＶＭに対応する退避ＰＭＣ値をＰＭＣ設定値に更新する。
【００２２】
ＣＰＵ１１は残カウント値が残ＰＭＣカウント値を超えなかったと判定した場合、残カウント値と残ＰＭＣカウント値とが同一か否かを判定する。ＣＰＵ１１は残カウント値と残ＰＭＣカウント値とが同一でないと判定した場合、切替を行った先のＶＭに対応する退避ＰＭＣ値に残カウント値を加算する。ＣＰＵ１１は残カウント値を０に設定する。
【００２３】
次にＣＰＵ１１が割込発生ハンドル２２２により行われる処理を、図３を参照しつつ説明する。図３は動作テーブルＴ１のレコードレイアウトの一例を示す説明図である。動作テーブルＴ１はＣＰＵ１１が割込発生ハンドル２２２を行った処理を示すテーブルである。動作テーブルＴ１は回数列、処理列、残カウント値列、退避ＰＭＣ値列、残ＰＭＣカウント値列、ＶＰＭＣ値列を備える。図３では、説明のため図３Ａ〜図３Ｆに動作テーブルＴ１に割込発生ハンドル２２２を行った処理前後の変化を示している。図３Ａ、３Ｂ、３Ｃ、３Ｄ、３Ｅ、３Ｆは、ＣＰＵ１１が１回目、２回目、３回目、４回目、５回目、６回目に割込発生ハンドル２２２により行われた処理前後の変化をそれぞれ示す。
【００２４】
回数列にはＣＰＵ１１が割込み発生ハンドル２２２により処理を行った回数が記憶される。処理列にはＣＰＵ１１が割込み発生ハンドル２２２により処理を行う前又は後のいずれかが記憶される。処理列には例えば、「前」、「後」が記憶される。「前」はＣＰＵ１１が割込み発生ハンドル２２２により処理を行う前であることを示す。「後」はＣＰＵ１１が割込み発生ハンドル２２２により処理を行った後であることを示す。残カウント値列には残カウント値が記憶される。退避ＰＭＣ値列には退避ＰＭＣカウント値が記憶される。残ＰＭＣカウント値列には残ＰＭＣカウント値が記憶される。ＶＰＭＣ値列にはＶＰＭＣ値が記憶される。
【００２５】
図３Ａに示すように、ＣＰＵ１１は例えば、ＶＭ１からＶＭ２に切替が行われた後、ＶＭ２からＶＭ１に切替が行われた場合、ＰＭＣフル値である９９に１を加算し、ＶＭ２に対応する退避ＰＭＣ値である９７を減算することにより残ＰＭＣカウント値である３を算出する。ＣＰＵ１１は残カウント値である５０が残ＰＭＣカウント値である３を超えたと判定する。ＣＰＵ１１は残カウント値である５０から残ＰＭＣカウント値である３を減算し、残カウント値を４７にする。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値にＰＭＣフル値である９９を設定する。ＣＰＵ１１はＶＰＭＣ値である９０に残ＰＭＣカウント値である３を加算する。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値を９０に更新する。
【００２６】
図３Ｂに示すように、ＣＰＵ１１はＰＭＣフル値である９９に１を加算し、ＶＭ２に対応する退避ＰＭＣ値である９０を減算することにより残ＰＭＣカウント値である１０を算出する。ＣＰＵ１１は残カウント値である４７が残ＰＭＣカウント値である１０を超えたと判定する。ＣＰＵ１１は残カウント値である４７から残ＰＭＣカウント値である１０を減算し、残カウント値を３７にする。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値にＰＭＣフル値である９９を設定する。ＣＰＵ１１はＶＰＭＣ値である９３に残ＰＭＣカウント値である１０を加算する。ＶＰＭＣ値がＰＭＣフル値である９９を超えたため、ＣＰＵ１１はＶＰＭＣ値を９０に更新し、ＶＰＭＣ値を９３に設定する。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値を９０に更新する。
【００２７】
図３Ｃに示すように、ＣＰＵ１１はＰＭＣフル値である９９に１を加算し、ＶＭ２に対応する退避ＰＭＣ値である９０を減算することにより残ＰＭＣカウント値である１０を算出する。ＣＰＵ１１は残カウント値である３７が残ＰＭＣカウント値である１０を超えたと判定する。ＣＰＵ１１は残カウント値である３７から残ＰＭＣカウント値である１０を減算し、残カウント値を２７にする。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値にＰＭＣフル値である９９を設定する。ＣＰＵ１１はＶＰＭＣ値である９３に残ＰＭＣカウント値である１０を加算する。ＶＰＭＣ値がＰＭＣフル値である９９を超えたため、ＣＰＵ１１はＶＰＭＣ値を９０に更新し、ＶＰＭＣ値を９３に設定する。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値を９０に更新する。
【００２８】
図３Ｄに示すように、ＣＰＵ１１はＰＭＣフル値である９９に１を加算し、ＶＭ２に対応する退避ＰＭＣ値である９０を減算することにより残ＰＭＣカウント値である１０を算出する。ＣＰＵ１１は残カウント値である２７が残ＰＭＣカウント値である１０を超えたと判定する。ＣＰＵ１１は残カウント値である２７から残ＰＭＣカウント値である１０を減算し、残カウント値を１７にする。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値にＰＭＣフル値である９９を設定する。ＣＰＵ１１はＶＰＭＣ値である９３に残ＰＭＣカウント値である１０を加算する。ＶＰＭＣ値がＰＭＣフル値である９９を超えたため、ＣＰＵ１１はＶＰＭＣ値を９０に更新し、ＶＰＭＣ値を９３に設定する。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値を９０に更新する。
【００２９】
図３Ｅに示すように、ＣＰＵ１１はＰＭＣフル値である９９に１を加算し、ＶＭ２に対応する退避ＰＭＣ値である９０を減算することにより残ＰＭＣカウント値である１０を算出する。ＣＰＵ１１は残カウント値である１７が残ＰＭＣカウント値である１０を超えたと判定する。ＣＰＵ１１は残カウント値である１７から残ＰＭＣカウント値である１０を減算し、残カウント値を７にする。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値にＰＭＣフル値である９９を設定する。ＣＰＵ１１はＶＰＭＣ値である９３に残ＰＭＣカウント値である１０を加算する。ＶＰＭＣ値がＰＭＣフル値である９９を超えたため、ＣＰＵ１１はＶＰＭＣ値を９０に更新し、ＶＰＭＣ値を９３に設定する。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値を９０に更新する。
【００３０】
図３Ｆに示すように、ＣＰＵ１１はＰＭＣフル値である９９に１を加算し、ＶＭ２に対応する退避ＰＭＣ値である９０を減算することにより残ＰＭＣカウント値である１０を算出する。ＣＰＵ１１は残カウント値である７が残ＰＭＣカウント値である１０を超えなかったと判定し、かつ残カウント値である７と残ＰＭＣカウント値である１０とが同一でないと判定する。ＣＰＵ１１はＶＭ２に対応する退避ＰＭＣ値である９０に残カウント値７を加算する。ＣＰＵ１１はＶＰＭＣ値である９３に残ＰＭＣカウント値である７を加算する。ＶＰＭＣ値がＰＭＣフル値である９９を超えたため、ＣＰＵ１１はＶＰＭＣ値を９０に更新する。ＣＰＵ１１は残カウント値を０に設定する。
【００３１】
次に、情報処理装置１の動作について説明する。図４〜図５はＣＰＵ１１が行う処理の手順の一例を示すフローチャートである。ＣＰＵ１１は記憶部１２を参照し、ＰＭＣフル値及び周期の初期設定を含む初期化処理を行う（ステップＳ１）。なお、ＰＭＣフル値及び周期は入力部１４により入力された値を用いてもよい。ＣＰＵ１１はＰＭＣ設定値をＰＭＣフル値から周期を減算した値に１を加算した値に設定する（ステップＳ２）。
【００３２】
ＣＰＵ１１はＶＭの切替が行われたか否かを判定する（ステップＳ３）。ＣＰＵ１１はＶＭの切替が行われなかったと判定した場合（ステップＳ３：ＮＯ）、処理をステップＳ３に戻し、ＶＭの切替が行われるまで待機する。ＣＰＵ１１はＶＭの切替が行われたと判定した場合（ステップＳ３：ＹＥＳ）、切替を行う前のＶＭに対応する退避ＰＭＣ値をＶＭから取得（特定）する（ステップＳ４）。ＣＰＵ１１は取得した退避ＰＭＣ値をＶＰＭＣ退避領域２２１に記憶する（ステップＳ５）。
【００３３】
ＣＰＵ１１は切替を行う前のＶＭに対応する退避ＴＳＣ値をＴＳＣ１１１から取得（特定）する（ステップＳ６）。ＣＰＵ１１は取得した退避ＴＳＣ値をＴＳＣ退避領域２２４に記憶する（ステップＳ７）。ＣＰＵ１１は以前に切替が行われたＶＭであるか否かを判定する（ステップＳ８）。ＣＰＵ１１は以前に切替が行われたＶＭでないと判定した場合（ステップＳ８：ＮＯ）、処理をステップＳ３に移し、切替が行われるまで待機する。ＣＰＵ１１は以前に切替が行われたＶＭであると判定した場合（ステップＳ８：ＹＥＳ）、復元時のＴＳＣ値を取得（特定）する（ステップＳ９）。以前に切替が行われたＶＭに対応する退避ＴＳＣ値と復元時のＴＳＣ１１１の値との差分をとることにより残カウント値を算出する（ステップＳ１０）。ＣＰＵ１１は算出した残カウント値を残カウント値記憶領域２２３に記憶する（ステップＳ１１）。
【００３４】
ＣＰＵ１１はＶＰＭＣ値に退避ＰＭＣ値を設定する（ステップＳ１２）。ＣＰＵ１１は所定のＰＭＣ設定値からＶＰＭＣ退避領域２２１に記憶された退避ＰＭＣ値を減算することにより残ＰＭＣカウント値を算出する（ステップＳ１３）。ＣＰＵ１１は残カウント値が残ＰＭＣカウント値を超えたか否かを判定する（ステップＳ１４）。ＣＰＵ１１は残カウント値が残ＰＭＣカウント値を超えたと判定した場合（ステップＳ１４：ＹＥＳ）、残カウント値から残ＰＭＣカウント値を減算する（ステップＳ１５）。
【００３５】
ＣＰＵ１１は復元時のＶＭのＶＰＭＣ値に残ＰＭＣカウント値を加算する（ステップＳ１６）。ＣＰＵ１１は切替を行った先のＶＭに対応する退避ＰＭＣ値を所定のＰＭＣフル値に設定する（ステップＳ１７）。ＣＰＵ１１は復元時のＶＭに対応する退避ＰＭＣ値をＰＭＣ設定値に更新し（ステップＳ１８）、処理をステップＳ１３に移す。
【００３６】
ＣＰＵ１１は残カウント値が残ＰＭＣカウント値を超えなかったと判定した場合（ステップＳ１４：ＮＯ）、残カウント値と残ＰＭＣカウント値とが同一か否かを判定する（ステップＳ１９）。ＣＰＵ１１は残カウント値と残ＰＭＣカウント値とが同一であると判定した場合（ステップＳ１９：ＹＥＳ）、処理を終了する。ＣＰＵ１１は残カウント値と残ＰＭＣカウント値とが同一でないと判定した場合（ステップＳ１９：ＮＯ）、復元時のＶＭに対応する退避ＰＭＣ値に残カウント値を加算する（ステップＳ２０）。ＣＰＵ１１は復元時のＶＭのＶＰＭＣ値に残カウント値を加算する（ステップＳ２１）。ＣＰＵ１１は残カウント値を０に設定し（ステップＳ２２）、処理を終了する。
【００３７】
なお、本実施形態ではＣＰＵ１１は退避ＴＳＣ値、退避ＰＭＣ値を記憶したが、時刻等により退避ＴＳＣ値、退避ＰＭＣ値を推定してもよい。
【００３８】
本実施の形態では、ＣＰＵ１１がＶＰＭＣ値に不足したカウントを補うことができる。
【００３９】
本実施の形態では、ＣＰＵ１１が汎用性を確保しつつＶＭにＣＰＵ１１の使用率を伝達することができる。
【００４０】
実施の形態２
図６は実施の形態２に係る情報処理装置１のハードウェア群を示すブロック図である。図７はＣＰＵ１１が実行するアドレス設定処理のソフトウェアを示す説明図である。以下、特に説明する構成、作用以外の構成及び作用は実施の形態１と同等であり、簡潔のため記載を省略する。図６に示すように情報処理装置１のＲＡＭ１３はコンテキスト退避領域１３１を備える。図７に示すように情報処理装置１はハイパーバイザ２２に設けられたアドレス退避領域（記憶領域）２２５、アドレス設定ハンドル２２６とを備える。コンテキスト退避領域１３１はＲＡＭ１３においてＶＭ１、ＶＭ２のＶＭアドレス値（アドレス値）を退避させておくための領域である。ＶＭアドレス値とはＶＭの各種レジスタの状態を表すアドレス値であり、例えばＶＭに関するページテーブルのアドレス値、ＶＭにおいて実行される命令アドレス値等である。ＣＰＵ１１はＶＭ１、ＶＭ２の切替時にＶＭアドレス値をコンテキスト退避領域１３１に記憶させる。
【００４１】
アドレス退避領域２２５はハイパーバイザ２２においてＶＭ１、ＶＭ２のＶＭアドレス値を退避させておくための領域である。ＣＰＵ１１はコンテキスト退避領域１３１に記憶させたＶＭアドレス値をアドレス退避領域２２５に記憶させる。
【００４２】
アドレス設定ハンドル２２６はＶＣＰＵが停止していたことを示すアイドル関数をコンテキスト退避領域１３１に設定するプログラムである。ＣＰＵ１１は残ＰＭＣカウント値に対応するアイドル関数をコンテキスト退避領域１３１に記憶する。ＣＰＵ１１は割込発生ハンドル２２２による処理が行われる前にＶＭアドレス値をアドレス退避領域２２５に記憶させる。残ＰＭＣカウント値に対応するアイドル関数とはＶＭの退避時から復元時までＶＣＰＵが停止していたことを示すアイドル関数（データ）である。ＣＰＵ１１は割込発生ハンドル２２２による処理が行われた後、アドレス退避領域２２５に記憶されたＶＭアドレス値をコンテキスト退避領域１３１に記憶する。
【００４３】
次に、実施の形態２に係る情報処理システムの動作について説明する。図８〜１０は実施の形態２に係るＣＰＵが行う処理の手順の一例を示すフローチャートである。ステップＳ１〜２２の処理は上述の実施の形態１に係るＣＰＵが行う処理の手順の一例と同様であるので、簡潔のため説明を省略する。ＣＰＵ１１はステップＳ３の処理を終了した後、ＶＭアドレス値をＲＡＭ１３のコンテキスト退避領域１３１に記憶し（ステップＳ３０）、処理をステップＳ４に移す。
【００４４】
ＣＰＵ１１はステップＳ１３の処理を終了した後、アイドル関数をコンテキスト退避領域１３１に記憶する（ステップＳ３１）。ＣＰＵ１１はＶＭアドレス値をアドレス退避領域２２５に記憶し（ステップＳ３２）、処理をステップＳ１４に移す。ＣＰＵ１１はステップＳ１９がＹＥＳであった場合又はステップＳ２２の処理を終了した後、ＶＭアドレス値をコンテキスト退避領域１３１に記憶する（ステップＳ３３）。ＣＰＵ１１はコンテキスト退避領域１３１に記憶されたＶＭアドレス値及びアイドル関数を仮想マシンに出力し（ステップＳ３４）、処理を終了する。
【００４５】
本実施の形態では、ＣＰＵ１１がＶＭに停止していたことを伝達することができる。
【００４６】
本実施の形態では、ＣＰＵ１１がＶＭの状態を取得することができる。
【００４７】
実施の形態３
以下本発明の実施の形態３をその実施の形態を示す図面に基づいて詳述する。図１１は実施の形態３に係る情報処理装置１のハードウェア群を示すブロック図である。以下、特に説明する構成、作用以外の構成及び作用は実施の形態２と同等であり、簡潔のため記載を省略する。
【００４８】
情報処理装置１を動作させるためのプログラムは、ディスクドライブ等の読み取り部１６にＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）ディスク、メモリーカード、又はＵＳＢ（Universal Serial Bus）メモリ等の可搬型記録媒体１６Ａを読み取らせて記憶部１２に記憶してもよい。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１６Ｂを情報処理装置１内に実装しても良い。通信部１７は、例えば無線ＬＡＮカード又は携帯電話用通信モジュール等であり、通信網Ｎを介して他のサーバコンピュータに接続されている。当該プログラムは、通信部１７によりインターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下にその内容を説明する。
【００４９】
図１１に示す情報処理装置１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１６Ａ又は半導体メモリ１６Ｂから読み取り、あるいは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、プログラム１２Ｐとしてインストールされ、記憶部１２にロードして実行される。これより上述した情報処理装置１として機能する。
【００５０】
図１２は実施の形態３に係る情報処理装置１の機能ブロック図である。ＣＰＵ１１がプログラム１２Ｐを実行することにより、情報処理装置１は以下のように動作する。カウント特定部１１ＡはＣＰＵ１１の動作に係るクロックパルスでインクリメントされるカウント値を特定する。カウント算出部１１Ｂは仮想マシンの退避時にカウント特定部１１Ａで特定されたカウント値と仮想マシンの復元時にカウント特定部１１Ａで特定されたカウント値とのカウント差分を算出する。イベント特定部１１Ｃは所定の条件に従い前記仮想マシンでイベントが実行される際にインクリメントされるイベント値を特定する。イベント算出部１１Ｄは所定のイベント値と前記仮想マシンの退避時に前記イベント特定部１１Ｃで特定されたイベント値とのイベント差分を算出する。判定部１１Ｅは前記カウント算出部１１Ｂで算出されたカウント差分が前記イベント算出部１１Ｄで算出されたイベント差分を超えたか否かを判定する。更新部１１Ｆは前記判定部１１Ｅが前記カウント差分が前記イベント差分を超えたと判定した場合、前記イベント値及びイベント差分に基づいて前記イベント値及びカウント差分を更新する。値更新部１１Ｇは前記判定部１１Ｅが前記カウント差分が前記イベント差分を超えなかったと判定した場合、前記イベント値及びカウント差分に基づいて前記イベント値及びカウント差分を更新する。
【００５１】
出力部１１Ｈは前記仮想マシンの退避時から復元時まで前記仮想マシンのＶＣＰＵが停止していたことを示すデータを仮想マシンに出力する。アドレス記憶部１１Ｉは前記仮想マシンの退避時における前記仮想マシンのレジスタの状態を示すアドレス値を物理マシンに設けられたアドレス退避領域２２５に記憶させる。アドレス出力部１１Ｊは前記仮想マシンの復元時に、アドレス記憶部１１Ｉに記憶されたアドレス値を前記仮想マシンに出力する。
【００５２】
以上の実施の形態に関し、更に以下の付記を開示する。
【００５３】
（付記１）
複数の仮想マシンを実行する演算処理装置を有する情報処理装置において、
前記演算処理装置の動作に応じてインクリメントされるカウント値を特定するカウント特定部と、
仮想マシンの退避時に前記カウント特定部が特定したカウント値と前記仮想マシンの復元時に前記カウント特定部で特定されたカウント値との差分であるカウント差分値を算出するカウント算出部と、
所定の条件に基づき、前記仮想マシンがイベントを実行する際にインクリメントされるイベント値を特定するイベント特定部と、
所定のイベント値と特定された前記イベント値との差分であるイベント差分値を算出するイベント算出部と、
前記カウント差分値が前記イベント差分値を超えたかについて判定する判定部と、
前記判定部の判定結果に基づき、前記イベント値と前記カウント差分値とを更新する更新部を有する情報処理装置。
（付記２）
前記情報処理装置はさらに、
前記仮想マシンの退避時から前記仮想マシンの復元時まで、前記仮想マシンに対応する演算処理装置が停止していたことを示す情報を前記仮想マシンに出力する出力部
を有する付記１記載の情報処理装置。
（付記３）
前記情報処理装置はさらに、
前記仮想マシンの退避時における前記仮想マシンのレジスタの状態を示すアドレス値を、前記仮想マシンに対応する情報処理装置が管理する記憶領域に記憶させるアドレス記憶部と、
前記仮想マシンの復元時に、前記アドレス記憶部に記憶されたアドレス値を前記仮想マシンに出力するアドレス出力部と
を有する付記１又は付記２に記載の情報処理装置。
（付記４）
複数の仮想マシンを実行する演算処理装置を有する情報処理装置の性能測定方法において、
前記情報処理装置が有するカウント特定部が、前記演算処理装置の動作に応じてインクリメントされるカウント値を特定し、
前記情報処理装置が有するカウント算出部が、仮想マシンの退避時に前記カウント特定部が特定したカウント値と前記仮想マシンの復元時に前記カウント特定部で特定されたカウント値との差分であるカウント差分値を算出し、
前記情報処理装置が有するイベント特定部が、所定の条件に基づき、前記仮想マシンがイベントを実行する際にインクリメントされるイベント値を特定し、
前記情報処理装置が有するイベント算出部が、所定のイベント値と特定された前記イベント値との差分であるイベント差分値を算出し、
前記情報処理装置が有する判定部が、前記カウント差分値が前記イベント差分値を超えたかについて判定し、
前記情報処理装置が有する更新部が、前記判定部の判定結果に基づき、前記イベント値と前記カウント差分値とを更新する情報処理装置の性能測定方法。
（付記５）
複数の仮想マシンを実行する演算処理装置を有する情報処理装置の性能測定プログラムにおいて、
前記情報処理装置が有するカウント特定部に、前記演算処理装置の動作に応じてインクリメントされるカウント値を特定させ、
前記情報処理装置が有するカウント算出部に、仮想マシンの退避時に前記カウント特定部が特定したカウント値と前記仮想マシンの復元時に前記カウント特定部で特定されたカウント値との差分であるカウント差分値を算出させ、
前記情報処理装置が有するイベント特定部に、所定の条件に基づき、前記仮想マシンがイベントを実行する際にインクリメントされるイベント値を特定させ、
前記情報処理装置が有するイベント算出部に、所定のイベント値と特定された前記イベント値との差分であるイベント差分値を算出させ、
前記情報処理装置が有する判定部に、前記カウント差分値が前記イベント差分値を超えたかについて判定させ、
前記情報処理装置が有する更新部に、前記判定部の判定結果に基づき、前記イベント値と前記カウント差分値とを更新させる情報処理装置の性能測定プログラム。
（付記６）
前記判定部が前記カウント差分が前記イベント差分を超えなかったと判定した場合、前記イベント値及びカウント差分に基づいて前記イベント値及びカウント差分を更新する値更新部をさらに備える情報処理装置。
（付記７）    
前記更新部は、前記カウント差分を、前記カウント差分から前記イベント差分を減算した値に更新し、前記イベント値を、前記イベント値から前記イベント差分を加算した値に更新し、前記値更新部は、イベント値を、該イベント値からカウント差分を加算した値に更新し、カウント差分を０に更新する付記１に記載の情報処理装置。
【００５４】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００５５】
１１    ＣＰＵ
１２    記憶部
１２Ｐ  プログラム（性能測定プログラム）
１３    ＲＡＭ
１４    入力部
１５    表示部
２２    ハイパーバイザ
１３１  コンテキスト退避領域
２２１  ＶＰＭＣ退避領域
２２２  割込発生ハンドル
２２３  残カウント値記憶領域
２２４  ＴＳＣ退避領域
２２５  アドレス退避領域
２２６  アドレス設定ハンドル
Ｔ１    動作テーブル
１１Ａ  カウント特定部
１１Ｂ  カウント算出部
１１Ｃ  イベント特定部
１１Ｄ  イベント算出部
１１Ｅ  判定部
１１Ｆ  更新部
１１Ｇ  値更新部
１１Ｈ  出力部
１１Ｉ  アドレス記憶部
１１Ｊ  アドレス出力部
【図１】
2015118534.tif 000003
【図２】
2015118534.tif 000004
【図３】
2015118534.tif 000005
【図４】
2015118534.tif 000006
【図５】
2015118534.tif 000007
【図６】
2015118534.tif 000008
【図７】
2015118534.tif 000009
【図８】
2015118534.tif 000010
【図９】
2015118534.tif 000011
【図１０】
2015118534.tif 000012
【図１１】
2015118534.tif 000013
【図１２】
2015118534.tif 000014