(57)【要約】      （修正有）【課題】サーバ装置内での処理の流れを可視化して、オーバーヘッドを監視する。【解決手段】ハイパーバイザー２１の仮想制御データ構造体３０のゲストステートエリア３１からＣＲ３レジスタ情報と、実行アドレスとを取得してトレース情報４１を作成する。さらに、ゲストＯＳで実行されるプロセス名５６とプロセスのメモリ管理情報（ページテーブルアドレス５３Ｂ）、関数名５９と、関数に割り当てられたアドレスの情報５８を取得してシンボルマップ情報５１を作成する。トレース情報４１とシンボルマップ情報５１を組み合わせることによって、トレース情報４１で取得した情報から、ゲストＯＳのプロセスの関数名５９を特定する。【選択図】図５
2014170482.tif 000002
【特許請求の範囲】
【請求項１】
ハイパーバイザー上で動作する複数の仮想マシンを有する仮想計算機システムであって、
前記ハイパーバイザーにおいて、割り込み発生時に動作していた、前記複数の仮想マシンの１つである第１の仮想マシン上のプロセスの、動作状態を含むトレース情報を、前記第１の仮想マシンに対応するコンテキスト退避領域から採取するトレース情報採取部と、
前記複数の仮想マシンそれぞれにおいて、前記複数の仮想マシンそれぞれで動作するプロセスを識別するシンボルマップ情報を前記複数の仮想マシンそれぞれが有する管理領域からそれぞれ採取し、前記ハイパーバイザーに送信する、複数のシンボルマップ情報採取部と、
前記ハイパーバイザーにおいて、前記トレース情報と前記シンボルマップ情報をプロセス毎に関連付ける解析処理部と、
を含むことを特徴とする仮想計算機システム。
【請求項２】
請求項１記載の仮想計算機システムであって、
前記トレース情報及び前記シンボルマップ情報は、プロセスが前記仮想マシン上で動作する際に設定されるアドレス領域情報をそれぞれ含み、
前記解析処理部は、それぞれの前記アドレス領域情報に基づき、前記トレース情報と前記シンボルマップ情報をプロセス単位で関連付けることを特徴とする仮想計算機システム。
【請求項３】
請求項２記載の仮想計算機システムであって、
前記トレース情報は、前記第１の仮想マシンの識別番号と、前記割込み発生時に動作していたプロセスに割り当てられていた前記アドレス領域情報及び実行アドレスと、を含み、
前記シンボルマップ情報は、前記複数の仮想マシンそれぞれで動作するプロセスの識別番号と、前記アドレス領域情報と、当該プロセスで実行される関数の関数名およびアドレスと、を含み、
前記解析処理部は、前記トレース情報及び前記シンボルマップ情報の前記アドレス領域情報を関連付けると共に、前記トレース情報の前記実行アドレスと前記シンボルマップ情報の前記関数の関数名及びアドレスを関連付けることを特徴とする仮想計算機システム。
【請求項４】
物理ＣＰＵ毎に割り込みの設定が可能なハイパーバイザー上で動作する複数の仮想マシンを有する仮想計算機システムにおいて、定期的にＣＰＵ割り込みを発生させ、
割り込みにより前記ハイパーバイザー上のコンテキスト退避領域に退避された、前記複数の仮想マシンの１つである第１の仮想マシン上のプロセスの、動作状態を含むトレース情報を採取し、
前記複数の仮想マシンそれぞれにおいて、前記複数の仮想マシンそれぞれで動作するプロセスを識別するシンボルマップ情報を前記複数の仮想マシンがそれぞれ有する管理領域から採取し、
前記トレース情報と前記シンボルマップ情報をプロセス毎に関連付ける、
処理を有することを特徴とする仮想計算機システムの管理方法。
【請求項５】
物理ＣＰＵ毎に割り込みの設定が可能なハイパーバイザー上で動作する複数の仮想マシンを有する仮想計算機システムにおいて、定期的にＣＰＵ割り込みを発生させる処理と
割り込みにより前記ハイパーバイザー上のコンテキスト退避領域に退避された、前記複数の仮想マシンの１つである第１の仮想マシン上のプロセスの、動作状態を含むトレース情報を採取する処理と、
前記複数の仮想マシンそれぞれにおいて、前記複数の仮想マシンそれぞれで動作するプロセスを識別するシンボルマップ情報を前記複数の仮想マシンがそれぞれ有する管理領域から採取する処理と、
前記トレース情報と前記シンボルマップ情報をプロセス毎に関連付ける処理と、
をコンピュータに実行させることを特徴とする仮想計算機システムの管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システム及びその管理方法並びに仮想計算機システムの管理プログラム
に関する。
【背景技術】
【０００２】
近年、サーバ装置を仮想環境化することによって複数の仮想マシン（ＶＭ：Virtual Machine）を動作させてユーザにサービスを提供するシステムが開発されている。このようなサービスでは、１つのサーバ装置で１つ以上の仮想マシンを動作させ、仮想マシン毎に独立したＯＳ（Operating System）を走らせてアプリケーション・プログラムを動作させる。
【０００３】
サーバ装置を仮想環境化する方法としては、ハイパーバイザーと呼ばれるソフトウェハを使用して複数の異なるＯＳを並列に実行させるものがある。この場合、ハイパーバイザーが、仮想マシンの制御を行うと共に、仮想マシンに割り当てたＣＰＵ（Central Processing Unit）のリソース量を管理する。
【０００４】
仮想環境下でサーバ装置を運用するときには、複数の仮想マシンからシステムの負荷を算出し、仮想化によるオーバーヘッドを監視する必要がある。オーバーヘッドは、システムやプロトコルの処理の負荷、サーバ装置やネットワーク機器などのハードウェアの処理能力や、ＯＳなどのシステムソフトウェアの性能など、個々の性能によってシステム全体にかかる負荷であり、本来の処理の他にサーバ装置に余分にかかる負荷である。オーバーヘッドが生じると、例えば処理のスループットが低下したり、ユーザの操作に対する応答速度が低下したりする。
【０００５】
そこで、仮想環境を提供するサーバ装置では、オーバーヘッドを監視する仕組みが必要になる。このとき、サーバ装置内での処理の流れを可視化できると、オーバーヘッドの監視が容易になる。
【０００６】
ここで、サーバ装置内での処理の流れを可視化するためには、ハイパーバイザーや各仮想マシンで処理中の命令を特定する必要がある。例えば、１つのＯＳ下で複数のアプリケーション・プログラムを実行するときに、どのアプリケーション・プログラムの処理が実行中なのかを特定する必要がある。この場合に用いられる従来の方法としては、各アプリケーション・プログラムで実行する命令と、命令のアドレスを時系列にまとめたトレース情報を取得するものがある。このとき、トレース情報には、命令を処理中の空間ＩＤ（Identification）を付加する。さらに、空間ＩＤ毎にプログラム名と先頭アドレスとを有するプログラムマップを作成する。そして、トレース情報とプログラムマップ情報を空間ＩＤによって対応付けて、命令を実行しているプログラム名を特定する。これによって、アプリケーション・プログラム毎の処理と実行時間とを調べることが可能になる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６３−２０１８４０
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、仮想計算機システムにおいて複数の仮想マシンの動作に関する分析や解析を行う場合には、それぞれの仮想マシンやハイパーバイザーで処理されるプロセス等の実行時間を採取し、処理時間などを評価する必要がある。しかしながら、仮想マシンにおける処理は、ハイパーバイザーや他の仮想マシンに実行制御権が移されることにより、実際には物理ＣＰＵ上で動作できない時間が存在する。この場合、仮想マシンで取得される時間が実際の時間よりも遅れ、仮想マシンで処理されるプロセス等の実行時間を正確に採取できない。仮想マシン上のプロセスの実行時間を正確に把握することは、ハイパーバイザーが仮想マシンに仮想割り込み処理を実行し、仮想マシン内のプログラムの情報を採取し、ハイパーバイザーの時間軸で一元的に各仮想マシン上のプロセスの実行時間を採取することで実現可能である。しかしながら、仮想割り込み処理という余計な処理が発生することになるので、実行処理が煩雑になると共に、処理コストが高くなる。
【０００９】
また、ハイパーバイザーは、サーバ装置に提供される環境下で処理を実行するので、ハイパーバイザー内の処理や、仮想マシンに出力した命令を特定することは容易である。ところが、各仮想マシン上で動くアプリケーション・プログラムはユーザ毎に異なる。そして、セキュリティ上の問題から仮想マシンにおける処理の詳細をハイパーバイザー側から特定できない場合がある。このために、従来の仮想計算機システムでは、システム管理者が仮想マシンにおける処理の内容や、処理の流れを把握することは容易ではなかった。
この発明は、このような事情に鑑みてなされたものであり、サーバ装置内での処理の流れを可視化してオーバーヘッドの監視を容易にすることを目的とする。
【課題を解決するための手段】
【００１０】
実施形態の一観点によれば、ハイパーバイザー上で動作する複数の仮想マシンを有する仮想計算機システムであって、前記ハイパーバイザーにおいて、割り込み発生時に動作していた、前記複数の仮想マシンの１つである第１の仮想マシン上のプロセスの、動作状態を含むトレース情報を、前記第１の仮想マシンに対応するコンテキスト退避領域から採取するトレース情報採取部と、前記複数の仮想マシンそれぞれにおいて、前記複数の仮想マシンそれぞれで動作するプロセスを識別するシンボルマップ情報を前記複数の仮想マシンそれぞれが有する管理領域からそれぞれ採取し、前記ハイパーバイザーに送信する、複数のシンボルマップ情報採取部と、前記ハイパーバイザーにおいて、前記トレース情報と前記シンボルマップ情報をプロセスごとに関連付ける解析処理部と、を含むことを特徴とする仮想計算機システムが提供される。
【００１１】
また、実施形態の別の観点によれば、物理ＣＰＵ毎に割り込みの設定が可能なハイパーバイザー上で動作する複数の仮想マシンを有する仮想計算機システムにおいて、定期的にＣＰＵ割り込みを発生させ、割り込みにより前記ハイパーバイザー上のコンテキスト退避領域に退避された、前記複数の仮想マシンの１つである第１の仮想マシン上のプロセスの、動作状態を含むトレース情報を採取し、前記複数の仮想マシンそれぞれにおいて、前記複数の仮想マシンそれぞれで動作するプロセスを識別するシンボルマップ情報を前記複数の仮想マシンがそれぞれ有する管理領域から採取し、前記トレース情報と前記シンボルマップ情報をプロセスごとに関連付ける、処理を有することを特徴とする仮想計算機システムの管理方法が提供される。
【００１２】
さらに、実施形態の別の観点によれば、物理ＣＰＵ毎に割り込みの設定が可能なハイパーバイザー上で動作する複数の仮想マシンを有する仮想計算機システムにおいて、定期的にＣＰＵ割り込みを発生させる処理と割り込みにより前記ハイパーバイザー上のコンテキスト退避領域に退避された、前記複数の仮想マシンの１つである第１の仮想マシン上のプロセスの、動作状態を含むトレース情報を採取する処理と、前記複数の仮想マシンそれぞれにおいて、前記複数の仮想マシンそれぞれで動作するプロセスを識別するシンボルマップ情報を前記複数の仮想マシンがそれぞれ有する管理領域から採取する処理と、前記トレース情報と前記シンボルマップ情報をプロセスごとに関連付ける処理と、をコンピュータに実行させることを特徴とする仮想計算機システムの管理プログラム
が提供される。
【発明の効果】
【００１３】
ハイパーバイザーで取得した情報に基づいて仮想マシン上の処理を関数レベルで解析することが可能になるので、処理の流れを容易に把握できるようになり、メンテナンス性の向上や性能最適化が可能となる。またそれによりさらなるリソース使用の効率化も期待される。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態に係る仮想計算機システムのハードウェア構成の一例を示すブロック図である。
【図２Ａ】図２Ａは、本発明の実施の形態に係る仮想計算機システムのソフトウェア構成の一例を示すブロック図である。
【図２Ｂ】図２Ｂは、本発明の実施の形態に係る仮想計算機システムの機能ブロック図である。
【図３】図３は、本発明の実施の形態に係る仮想計算機システムの仮想制御データ構造体の一例を示す図である。
【図４Ａ】図４Ａは、本発明の実施の形態に係る仮想計算機システムにおけるトレース情報の一例を模式的に示す図である。
【図４Ｂ】図４Ｂは、本発明の実施の形態に係る仮想計算機システムにおけるトレース情報の具体例を示す図である。
【図５】図４Ｂは、本発明の実施の形態に係る仮想計算機システムにおける処理の一例を模式的に示す図である。
【図６Ａ】図６Ａは、本発明の実施の形態に係る仮想計算機システムにおけるシンボルマップ情報の一例を模式的に示す図である。
【図６Ｂ】図６Ｂは、本発明の実施の形態に係る仮想計算機システムにおけるシンボルマップ情報の具体例を示す図である。
【図７Ａ】図７Ａは、本発明の実施の形態に係る仮想計算機システムにおける解析データの一例を模式的に示す図である。
【図７Ｂ】図７Ｂは、本発明の実施の形態に係る仮想計算機システムにおける解析データの作成手順を模式的に示す図である。
【図８Ａ】図８Ａは、本発明の実施の形態に係る仮想計算機システムの処理の一例を示すフローチャートである（その１）。
【図８Ｂ】図８Ｂは、本発明の実施の形態に係る仮想計算機システムの処理の一例を示すフローチャートである（その２）。
【図８Ｃ】図８Ｃは、本発明の実施の形態に係る仮想計算機システムの処理の一例を示すフローチャートである（その３）。
【図９】図９は、本発明の第２の実施の形態に係る仮想計算機システムの機能ブロック図である。
【発明を実施するための形態】
【００１５】
発明の目的及び利点は、請求の範囲に具体的に記載された構成要素及び組み合わせによって実現され達成される。
前述の一般的な説明及び以下の詳細な説明は、典型例及び説明のためのものであって、本発明を限定するためのものではない。
【００１６】
（第１の実施の形態）
第１の実施の形態について図面を参照して詳細に説明する。
図１に実施形態の仮想計算機システムとして機能するサーバ装置の概略構成を示す。
サーバ装置１は、複数のＣＰＵ２と、メモリ３と、記録装置４と、入力装置５と、出力装置６と、外部記録装置７と、通信制御装置８がバス接続されることでハードウェアが構築されている。そして、ハードウェアに含まれるＣＰＵ２が、メモリ３上に展開された所定のプログラムを実行することにより、仮想環境を提供するハイパーバイザー（仮想化レイヤ）が実行される。ここで、ハイパーバイザーは、ＯＳ上でアプリケーションソフトとして動作し、ゲストＯＳが動作できるようにする仮想化ソフトウェアであり、仮想化モニタ、又は仮想化ＯＳと呼ばれることもある。
【００１７】
ＣＰＵ２には、メモリ３に記録装置４からプログラムやデータを読み出して実行することによって、各種の機能を実現する。この実施の形態において、ＣＰＵ２は３つ搭載されているが、１つ又は２つでも良いし、４つ以上でも良い。例えば、図１に示す３つのＣＰＵ２は、それぞれにＣＰＵ番号が付与されており、いずれのＣＰＵ２の処理であるのかを特定できるようになっている。
【００１８】
また、ＣＰＵ２には、ハードウェア関連のイベントのカウントを格納する性能カウンタが実装されている。性能カウンタは、一般的なシステム状況のチェック、及びパフォーマンス基準との比較判断に用いられるもので、１秒当たりのカウント数を取得できる。このために、性能カウンタの機能を用いることによって、サーバ装置１における処理を１ｍ秒〜１μ秒の間隔で測定することが可能になる。この実施の形態では、ＣＰＵ２の性能カウンタによるサンプリングプロファイラ方式で時間計測をすることによって、ソフトウェア的なオーバーヘッドを発生させず、かつソフトウェアの負荷に依存しない正確なデータの所得が可能になっている。
【００１９】
メモリ３は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などを有し、データやアプリケーション・プログラムが一時的に格納される。記録装置４は、サーバ装置１のオペレーティング・システム（ＯＳ）や各種のアプリケーション・プログラムが保存される。入力装置５は、キーボードやマウスなど、システム管理者がデータを入力するために使用する機器である。入力装置５は、タッチパネル式のディスプレイでも良い。出力装置６は、ディスプレイやプリンタなどがある。外部記録装置７は、不図示の外部記録媒体にデータを読み書きするための装置である。外部記録媒体に記憶させているアプリケーションやデータを外部記録装置７で読み出すことによって、記録装置４にインストールしたり、ＣＰＵ２に展開させて実行させたりすることが可能になる。
【００２０】
通信制御装置８は、ネットワークを介して他の端末装置との間の通信を制御する。また、ネットワークを介してアプリケーション・プログラムをダウンロードして記録装置４にインストールすることも可能である。ネットワークは、専用回線を用いて構築しても良いし、公衆の回線を利用しても良い。
【００２１】
ここで、通信制御装置８や外部記録装置７は、サーバ装置１にデータを入力するための入力装置としても機能する。また、入力装置５、出力装置６、外部記録装置７は、実施形態に必須の構成要素ではない。また、サーバ装置１は、図１に示す構成要素以外の装置を含んでも良い。
【００２２】
続いて、図２Ａを参照して、このサーバ装置１において仮想環境を構築するために用いられるハイパーバイザーについて説明する。図２Ａには、一例として、アプリケーションタイプの仮想環境のソフトウェア構成を模式的に示している。
ハイパーバイザー２１は、サーバ装置１のハードウェア２０によって実現される仮想計算機システムの全体を制御するもので、システム管理者によって提供されるアプリケーション・プログラムである。例えば、ハイパーバイザー２１は、第１の仮想マシン（ＶＭ；Virtual Machine）２２と、第２の仮想マシン２３とを提供する。仮想マシンの数は、１つでも良いし、３つ以上でも良い。ここで、仮想マシン２２，２３は、ゲストと呼ばれることもある。
【００２３】
ハイパーバイザー２１上で稼動する複数の仮想マシン２２，２３は、それぞれのＯＳ（ゲストＯＳ）２５，２７によって動作する。例えば、第１の仮想マシン２２は、第１のゲストＯＳ２５上で１つ以上のアプリケーション・プログラム２６Ａ，２６Ｂ，２６Ｃの処理を実現する。同様に、第２の仮想マシン２３は、第２のゲストＯＳ２７上で１つ以上のアプリケーション・プログラム２８Ａ，２８Ｂ，２８Ｃの処理を実現する。ここで、アプリケーション・プログラム２６Ａ〜２６Ｃ，２８Ａ〜２８Ｃは、仮想マシン２２，２３を使用するユーザが容易するもので、例えばデータベースソフトや、仮想マシンで実行されるプロセスを監視する監視プログラムなどがある。
【００２４】
ハイパーバイザー２１は、各ゲストＯＳ２５，２７のディスパッチ処理、各ゲストＯＳ２５，２７が実行する特権命令のエミュレート、ハードウェア２０の制御などを行う。ハイパーバイザー型の仮想化アプリケーションでは、ハイパーバイザー２１が直接にハードウェア２０の制御を実行するために、処理の応答性に優れる。
【００２５】
また、図２Ｂを参照して仮想計算機システムの機能について説明する。仮想計算機システムを実現するサーバ装置１は、トレース情報採取部１１と、採取開始指示部１２と、シンボルマップ情報採取部１３と、データ送信部１４と、データ受信部１５と、解析処理部１６と、プロファイル処理部１７とに機能分割できる。
トレース情報採取部１１は、トレース情報を採取する。トレース情報は、サンプリング割り込み処理発生時に動作していた仮想マシン２２，２３上の処理を特定する仮想マシン番号と、その仮想マシン２２，２３の実行アドレス値及びページテーブルアドレス値と、プロセスの実行時間とを含む。実行アドレス値及びページテーブルアドレス値は、コンテキスト退避領域から採取される。
【００２６】
シンボルマップ情報採取部１３は、シンボルマップ情報を採取する。シンボルマップ情報は、各仮想マシン２２，２３上の各プロセスを特定する情報と、プロセスで実行される関数を特定する情報が含まれる。
データ送信部１４は、シンボルマップ情報をデータ受信部１５に送信する。
データ受信部１５は、シンボルマップ情報を受け取り、対応する仮想マシン２２，２３の識別情報を付与して保存する。
【００２７】
解析処理部１６は、トレース情報とシンボルマップ情報を対応付け、トレース情報のページテーブルアドレス値をプロセスの識別情報に変換し、解析データを作成する。解析データには、仮想マシン２２，２３を識別する情報と、仮想マシン２２，２３のプロセスを識別する情報と、関数を特定する情報と、プロセスの実行時間の情報とが含まれる。
プロファイル処理部１７は、第３のプロセス情報を使用して既存のプロファイル処理を実行する。既存のプロファイル処理としては、プロセス毎や、関数毎に処理の実行に要する時間を把握するためのデータ処理が含まれる。
【００２８】
ここで、この実施の形態のサーバ装置１は、例えば、ＣＰＵ２にインテル社製のプロセッサを用いており、ＣＰＵ２にＶＭＭ（Virtual Machine Monitor）と呼ばれるプログラムを走らせ、その上で仮想マシン２２，２３を動作させる。このような仮想計算機システムにおいては、例えば、各仮想マシン２２，２３の実行スケジューリングや、仮想マシン２２，２３又はハイパーバイザー２１における処理の過程で、複数の仮想マシン２２，２３やハイパーバイザー２１が同じ物理リソースにアクセスすることがある。この場合には、その物理リソースに割り当てられた内容をコンテキスト退避領域に退避させたり、復元させたりすることによって各仮想マシン２２，２３における処理の連続性を担保している。
【００２９】
このために、ＣＰＵ２は、コンテキスト退避領域と、これを制御するためのコントロールレジスタとを有する。例えば、インテル社製のプロセッサにおいてはＣＲ０からＣＲ４までのコントロールレジストを有する。そのうちのＣＲ３レジスタは、ページ・ディレクトリの物理アドレスを指し、ページテーブルアドレスと呼ばれるアドレス領域情報である。実行するユーザープロセスを切り替える毎に、ＣＲ３レジスタが書き換えられることによって、そのプロセス用の拡張ページテーブルが指定される。そして、割り込み処理発生時には、動作中の仮想マシン２２，２３のＣＲ３レジスタ値をコンテキスト退避領域に退避させる。そして、割り込み処理が終了して、元の仮想マシン２２，２３の処理を再開するときには、コンテキスト退避領域のＣＲ３レジスタ値を再度読み込んで、プロセスを再開する。従って、ＣＲ３レジスタを参照することによって、プロセスを区別することができる。
【００３０】
さらに、ＣＰＵ２のレジスタには、命令ポインタであるプログラムカウンタ（ＥＩＰ）を有する。プログラムカウンタは、次に実行すべき命令を記憶したメモリ３上のアドレスを一時的に格納する。メモリ３から命令が読み出されると、その分だけプログラムカウンタの値を増やし、次に実行すべき命令が保存されている番地を指し示すようになっている。このために、プログラムカウンタを参照することによって、命令のアドレスを取得することができる。
【００３１】
また、ＣＰＵ２には、拡張ページテーブル（ＥＰＴ）と呼ぶＶＭＭの制御によるページテーブル構造が実装されている。拡張ページテーブルは、仮想マシン２２，２３中の物理アドレスから、ＶＭＭの物理アドレス空間（最終的な物理アドレス）への変換をサポートすることで、ＶＭＭのページテーブル管理のオーバーヘッドを低減するために設けられている。
【００３２】
この実施の形態におけるＣＰＵ２は、ルートモード（カーネルモード）でハイパーバイザー２１による処理を実行し、ノンルートモード（ユーザモード）に遷移すると仮想マシン２２，２３の処理を実行する。例えば、ルートモードからノンルートモードへの遷移は「ＶＭ−ｅｎｔｒｙ」と言われ、その逆を「ＶＭ―ｅｘｉｔ」と呼ばれる。この場合、ハイパーバイザー２１は、「ＶＭ―ｅｘｉｔ命令」によって仮想マシン２２，２３に制御を渡す。
【００３３】
例えば、ＶＭＭが仮想マシン２２，２３を起動すると、ＣＰＵ２の動作モードはルートモードからノンルートモードに遷移し、仮想マシン２２，２３が終了するとノンルートモードからルートモードに遷移する。仮想マシン２２，２３内で所定の命令を実行した場合も、ノンルートモードからルートモードに遷移する。
【００３４】
そして、このように、ルートモードと、ノンルートモードとを行き来しながら各種の処理を実現するために、サーバ装置１には、ＣＰＵ２の状態の保存や、モード状態の遷移を制御する仮想制御データ構造体（VMCS; Virtual Machine Control Structure）が作成される。
【００３５】
図４に一例を示すように、仮想制御データ構造体３０は、６つの区画で定義されている。６つの区画は、ゲストステートエリア３１と、ホストステートエリア３２と、ＶＭ−ｅｘｅｃｕｔｉｏｎ制御フィールド３３と、ＶＭ−ｅｘｉｔ制御フィールド３４と、ＶＭ−ｅｎｔｒｙ制御フィールド３５と、ＶＭ−ｅｘｉｔ情報フィールド３６である。これら６つの区画のデータをメモリ３に退避させたり、復元させたりすることによって動作モードの切換が可能になる。
【００３６】
ここで、ゲストステートエリア３１は、仮想マシン２２，２３の処理を行うＣＰＵ２のコントロールレジスタであるＣＲ３レジスタや、その他のレジスタの一部を保持する。ゲストステートエリア３１のデータを取得することによって、ＣＰＵ２の各種のレジスタの値を取得することが可能になる。
ホストステートエリア３２は、仮想マシン２２，２３用のＣＰＵ２のレジスタ値を保存する。
ＶＭ−ｅｘｅｃｕｔｉｏｎ制御フィールド３３は、ノンルートモードでのＣＰＵ２の挙動を制御する。
ＶＭ−ｅｘｉｔ制御フィールド３４は、ルートモードでのＣＰＵ２の挙動を制御する。
ＶＭ−ｅｘｉｔ情報フィールド３５は、最後に発生したＶＭ−ｅｘｉｔの情報を保持する。
【００３７】
ここで、ＣＰＵ２は、インテル社製に限定されず、例えばＡＭＤ社などその他のメーカーの製品でも良い。この場合には、ＣＰＵ２の種類に応じて仮想制御データ構造体の構造も変化する。例えば、ＡＭＤ社のＣＰＵ２の場合の仮想制御データ構造体は、ＶＭＣＢ（Virtual Machine Control Block）データ構造体と呼ばれる。
【００３８】
次に、図４ＡにプログラムカウンタとＣＲ３レジスタから得られるトレース情報４１（第２の情報）の一例を示す。トレース情報４１は、メモリ３から仮想制御データ構造体３０のデータ、特にゲストステートエリア３１を取得することによって形成される。ここで、トレース情報４１は、ＣＰＵ２の性能カウンタを使用して１ｍ秒から１μ秒間隔のサンプリング割り込み処理を実行することによってリアルタイムで取得される。トレース情報４１をリアルタイムで採取するのは、サーバ装置１内で命令アドレスで特定されるプロセスが実行された時間を正確に把握する必要があるためである。
【００３９】
図４Ａに示すように、トレース情報４１は、データが時系列に配列されたリストからなり、リストの各行にはＣＰＵ番号４２と、プロセスＩＤ４３と、スレッドＩＤ４４，命令アドレス（ＩＰ）４５と、命令アドレスで特定されるプロセスが実行された時間データ４６と、仮想マシン２２，２３の実行時の追加情報４７とが配列され、仮想マシン番号４８（仮想マシン２２，２３の識別番号）と関連付けて作成される。ＣＰＵ番号４２は、複数のＣＰＵ２のいずれかを特定する情報である。プロセスＩＤ４３は、拡張ページテーブルのアドレスを特定する情報であり、仮想制御データ構造体３０から取得できる。スレッドＩＤ４４は、スレッド毎に付与される情報である。命令アドレス４５は、実行される命令のアドレスを特定する情報であり、仮想制御データ構造体３０から取得できる。時間データ４６は、性能カウンタを用いてデータを取得したタイミングを示す。
【００４０】
追加情報４７は、ルートモード状態では使用されず、ノンルートモード状態でのみ付加される。追加情報４７としては、例えば、仮想ＣＰＵ番号４７Ａと、ＣＲ３レジスタ情報４７Ｂ（ページテーブルアドレス値）と、実行アドレス４７Ｃ（命令のアドレス）があり、これらのデータが順番に配列される。仮想ＣＰＵ番号４７Ａ、ＣＲ３レジスタ情報４７Ｂ、及び実行アドレス４７Ｃは、トレース情報採取部１１によってサンプリング割り込み処理の割り込み元のコンテキスト退避領域から採取されるもので、例えば、図３の仮想制御データ構造体３０のゲストステートエリア３１のＣＲ３レジスタや、プログラムカウンタの値を参照することで得られる。
【００４１】
続いて、図４Ｂにトレース情報４１の具体例を示す。
トレース情報４１の一行目は、ＣＰＵ番号４２が「０」になっている。これには物理的なＣＰＵ２に付与されている番号に相当する。プロセスＩＤ４３は、「３５９６５  ＴＧＩＤ」である。スレッドＩＤ４４は、「３５９６５  ＡＤＤＲ」であり、命令アドレス４５は、「００００００３４ｆｄｃ８２ｂ４０」になっている。さらに、このデータを取得した時間データ４６として、「ＩＴＣ  ００００３３６２ｆ１６ｆ４ｄｃ」が登録されている。このプロセスは、ハイパーバイザー２１で実行される処理なので、追加情報４７は付加されていない。
【００４２】
これに対して、リストの９行目及び１０行目のデータは、仮想マシン２２，２３で実行される処理なので、追加情報４７が付加されている。リストの１０行目のデータは、ＣＰＵ番号４２は「１」になっている、スレッドＩＤ４４には、ゲストＯＳ２５，２７であることを示す情報「［ｇｕｅｓｔＯＳ］：：ＲＨＥＬ６．２―ｇｕｅｓｔ９９９」が付与されている。この情報は、この実施の形態に必須の要素ではないが、ゲストＯＳ２５，２７であることを示す情報を付与することは、サーバ装置１における処理の可視化に貢献する。
【００４３】
さらに、リストの１０行目の付加情報４７である仮想ＣＰＵ番号４７Ａは、「ＶＰＩＤ  １」になっており、これはハイパーバイザー２１によってユーザに提供される仮想ＣＰＵの番号が「１」であることを示している。さらに、ＣＲ３情報４７Ｂは、「ｇｃｒ３  ０００００００４１０６ｂｃ０００」であり、実行アドレス４７Ｃは「ｇＲｉＰ  ００００００３３ｂｂｃ０９ａｆ２」になっている。
【００４４】
ここで、トレース情報４１だけでは、具体的な処理の内容を特定することができない。そこで、この実施の形態では、トレース情報４１のプロセスＩＤ４３をプロセス名に、命令アドレス４５をプロセスの関数名にそれぞれ変換する。
【００４５】
具体的には、図５に模式的に示すように、サーバ装置１のシンボルマップ情報採取部１３は、各仮想マシン２２，２３において実行されるプロセス名やプロセスＩＤに関する情報と、プロセスで用いられている関数の情報である関数名５９と、関数アドレス５８を含むシンボルマップ情報５１を作成する。そして、シンボルマップ情報５１と、ハイパーバイザー２１上で作成されるトレース情報４１とをプロセス毎に対応付けることによって、サーバ装置１における処理の流れを可視化する解析データ７１を作成する。
【００４６】
図５に示す例で、シンボルマップ情報５１は、例えば、第１の仮想マシン２２で実行されるアプリケーション２６Ａで生成されるプロセスについて作成される。即ち、アプリケーション２６Ａに関するシンボルマップ情報５１Ａには、アプリケーション２６Ａから生成されたプロセスのプロセス名５６や、関数の実行アドレスである関数アドレス５８、当該プロセスで実行される関数名５９の情報が含まれる。複数のプロセスが平行して処理されている場合には、それら全てのプロセスについての情報が採取される。例えば、アプリケーション２６Ｂに関するシンボルマップ情報５１Ｂなどが作成される。
【００４７】
また、第２の仮想マシン２３で実行されるプロセスについてもシンボルマップ情報５１Ｃが作成される。シンボルマップ情報５１に含まれる、プロセス名や関数名の情報は、プロセスの実行時に動的に変更される情報ではないため、リアルタイムで採取する必要はなく、プロセスが存在する間に取得されればよい。従って、シンボルマップ情報５１は、例えば、ディレイドタイム処理によって採取される。
【００４８】
図６Ａに模式的に示すようにシンボルマップ情報５１はプロセス毎に作成され、ＣＰＵ番号５２と、プロセスＩＤ５３Ａと、ページテーブルアドレス５３Ｂ（アドレス領域情報）と、スレッドＩＤ５４と、時間５５と、プロセス名５６と、関数アドレス５８と、関数名５９とを有する。プロセスＩＤ５３Ａ、ページテーブルアドレス５３Ｂ、スレッドＩＤ５４、プロセス名５６は、仮想マシン内でプロセス毎に作成される管理領域５３（タスク構造体）から取得される。また、関数アドレス５８と、関数名５９は、アプリケーション２６Ａに対応するオブジェクトファイル５７から取得される。
【００４９】
さらに、図６Ｂにシンボルマップ情報５１の具体例を示す。この具体例では、ＣＰＵ番号５２、この場合は仮想ＣＰＵが「０」であり、プロセス名５６が「ｅｘｅ（ｓｄａ＿ｃｍｄ）」というモジュールであることがわかる。ここで、１つの関数アドレス５８から次の関数アドレス５８までの間のアドレスが一つの関数に使用される。例えば、関数アドレス５８が「４０００００００００００４２６０」から「４００００００００００１ｃ６ｅ０」の１つ前のアドレスまでが「ｍａｉｎ」関数に使用されている。
【００５０】
次に、図７Ａを参照して、トレース情報４１とシンボルマップ情報５１と対応付けることによって作成される解析データ７１について説明する。トレース情報４１と、シンボルマップ情報５１は、同じ仮想マシン番号４８を有する情報が組み合われるようにして回世紀される。シンボルマップ情報５１における仮想マシン番号４８は、情報採取後に付与される。
【００５１】
解析データ７１は、ルートモード状態では、ＣＰＵ番号４２と、プロセス名５６と、関数名５９と、時間データ４６と、仮想マシン２２，２３の実行時の追加情報４７とが配列される。追加情報４７には、仮想ＣＰＵ番号４７Ａと、ＣＲ３レジスタ情報４７Ｂと、実行アドレス４７Ｃが含まれる。即ち、この実施の形態において、解析データ７１は、図４ＡにおけるプロセスＩＤ４３及び命令アドレス４５が、図６Ａにおけるプロセス名５６及び関数名５９に変換されることによって形成される。なお、解析データ７１は、追加情報４７を有しなくても良い。
【００５２】
ここで、図７Ｂに示すように、解析データ７１のプロセス名５６は、トレース情報４７のアドレス領域情報と、シンボルマップ情報５１のアドレス領域情報とをプロセス単位で関連付けることによって作成される。具体的には、トレース情報４７の追加情報４７のＣＲ３レジスタ情報４７Ｂで、シンボルマップ情報５１のページテーブルアドレス５３Ｂを検索してプロセスＩＤ５３を特定し、そのプロセスＩＤ５３に割り当てられているプロセス名５６を取得する。これによって、
【００５３】
また、解析データ７１の関数名５９は、トレース情報４７のアドレス領域情報と、シンボルマップ情報５１のアドレス領域情報とをプロセス単位で関連付けることによって作成される。即ち、解析処理部１６は、トレース情報４１及びシンボルマップ情報５１のアドレス領域情報を関連付けると共に、トレース情報４１の実行アドレス４７Ｃとシンボルマップ情報５１の関数アドレス５８及び関数名５９を関連付ける。
具体的には、トレース情報４１の追加情報４７に含まれる実行アドレス４７Ｃで、シンボルマップ情報５１のページテーブルアドレス５３Ｂを検索して関数アドレス５８を特定し、実行アドレス４７Ｃが含まれる関数アドレス５８の領域に割り当てられた関数名５９を取得する。
【００５４】
さらに、解析データ７１には、トレース情報４７に含まれる時間データ４６が添付される。これによって、ＣＰＵ２を用いて取得した時間情報と、プロセス名５６、関数名５９が関連付けられる。また、ハイパーバイザー２１内の処理に関しては、命令アドレス４５でシンボルマップ情報５１Ａを検索して関数名５９を特定する。
【００５５】
このような解析データ７１は、プロセス名５６、関数名５９と、時間データ４６の情報が関連付けられた構成を有するので、システム管理者がサーバ装置１における処理の流れを把握し易い。例えば、プロセス名５６と関数名５９から通常の処理に必要な時間がわかるので、解析データ７１上で同じプロセス名５６及び関数名５９の処理時間が異常に多くなっている場合には、そのプロセス及び関数がオーバーヘッドの原因になっていると判定できるようになる。
【００５６】
次に、図８Ａのフローチャートを参照してトレース情報４１、シンボルマップ情報５１の採取処理、及び解析データ７１の作成処理について説明する。
ステップＳ１０１でハイパーバイザー２１が情報採取を開始する。このとき、初期情報として、例えばサンプリング間隔や、情報採取の実行回数、情報採取対象に含まれる仮想マシン２２，２３の情報を取得する。
続くステップＳ１０２では、情報採取プロセスを起動させ、ステップＳ１０３で対象として抽出された仮想マシン２２，２３に情報採取開始の合図を送る。
【００５７】
さらに、ステップＳ１０４において、指定時間が経過するまで待機する。指定時間は、ステップＳ１０１で取得したサンプリング間隔に相当する。サンプリング間隔は、サーバ装置１において予め設定されている値が用いられる。指定時間の経過は、ＣＰＵ２の性能カウンタのカウント値によって判断される。そして、指定時間が経過したら（ステップＳ１０４でＹｅｓ）、ステップＳ１０５に進んでトレース情報採取部１１がトレース情報４１を採取する。
【００５８】
さらに、端子Ｂから進む図８ＢのステップＳ１０６で、シンボルマップ情報採取部１３がハイパーバイザー２１内のプロセスのＥｘｉｔイベントの有無を確認する。Ｅｘｉｔイベントとは、例えば、プロセスの終了処理である。Ｅｘｉｔイベントが発生すると、そのプロセスが終了してしまい、その後は当該プロセスについてのシンボルマップ情報５１Ａを取得できなくなる。そこで、Ｅｘｉｔイベントが発生したら（ステップＳ１０６でＹｅｓ）、ステップＳ１０７で、シンボルマップ情報採取部１３の処理によってＥｘｉｔイベントの対象となるプログラムを処理していたハイパーバイザー２１のシンボルマップ情報５１を採取する。これに対して、Ｅｘｉｔイベントが発生していないときは（ステップＳ１０６でＮｏ）、現段階ではシンボルマップ情報５１Ａを取得せずに、ステップＳ１０８に進む。
【００５９】
ステップＳ１０８では、シンボルマップ情報採取部１３が情報採取の終了を判定する。情報採取を行った実行回数がステップＳ１０１で取得した情報採取の実行回数を経過したら（ステップＳ１０８でＹｅｓ）、ステップＳ１０９で情報収集を終了する。一方、情報採取の実行回数に到達していなければ、実行回数を１つインクリメントした後、端子ＡからステップＳ１０４に戻り、前記の処理を繰り返す。
【００６０】
そして、ステップＳ１０９でシンボルマップ情報収集を終了したら、ステップＳ１１０でシンボルマップ情報採取部１３が再びシンボルマップ情報５１Ａを採取する。ここでは、Ｅｘｉｔイベントの有無とは関係なく、ハイパーバイザー２１で現在実行中の全てのプロセスに関する情報を採取してシンボルマップ情報５１Ａを作成する。さらに、シンボルマップ情報採取部１３は、ステップＳ１０８で採取したシンボルマップ情報５１Ａも付加する。これによって、情報採取プロセスの実行中にハイパーバイザー２１で処理された全てのプロセスについてのシンボルマップ情報５１Ａが得られる。
【００６１】
一方、図８Ａに示すように、第１の仮想マシン２２は、ステップＳ１０３でハイパーバイザー２１から出力された開始合図を受け取ったら、ステップＳ１１１でシンボルマップ情報５１の採取プロセスを起動する。そして、ステップＳ１１２でＥｘｉｔイベントの有無を確認する。Ｅｘｉｔイベントが発生したら（ステップＳ１１２でＹｅｓ）、ステップＳ１１３でシンボルマップ情報採取部１３がＥｘｉｔイベントの対象となったプログラムについてのシンボルマップ情報５１を採取する。Ｅｘｉｔイベントが発生していないときは（ステップＳ１１２でＮｏ）、現段階ではシンボルマップ情報５１を取得せずに待機する。
【００６２】
同様に、第２の仮想マシン２３は、ハイパーバイザー２１から出力された開始合図を受け取ったら、ステップＳ１１５でシンボルマップ情報採取部１３がシンボルマップ情報５１の採取プロセスを起動する。この際、ステップＳ１１６でＥｘｉｔイベントの有無を確認し、Ｅｘｉｔイベントが発生したら（ステップＳ１１６でＹｅｓ）、ステップＳ１１７でシンボルマップ情報採取部１３がＥｘｉｔイベントの対象となったプログラムについてのシンボルマップ情報５１を採取する。Ｅｘｉｔイベントが発生していないときは（ステップＳ１１６でＮｏ）、現段階ではシンボルマップ情報５１を取得せずに待機する。
【００６３】
この後、図８ＢのステップＳ１２０で、シンボルマップ情報採取部１３の処理によって、ハイパーバイザー２１が仮想マシン２２，２３に終了合図を出力する。この後、図８Ｃにおいて、ステップＳ１２１として、トレース情報採取部１１の処理によって、ハイパーバイザー２１がトレース情報４１をファイル出力する。続いて、ステップＳ１２２で、シンボルマップ情報採取部１３の処理によって、ハイパーバイザー２１がシンボルマップ情報５１Ａをファイル出力する。
【００６４】
一方、第１の仮想マシン２２は、ハイパーバイザー２１から終了合図を受け取ったら、ステップＳ１２３でシンボルマップ情報採取部１３がシンボルマップ情報５１Ｂを採取する。ここでは、Ｅｘｉｔイベントの有無とは関係なく、第１の仮想マシン２２で現在実行中の全てのプロセスに関する情報を採取してシンボルマップ情報５１Ｂを作成する。さらに、ステップＳ１１３でシンボルマップ情報採取部１３が採取したシンボルマップ情報５１Ｂも付加する。これによって、情報採取プロセスの実行中に第１の仮想マシン２２で処理された全てのプロセスについてのシンボルマップ情報５１Ｂが得られる。そして、ステップＳ１２４で、シンボルマップ情報採取部１３の処理により、第１の仮想マシン２２でシンボルマップ情報５１Ｂがファイル出力される。
【００６５】
同様に、第２の仮想マシン２３は、ハイパーバイザー２１から終了合図を受け取ったら、ステップＳ１２５でシンボルマップ情報採取部１３がシンボルマップ情報５１Ｃを採取する。Ｅｘｉｔイベントの有無とは関係なく、第２の仮想マシン２３で現在実行中の全てのプロセスに関する情報を採取し、ステップＳ１１７で採取したシンボルマップ情報５１Ｃも付加する。これによって、情報採取プロセスの実行中に第２の仮想マシン２３で処理された全てのプロセスについてのシンボルマップ情報５１Ｃが得られる。そして、ステップＳ１２６で、シンボルマップ情報採取部１３の処理により、第２の仮想マシン２３でシンボルマップ情報５１Ｃがファイル出力される。
【００６６】
次に、ステップＳ１３１で、解析処理部１６の処理として、ハイパーバイザー２１がデータ収集処理を開始する。これを受けて、ステップＳ１３２でデータ送信部１４が第１の仮想マシン２２のシンボルマップ情報５１のファイルをハイパーバイザー２１にデータ転送する。同様に、ステップＳ１３３でデータ送信部１４が第２の仮想マシン２３のシンボルマップ情報５１のファイルをハイパーバイザー２１にデータ転送する。データ転送は、例えば、ｓｃｐ（Secure Copy）や、ｓｓｈｆｓ（SSH File System）を用いたセキュリティの高いファイル転送システムを用いて受け渡される。これによって、仮想マシン２２，２３の情報漏洩を防止できる。
【００６７】
ハイパーバイザー２１は、データ受信部１５で仮想マシン２２，２３のシンボルマップ情報５１のファイルを受け取ったら、各シンボルマップ情報５１に対応する仮想マシン番号４８を付与する。さらに、ステップＳ１３４でデータの受け取り通知を仮想マシン２２，２３に出力する。その結果、ステップＳ１３５で第１の仮想マシン２２がシンボル採取プロセスを終了する。同様に、ステップＳ１３６で第２の仮想マシン２３がシンボル採取プロセスを終了する。さらに、ステップＳ１４１で解析処理部１６がハイパーバイザー２１上で各データファイルを結合させ、ステップＳ１４２でデータ分析を行い、ステップＳ１４３で解析データ７１を作成する。この後、ここでの処理を終了する。
【００６８】
以上、説明したように、この実施の形態では、ハイパーバイザー２１の処理を時系列に従って配列したトレース情報４１に、仮想マシン２２，２３に指令した処理の情報を追加情報４７として取得するようにした。これによって、ハイパーバイザー２１の処理の中で、仮想マシン２２，２３が実行する処理を把握することが可能になる。仮想マシン２２，２３毎に仮想割り込み処理を行う場合に比べて、システム全体の負荷を低減できる。
【００６９】
ここで、追加情報４７の取得には、仮想環境を提供するためにＣＰＵ２に用意されたコンテキスト退避領域を参照するようにしたので、仮想マシン２２，２２のセキュリティを担保しつつ、追加情報４７を確実に所得できる。さらに、サンプリング周期をＣＰＵ２の性能カウンタを用いて管理し、ハイパーバイザー２１で一元的にデータを採取するようにしたので共通時間軸によるデータ採集が可能になる。こんために、ソフトウェア毎のカウンタで時間を管理する場合に比べて、プロセスが実行された時間の情報の正確さを高められる。
【００７０】
さらに、各仮想マシン２２，２３では、ゲストＯＳ２５，２７におけるプロセスＩＤ５３、命令アドレス４５、プロセス名５６、及び関数名５９をシンボルマップ情報５１Ｂ，５１Ｃとして取得するようにした。そして、これらのデータを用いてハイパーバイザー２１で作成されるトレース情報４１の一部のデータを置き換えることによって、解析データ７１を作成するようにした。解析データ７１を利用することによって、システム管理者がサーバ装置１の処理の流れを容易に確認でき、サーバ装置１におけるオーバーヘッドの原因などを解析できる。各仮想マシン２２，２３で実行されるアプリケーション・プログラム２６Ａ〜２６Ｃ，２８Ａ〜２８ｃは、システム管理者が用意にしたものではないので、処理の詳細を把握することは困難である。この実施の形態では、プロファイル処理部１７で解析データ７１を参照したり、処理したりすることで、ハイパーバイザー２１や各仮想マシン２２，２３における処理の実行に要する時間を、プロセス毎や、関数毎に把握することができる。例えば、システム管理者が、解析データ７１の時間データ４６のデータを調べて通常処理に比べて実行時間が長いプロセスを探せば、オーバーヘッドの原因を特定することが可能になり、解析作業の効率が向上する。これに加えて、ハイパーバイザー２１内の処理についても、同様に置き換え処理を実施するようにしたので、システム管理者によるサーバ装置１の処理の流れの確認作業がさらに容易になる。
【００７１】
ここで、サーバ装置１に接続され、解析データ７１を作成するコンピュータ端末を解析装置として設けても良い。この場合、解析装置は、図１に示す解析処理部１６を少なくとも有し、サーバ装置１からトレース情報４１とシンボルマップ情報５１を受け取って、解析データ７１を作成するように構成される。
【００７２】
また、本実施の形態には、コンピュータをトレース情報採取部１１と、シンボルマップ情報採取部１３と、解析処理部１６にして機能させる仮想計算機システムの管理プログラムも含まれる。さらに、仮想計算機システムの管理プログラムをコンピュータにインストール可能にアップロードしたり、記録媒体に記録したりすることも実施形態に含まれる。また、本実施の形態は、ＯＳやハイパーバイザー２１、ドライバモジュール、性能測定及び解析ツール、性能管理アプリケーション、キャパシティ管理アプリケーションに適用することが可能である。
【００７３】
（第２の実施の形態）
第２の実施の形態について説明する。以下において、第１の実施の形態と同じ構成要素には同一の符号を付している。また、第１の実施の形態と重複する説明は省略する。
また、図９に示すように、仮想計算機システムを実現するサーバ装置１は、トレース情報採取部１１と、採取開始指示部１２と、シンボルマップ情報採取部１３と、データ送信部１４と、データ受信部１５と、解析処理部１６と、プロファイル処理部１７とに機能分割できる。
採取開始指示部１２は、トレース情報採取部１１におけるデータ採取が終了した後、仮想マシン２２，２３に対して情報採取を指示する処理を実行する。
シンボルマップ情報採取部１３は、サンプリング割り込み処理発生後に採取開始指示部１２からの指示を受けてシンボルマップ情報５３を採取する。
【００７４】
解析データを作成するときには、最初に、サンプリング割り込み処理の実行に伴い、ホスト側（ハイパーバイザー２１側）においてトレース情報採取部１１が仮想マシン２２，２３のコンテキスト退避領域から情報を採取し、仮想マシン番号４８と関連付けてトレース情報４１を作成する。トレース情報４１は、トレース情報採取部１１から解析処理部１６に受け渡される。
トレース情報採取部１１における情報採取が終了したら、採取開始指示部１２がゲスト側（仮想マシン２２，２３側）のシンボルマップ情報採取部１３に対し、シンボルマップ情報５３の採取を指示する信号を送る。
ここで、  シンボルマップ情報５３の採取対象となる仮想マシン２２，２３では、サンプリング割り込み処理によってプロセス等の情報がコンテキスト退避領域に退避させられているので、シンボルマップ情報採取部１３を参照し、対象となる仮想マシン２２，２３のシンボルマップ情報５３を作成する。
【００７５】
シンボルマップ情報５３は、仮想マシン２２，２３側のデータ送信部１４からハイパーバイザー２１側のデータ受信部１５に送信される。データ受信部１５は、シンボルマップ情報５３に、対応する仮想マシン番号４８を付与した後、解析処理部１６に受け渡す。
【００７６】
解析処理部１６は、仮想ホスト番号４８及びＣＲ３レジスタ情報４７Ｂ（ページテーブルアドレス値）で両者の対応を調べることによって仮想マシン２２，２３で処理されているプロセス及び関数名を特定する。この後、プロファイル処理部１７で仮想マシン２２，２３の動作を解析する。
【００７７】
以上、説明したように、この実施の形態では、仮想マシン２２，２３上で採取したシンボルマップ情報５３をハイパーバイザー２１側で解析処理するようにした。さらに、サンプリング割り込み処理時のホスト側のプロセスの情報と、仮想マシン２２，２３のプロセスの情報を取得し、両者を対応付けることにより、仮想マシン２２，２３の処理をシステム管理者が確認できるようにした。これによって、各仮想マシン２２，２３の状態や、仮想マシン２２，２３とハイパーバイザー２１の処理を含めた仮想計算機システム全体としての処理状況を正確に把握することが可能になり、仮想計算機システムを効率良く運営することができるようになる。
【００７８】
ここで挙げた全ての例及び条件的表現は、発明者が技術促進に貢献した発明及び概念を読者が理解するのを助けるためのものであり、ここで具体的に挙げたそのような例及び条件に限定することなく解釈するものであり、また、明細書におけるそのような例の編成は本発明の優劣を示すこととは関係ない。本発明の実施形態を詳細に説明したが、本発明の精神及び範囲から逸脱することなく、それに対して種々の変更、置換及び変形を施すことができる。
【符号の説明】
【００７９】
１  仮想計算機システム
１１  トレース情報採取部
１３  シンボルマップ情報採取部
１６  解析処理部
２１  ハイパーバイザー
２２，２３  仮想マシン
４１  トレース情報
４７Ｂ  ＣＲ３レジスタ情報（アドレス領域情報）
４７Ｃ  実行アドレス
４８  仮想マシン識別番号
５１  シンボルマップ情報
５３  管理領域
５３Ａ  プロセスＩＤ
５３Ｂ  ページテーブルアドレス（アドレス領域情報）
５８  関数アドレス
５９  関数名
７１  解析データ
【図１】
2014170482.tif 000003
【図２Ａ】
2014170482.tif 000004
【図２Ｂ】
2014170482.tif 000005
【図３】
2014170482.tif 000006
【図４Ａ】
2014170482.tif 000007
【図４Ｂ】
2014170482.tif 000008
【図５】
2014170482.tif 000009
【図６Ａ】
2014170482.tif 000010
【図６Ｂ】
2014170482.tif 000011
【図７Ａ】
2014170482.tif 000012
【図７Ｂ】
2014170482.tif 000013
【図８Ａ】
2014170482.tif 000014
【図８Ｂ】
2014170482.tif 000015
【図８Ｃ】
2014170482.tif 000016
【図９】
2014170482.tif 000017