(57)【要約】      （修正有）【課題】仮想計算機における統計処理を最小のＯ／Ｈで実行し、かつ取得した統計情報をユーザが自由に加工・出力する機能を提供する。【解決手段】ＲＡＳ機能の１つであるトレース機能により、トレースバッファに仮想化イベントに関する情報が記録されることを利用し、エミュレーション処理とは別プロセスでトレースバッファを監視して、トレースバッファにおける情報を基に統計処理を行う。また、ハイパバイザ内で採取した統計情報をゲストＯＳ上でユーザが自由に加工・出力できるインターフェイスを備える。【選択図】図７
2010204972.tif 000002
【特許請求の範囲】
【請求項１】
物理メモリと、複数の物理ＣＰＵと、論理区画に前記物理ＣＰＵと前記物理メモリとをそれぞれ割り当てるハイパバイザとを備える計算機システムにおいて、
前記ハイパバイザは、
エミュレーション処理を行うエミュレーション処理部と、
前記エミュレーション処理によるイベント情報が記憶されるトレースバッファと、
前記トレースバッファから読み出した前記イベント情報に基づき、統計テーブルを生成しする統計処理を行う統計処理部とを備え、
前記エミュレーション処理部には、ある物理ＣＰＵが割り当てられ、前記統計処理部には、他の物理ＣＰＵが割り当てられることを特徴とする計算機システム。
【請求項２】
前記イベント情報は、前記エミュレーション処理部が仮想化イベントに対応して処理した仮想化イベントに関する情報であることを特徴とする請求項１記載の計算機システム。
【請求項３】
前記イベント情報は、前記仮想化イベントの発生した時刻、発生した前記仮想化イベントのイベントID、論理区画の番号、CPU番号、アドレスのうち、少なくとも１つ以上であることを特徴とする請求項２記載の計算機システム。
【請求項４】
前記ハイパザイザは、前記統計テーブルに基づく統計結果を出力することを特徴とする請求項１記載の計算機システム。
【請求項５】
前記ハイパバイザは、前記トレースバッファに基づくトレース結果を出力することを特徴とする請求項１記載の計算機システム。
【請求項６】
前記ハイパザイザは、更に統計機能制御手段を備え、
ある論理区画は、前記統計機能制御手段に、前記統計処理部の統計処理に関するコマンドを出力し、
前記統計処理部は、前記コマンドに対応した処理を実行することを特徴とする請求項１記載の計算機システム。
【請求項７】
前記ハイパザイザは、更に統計機能制御手段を備え、
前記論理区画は、
前記統計機能制御手段に、前記統計テーブルに関するコマンドを出力し、
前記統計テーブルは、
前記コマンドに対応して、統計テーブル内のデータを前記論理区画に出力し、
前記論理区画は、
入力された統計テーブル内のデータに基づく統計結果を算出し、
前記算出された統計結果を、表示装置に出力することを特徴とする請求項１記載の計算機システム。
【請求項８】
物理メモリと、複数の物理ＣＰＵと、論理区画に前記物理ＣＰＵと前記物理メモリとをそれぞれ割り当てるハイパバイザとを備える計算機システムにおける統計情報取得方法であって、
前記ハイパバイザは、
前記エミュレーション処理に、ある物理ＣＰＵを割り当て、
前記統計処理に、他の物理ＣＰＵを割り当て、
エミュレーション処理を実行し、
前記エミュレーション処理によるイベント情報をトレースバッファに記憶し、
前記トレースバッファから読み出した前記イベント情報に基づき、統計テーブルを生成する統計処理を実行しすることを特徴とする計算機システムにおける統計情報取得方法。
【請求項９】
前記イベント情報は、前記エミュレーション処理部が仮想化イベントに対応して処理した仮想化イベントに関する情報であることを特徴とする請求項８記載の計算機システムにおける統計情報取得方法。
【請求項１０】
前記イベント情報は、前記仮想化イベントの発生した時刻、発生した前記仮想化イベントのイベントID、論理区画の番号、CPU番号、アドレスのうち、少なくとも１つ以上であることを特徴とする請求項９記載の計算機システムにおける統計情報取得方法。
【請求項１１】
前記ハイパザイザは、前記統計テーブルに基づく統計結果を出力することを特徴とする請求項８記載の計算機システムにおける統計情報取得方法。
【請求項１２】
前記ハイパバイザは、前記トレースバッファに基づくトレース結果を出力することを特徴とする請求項８記載の計算機システムにおける統計情報取得方法。
【請求項１３】
前記ハイパザイザは、更に統計機能制御手段を備え、
ある論理区画は、前記統計機能制御手段に、前記統計処理部の統計処理に関するコマンドを出力し、
前記統計処理部は、前記コマンドに対応した処理を実行することを特徴とする請求項８記載の計算機システムにおける統計情報取得方法。
【請求項１４】
前記ハイパザイザは、更に統計機能制御手段を備え、
前記論理区画は、
前記統計機能制御手段に、前記統計テーブルに関するコマンドを出力し、
前記統計テーブルは、
前記コマンドに対応して、統計テーブル内のデータを前記論理区画に出力し、
前記論理区画は、
入力された統計テーブル内のデータに基づく統計結果を算出し、
前記算出された統計結果を、表示装置に出力することを特徴とする請求項８記載の計算機システムにおける統計情報取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システムに関し、統計情報を取得する技術に関する。
【背景技術】
【０００２】
近年、サーバ台数の増加と共に、運用に関する複雑さが増加し、運用コストが問題化している。そのような状況の中、運用コストを低減する技術の一つとして、複数サーバを１台にまとめるサーバ統合が注目を集めている。サーバ統合を実現する技術として、一つのコンピュータを任意の割合で論理的に分割する仮想計算機技術が知られている。
【０００３】
仮想計算機技術では、例えば、ハイパバイザなどのファームウェア（またはミドルウェア）が、物理計算機を複数の論理区画（ＬＰＡＲ：Logical PARtition）に分割し、各ＬＰＡＲに対して計算機資源（CPU、主記憶、Ｉ／Ｏ）を割り当て、各ＬＰＡＲ上でそれぞれＯＳを動作させる。あるいは、一つのサーバ上で一つのホストＯＳ（物理計算機を直接使用するＯＳ）を実行し、このホストＯＳ上稼動するハイパバイザが同様の分割処理を行って、複数のゲストＯＳ（ホストＯＳ上で稼動するＯＳ）を稼動させる。仮想計算機技術は、従来複数のサーバで稼動していたＯＳ及びＯＳ上で稼動するプログラムを１台のサーバで稼動させることを可能にしており、サーバ統合を実現している。
【０００４】
上記サーバ統合を実現させる上で、仮想化技術における重要な点はいくつかあるが、特に性能面が重要である。すなわち、論理サーバにおける性能が物理サーバにおける性能と比較して、大幅な性能劣化が発生しないことが求められる。したがって、仮にそのような性能劣化が発生した場合には、対策を行う必要があり、そのための手段として統計処理を行う。具体的には、統計処理を行うことにより、以下の2点の目的に役立つ。
【０００５】
第1に、性能劣化の調査・改善の目的である。統計処理を行うことにより、どのような仮想化イベントが性能劣化の要因になったかを特定することが可能となる。それにより、性能劣化の原因を究明し、解決策を打ち出し、今後の性能改善へとつながっていく。第2に、運用の仕方・利用方法のチューニングを考える目的である。統計処理を行うことにより、実際の運用時（アプリケーション実行時）において、どのような仮想化イベントが数多く発生するかなどを知ることができる。それにより、性能問題となるアプリケーション・サービスの特定が可能となり、具体的には、統合するサーバの計画、アプリケーションにおけるパラメタの調整、負荷の調整等を考える上で役立つ。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平08-050556
【特許文献２】特開平05-061719
【特許文献３】特開平02-064833
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ハイパバイザ上で仮想計算機（LPAR1）が定義され、LPAR1上でゲストOS、及びゲストプログラムが起動し、ゲストプログラムに対して統計処理を行う場合を考える。
【０００８】
ゲストプログラムの実行中、ハイパバイザの介入が必要な状況（特権命令や割り込み等）になると、ハイパバイザに処理が移行される。このようなイベントを仮想化イベントと呼ぶ。仮想化イベントに対して、ハイパバイザは必要な処理（特権命令エミュレーション等）を実行すると、ゲストに処理を戻す。そして、ゲストプログラムでは、次の命令が実行される。
【０００９】
統計処理は、仮想化イベントが発生した際に、仮想化イベントに関する情報をハイパバイザ内で集計する処理である。従来の統計処理では、図１に示す通り、以下の（１）〜（４）の処理が行われる。
（１）ある命令で仮想化イベントが発生する。
（２）上記の仮想化イベントに対して、エミュレーション処理(51-A-1〜51-Z-1)を行う。
（３）仮想化イベントに関する情報を、ハイパバイザ(50)内で集計する（エミュレーション処理部(51)内の統計処理(51-A-3〜51-Z-3)により、統計テーブル(54)に統計情報が書き込まれた後、統計結果(300)が出力される。図1では、イベントA、イベントB、…、イベントZの発生回数がそれぞれ50、120、…、10という結果が得られる）。
（４）ゲストプログラムにおいて、次の命令が実行される。
【００１０】
従来の統計処理では、ハイパバイザにおけるエミュレーション処理部内で、エミュレーション処理と統計処理の両方を行っている。したがって、エミュレーション処理と統計処理とを別プロセスで行うことは不可能である。その結果、統計処理を行うと、（３）によるＯ／Ｈが発生し、ゲストプログラムで次の命令が実行されるまでの時間が延びる。このようなレイテンシーの延びにより、性能劣化が発生し、ユーザプログラムの実行に影響を与える。
【００１１】
また、性能測定などを行う際などには、同時に統計処理を行うと、統計処理による性能劣化の分が性能に影響を与えてしまい、正しい性能値を得ることができなくなってしまう。評価作業では、性能測定を行い、性能について調べ、そこから原因を特定するために統計情報を取得するというプロセスがよく行われるので、性能測定と統計情報の取得を同時に行えるようになれば、評価効率という点において、大きく改善されると考えられる。
【００１２】
一方、ユーザサイドにおいては、上記における効率性に加えて、利便性についても考慮する必要がある。すなわち、「ユーザサイド（OS上）において、統計処理を行うことができる。」「ユーザサイド（OS上）において、統計情報を取得できる。」「ユーザサイド（OS上）において、得られた統計情報を加工できる。」「ユーザサイド（OS上）から、ネットワークで外部に結果を出力できる。」といったように、ユーザが状況に応じて、統計情報をゲストOS上で自由に加工・出力できる環境が準備されていることが重要である。
【００１３】
そこで、本発明では、上記のような背景を踏まえ、評価効率の改善、及びユーザにおける利便性の向上を目的とし、最小のＯ／Ｈで統計処理を行うことができ、かつユーザが統計情報を自由に加工・出力できる仮想計算機上での統計情報取得システムを構築することを目的とする。
【課題を解決するための手段】
【００１４】
従来の統計処理では、図１に示すように、ゲストOS上で起動しているゲストプログラムからの仮想化イベントに対してエミュレーション処理を行い、さらにそのエミュレーション処理と同プロセスで統計処理も行っている。この仕組みがＯ／Ｈを発生させる要因となるので、本発明では、エミュレーション処理と統計処理を独立させて、別プロセスで処理を行うような仕組みを構築する。
【００１５】
上記の仕組みを構築するに当たり、本発明では、仮想化におけるRAS機能の１つであるトレース機能を利用する。トレース機能とは、障害などが発生した時のために、ハイパバイザ内のトレースバッファから必要に応じて情報を取り出せるようにする機能である。
【００１６】
トレースバッファは、ハイパバイザに対して割り込んだ様々な仮想化イベントに関する情報について記憶している。このような情報を取得することにより、障害の原因究明に役立つ。本発明では、上記のトレース機能におけるトレース情報を別プロセスから読み込み、その情報を基に統計処理を行うことで統計情報を取得する。
【００１７】
このような、統計処理を別プロセスで行う仕組みを構築する上で、物理CPUが余っているという条件が必要になる。すなわち、統計処理を行うために使用可能な物理CPUが存在する（ある物理CPUにおける処理能力に余裕がある、又は使用可能な物理CPU自体が他に存在する）ことが必須である。この点に関しては、近年、CPUが高性能・複数プロセッサになっている状況を踏まえると、特に問題はないと考える。
【００１８】
また、上記で取得した統計情報をユーザが自由に加工・出力できるようにするために、本発明では、採取した統計情報をゲストＯＳ上でユーザが自由に加工・出力するためのインターフェイスを提供する。そのようなインターフェイスを用いることによって、ハイパバイザ内の統計情報の取得、及び、加工・出力が可能となる。
【発明の効果】
【００１９】
本発明では、エミュレーション処理とは別プロセスでトレースバッファを監視し統計処理を行うことで、統計処理におけるＯ／Ｈを最小にする。また、LPAR上からハイパバイザを操作できるインターフェイスを用意することで、上記で取得した統計情報をユーザが自由に加工・出力できる。
【図面の簡単な説明】
【００２０】
【図１】統計処理におけるブロック図
【図２】物理サーバの構成図（前提技術）
【図３】論理サーバの構成図（前提技術）
【図４】トレース処理における構成図（前提技術）
【図５】トレース結果取得までの処理を示すブロック図（前提技術）
【図６】トレース処理の概要を示すフローチャート（前提技術）
【図７】本発明を適用した統計処理における構成図
【図８】本発明を適用したエミュレーション処理と統計処理を別プロセスで行うことを示すタイムシーケンス図
【図９】本発明を適用した統計結果取得までの処理を示すブロック図
【図１０】本発明を適用した統計処理の概要を示すフローチャート
【図１１】本発明を適用することにより、ユーザが統計処理部内の操作を行うことができる仕組みを示したブロック図
【図１２】本発明を適用することにより、ユーザが統計情報を自由に加工・出力できる仕組みを示したブロック図
【図１３】本発明を適用することにより、ライブラリを利用することによりユーザ作成結果編集プログラムが作成される過程を示したブロック図
【発明を実施するための形態】
【００２１】
＜１．前提技術＞
以下、本発明を実施する上で必要となる前提技術を、添付図面（図２〜図６）に基づいて説明する。
【００２２】
＜１．１．サーバ＞
以下、物理サーバ、及び論理サーバについて説明する。
【００２３】
＜１．１．１．物理サーバ＞
図２は、物理サーバを示した図である。計算機システム(100)は、ハードウェア(1)とソフトウェア(2)で成り立つ。ハードウェア(1)は、物理プロセッサ(10)、及び物理メモリ(20)を備える。また、物理プロセッサ(10)はマルチプロセッサであり、CPU1(11)とCPU2(12)を備えている。ソフトウェア(2)は、ハードウェア(1)を用いて、OS(30)、及びアプリケーション(40)が起動する。
【００２４】
＜１．１．２．論理サーバ＞
図３は、論理サーバを示した図である。計算機システム(100)は、ハードウェア(1)として、物理プロセッサ(10)、及び物理メモリ(20)を備える。また、物理プロセッサ(10)はマルチプロセッサであり、CPU1(11)とCPU2(12)を備えている。上記のハードウェア(1)を用いて、ハイパバイザ(50)が起動する。ハイパバイザ(50)は、物理サーバを複数の論理区間に分割し、各論理区間はLPAR1(60)、LPAR2(70)と定義される。各LPAR(60,70)においては、論理プロセッサ(61,71)、及び論理メモリ(62,72)が割り当てられ、ゲストOS(63,73)、及びゲストプログラム(64,74)が起動する。
【００２５】
＜１．２．トレース処理＞
仮想化において、何か障害が発生した際などのために、トレース機能が備わっている。トレース機能とは、RAS機能の1つであり、障害が起こる直前の情報をハイパバイザ(50)が記憶する事により、障害の原因を解析するための機能である。そして、上記の情報を記憶するバッファを、トレースバッファ(52)と呼び、トレースバッファ(52)から出力される情報を、トレース、又はトレース結果(200)と呼ぶ。以下、トレースの概要（仕組み）について説明する。
【００２６】
＜１．２．１．全体図（トレース処理）＞
図４は、トレースを採取するための全体構成図である。ハイパバイザ(50)上で、LPAR1(60)、及びLPAR2(70)が動作し、各LPAR(60,70)には論理プロセッサ(61,71)が割り当てられている。LPAR1(60)上では、ゲストOS(63)が動作し、その上でゲストプログラム(64)が動作している。
【００２７】
ゲストプログラム(64)では、仮想化イベント（Inst_A(64-A) , Inst_B(64-B) , …）が発生し、ハイパバイザ(50)に対して割り込む。
【００２８】
ハイパバイザ(50)では、それらの割り込みに対して、エミュレーション処理部(51)でエミュレーション処理(51-A〜51-Z)を行い、トレースバッファ(52)に仮想化イベントに関する情報が記憶された後、トレース結果(200)が出力（採取）される。
【００２９】
また、CPU割り当て方法に関しては、エミュレーション処理部(51)内の各処理は同一プロセスで行われ、エミュレーション処理部(51)はCPU1（１１）のみを使用している。
【００３０】
＜１．２．２．トレース結果出力までの流れ＞
図５は、トレースを採取する仕組みを示した図である。ハイパバイザ(50)に対して仮想化イベントが割り込むと、エミュレーション処理部(51)が各仮想化イベントに対応した処理を行う（エミュレーション処理(51-A-1〜51-Z-1)）。その処理の後、仮想化イベントに関する情報をトレースバッファ(52)に書き込む（イベント情報書き込み(51-A-2〜51-Z-2)）。
【００３１】
ここで、トレースバッファ(52)に書き込まれる仮想化イベントに関するイベント情報とは、仮想化イベントの発生した時刻、発生した仮想化イベントのイベントID、他データ（LPAR番号、CPU番号、アドレス、etc）等である。
【００３２】
＜１．２．３．フローチャート（トレース処理）＞
図６は、エミュレーション処理部(51)で、Inst_A(64-A)のイベント情報をトレースバッファ(52)に書き込む場合の例であり、エミュレーション処理部(51)からトレースバッファ(52)に対して書き込み処理が行われる際の流れを示したフローチャート(51-A-2)である。
【００３３】
最初に、ポインタ（入力）(52-1)として、p_in(52-1)を用意し、p_in(52-1)で指定されたエントリーにイベント情報を書き込む(51-A-2-1)。書き込む情報は、イベントに関する情報であり、時刻、イベントID、その他（CPU番号、LPAR番号、アドレス、etc）である。情報が書き込まれた後、ポインタ（入力）(52-1)は更新される(51-A-2-2)。ただし、最終エントリーとなっている場合は、先頭エントリーに戻る。
【００３４】
＜２．本発明＞
以下、本発明の実施形態を、添付図面（図７〜図１３）に基づいて説明する。
【００３５】
＜２．１．統計処理＞
本発明では、仮想化におけるRAS情報（トレース情報）を利用し、エミュレーション処理とは別プロセスでトレースバッファ(52)を監視する事により、最小のＯ／Ｈで統計情報を取得する事ができる。以下では、上記における機能の詳細について説明する。
【００３６】
＜２．１．１．全体図（統計処理）＞
図７は、本発明における全体構成図である。統計処理部(53)では、トレースバッファ(52)に書き込まれたイベント情報を利用する事により、統計テーブル(54)を作成し、統計結果(300)として作成した統計テーブル(54)を出力する。統計結果(300)としては、各イベントの発生回数を示したものが生成される。したがって、図７では、イベントA、イベントB、…、イベントZの発生回数がそれぞれ50、120、…、10という結果が得られる。
【００３７】
＜２．１．２．各処理の独立性（別プロセス）＞
図８は、本発明におけるエミュレーション処理部(51)と統計処理部(53)が別プロセスで処理を行っている仕組みを示した図である。本発明では、１つのCPUではなく、複数のCPUを用意している。また、エミュレーション処理部(51)における処理と統計処理部(53)における処理が独立し、別プロセスで処理を行っている。したがって、エミュレーション処理部(51)は、CPU1（１１）を使用しつつ、統計処理部(53)は、エミュレーション処理部(51)が使用していないCPU2（１２）を統計処理部(53)で使用する。
【００３８】
図８では、エミュレーション処理部(51)の処理（プロセス１）でCPU１(11)を使用し、統計処理部(53)の処理（プロセス２）でCPU２(12)を使用していることを示している。エミュレーション処理部にＣＰＵ１を割当て、統計処理部５３にＣＰＵ２を割り当てる、という割り当て処理は、ハイパバイザにより実行される。また、トレースバッファ５２、統計テーブル５４には、物理メモリが割当てられている。
【００３９】
＜２．１．３．統計結果出力までの流れ＞
図９に示すように、p_out(52-2)で指定されたアドレスにおけるイベント情報を統計処理部(53)が読み込み、統計処理部(53)はそのイベント情報に応じて、統計テーブル(54)を作成する。その後、必要に応じて、統計結果(300)として統計テーブル(54)が出力される。
【００４０】
＜２．１．４．フローチャート（統計処理）＞
図１０は、統計処理部(53)の処理内容を示したフローチャート(53)である。統計処理部(53)では、トレースバッファ(52)からイベント情報を読み込むために、ポインタ(出力) (52-2)として、p_out(52-2)を用意する。p_in(52-1)がp_out(52-2)よりも進んでいる場合、すなわち、読み込むデータが存在する場合に、統計処理部(53)はイベント情報をトレースバッファ(52)から読み込むので、p_in(52-1)とp_out(52-2)が等しい場合は何も処理を行わない(53-1)。p_in(52-1)とp_out(52-2)が異なるときに、トレースバッファ(52)のp_out(52-2)で指定されたエントリー内のイベント情報(イベントID)を読み込む(53-2)。その後、統計テーブル(54)において、上記のイベントIDの発生回数（Count）を１つ増やすことにより、統計テーブル(54)の更新を行う(53-2)。そして、p_out(52-2)を次エントリーに進める(53-3)。ただし、最終エントリーの場合は、先頭エントリーに戻る。
【００４１】
従来の統計処理においては、LPAR1の統計情報を取得する場合、エミュレーション処理部(51)内で統計処理を行っていた。したがって、LPAR1(60)のレイテンシーが延び、Ｏ／Ｈが発生し、性能に影響を与えていた。
【００４２】
これに対し、本発明においては、LPAR1(60)の統計情報を取得する上で、仮想化固有の機能である“RAS機能”を利用することで、LPAR1(60)のトレース情報からLPAR1(60)の統計情報を取得する。そして、ハイパバイザ50内に新たに統計処理部53を設け、統計処理部(53)内の処理におけるCPUと、エミュレーション処理部(51)内の処理におけるCPUとを別プロセスで動作させるので、各処理は独立している。これにより、LPAR1(60)のレイテンシーは変わることなく、Ｏ／Ｈも見かけ上０となり、性能にも影響を与えない。
【００４３】
すなわち、本願発明によれば、ハイパバイザにおいて、エミュレーション処理とは別プロセスでトレースバッファを監視し統計処理を行うので、統計処理による性能劣化を最小にしつつ、仮想計算機における統計情報を取得することができる。
【００４４】
＜２．２．加工処理＞
本発明では、最小のＯ／Ｈで統計結果を取得することができる。さて、ユーザが、得られた統計結果を自由に加工・出力できたら、ユーザにおける利便性は向上する。そこで、本発明では、上記のことを行うために、統計処理部における操作を、LPAR2(70)におけるゲストOS(73)上で、ユーザが自由に行うことができる。統計テーブル(54)内のデータを、LPAR2(70)におけるゲストOS(73)上で、ユーザが自由に加工・出力できる。というような機能を考える。そして、このような機能を実現するために、LPAR2(70)とハイパバイザ(50)をつなぐインターフェイスを準備する。以下では、上記における機能の詳細について説明する。
【００４５】
＜２．２．１．開始・終了＞
図１１は、インターフェイスが準備されていることにより、LPAR2(70)においてユーザが、ハイパバイザ(50)における統計処理部(53)内の操作を行うことができる仕組みを示した図である。主な処理の流れは、以下の通りである。
（１）“開始・終了”という入力指示(400)をLPAR2(70)に与える。
（２）LPAR2(70)において、“開始・終了”という入力の受付処理(75-1)を行う。
（３）LPAR2(70)において、ハイパバイザ(50)におけるハイパバイザ制御部(55)内の統計機能制御(55-1)を呼び出す(75-2)。
（４）ハイパバイザ(50)において、統計機能制御手段55-1が、“統計処理の開始・終了を行う”という指示を、統計処理部(53)に出す(55-1)。
【００４６】
＜２．２．２．更新処理＞
図１２は、インターフェイスが準備されていることにより、LPAR2(70)においてユーザが、ハイパバイザ(50)における統計テーブル(54)内のデータを自由に加工・出力することができる仕組みを示した図である。
【００４７】
主な処理の流れは、以下の通りである。
（１）“更新”という入力指示(400)をLPAR2(70)に与える。
（２）LPAR2(70)において、“更新”という入力の受付処理(75-1)を行う。
（３）LPAR2(70)において、ハイパバイザ(50)におけるハイパバイザ制御部(55)内の統計機能制御(55-1)を呼び出す(75-3)。
（４）ハイパバイザ(50)において、“データをLPAR2(70)に送る”という指示を統計テーブル(54)に出す(55-1)。
（５）ハイパバイザ(50)において、統計機能制御手段55-1が、統計テーブル(54)内のデータをLPAR2(70)に送る。
（６）LPAR2(70)において、送られてきた統計テーブル(54)内のデータを、加工処理する(75-4)。
（７）LPAR2(70)において、加工処理されたデータを、統計結果（加工後）(500)として出力する(75-5)。
【００４８】
＜２．２．３．ユーザ作成結果編集プログラム作成方法＞
統計処理を行うに当たり、LPAR2(70)からハイパバイザ制御部(55)内の統計機能制御(55-1)を呼び出すために、インターフェイスが必要となる。本発明では、ユーザが開発環境を容易に利用できるようにするために、ライブラリ(800)を準備する。このライブラリ(800)を用いることで、LPAR2(70)におけるユーザ作成結果編集プログラム(75)は統計処理を行うことができる。図１３に、ユーザ作成結果編集プログラム(75)の作成過程を示す。
【００４９】
図１３に示したように、上記のソースプログラム(600)のコンパイル(700)時に、統計処理取得ライブラリ(800)を利用し、プログラムに取り込まれる。統計処理取得ライブラリ(800)内の各関数は、以下の通りの意味を持つ。
startmeasure  関数  →  “統計処理の開始”
stopmeasure  関数  →  “統計処理の終了”
getmeasure  関数  →  “統計データの更新”
コンパイル(700)後、上記プログラムは実行形式となり(75)、統計処理を行う上で使用される。
【符号の説明】
【００５０】
１  ハードウェア
２  ソフトウェア
１０  物理プロセッサ
１１  物理プロセッサにおけるCPU１
１２  物理プロセッサにおけるCPU２
２０  物理メモリ
３０  OS
４０  アプリケーション
５０  ハイパバイザ
５１  エミュレーション処理部
５１−A  命令Aのエミュレーター
５１−A−１  命令Aのエミュレーション処理
５１−A−２  命令Aのイベント情報書き込み
５１−A−２−１  トレースバッファへの書き込み
５１−A−２−２  入力ポインタの更新
５１−A−３  命令Aの統計処理
５１−B  命令Bのエミュレーター
５１−B−１  命令Bのエミュレーション処理
５１−B−２  命令Bのイベント情報書き込み
５１−B−３  命令Bの統計処理
５１−Z  命令Zのエミュレーター
５１−Z−１  命令Zのエミュレーション処理
５１−Z−２  命令Zのイベント情報書き込み
５１−Z−３  命令Zの統計処理
５２  トレースバッファ
５２−１  入力ポインタ
５２−２  出力ポインタ
５３  統計処理部
５３−１  入力ポインタと出力ポインタの比較
５３−２  トレースバッファからの読み込み、及び統計テーブルの値更新
５３−３  出力ポインタの更新
５４  統計テーブル
５５  ハイパバイザ制御部
５５−１  統計機能制御
６０  LPAR１
６１  LPAR１における論理プロセッサ
６２  LPAR１における論理メモリ
６３  LPAR１上で起動しているゲストOS
６４  LPAR１上で起動しているゲストプログラム
６４−A  命令A
６４−B  命令B
７０  LPAR２
７１  LPAR２における論理プロセッサ
７２  LPAR２における論理メモリ
７３  LPAR２上で起動しているゲストOS
７４  LPAR２上で起動しているゲストプログラム
７５  ユーザ作成結果編集プログラム（実行形式）
７５−１  入力受付処理
７５−２  起動・停止要求処理
７５−３  データ要求処理
７５−４  データ加工処理
７５−５  結果出力処理
１００  計算機システム
２００  トレース結果
３００  統計結果
４００  入力指示
５００  統計結果（加工後）
６００  ユーザ作成結果編集プログラム（ソース）
７００  コンパイラ
８００  統計処理取得ライブラリ
【図１】
2010204972.tif 000003
【図２】
2010204972.tif 000004
【図３】
2010204972.tif 000005
【図４】
2010204972.tif 000006
【図５】
2010204972.tif 000007
【図６】
2010204972.tif 000008
【図７】
2010204972.tif 000009
【図８】
2010204972.tif 000010
【図９】
2010204972.tif 000011
【図１０】
2010204972.tif 000012
【図１１】
2010204972.tif 000013
【図１２】
2010204972.tif 000014
【図１３】
2010204972.tif 000015