JP2010152458A - 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。 - Google Patents

性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。 Download PDF

Info

Publication number
JP2010152458A
JP2010152458A JP2008327211A JP2008327211A JP2010152458A JP 2010152458 A JP2010152458 A JP 2010152458A JP 2008327211 A JP2008327211 A JP 2008327211A JP 2008327211 A JP2008327211 A JP 2008327211A JP 2010152458 A JP2010152458 A JP 2010152458A
Authority
JP
Japan
Prior art keywords
virtual machine
performance
performance monitoring
interrupt
event
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.)
Granted
Application number
JP2008327211A
Other languages
English (en)
Other versions
JP5353227B2 (ja
Inventor
Satoshi Hirai
聡 平井
Koichi Kumon
耕一 久門
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 JP2008327211A priority Critical patent/JP5353227B2/ja
Publication of JP2010152458A publication Critical patent/JP2010152458A/ja
Application granted granted Critical
Publication of JP5353227B2 publication Critical patent/JP5353227B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】CPUを含むハードウェア及びハイパーバイザを変更することなく、性能モニタリング機構を備えた既製のマイクロプロセッサを用いた仮想計算機システムにおいて、仮想マシン上で実行されるプログラムの高精度な動作情報を効率よく採取する。
【解決手段】性能モニタリング機構に性能モニタリングカウンタを備えたCPUを有する物理マシン上で動作する仮想計算機の性能を測定する性能測定機能を備えた情報処理装置であって、計数すべきイベントを前記性能モニタリングカウンタに設定すると共に、割込みハンドラを前記仮想計算機に設定する手段と、仮想計算機の切替え時に起こるイベントを前記性能モニタリング機構で検出して前記仮想計算機に割込みが発生すると、前記割込ハンドラが前記性能モニタリングカウンタの値と時刻情報とを読み出して、それぞれ所定の記憶領域内に格納する手段と、を備える。
【選択図】図3

Description

本発明は、仮想計算機システムの性能を測定する技術に関する。
近年、ハードウェアの高性能化とハイパーバイザ(Hypervisor)の開発により、マイクロプロセッサを用いたパーソナルコンピュータやサーバの分野でも仮想計算機システムが広く用いられるようになってきた。仮想計算機システムは、単一の物理マシン上で複数の同一または異なるOSを同時に稼動させることにより、仮想的に異なる複数の計算機環境が提供されるシステムである。
図8は、仮想計算機システムの構成例を示すシステム構成図である。仮想計算機システム101は、CPU111、メモリ112、I/Oデバイス113を備えるハードウェア層110と、ハードウェア層110の制御と各仮想マシン間の調整を行うハイパーバイザ層120と、ハイパーバイザ層120の上で動作する仮想マシン層130とを備えるのが一般的である。
仮想計算機システム101は、複数の仮想マシン131,132,133がハードウェア資源を共有するシステムである。ハイパーバイザ121は、複数の仮想マシン131,132,133のゲストOSを制御する仮想化ソフトウェアである。
仮想マシン層130を構成する各仮想マシン131,132,133は、それぞれゲストOS141,142,143とアプリケーションを備える。各仮想マシンに対応するゲストOSは、同じOSに限らず、バージョンが異なる同種のOSであってもよいし、例えばLinux とWindows(登録商標)というように異なる種類のOSであってもよい。
またコンピュータシステムの性能分析、最適化のために、性能モニタリング機構を備えたCPUが市販されている。例えば、 Intel社のXeon(登録商標)プロセッサや AMD社のOpteron(登録商標)プロセッサ、或いは IBM社のPowerPC(登録商標)プロセッサなどは、実行クロック数、実行命令数、キャッシュミス数などのプロセッサ内部のイベント及び外部とのやり取りのイベントを計測する機能を有する。
性能モニタリング機構を備えるCPUは、複数本のカウンタと、多種のイベントの中からそれぞれのカウンタが計測するイベントを選択して設定する設定レジスタを有する。また、性能モニタリング機構を備えたCPUは、指定したイベントを検知した際に、特定のベクタ或いは指定したベクタに割り込みを発生させる機能を有し、イベント発生時の付随情報を採取することを可能としている。
性能モニタリング機構を使用した一般的な性能分析手法は、モニタリングの対象となるプログラムの開始時と終了時にカウンタ値を読み出して、カウンタ値の差分により、対象プログラム実行中のイベント数を求める手法である。
次に図9を参照して、仮想計算機システムの仮想マシン毎に性能測定を行うことを考える。仮想計算機システムにおいて、仮想マシンに割り当てられた一定時間の実行権が終了したとき、或いは処理の中断/放棄により、今まで実行していた仮想マシンから別の実行可能状態にある仮想マシンへ実行権を移す切替制御をハイパーバイザが行っている。従って、仮想マシンAにおける測定対象プログラムの実行開始と実行終了との間には、異なる仮想マシンBの実行時間が含まれる。
このため、仮想マシンAとして実行されたプログラムの開始時と終了時に性能モニタリングカウンタの値を読み出して、その差によりイベント数を求めたとしても、この値の中には、同一CPUで実行された他の仮想マシンBによるイベント数が含まれている。これは、マイクロプロセッサが内蔵する性能モニタ機構が複数の仮想マシン間で共有されることと、ハイパーバイザが各仮想マシンの実行を切替える際の契機を仮想マシン側では認識する手段が無いことによる。
このような性能モニタ機構を備えたマイクロプロセッサを用いた仮想計算機システムにおいて、各仮想マシン毎の性能測定を行おうとすれば、ハイパーバイザを修正して、性能モニタリング機構の制御と性能情報収集機能を追加する必要がある。
しかしながら、VMware社のVMware InfrastructureやMicrosoft社のHyper-Vといった仮想化製品を使用する場合、ソースコードが提供されていないためにハイパーバイザに手を加えることは現実的に不可能である。
さらに、仮想計算機システムの性能測定に関する従来技術としては、CPUハードウェアに仮想計算機サポート用の機構を付加して性能情報を効率よく採取する技術が知られている。この技術によれば、性能指標を計数する複数のカウンタと、動作中の仮想マシンを識別する手段と、動作中の仮想マシンに対応したカウンタ毎に計数動作の可否を切り替える切り替え手段を備える。そして仮想計算機システムの動作中に、計数が許可されたカウンタのみが性能指標を計数し、許可されていないカウンタは計数結果を保持することができるので、仮想計算機毎の性能指標の計数値が得られる。
VMware Infrastructure(平成20年7月31日検索、URL1:http://www.vmware.com/jp/products/vi) Hyper-V:Windows Server2008の主要機能(平成20年7月31日検索、URL2:http://www.microsoft.com/japan/windowsserver2008/virtualization/default.mspx) 特開2008−129931号公報 特公平8−33851号公報
しかしながら、特許文献1、2に記載の技術は、専用ハードウェアによりプロセッサ内部で仮想マシンの切替を検知して、複数のカウンタを切り替えている。そのために、既製のマイクロプロセッサを利用した仮想計算機システムにおいて、仮想マシン毎の性能モニタに適用できないという問題点があった。
以上の問題点に鑑み、本発明の目的は、CPUを含むハードウェア及びハイパーバイザを変更することなく、性能モニタリング機構を備えた既製のマイクロプロセッサを用いた仮想計算機システムにおいて、仮想マシン上で実行されるプログラムの高精度な動作情報を効率よく採取することができる技術を提供することである。
開示する技術は、性能モニタリング機構に性能モニタリングカウンタを備えたCPUを有する物理マシン上で動作する仮想計算機の性能を測定する性能測定機能を備えた情報処理装置であって、計数すべきイベントを前記性能モニタリングカウンタに設定すると共に、割込みハンドラを前記仮想計算機に設定する手段と、仮想計算機の切替え時に起こるイベントを前記性能モニタリング機構で検出して前記仮想計算機に割込みが発生すると、前記割込ハンドラが前記性能モニタリングカウンタの値と時刻情報とを読み出して、それぞれ所定の記憶領域内に格納する手段と、を備える。
開示する技術によれば、仮想マシンの切替を検知する専用ハードウェアを用いることなく、性能モニタリングカウンタを備えた既製のマイクロプロセッサを用いた仮想計算機システムにおいて、仮想マシン上で実行されるプログラムの高精度な動作情報を効率よく採取・分析することができる。
次に図面を参照して、本発明の実施の形態を詳細に説明する。図1は、性能測定プログラムが動作する、本発明の実施形態に係る仮想計算機システムのシステム構成図である。
図1において、仮想計算機システム1は、ハードウェア層11と、ハイパーバイザ層12と、仮想マシン層13とを備える。ハードウェア層11は、性能モニタリング機構111aを備えたCPU111と、メモリ112と、I/Oデバイス113とを備える。
CPU111は、市販のマイクロプロセッサであり、例えば、 Intel社のXeon(登録商標)プロセッサや AMD社のOpteron(登録商標)プロセッサ、或いは IBM社のPowerPC(登録商標)プロセッサなどの性能モニタリング機構111aを内蔵するプロセッサである。
性能モニタリング機構111aは、指定されたイベントを計数するカウンタと、該カウンタ毎に配置され多種のイベントの中から該カウンタが計測するイベントを選択して設定する設定レジスタとの対を複数有する。さらに設定レジスタには、設定されたイベントが何回発生したら割込を発生させるかを指定する割込頻度設定部と、この割込を発生させる(オン)か発生させないか(オフ)を指定する割込オン/オフ設定部が設けられている。
これにより、性能モニタリング機構111aを備えたCPU111は、指定したイベントを検知した際に、特定のベクタ或いは指定したベクタに割り込みを発生させる機能を実現し、イベント発生時の付随情報を採取することを可能としている。
ハイパーバイザ層12は、仮想化ソフトウェアであるハイパーバイザ121を備える。ハイパーバイザ121は、ハードウエア層11上で動作してハードウェア層11を制御するとともに、仮想マシン層13の各ゲストOS31〜33を制御する仮想化ソフトウェアである。ハイパーバイザ121は、ハードウェア層のCPU111の実行権を後述する各仮想マシンに割り当てるスケジューリング機能、及びメモリ112のマシンアドレス空間を各仮想マシンに割り当てるメモリ管理機能を有する。
さらにハイパーバイザ121は、性能モニタリング機構111aが発生するハードウェア割り込みである性能モニタリング機構割り込みに基づいて、後述する実行中の仮想マシンに対してソフトウェア割り込みである性能モニタリング割り込みを行う機能を有する。
仮想マシン層13は、仮想マシン21,22,23を備える。仮想マシンの数は、ハードウエア層11の能力と、場合によってはハイパーバイザ層21に依存し、図1の様に3つに限定されることはない。
仮想マシン21,22,23は、それぞれ対応するゲストOS31,32,33を備える。そして、ハイパーバイザ121は、ゲストOS31,32,33のうちからいずれか一つを選択して、選択したゲストOSに所定時間分のCPU111の実行権を割り当てる。ここで、選択されたゲストOSをゲストOS32とすると、CPU111の実行権を割り当てられたゲストOS32は、ハイパーバイザ121から割り当てられたメモリ112を使用して、ゲストOS32自身及びその配下の図示しないアプリケーションを実行する。ゲストOS32に実行権が割り当てられた所定時間が経過するか、或いは、入出力待ち、例外発生等により実行継続が不可能となった場合、ハイパーバイザ121は、ゲストOS32からCPU111の実行権を取り上げ、別のゲストOSを選択して、これにCPU111の実行権を割り当てることにより、仮想マシンの切り替えを行う。
また、ゲストOS31,32,33は、性能モニタリング機構111aからハイパーバイザ121を介したソフトウェア割り込みである性能モニタリング割込みを処理する割込ハンドラ31a,32a,33aをそれぞれ備える。
これらの割込ハンドラ31a,32a,33aの作用は、以下の通りである。まずS101において、実行中の仮想マシンに割り当てられた一定時間の実行権が終了したとき、或いは実行中の仮想マシンが処理の中断/放棄を行ったときに、ハイパーバイザ121が、仮想マシンの切替制御を行う。次いでS102で、性能モニタリング機構111aが仮想マシン切替時に起きるイベントを検出して、ハイパーバイザ121にハードウェア割込である性能モニタリング機構割り込みを発生させる。次いでS103において、ハイパーバイザ121が切り替え対象の仮想マシン21のゲストOS31の割込ハンドラ31aへソフトウェア割り込みである性能モニタリング割り込みを起こすことにより、ゲストOS31が仮想マシン切替を検知する。割り込みハンドラ31aは、性能モニタリング機構111aに格納されている性能モニタリングカウンタ値を読み出してメモリ112へ記録するとともに、性能モニタリングカウンタ値を読み出した時点のクロックレベルの時刻情報も併せてメモリ112に記録する。
この性能モニタリング機構111aによる割り込みと、各ゲストOS31、32、33が備える割り込みハンドラ31a、32a、33aにより、仮想マシン切替毎に、性能モニタリングカウンタ値と、その値を読み出した時刻情報とがメモリ112に記録される。
次に、図2の仮想マシン切替タームチャートを参照して、仮想マシン切替毎に読み出した性能モニタリングカウンタ値と、その値を読み出した時刻情報とをどのように利用するかを説明する。例えば仮想マシンA上で動作する性能データ採取プログラムが、あるイベントのイベント数を性能モニタリングカウンタ(以下、PMC(Perfomance Monitoring Counter)と略す)で計数することを考える。ここで、仮想マシンAと仮想マシンBが、時分割で実行されるとする。
性能測定としては、仮想マシンA上で性能データ採取プログラムを実行し、この性能データ採取プログラムの実行開始から実行終了までに発生するあるイベントの発生回数を求めるものとする。
性能データ採取プログラムの開始時刻taにおけるPMCのイベント計数値をNaとする。次いで時刻tbにおいて仮想マシンAから仮想マシンBへの切替が発生したとする。このとき、仮想マシン切替によりPMCからハイパーバイザへ性能モニタリング機構割り込みが発生し、ハイパーバイザは、切り替えられる仮想マシンBにソフトウェア割り込みである性能モニタリング割込みをかける。仮想マシンBの割り込みハンドラは、時刻tbのPMC値Nbと時刻情報とをメモリへ記録する。
次いで時刻tcにおいて仮想マシンBから仮想マシンAへの切替が発生したとする。このときも同様に仮想マシンAに割込みが発生し、仮想マシンAは、時刻tcのPMC値Ncと時刻情報とをメモリへ記録する。次いで時刻tdにおいて仮想マシンAから仮想マシンBへの切替が発生し、このときのPMC値をNdとする。次いで時刻teにおいて仮想マシンBから仮想マシンAへの切替が発生したとする。このとき仮想マシンAに割込みが発生し、仮想マシンAは、このときのPMC値Neと時刻情報とをメモリへ記録する。最後に時刻tfで性能データ採取プログラムを終了し、このときのPMC値をNfとする。
以上の性能データ採取プログラムの実行の結果、仮想マシンの切替毎に、PMC値と、PMC値を取得した時刻情報とがメモリへ記録される。従って、仮想マシンAによる性能データ採取プログラム実行中のイベント発生回数は、Nf−Na−((Nc−Nb)+(Ne−Nd))により、仮想マシンBの影響を除去したイベント数の値を算出することができる。
次に、図3乃至図7を参照して、本発明に係る性能測定プログラムの実施例を備えた仮想計算機システムを詳細に説明する。図3は仮想計算機システム1の構成例を示すシステム図上に、性能測定の流れを示した図である。図4は性能モニタリングカウンタの設定例を説明する図である。図5は性能情報採取制御・集計プログラムのフローチャートである。図6は性能データ採取プログラムのフローチャートである。図7はゲストOSのPMC割込ハンドラのフローチャートである。
図3において、仮想計算機システム1は、CPU111と、メモリ112と、ハイパーバイザ121と、仮想マシン21,22,…,2Nと、制御マシン41とを備える。
CPU111は、例えば、 Intel社のXeonプロセッサ、 AMD社のOpteronプロセッサ、或いは IBM社のPowerPCプロセッサ等の性能モニタリング機構111aを内蔵する既製のマイクロプロセッサであり、特許文献1、2のような仮想マシンの性能モニタリングのための特別なハードウェアを備えないものである。
性能モニタリング機構111aは、複数の性能モニタリングカウンタ(PMC)を備えると共に、計測対象のイベント検知時に、PMCからPMC割込を発生させることができるものである。
ハイパーバイザ121は、CPU111やメモリ112などのハードウェアの制御と、各仮想マシン間の調整とを行う制御ソフトウェアである。ハイパーバイザ121には、PMC割込を含むハードウェアからの割込を受け付けて、割込ハンドラに処理を引き渡すための割込テーブル121aが備えられている。割込テーブル121aは、割り込みを識別するベクタと呼ばれる番号毎に、例えば、ハンドラを格納しているセグメントのセグメントアドレス、及びハンドラの最初の命令へのオフセット(セグメント内アドレス)をそれぞれエントリとして保持している。
また、ハイパーバイザ121は、VMware社のVMware Infrastructure(非特許文献1)やMicrosoft社のHyper-V(非特許文献2)といった仮想化製品であり、仮想マシンの性能モニタのための改変等は行っていないものである。従って、ソースコードが公開されていないハイパーバイザを用いることが可能である。
仮想マシン21のゲストOS31は、本発明の一実施例に係る性能測定プログラムとして、割込ハンドラ31aと性能データ採取プログラム31bとを備える。割込ハンドラ31aと性能データ採取プログラム31bとは、各仮想マシン21,22,…,2Nに備えられる。割込ハンドラ31aは、ハイパーバイザ121の割込テーブル121aに登録され、性能モニタリング機構111aによる割込を処理する。言い換えれば、PMC割り込みの割り込みベクタに対応した割込テーブル121aのエントリには、動作中の仮想マシンの割り込みハンドラ31aのセグメントとオフセットが格納されている。
性能データ採取プログラム31bは、性能モニタリング機構111aからの割込みを処理する割込ハンドラ31aをハイパーバイザ121の割込テーブル121aに登録する。また、いずれかの仮想マシンの性能データ採取プログラム31bは、性能モニタリング機構111aの各性能モニタリングカウンタに測定するイベントを設定し、各性能モニタリングカウンタから割込を発生させるか否か、及び幾つのカウント数で割込を発生させるかを設定する。
制御マシン41は、性能情報採取制御・集計プログラム51を備える。性能情報採取制御・集計プログラム51は、性能データ採取プログラム31bの計測準備を指示したり、性能データ採取プログラム31bから計測値の読出し指示に従って、性能測定の計測値をメモリ112から読み出して集計する。図3において、制御マシン41は、仮想マシン21〜2Nとは独立したコンソールのようなマシンであってもよいし、制御マシン41は、仮想マシン21〜2Nの内の一つであってもよい。
次に、性能測定の流れを説明する。まずS1において、制御マシン41の性能情報採取制御・集計プログラム51は、仮想マシン21上で動作する性能データ採取プログラム31bへ計測準備の指示をする。
次いで、S2において、性能データ採取プログラム31bは、性能情報採取制御・集計プログラム51からの指示に基づき、ハイパーバイザ121の割込テーブル121aに、割込ハンドラ31aのセグメントとオフセットを登録する。
次いでS3において、性能測定対象の仮想マシンの性能データ採取プログラム31bは、各PMCにカウントすべきイベントを設定する。
図4は、性能モニタリングカウンタ(PMC)の設定例を説明する図である。イベントを設定するPMCのイベント設定領域には、性能モニタリングカウンタnに示すように、計数を行なうべきイベント種別を設定する部分と、設定されたイベントにより割込みを行わせるか否かを指定する割込みon/offを設定する部分と、イベントが何回発生する毎に割込みを発生させるかを指定する割込み頻度を設定する部分とがある。
図4の例では、性能モニタリングカウンタ0に、測定するイベントとして「TLBフラッシュ」つまりTLBエントリの無効化、割込みのon/offとして「割込みon」、割込み頻度として「1回毎」を設定している。これにより、仮想マシン切替毎に発生するTLB無効化処理により、仮想マシンに割り込むことができ、仮想マシンの割込ハンドラでPMC及び時刻情報を読み出すことができる。また、性能モニタリングカウンタ1には、測定するイベントとして「実行命令数」、割込みのon/offは「割込みoff」に設定している。割込みoffに設定されたPMCは、それが計数するイベントの発生により、割り込みを生じることはない。その他、計測したいイベントの数だけ、それぞれの性能モニタリングカウンタに、イベントの種別と割込みoffを設定する。
図3に戻ってS4において、性能データ採取プログラム31bは、PMCにカウントを開始させる。次いでS5において、実行中の仮想マシンが実行権を与えられた一定時間を使い切ったり、実行中の仮想マシンが処理の中断または放棄を行ったことをハイパーバイザが検知すると、ハイパーバイザ121が仮想マシン切替を行う。仮想マシン切替時には、コンテキスト切替を伴うので、TLBエントリの無効化が行われる。このとき、性能モニタリングカウンタ0には、計測するイベントとしてTLBフラッシュ、割込みon、1回毎の割込み、が設定されているので、S6に示すように、TLBエントリの無効化が行なわれることにより、性能モニタリング機構111aからハイパーバイザ121へハードウェア割込が発生する。このハードウェア割込の割込ベクトルは、割込テーブル121のPMC割込エントリを指すように設定されているので、S7に示すように、ハイパーバイザ121によりゲストOS31の割込ハンドラ31aが起動されることになる。
ここで121から割り込まれるゲストOSは、仮想マシン切替により新たに実行権が与えられる仮想マシン21〜2Nのいずれかに対応するゲストOSであり、ここでは仮にゲストOS31とする。
次いでS8において、ゲストOS31の割込ハンドラ31aが、CPU111の性能モニタリング機構111aから、S3で計数するイベントを設定したPMCの値の読み出しを行う。次いでS9にて、割込ハンドラ31aがS8で読み出したPMC値をメモリ112へ格納する。このとき、S8におけるPMC値読み出し時の時刻情報、或いは、PMC値のメモリへの書き込み時の時刻情報を同様にメモリ112へ格納する。
時刻情報は、CPU111に設けられている時刻情報を計時する専用のタイムスタンプカウンタ(TSC:Time Stamp Counter)や高精細度イベントタイマ(HPET:High Precision Event Timer)から読み出しても良い。また、時刻情報は、PMCの一つに計測するイベントとしてクロックを設定することにより、PMC読み出し時にカウントしたクロック数も含めて読み出すようにしてもよい。以下の説明では、TSCを読み出すことにより、時刻情報を取得するものとする。
S5からS9は、性能データ採取プログラム31bの実行が終わるまでに、仮想マシン切替が生じれば、その都度繰り返される。
次いでS10で、性能データ採取プログラム31bが終了すると、性能データ採取プログラム31bから性能情報採取制御・集計プログラム51へ、各割込ハンドラがメモリ112に格納したPMC読み出し値及びTSC値の読み出し指示が行われる。次いで、S11において、この読み出し指示により、性能情報採取制御・集計プログラム51がメモリ112から仮想マシン切替毎に格納されたPMC値とTSC値とを読み出して、各仮想マシンが仮想マシン切替を割り込みにより認識した時刻を抽出する。
そして性能情報採取制御・集計プログラム51は、計測対象のプログラムの計測開始から計測終了までの期間内にハイパーバイザ121による仮想マシンの切替があったか否かを判定する。仮想マシン切替があった場合には、性能情報採取制御・集計プログラム51は、仮想マシン切替のシーケンスを認識し、図2で示したように、性能データ採取プログラム31bを実行した仮想マシンにおけるイベント数を算出する。
次に図5を参照して、制御マシンで動作する性能情報採取制御・集計プログラム51による処理を説明する。性能情報採取制御・集計プログラム51に応じて実行される処理は、前処理と後処理からなる。前処理は、図5(a)に示すように、S21で性能データ採取プログラム31bへ計測開始を指定して終了する。これは、図3のS1に相当する。後処理は、図5(b)に示すように、まずS22で、各仮想マシンの割込ハンドラが採取しメモリへ格納したPMC値とTSC値とをTSC値の時系列に従って統合し、性能測定中に仮想マシン切り替えが行われたスケジューリングを識別する。次いでS23で、カウントすべきイベント毎に、性能測定対象プログラムである性能データ採取プログラムが実行されていた時間に対応するPMCカウント数を算出する。
これにより性能データ採取プログラムを仮想マシンで実行した場合の各イベント毎のカウント数を得ることができる。S22とS23とは、図3のS11に相当する。
次に図6を参照して、各仮想マシン上で動作する性能データ採取プログラム31bによる処理を説明する。性能データ採取プログラム31bに基づく処理は、前処理と後処理からなる。前処理は、図6(a)に示すように、S31でハイパーバイザ121の割込テーブル121aに、ゲストOSの割込ハンドラ31aのセグメントとオフセットを登録する。
次いでS32で、一つのPMCが計数するイベントを設定する。この例では、図4に示した性能モニタリングカウンタ0に、PMCが計数するイベントとして、仮想マシン切替時に必ず発生するTLBフラッシュを設定するものとする。このとき、イベントが設定されたPMCからの割込が発生するように、PMCに割り込みonを設定するとともに、割込頻度として「1」を設定し、イベントが1回発生する毎に割込みを発生させるように設定する。ここで、仮想マシン切替時に必ず発生するイベントとしては、TLBフラッシュに限らず、ハイパーバイザモードからゲストOSモードへの遷移命令等、仮想マシン切替時にハイパーバイザが1回だけ実行する命令の検出をイベントとして設定してもよい。さらに、仮想マシン制御テーブルの切替や、I/Oマッピングテーブルの切替などの仮想マシン切替時に発生する事象をイベントとして設定してもよい。次いでS33で、他のPMCに測定したいイベント、例えば、実行クロック数、実行命令数、L1,L2,L3の各レベルにおけるキャッシュミス数、分岐成功(分岐GO)数、分岐失敗(分岐NO GO )数、分岐予測成功数、分岐予測失敗数等、メモリ読み込み数、メモリ書き込み数、等を設定する。そして、S34でPMCのカウントを開始させ、性能データ採取プログラム31bの前処理を終了する。
性能データ採取プログラム31bの後処理は、図6(b)に示すように、S35で、性能情報採取制御・集計プログラム51に対して、計測値の読出し、集計処理を指示して終了する。
次に図7のフローチャートを参照して、割込ハンドラ31aを説明する。割込ハンドラ31aは、まずS41でPMCのカウント値を読み取り、読み取ったカウント値をメモリ112の所定の領域へ書き込む。この操作を、測定イベントを設定したPMCの数だけ行う。次いで、S42で、PMC割込ハンドラ31aは、タイムスタンプカウンタ(TSC)の値を読み取り、このカウント値をメモリ112の所定の領域へ書き込んで終了する。S41とS42とは順序を入れ替えてもよい。
以上説明したように本実施形態によれば、性能モニタリングカウンタを備えた既製のマイクロプロセッサを用いた仮想計算機システムにおいて、仮想マシン切替毎に、切り替えられる仮想マシンへ性能モニタリング割込を起こさせ、この割込を処理する仮想マシンの割込ハンドラがPMC値と時刻情報(TSC値)とをメモリへ格納しているので、性能測定プログラム終了後に、メモリを読み出すことにより、仮想マシン切替のシーケンスを判別して、測定対象の仮想マシンにおけるプログラムの高精度な動作情報を効率よく採取・分析することができる性能測定プログラムを提供することができる。
また、本性能測定プログラムは、仮想マシン上のOSのデバイスドライバとして作成可能であり、従来ではハードウェアの改変もしくはハイパーバイザに手を加えなければ採取できなかった仮想マシンの切替え検知、ならびに各仮想マシンの性能情報を正確に採取できるようになる。
また、性能モニタリングカウンタ機能はCPUが通常有している機能であり、仮想マシン切替え時に発生するイベント(例えばTLBエントリ無効化イベント)もIntel社のXeon(登録商標)やAMD社のOpteron(登録商標)を始めとした多くのCPUで計測可能である。このため、該当機能を有する多くのCPUで、ハードウェアを一切付加・変更することなく実現可能であるため、適用範囲も広い。
本発明が適用される仮想計算機システムの構成例を示すシステム構成図である。 仮想マシンAと仮想マシンBが時分割で実行される場合の仮想マシンAの性能計測値を説明する図である。 仮想計算機システム1の構成例を示すシステム図上に、実施例における性能測定の流れを示した図である。 性能モニタリングカウンタの設定例を説明する図である。 性能情報採取制御・集計プログラムの実施例を示すフローチャートである。 性能データ採取プログラムの実施例を示すフローチャートである。 ゲストOSの割込ハンドラの実施例を示すフローチャートである。 仮想計算機システムを説明する構成図である。 従来の仮想計算機システムにおける仮想マシンの性能測定上の問題点を説明する図である。
符号の説明
1 仮想計算機システム
21,22,…、2N 仮想マシン
31 ゲストOS
31a 割込ハンドラ
31b 性能データ採取プログラム
41 制御マシン
51 性能情報採取制御・集計プログラム
111 CPU
111a 性能モニタリング機構
112 メモリ
121 ハイパーバイザ
121a 割込テーブル

Claims (5)

  1. 性能モニタリング機構に性能モニタリングカウンタを備えたCPUを有する物理マシン上で動作する仮想計算機に、
    計数すべきイベントを前記性能モニタリングカウンタに設定すると共に、割込みハンドラを前記仮想計算機に設定する手順、
    仮想計算機の切替え時に起こるイベントを前記性能モニタリング機構で検出して前記仮想計算機に割込みが発生すると、前記割込ハンドラが前記性能モニタリングカウンタの値と時刻情報とを読み出して、それぞれ所定の記憶領域内に格納する手順、
    を実行させるための性能測定プログラム。
  2. 前記物理マシンは、割込テーブルを有するハイパーバイザを更に有し、
    前記仮想計算機に、
    前記ハイパーバイザの前記割込テーブルに前記割込ハンドラへのリンクを設定する手順を、更に実行させるための請求項1記載の性能測定プログラム。
  3. 前記仮想計算機に、
    計数すべきイベントとしてTLBエントリの無効化を前記性能モニタリングカウンタに設定する手順、
    TLBエントリの無効化が1回発生する毎に前記性能モニタリングカウンタ割込がハイパーバイザに割り込むことにより、前記割込ハンドラを起動される手順を、更に実行させるための請求項1または2に記載の性能測定プログラム。
  4. 性能モニタリング機構に性能モニタリングカウンタを備えたCPUを有する物理マシン上で動作する仮想計算機の性能を測定する性能測定方法であって、
    計数すべきイベントを前記性能モニタリングカウンタに設定すると共に、割込みハンドラを前記仮想計算機に設定する過程と、
    仮想計算機の切替え時に起こるイベントを前記性能モニタリング機構で検出して前記仮想計算機に割込みが発生すると、前記割込ハンドラが前記性能モニタリングカウンタの値と時刻情報とを読み出して、それぞれ所定の記憶領域内に格納する過程と、
    を備えたことを特徴とする性能測定方法。
  5. 性能モニタリング機構に性能モニタリングカウンタを備えたCPUを有する物理マシン上で動作する仮想計算機の性能を測定する性能測定機能を備えた情報処理装置であって、
    計数すべきイベントを前記性能モニタリングカウンタに設定すると共に、割込みハンドラを前記仮想計算機に設定する手段と、
    仮想計算機の切替え時に起こるイベントを前記性能モニタリング機構で検出して前記仮想計算機に割込みが発生すると、前記割込ハンドラが前記性能モニタリングカウンタの値と時刻情報とを読み出して、それぞれ所定の記憶領域内に格納する手段と、
    を備えたことを特徴とする性能測定機能を備えた情報処理装置。
JP2008327211A 2008-12-24 2008-12-24 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。 Expired - Fee Related JP5353227B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008327211A JP5353227B2 (ja) 2008-12-24 2008-12-24 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008327211A JP5353227B2 (ja) 2008-12-24 2008-12-24 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。

Publications (2)

Publication Number Publication Date
JP2010152458A true JP2010152458A (ja) 2010-07-08
JP5353227B2 JP5353227B2 (ja) 2013-11-27

Family

ID=42571512

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008327211A Expired - Fee Related JP5353227B2 (ja) 2008-12-24 2008-12-24 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。

Country Status (1)

Country Link
JP (1) JP5353227B2 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010244552A (ja) * 2009-04-08 2010-10-28 Intel Corp コンテキストスイッチサンプリング
JP2013120511A (ja) * 2011-12-08 2013-06-17 Mitsubishi Electric Corp 仮想計算機システム
CN103955422A (zh) * 2014-04-21 2014-07-30 中国科学院计算技术研究所 一种虚拟化环境中共存应用i/o性能干扰的分析方法及其系统
WO2014118362A1 (en) * 2013-02-01 2014-08-07 Siemens Aktiengesellschaft Method and apparatus for monitoring security intrusion of a distributed computer system
JP2014170464A (ja) * 2013-03-05 2014-09-18 Mitsubishi Electric Corp 処理装置および性能監視情報取得プログラム
JP2015005015A (ja) * 2013-06-19 2015-01-08 株式会社日立製作所 仮想計算機システム及びプロセッサ性能測定方法
JP2015118534A (ja) * 2013-12-18 2015-06-25 富士通株式会社 情報処理装置、情報処理装置の性能測定方法および情報処理装置の性能測定プログラム
US9092255B2 (en) 2010-03-30 2015-07-28 Fujitsu Limited Multi-core processor system, computer product, and control method for interrupt execution
JP2015162003A (ja) * 2014-02-26 2015-09-07 三菱電機株式会社 プロセッサ管理装置
JP2015166896A (ja) * 2014-03-03 2015-09-24 富士通株式会社 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法
JP2016531363A (ja) * 2013-08-23 2016-10-06 エイアールエム リミテッド 時間のかかる命令の取り扱い
JP2017507417A (ja) * 2014-03-06 2017-03-16 インテル・コーポレーション マルチオペレーティングシステムデバイスのための動的な再割り当て

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62214449A (ja) * 1986-03-15 1987-09-21 Hitachi Ltd 仮想計算機のモニタリング方式
JP2000112782A (ja) * 1998-10-07 2000-04-21 Fujitsu Ltd 性能測定装置、性能測定プログラムを記録した記録媒体及び性能測定方法
JP2004318538A (ja) * 2003-04-17 2004-11-11 Fujitsu Ltd 性能モニタリング方式
JP2008234191A (ja) * 2007-03-19 2008-10-02 Toshiba Corp ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法
JP2008250469A (ja) * 2007-03-29 2008-10-16 Fujitsu Ltd プロファイリング支援プログラム、該プログラムを記録した記録媒体、プロファイリングプログラム、該プログラムを記録した記録媒体、プロファイリング方法、およびコンピュータ
JP2009223451A (ja) * 2008-03-14 2009-10-01 Fujitsu Ltd 性能モニタリングプログラム、性能モニタリング方法、性能モニタリング装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62214449A (ja) * 1986-03-15 1987-09-21 Hitachi Ltd 仮想計算機のモニタリング方式
JP2000112782A (ja) * 1998-10-07 2000-04-21 Fujitsu Ltd 性能測定装置、性能測定プログラムを記録した記録媒体及び性能測定方法
JP2004318538A (ja) * 2003-04-17 2004-11-11 Fujitsu Ltd 性能モニタリング方式
JP2008234191A (ja) * 2007-03-19 2008-10-02 Toshiba Corp ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法
JP2008250469A (ja) * 2007-03-29 2008-10-16 Fujitsu Ltd プロファイリング支援プログラム、該プログラムを記録した記録媒体、プロファイリングプログラム、該プログラムを記録した記録媒体、プロファイリング方法、およびコンピュータ
JP2009223451A (ja) * 2008-03-14 2009-10-01 Fujitsu Ltd 性能モニタリングプログラム、性能モニタリング方法、性能モニタリング装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8346509B2 (en) 2009-04-08 2013-01-01 Intel Corporation Context switch sampling
JP2010244552A (ja) * 2009-04-08 2010-10-28 Intel Corp コンテキストスイッチサンプリング
US9092255B2 (en) 2010-03-30 2015-07-28 Fujitsu Limited Multi-core processor system, computer product, and control method for interrupt execution
JP2013120511A (ja) * 2011-12-08 2013-06-17 Mitsubishi Electric Corp 仮想計算機システム
WO2014118362A1 (en) * 2013-02-01 2014-08-07 Siemens Aktiengesellschaft Method and apparatus for monitoring security intrusion of a distributed computer system
JP2014170464A (ja) * 2013-03-05 2014-09-18 Mitsubishi Electric Corp 処理装置および性能監視情報取得プログラム
JP2015005015A (ja) * 2013-06-19 2015-01-08 株式会社日立製作所 仮想計算機システム及びプロセッサ性能測定方法
JP2016531363A (ja) * 2013-08-23 2016-10-06 エイアールエム リミテッド 時間のかかる命令の取り扱い
US10963250B2 (en) 2013-08-23 2021-03-30 Arm Limited Selectively suppressing time intensive instructions based on a control value
JP2015118534A (ja) * 2013-12-18 2015-06-25 富士通株式会社 情報処理装置、情報処理装置の性能測定方法および情報処理装置の性能測定プログラム
JP2015162003A (ja) * 2014-02-26 2015-09-07 三菱電機株式会社 プロセッサ管理装置
JP2015166896A (ja) * 2014-03-03 2015-09-24 富士通株式会社 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法
JP2017507417A (ja) * 2014-03-06 2017-03-16 インテル・コーポレーション マルチオペレーティングシステムデバイスのための動的な再割り当て
CN103955422A (zh) * 2014-04-21 2014-07-30 中国科学院计算技术研究所 一种虚拟化环境中共存应用i/o性能干扰的分析方法及其系统

Also Published As

Publication number Publication date
JP5353227B2 (ja) 2013-11-27

Similar Documents

Publication Publication Date Title
JP5353227B2 (ja) 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。
JP6079317B2 (ja) 仮想計算機システム及びその管理方法並びに仮想計算機システムの管理プログラム
CN108475236B (zh) 测量地址转换延迟
JP6495319B2 (ja) マルチスレッディング・コンピュータシステムにおけるアイドル時間累積
JP5119994B2 (ja) 性能モニタリングプログラム、性能モニタリング方法、性能モニタリング装置
GB2540070B (en) Hardware counters to track utilization in a multithreading computer system
US10733009B2 (en) Information processing apparatus and information processing method
US7519966B2 (en) Information processing and control
US9417927B2 (en) Runtime capacity planning in a simultaneous multithreading (SMT) environment
US10613895B2 (en) Virtualization of storage buffers used by asynchronous processes
US10409636B2 (en) Apparatus and method to correct an execution time of a program executed by a virtual machine
Xie et al. Metis: a profiling toolkit based on the virtualization of hardware performance counters
JP6544054B2 (ja) 情報処理装置、実行情報記録プログラムおよび実行情報記録方法
JP6510430B2 (ja) トレースデータ編集装置及び方法
JP2009217385A (ja) プロセッサ及びマルチプロセッサ
Biancheri et al. Fine-grained multilayer virtualized systems analysis
Zhang et al. ANOLE: A profiling-driven adaptive lock waiter detection scheme for efficient MP-guest scheduling
US20230315453A1 (en) Forward conditional branch event for profile-guided-optimization (pgo)
JP2017111642A (ja) 消費電力算出方法および消費電力算出システム
JP6213309B2 (ja) 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法
JP2010204972A (ja) 計算機システム及び計算機システムにおける統計情報取得方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110907

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130716

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: 20130730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130812

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees