JP6904049B2 - 情報処理装置、情報処理方法、およびプログラム - Google Patents

情報処理装置、情報処理方法、およびプログラム Download PDF

Info

Publication number
JP6904049B2
JP6904049B2 JP2017096998A JP2017096998A JP6904049B2 JP 6904049 B2 JP6904049 B2 JP 6904049B2 JP 2017096998 A JP2017096998 A JP 2017096998A JP 2017096998 A JP2017096998 A JP 2017096998A JP 6904049 B2 JP6904049 B2 JP 6904049B2
Authority
JP
Japan
Prior art keywords
information
program
virtual machine
value
machine
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
JP2017096998A
Other languages
English (en)
Other versions
JP2018194988A (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 JP2017096998A priority Critical patent/JP6904049B2/ja
Priority to US15/968,785 priority patent/US10733009B2/en
Publication of JP2018194988A publication Critical patent/JP2018194988A/ja
Application granted granted Critical
Publication of JP6904049B2 publication Critical patent/JP6904049B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置、情報処理方法、およびプログラムに関する。
情報処理装置がCPU(Central Processing Unit)等のプロセッサでプログラムを実
行するときのプロセッサの使用率、占有率等(以下、頻度情報という)を算出するため、一定の周期でプロセッサの動作情報を収集することが行われる。収集された動作情報は、解析され、プログラムあるいはプログラム中の関数等によるプロセッサの使用率、あるいはリソースを使用するときのプログラム間、プログラム内の関数間での占有割合等が算出される。このような頻度情報等を算出するため、プロファイラと呼ばれるプログラムがプロセッサで実行される。さらに、算出された頻度情報を基に、情報処理装置の稼働中の性能に影響する問題を検出できる技術が提供されている。そして、このプロファイラの技術は、仮想マシン環境を有するシステムでも用いられている。
特開2009−223451号公報 特開2011−150736号公報 特開2010−134557号公報
しかしながら、仮想マシン環境を有するシステムにおいては、プロセッサの動作情報を収集する処理よりも、収集された動作情報を解析する処理の方が時間を要するため、プロセッサの動作情報を収集する処理と解析する処理とを並行して時間的にオーバーラップさせてバランスよく連続実行できない場合がある。そこで、本発明は、仮想マシンシ環境を有する情報処理装置の稼働中の性能に影響する事象の発生を検出する処理において、情報処理装置のプロセッサの動作情報の収集と解析とが時間的にバランスよく連続実行できるようにするため、収集されたプロセッサの動作情報を効率的に解析できるようにすることを目的とする。
開示の技術の一側面は、メモリと1以上のプロセッサとを備え、前記1以上のプロセッサの少なくとも1つが前記メモリに格納された命令にしたがって前記1以上のプロセッサを1以上の仮想マシンとして動作させる仮想化プログラムを実行する情報処理装置によって例示される。本情報処理装置では、1以上のプロセッサの1つが、1以上の仮想マシンでのプログラム実行時に所定のサンプリング周期で取得した動作情報に含まれる1以上の識別子またはレジスタ値を基に前記動作情報を集計するためのキー情報を作成し、作成されたキー情報にしたがって前記取得した動作情報を集計して、キー情報の集計値を算出する。そして、キー情報の集計値が所定の条件を充足する場合に、この1以上のプロセッサの1つは、キー情報に含まれる前記1以上の識別子またはレジスタ値を前記仮想化プログラムまたは前記1以上の仮想マシンのそれぞれで実行されるプログラム内で定義された名前識別子に対応付けて前記キー情報の集計値とともに出力する。
本情報処理装置によれば、仮想マシン環境を有する情報処理装置の稼働中の性能に影響する事象の発生を検出する処理において、収集されたプロセッサの動作情報を効率的に解
析できる。
計算機の性能イベントのサンプリングと性能解析を実行するための計算機の構成を例示する図である。 コンピュータシステムにおける連続プロファイル処理を例示する図である。 データ収集、分析、および異常検知を並列に実行する場合の処理の流れを例示する図である。 比較例による処理と、実施形態による処理を対比する説明図である。 シンボル解決の処理を例示する図である。 実施形態の情報処理装置の構成を例示する図である。 解析に使用するサンプリングデータを例示する図である。 比較例の処理と、実施形態の処理を対比する図である。 処理例2における解析プログラムの処理を例示するフローチャートである。 処理例3における解析プログラムの処理を例示するフローチャートである。
以下、図面を参照して、一実施形態に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本情報処理装置は実施形態の構成には限定されない。以下、まず、比較例を説明し、比較例に対する改善として実施形態を説明する。
[比較例]
図1に、比較例に係る計算機の性能イベントのサンプリングと性能解析を実行するための計算機の構成を例示する。ここで、性能イベントとは、計算機の性能を監視するために、計算機から取得される計算機のリソースの状態を示す情報、あるいは計算機の様々な処理の実行を示す情報といえる。性能イベントとしては、CPUの1サイクルの完了、CPUの命令実行完了、キャッシュミス、ページフォルト等を例示できる。性能イベントのサンプリングの結果として、CPUの使用率、実行命令数、キャッシュミスの回数、ページフォルト回数等が取得される。
例えば、計算機上で実行されるプログラムごと関数ごとのCPU使用率は以下のように取得される。例えば、CPUは、Performance Monitoring Counter(PMC)と呼ばれるレジスタを有する。また、CPUは、PMCで監視するイベントの種類及びカウンタ上限値を設定するレジスタを有する。PMCのカウンタが設定された上限値を超えるとオーバーフロー割り込みが発生する。オーバーフロー割り込みにより、OSカーネル中のドライバ(sampling driver)が起動されるので、ドライバは、起動されたタイミングで種々の情報、例えば、実行中のプロセスのID、実行中の命令のメモリアドレス(以下、命令アドレス)であるプログラムカウンタ、その他のレジスタの値等を採取できる。ドライバは、採取した情報(採取データという)を主記憶に保持する。このようにして、オーバーフロー割り込みが発生するごとに、実行中のプロセスのID、実行中の命令アドレス、その他のレジスタ値等が採取される。
なお、ハードウェアタイマ割り込みを利用して、タイムベースでプログラムカウンタ(PC)のサンプリングを行なって、プログラムの問題箇所を同定可能である。このようなハードウェアタイマ割り込みを利用する処理ではプログラム中で問題が発生している箇所が検知されえるが、どんなイベントによって、問題が発生しているかなどの情報は提供されない。一方、PMCを用いることで、プログラムカウンタによる問題箇所とともに、その問題を引き起こした原因に関連する可能性のあるイベントの種類が特定されることになる。
図1では、さらに採取された情報を基にプログラムごとのCPU使用率を解析する処理が例示されている。ここでは、CPUにおいて、プログラムA、B、Cが動作中であったと想定する。また、オーバーフロー割り込みが1msごとに発生する場合を想定する。すると、図1でOverflow割り込み(Sampling割り込み)と記載された矢印のタイミングでドライバが起動され、実行中のプロセスのIDと、命令アドレス(例えば、プログラムカウンタ値)が採取される。実行中のプロセスのIDと、命令アドレスが特定できれば、そのプロセスで実行されているプログラムの実行形式(バイナリファイル)から、実行中の関数、あるいは、実行中の命令が特定できる。したがって、ドライバによって採取された情報を集計すると、図1の表のように、プログラムごと関数ごとにイベントのサンプリング数、例えば、CPUの使用率が取得される。ここで、CPUの使用率は、採取データの採取期間における、複数プログラム間でのCPU占有時間の割合ということができる。さらに、実行命令回数、キャッシュミス回数等も上記と同様の手順で取得できる。なお、図1の表のような性能情報の内訳を示す情報をプロファイルと呼ぶ。ここで、内訳は、例えば、情報システム内のCPUごとの内訳、CPUごとプロセスごとの内訳、CPUごとプロセスごと関数ごとの内訳等が例示できる。
取得された性能イベントの収集結果を解析し、異常箇所の特定を効率的に実行するため、性能プロファイラ(以下、単にプロファイラ)と呼ばれる解析支援ツールが提供されている。性能プロファイラは、プロセス単位や関数単位での上述のような実行比率情報(プロファイル)を提供し、表示する。
プロファイラは、問題が発生する可能性のある環境にて、例えば、1ミリ秒間隔で60秒間のデータ採取(サンプリング測定)を行い、サンプリングデータを基に統計解析を行う。さらに、プロファイラは、アプリケーションの「挙動変化の把握」や「間欠障害の発見」のために時系列解析手法を用いる。
ところで、非仮想化環境では一つの物理マシンに一つのOS環境が動作している。非仮想化環境に対して、クラウドと呼ばれるコンピュータシステムの基盤となっている仮想化環境が利用されている。仮想化環境は、一つの物理マシン上に複数の仮想マシン(Virtual Machine(VM))および複数のOperating System(OS)環境が動作し、複雑で大規模な
環境となっている。そのために、クラウドでの性能異常検知と走行ソフトウェア上の問題箇所(hotspot)特定は、非仮想化環境での性能異常検知と問題箇所の特定と比べて困難になってきている。
また、複数VMで同じ物理リソースを共有するため、異常要因が他VMからの干渉による場合もある。したがって、問題調査時には既に異常が解消していて調査そのものが行えない場合もある。即ち、問題再現が困難なため調査そのものができず、問題解決に時間がかかることも生じ得る。
図2は、以上のようなコンピュータシステムにおける連続プロファイル処理を例示する図である。この処理では、サンプリング測定(データ収集、以下(A)収集と呼ぶ)と、サンプリングされたデータの解析および異常判定(以下、(B)分析と呼ぶ)が連続して繰り返し実行される。ここで、サンプリングされたデータの解析は、プログラムを実行するプロセスやプログラム内の関数単位での頻度集計等を含む。また、異常判定は、異常検知とも呼ばれ、頻度集計された結果に基づき、コンピュータシステム内に何らかの異常が発生していると判断することをいう。なお、「(A)収集」は被測定マシンで実行されるが、「(B)分析」の処理は、専用のマシンで実行することが可能である。したがって、「(A)収集」と「(B)処理」を並列に実行することも可能である。
図3に、データ収集、分析、および異常検知(異常判定の結果出力)を並列に実行する場合の処理の流れを例示する。滞りなく図3の処理を繰り返し周期的に実行するためには、データ収集のためのサンプリング期間(例えば、T秒)に対して、解析と異常検知をサンプリング期間内で実行することが目標となる。
<測定結果例>
以下、データ収集のためのサンプリング期間と、解析と異常検知の処理時間の実測値を例示する。
(1)ここでサンプリングデータは1ms周期で30秒間採取されたものである。つまり、「
(A)収集」の時間は30秒である。
(2)100ms単位の時分割での時系列解析が実施された。つまり、30秒間に300回の計算の契機がある。
(3)この処理例では、プロファイルを生成する対象となるエントリを関数とし、エントリ数を100とする。
(4)CPUおよびOSは、CPU:Intel(登録商標) Xeon(登録商標) E5-2697 v3(2.60GHz), 14coresであり、OS:CentOS Linux(登録商標) release 7.2 64bit (kernel
3.10.0-327.18.2.el7.x86_64)である。
(5)解析と異常判定の時間(「(B)分析」の時間)のうち解析処理時間だけでも、物理マシン上のホストOS(またはハイパーバイザ)環境に関する解析処理時間が約8秒であり、仮想マシン上のゲストOS環境1個についての解析処理時間が4秒である。したがって、1台の物理マシンに20台の仮想マシンを稼働させたケースでは、「(B)分析」の時間のうち解析時間だけでも、概ね8+4*20=88秒であった。また、仮想マシン数が増加すると、この時間が増加する。したがって、図1に例示した通常の解析および異常検知の手法では、図3に例示したデータ収集、分析、および異常検知(異常判定の結果出力)を並列に滞りなく実施することは困難である。
<代替案>
そこで、仮想マシンについてのサンプリングデータの分析は実行せず、代表としてホストOS(または、ホストマシンのハイパーバイザ)のプロファイル結果のみを分析することが考えられる。そうすると、処理時間の要件は満たせるので、図3に例示したデータ収集、分析、および異常検知(異常判定の結果出力)を並列に滞りなく実施することが可能である。また、あるVMに対して他VMからの干渉(他VMのCPU使用率異常)による異常も検知可能(観測可能)である。
しかし、自VM内に閉じた異常はホストレベルには現れないケースもあり検知できない。
例えば、あるVM−Aに対して、ホストレベルから見えるVM−Aの物理CPU使用率は30%で一定であったとしても、VM−A内部では正常時と異なる関数AがVM−Aの仮想CPUを100%専有する障害が起こっているかもしれない。
<比較例による処理の課題>
したがって、仮想マシン内のプログラムの挙動まで反映し、かつ「解析時間<収集時間」の要件を満たす解析処理の実現が課題となる。
[実施形態]
以下、図4から図10により、一実施形態に係る情報処理装置を例示する。図4は、比較例による処理と、実施形態による処理を対比する説明図である。図4の上側のフローは、比較例でのプロファイラの処理を例示し、下側のフローは本実施形態でのプロファイラの処理を例示する。本実施形態のプロファイラは、サンプリングプログラムと解析プログラムを含む。本情報処理装置は、プロファイラにしたがって、以下の情報処理方法を実行
する。
上記比較例を含めて、通常のプロファイラの処理では、情報処理装置は、データ収集後に、シンボル解決(シンボライズともいう)を実施し、シンボル解決後に解析を実行する。そして、情報処理装置による解析結果の出力を人が見て判断する、ということが行われる。すなわち、従来のプロファイラの処理では、人が解析結果を見て、異常かどうかの判断や、要因の検討を行うことが想定されている。このため、情報処理装置は、解析を実行する前に、シンボル解決を実行することが前提となっており、頻度集計等の解析をシンボルに基づいて実行する。ここで、頻度集計とは、複数のプログラム間あるいは複数の関数間等におけるCPU等のリソースの占有割合等を計算する処理をいう。
また、シンボルとは、プロセス名、あるいはプロセスで実行されるプログラム名、プログラム内の関数名、変数名等の名前識別子である。シンボル解決とは、情報処理装置のCPU、あるいは、OS等が処理対象を特定するための識別情報、例えば、プロセスID、レジスタ値、命令アドレス等をプロセス名、あるいは、プログラム内の名前識別子に対応づけること、あるいは、変換すること等をいう。ここで、サンプリングでは、命令アドレスはプログラムカウンタから収集されるので、命令アドレスもレジスタ値ということもできる。情報処理装置がサンプリングデータのシンボル解決を実行することで、プロファイラのユーザは、サンプリングデータの解析結果から、どこに異常があるかを判断できるのである。ただし、シンボル解決は、例えば、命令アドレスとシンボルとの対応関係を検索する処理を含むため、時間を要する。
図5にシンボル解決の処理を例示する。ここでは、例えば、情報処理装置が実行するプロファイラにより、プロセスIdentifier (以下、PID)と、CPUが実行中の命令の命
令アドレスが得られるとする。また、シンボル解決として、関数単位のプロファイルの解析を想定し、命令アドレスから関数を特定する処理を例示する。プロファイラは、OSからOS情報(OS info)として、PID:プログラム名:プログラムのオブジェクトファ
イルのファイルパスを対応付けて取得する。したがって、プロファイラはPIDから、プログラム名(例えば、プログラムA)を特定する。
また、プロファイラは、OS情報から、オブジェクトファイルのファイルパス、すなわち、ファイルシステム上の存在場所を特定する。したがって、プロファイラは、PIDが分かると、当該プログラムのオブジェクトファイルにアクセスし、シンボルテーブルを取得する。シンボルテーブルには、シンボル名(関数、あるいは変数等の名称)と、シンボルが配置されるオブジェクト内の先頭アドレスが記載されている。
また、プロセスのメモリ空間上で、各オブジェクトファイルのプログラムが配置される先頭アドレスはプロセス情報(Process Info)のメモリマップに記載されている。したがって、プロファイラは、プロセス情報(Process Info)に記載されているプログラムの先頭アドレスと、シンボルテーブル内の各シンボルのオブジェクトファイル内先頭アドレスから、各シンボル、例えば、関数の先頭アドレスを認識できる。一方、各シンボルの末尾のアドレスは、シンボルテーブルで当該シンボルの次のシンボルの先頭アドレスの直前のアドレスとして把握できる。以上から、プロファイラは、PIDと命令アドレスを含むサンプリングデータを取得すると、各サンプリングデータ中の命令アドレスに関数名を対応付けることができる。
一方、本実施形態では、人が必ずしもすべての解析結果を判断することを前提としていない。例えば、情報処理装置が、異常検知エンジン(ソフトウェア)で機械的に異常判定を行う場合には、時間のかかるシンボライズは解析の前に実行しなくてもよい。そこで、図4の下側のフローに例示するように、情報処理装置は、異常検知エンジンにより異常と
判定した解析結果だけをシンボル解決して、ユーザの判断に委ねればよい。そのため、本実施形態では、情報処理装置は、解析処理をするとき、例えば、サンプリングデータを集計するときに、シンボルに代って、情報理装置が認識できる数値、文字列等の値によってサンプリングされた個々のデータを識別する。そして、情報処理装置は、識別されたデータをグルーピングし、集計し、頻度(占有割合等)を計算する。サンプリングデータを情報理装置が認識できる数値、文字列等の値で置き換えたものは、置き換えられた文字列等の値のサンプリングデータとなる。図4では、このような置き換えられた文字列等の値のサンプリングデータを数値列と呼んでいる。そのために、どのような数値を用いて、どのような数値列を作成し、どのように集計するか、あるいは、異常判定に有用な単位でグルーピング化するかが問題となる。
なお、本実施形態では、異常検知エンジンの詳細は省略するが、異常検知エンジンとしては、時系列解析手法、クラスタリングによる手法が提案されている。また、本発明者は、異常検知エンジンとして、エントロピーとマンハッタン距離を用いる方法を提案している。ただし、本実施形態では、異常検知エンジンの詳細の手法に限定がある訳ではない。
エントロピーを用いる方法では、情報処理装置は、例えば、CPU使用率を、CPUを占有する事象の出現確率とみなして、P(xi)とし、この出現確率から得られる情報量の期待値(エントロピー)を計算する。そして、前回のサンプリングデータと今回のサンプリングデータでエントロピーに基準以上の変化があった場合に、情報処理装置は、異常である可能性が高いと判定すればよい。
また、同様に、情報処理装置は、異なる時刻間でのプロファイルの集計結果(CPU使用率P(xi)i=1,...)に対して、マンハッタン距離を計算する。そして、今回計算されたマンハッタン距離(前回のサンプリングデータと今回のサンプリングデータでのマンハッタン距離)から基準以上の変化があった場合に、情報処理装置は、異常である可能性が高いと判定すればよい。
<構成>
図6は、本実施形態の情報処理装置の構成を例示する。本情報処理装置は、仮想マシンシステムであり、コントローラマシン1と、複数のホストマシン2−1から2−3等を有する。なお、ホストマシン2−1から2−3等を総称する場合には、単にホストマシン2という。ホストマシン2の数が3個に限定される訳ではない。ホストマシン2はノードとも呼ばれる。
コントローラマシン1は、情報処理装置全体を監視し、制御する。コントローラマシン1は、CPU、主記憶装置、外部記憶装置、ディスプレイ、入力装置、通信インターフェース等を有する。コントローラマシンのCPUは、主記憶装置に展開されたコンピュータプログラムを実行し、コントローラマシンとしての処理を実行する。主記憶装置は、CPUが実行するコンピュータプログラムあるいはCPUが処理するデータを記憶する。外部記憶装置は、CPUが処理するデータを保存する。ディスプレイはCPUが処理するデータ等を表示する。入力装置は、ユーザの操作を受け付け、CPUに入力する。通信インターフェースは、ネットワークを通じて、他のホストマシン2等と通信する。図6では、コントローラマシン1としては、1台が例示されているが、コントローラマシン1は複数のコンピュータが連携するシステムであってもよい。
ホストマシン2は、物理CPUを有する。なお、図6では、ホストマシン2のCPU以外のハードウェアは省略されているが、ホストマシン2はコントローラマシン1と同様、主記憶装置、外部記憶装置、通信インターフェース等を有する。さらに、ホストマシン2の物理CPU上では、ハイパーバイザが実行され、仮想環境が構築される。すなわち、ハ
イパーバイザは、仮想CPU等の仮想リソースを含む仮想マシン(VM)を提供する。各仮想マシン上ではゲストOS(図6では、単にOSと記載)が実行され、ゲストOS上でアプリケーションプログラムが実行される。ただし、本実施形態において、情報処理装置がハイパーバイザによって仮想化される仮想マシンシステムに限定される訳ではない。例えば、情報処理装置は、ホストOSとホストOS上の仮想化プログラムによって仮想化される仮想マシンシステムであってもよい。
物理CPU(および上記コントローラマシン1のCPU、以下同様)は、MPU(Microprocessor Unit)、プロセッサとも呼ばれる。物理CPUは、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一の物理CPUがマルチコア構成を有していても良い。上記ホストマシン2(あるいはコントローラマシン1)の少なくとも一部の処理は、物理CPU以外のプロセッサ、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit(GPU)、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、上記ホストマシンの少なくとも一部の処理は、集積回路(IC)、その他のディジタル回路であっても良い。また、上記ホストマシンの少なくとも一部にアナログ回路が含まれても良い。集積回路は、LSI,Application Specific Integrated Circuit(ASIC),プログラマブルロジックデバイス(PLD)を含む。PLDは、例えば、Field−Programmable Gate
Array(FPGA)を含む。物理CPU(およびコントローラマシン1のCPU)の各部は、プロセッサと集積回路との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラ(MCU),SoC(System−on−a−chip),システムLSI,チップセットなどと呼ばれる。ホストマシン2の物理CPUおよびコントローラマシン1のCPUは1以上のプロセッサの一例である。ホストマシン2の物理CPUおよびコントローラマシン1のCPUは、1以上のプロセッサの1つとしてのプロセッサの一例でもある。
<処理例1>
以下、実施形態1のコントローラマシンによるサンプリングデータの解析処理を例示する。処理例1では、図6に例示する仮想計算機システムである情報処理装置で収集されたサンプリングデータを仮想マシン上のプロセス単位に解析する処理を例示する。本情報処理装置のホストマシン2では、図1で説明した情報処理装置と同様、オーバーフロー割り込みにより、ハイパーバイザまたはOSカーネル中のドライバが起動される。そして、ドライバは、起動されたタイミングで種々の情報、例えば、ホストマシン2で実行中のプロセスのPID、ホストマシン2で実行中の命令のメモリのアドレス等を採取する。本情報処理装置のような仮想計算機システムでは、仮想マシンは、ホストマシンの1つのプロセスとして起動される。したがって、ホストマシン2で実行中のプロセスのPIDは、仮想マシンのIDとして使用できる。
また、通常、仮想計算機システムでは、セキュリティの観点から、ホストマシン2のハイパーバイザ、あるいはホストマシン2のプロセスは、仮想マシン上のプロセスの情報を取得できない。しかし、本発明者が特許第6079317(特願2013−43158)に示したように、ホストマシン2のプロファイラは、コンテキスト退避領域から、仮想マシンのコンテキスト、例えば、制御レジスタあるいはプログラムカウンタの値を取得できる。例えば、インテル社製のCPUは、VMM(Virtual Machine Monitor)と呼ばれる
プログラムを走らせ、その上で仮想マシンを動作させる。このような仮想計算機システムにおいては、例えば、各仮想マシンの実行スケジューリングや、仮想マシン又はハイパーバイザにおける処理の過程で、複数の仮想マシンやハイパーバイザが同じ物理リソースにアクセスすることがある。この場合には、その物理リソースに割り当てられた内容をコン
テキスト退避領域に退避させたり、復元させたりすることによって各仮想マシンにおける処理の連続性が担保されている。
このために、ホストマシン2のCPUは、コンテキスト退避領域と、これを制御するためのコントロールレジスタとを有する。例えば、インテル社製のプロセッサはCR0からCR4までのコントロールレジスタを有する。そのうちのCR3レジスタは、ページ・ディレクトリの物理アドレスを指し、ページテーブルアドレスと呼ばれるアドレス情報を保持する。そして、実行するユーザプロセスが切り替わる毎に、CR3レジスタが書き換えられることによって、そのプロセス用の拡張ページテーブルが指定される。そして、割り込み処理発生時には、動作中の仮想マシンのCR3のレジスタ値がコンテキスト退避領域に退避される。さらに、割り込み処理が終了して、元の仮想マシンの処理を再開するときには、コンテキスト退避領域のCR3のレジスタ値が再度読み込まれ、プロセスが再開される。従って、CR3のレジスタの値は、仮想マシン上のプロセスを区別する識別情報として用いることができる。
そこで、本実施形態では、情報処理装置が実行するプロファイラは、以下のような処理を実行する。本実施形態では、プロファイラは、サンプリングプログラムと解析プログラムを含む。ホストマシン2はサンプリングプログラムを実行し、コントローラマシン1は解析プログラムを実行する。
(1)ホストマシン2では、サンプリングプログラムを実行し、ホストマシン2のホストOS上またはハイパーバイザ上で動作しているプロセスのPIDや命令アドレス等を取得する。プロセスの中には仮想マシンプロセスも含まれる。1つの仮想マシンは、ホストOS上またはハイパーバイザ上の1つのプロセスに該当する。(仮想マシンは、ホストOSで実行される仮想化プログラムが管理する。)以下、本実施形態では、ハイパーバイザによる仮想マシンを想定して説明がされるが、本実施形態の構成はホストOSで実行される仮想化プログラムによる仮想マシンにも適用可能である。
(2)そして、ホストマシン2は、ホストマシン2で取得されるPIDを仮想マシンのID(以下、VMID)として利用する。また、ホストマシン2は、ゲストのCR3レジスタ値(=ページテーブルアドレス値)を仮想マシンのゲストOSで実行されるプロセスのPIDの代替とする。
(3)コントローラマシン1は、解析プログラムを実行し、上記収集されたサンプリングデータを仮想マシンのゲストOSのプロセス単位で集計する。コントローラマシン1は、仮想マシンのゲストOSのプロセスを特定する情報として、「ホストマシン2上でのPID値と仮想マシンでのCR3のレジスタ値の連結値」を用いる。すなわち、コントローラマシン1は、この連結値での頻度集計(即ち、一つのOS環境分のプロファイル解析)を行い、結果を異常検知エンジンに入力する。
(4)コントローラマシン1は、異常検知エンジンにおいて、上記解析結果が異常と判定された場合には、シンボル解決を実行する。すなわち、コントローラマシン1は、頻度集計結果のプロファイルにおいて、ホストマシで採取したプロセスID、あるいは、仮想マシンで採取したCR3のレジスタ値をホストマシン2のプロセス名、仮想マシンでのプロセス名あるいはプログラム名に変換する。すなわち、コントローラマシン1は、仮想マシン上で採取しておいた「CR3とPIDのマップ情報」や「ゲストOS上のプロセス情報」を用いてシンボル解決を実行する。
(5)ホストマシン2に構築された仮想マシンは、シンボルマップを採取するシンボルマップ採取プログラムを実行し、シンボルマップ採取部として動作する。そして、シンボル
マップ採取部が「CR3とPIDのマップ情報」や「ゲストOS上のプロセス情報」等を含むシンボルマップ情報を作成する。シンボルマップ採取部の処理手順は、すでに発明者らが特願2013−43158において提案した通りである。
すなわち、シンボルマップ情報は仮想マシンのプロセス毎に作成され、CPU番号と、プロセスID(PID)と、ページテーブルアドレスと、スレッドIDと、プロセス名と、関数アドレスと、関数名とを有する。シンボルマップ採取部は、プロセスID、ページテーブルアドレス、スレッドID、プロセス名を仮想マシン内でプロセス毎に作成されるタスクを管理する管理領域(タスク構造体)から取得する。また、シンボルマップ採取部は、関数アドレスと、関数名をアプリケーションプログラムに対応するオブジェクトファイルから取得する。
コントローラマシン1はホストマシン2のハイパーバイザを介して、上記作成されたシンボルマップ情報を取得する。ハイパーバイザが、仮想マシン上のシンボルマップ採取部によって作成されたシンボルマップ情報を取得するためには、例えば、仮想マシン上のIPアドレスを指定したリモートコピーコマンド(UNIX(登録商標)のrcp、Linux(登録商標)のscp等)を実行する。ハイパーバイザは、リモートコピーコマンドにより、仮想マ
シン上のシンボルマップ情報を取得すればよい。また、ハイパーバイザがNetwork File System(NFS)のNFSサーバとなり、各仮想マシン上のゲストOS上からゲストOS
上のシンボルマップ採取部によって作成されたシンボルマップ情報をハイパーバイザ上のハードディスク等外部記憶装置に書き込ませるようにすればよい。
(採取されるデータ)
ホストマシン2のサンプリングプログラムが採取するデータは、以下の通りである。
(A)サンプリングデータ
図7に、解析に使用するサンプリングデータを例示する。サンプリングデータは、例えば、1ms周期で60秒間程度採取すると、1物理マシンあたり、6万サンプルが採取される。サンプリングデータは、1以上の仮想マシンでのプログラム実行時に所定のサンプリング周期で取得した動作情報の一例である。図7のように、サンプリングデータは、Host
IP(サンプル時のホスト上の命令アドレス)、Host Thread ID(サンプル時のホストのスレッドID)、Host PID(サンプル時のホスト上のプロセスID)、Host Return IP1,IP2(サンプル時の命令アドレスの関数の戻りアドレス)、TSC(タイムスタンプ), vPROCESSOR ID(仮想CPUのID)を含む。ホストマシン2のサンプリングプログラムはユーザプログラム
部とホストOSのカーネルまたはハイパーバイザ内に組み込まれたサンプリングドライバ(図1)から構成されており、以上のサンプリングデータをハイパーバイザ層において(自分で=サンプリングドライバで)取得する。
サンプリングデータは、さらに、Guest IP(仮想マシンの命令アドレス)、Guest CR3(仮想マシンのCR3の値)、およびVM EXIT REASON(VM EXIT 要因番号)を含む。ホストマシ
ン2のサンプリングプログラムは、Guest IP(仮想マシンの命令アドレス)、Guest CR3(仮想マシンのCR3の値)、およびVM EXIT REASON(VM EXIT 要因番号)をホストマシン2上
の仮想マシンのコンテキスト退避領域から取得する。
(B)プロセス情報
プロセス情報は、各PIDに対応するプロセス名、プロセス内のメモリマップ(仮想メモリ上の関数の先頭アドレス)、オブジェクトファイルのファイルシステム上のパス名等を含む。
(C)オブジェクトファイル
オブジェクトファイルは、各関数の関数名と先頭位置の相対アドレス(オブジェクトファ
イル内のアドレス)を含む。このような関数名と先頭位置の相対アドレスはシンボルテーブルに定義されている。したがって、コントローラマシン1の解析プログラムは、プロセス情報のメモリマップとオブジェクトファイルを組み合わせた情報を基に、サンプリングデータ中の命令アドレスから関数名を特定できる。
(D)カーネルのシンボルマップ情報
カーネルのシンボルマップ情報は、ホストマシン2の所定のファイルに格納されている。コントローラマシン1の解析プログラムは、カーネルのシンボルマップ情報を用いて、カーネル内の命令アドレス等からカーネルで使用される関数等を特定できる。
(E)実行条件、環境情報などの付帯情報
ホストマシン2のサンプリングプログラムは、例えば、ハイパーバイザのバージョン、仮想マシンのリソース等の実行環境をハイパーバイザ層において(自分で)取得する。
図8は、比較例の処理と、実施形態の処理を対比する図である。比較例では、プロファイラがサンプリングおよび解析を実行するものとして説明する。本実施形態では、例えば、図2の構成において、ホストマシン2のCPUがサンプリングプログラムを実行してサンプリングデータを収集する。さらに、図2のコントローラマシン1のCPUが解析プログラムを実行してサンプリングデータを解析するものとして説明する。
比較例におけるプロファイラの処理手順は、以下の通りである。比較例のプロファイラは、Host PIDから仮想マシン(ゲスト)を特定する(C1)。そして、プロファイラは、該当仮想マシン(ゲスト)のCR3-PIDマップ情報を参照し、全サンプルデータに対して、Guest_CR3を該当ゲスト上のPIDに変換する(C2)。ここで、Guest_CR3は、仮想マシン(ゲスト)のCR3の値であり、上述のように、ホストマシン2における、仮想マシン(ゲスト)のコンテキストを待避するコンテキスト退避領域から取得できる。
そして、プロファイラは、該当仮想マシン(ゲスト)のプロセス情報を参照し、全サンプリングデータに対し、仮想マシン(ゲスト)上のゲストOSが管理するPIDをプロセス
名に変換する(C3)。そして、プロファイラは、ゲスト毎にプロセス名で頻度集計する(C4)。以上のようにして、比較例のプロファイラは、仮想マシン(ゲスト)毎に、プロセスごとのCPUリソースの占有割合をプロセス名で提示する。
以上の比較例の処理のうち、C1からC3の処理は、サンプリングデータ中の仮想マシンのCR3のレジスタ値を仮想マシン(ゲスト)上のプロセス名に変換するためのシンボル解決と呼ばれる処理(シンボライズ処理)である。一方、図8の右側のフローは、本実施形態のコントローラマシン1が実行する解析プログラムの処理である。以下、コントローラマシン1が実行する処理を解析プログラムが実行する処理として説明する。
本実施形態では、本解析プログラムは、ホストマシン2でハイパーバイザが管理するプロセスIDであるHost PIDの値と仮想マシン(ゲスト)上のCR3であるGuest_CR3の値
を連結した連結値、例えば、文字列を作成する(S1)。この場合、Host PIDは、ハイパーバイザ上のプロセスに対応するので、ホストマシン2上の仮想マシン(ゲスト)を特定する情報となる。また、Guest_CR3の値は、仮想マシン(ゲスト)上のページ・ディレク
トリの物理アドレスを指す値であり、仮想マシン(ゲスト)上のユーザプロセスを特定する値となる。したがって、Host PIDの値とGuest_CR3の値の連結値は、1以上の仮想マシ
ンが構築されるホストマシン2上で、仮想マシン(ゲスト)上の1つのユーザプロセスを一意に特定する値となる。連結値はキー情報の一例である。S1の処理は、キー情報を作成することの一例である。
例えば、Host PID=123、Guest_CR3=456の場合は、連結値は、123456という文字列であ
る。ただし、Host PIDの値とGuest_CR3の値の連結値は、文字列としての連結値である必
要はなく、単なるビット列の組み合わせであってもよい。また、Host PIDの値とGuest_CR3の値の連結値は、可逆的に、Host PIDの値とGuest_CR3の値を復元できるものであれば、どのような連結値であってもよい。
そして、解析プログラムは、S1で求めた連結値で、サンプリングデータの頻度を集計する。端的には、解析プログラムは、サンプリングデータ中の連結値に該当するサンプリングデータのデータ数(サンプル数)を集計する(S2)。そして、解析プログラムは、異常検知エンジンにより、S2で求めた頻度集計結果からホストマシン2における異常発生の有無を判定する(S3)。S2の処理は、キー情報の集計値を算出することの一例である。S3の処理は、キー情報の集計値が所定の条件を充足するか否かを判定することの一例である。
S3で異常ありと判定される場合とは、前回までに集計したサンプリングデータと比較して、特定のユーザプロセスの頻度集計結果が基準値を超えて、大きく変化したような場合である。また、異常ありと判定されるのは、前回まで頻度集計値が低順位であったユーザプロセスの頻度集計結果が基準値を超えて高順位、あるいは高い割合を占めたような場合である。異常検知エンジンが異常発生の有無を判定する方法に限定はない。例えば、異常検知エンジンは、一般的に実施される時系列解析手法、あるいはクラスタリングによる手法を実施してもよい。また、例えば、異常検知エンジンは、本発明者がすでに提案したエントロピーとマンハッタン距離を用いる方法を実行してもよい。
そして、異常がない場合、解析プログラムは、次のサンプリングデータの解析処理を実行する。一方、S3で異常が検知された場合、解析プログラムは、S2での頻度集計に用いられたHost PIDの値とGuest_CR3の値のシンボル解決を実行し、シンボル解決されたプ
ロファイルをディスプレイ等に出力する(S4)。S3で異常が検知された場合は、キー情報の集計値が所定の条件を充足する場合の一例である。S4の処理は、キー情報に含まれる1以上の識別子またはレジスタ値を仮想化プログラムまたは1以上の仮想マシンのそれぞれで実行されるプログラム内で定義された名前識別子に対応付けてキー情報の集計値とともに出力することの一例である。
Host PIDの値とGuest_CR3の値は、ホストマシン2のハイパーバイザ(またはホストO
S)のプロセスID、あるいは仮想マシンのレジスタ値であり、ユーザが理解することが困難な値である。しかし、シンボル解決により、Host PIDの値は、ホストマシン2のプロセス名となり、Guest_CR3の値は、仮想マシンのプロセス名となる。したがって、ユーザ
は、ホストマシン2のどの仮想マシンのどのユーザプロセスで異常とされる状態が検知されたかを判定できる。
また、本実施形態での処理では、異常が検知されない限り、シンボル解決は実施されない。すなわち、異常が検知されるまでのS1からS3の処理では、解析プログラムは、単にHost PIDの値とGuest_CR3の値の連結値を算出するだけであるので、コントローラマシ
ン1は、十分に高速にS1からS3の解析処理を実行できる。そして、コントローラマシン1は、問題が検知された場合に、シンボル解決を実行すればよい。したがって、図8の本実施形態の処理(右側の処理)は、比較例の処理(左側の処理)と比較して、問題が検知されない限り、ほぼシンボル解決無しに解析処理を実行できる。したがって、本情報処理装置は、図3に例示したようにサンプリングデータの収集の時間と解析の時間のバランスをとって、仮想マシン環境で性能解析と、異常がなかったことの判定を実行できる。
<処理例2>
上記処理例では、コントローラマシン1は、ホストマシン2のPIDであるHost PIDの値と仮想マシン上のCR3のレジスタ値であるGuest_CR3の値の連結値でサンプリングデ
ータを集計した。その結果、コントローラマシン1は、ホストマシン2に構築された仮想マシン上のユーザプロセスを一意に特定して、サンプリングデータを集計し、ホストマシン2上のいずれかの仮想マシンのいずれかのユーザプロセスの異常を検知した。
処理例2では、コントローラマシン1は、解析プログラムにより、ホストマシン2のPIDと、仮想マシン上のCR3のレジスタ値と、仮想マシンの命令アドレスの連結値を用いて、サンプリングデータを集計する。仮想マシン上のCR3のレジスタ値と、仮想マシンの命令アドレスの連結値によって、ホストマシン2の仮想マシンのプロセス内の命令アドレスが一意に特定される。コントローラマシン1は、この連結値で集計した集計結果であるプロファイルを処理例1と同様の異常検知エンジンに入力し、異常検知を実行する。
図9は、処理例2における解析プログラムの処理を例示するフローチャートである。処理例2では、解析プログラムは、Host PIDの値とGuest_CR3のレジスタ値と仮想マシンの
命令アドレスを連結した連結値を作成する(S11)。この場合、連結値は、1以上の仮想マシンが構築されるホストマシン2上で、仮想マシン(ゲスト)上の1つのユーザプロセスで実行されるプログラムの命令アドレスを一意に特定する値となる。S11の処理は、キー情報を作成することの一例である。
そして、解析プログラムは、S11で求めた連結値で、サンプリングデータの頻度を集計する(S12)。そして、解析プログラムは、S12で求めた頻度集計結果からホストマシン2における異常発生の有無を判定する(S13)。S12の処理は、キー情報の集計値を算出することの一例である。S13の処理は、キー情報の集計値が所定の条件を充足するか否かを判定することの一例である。
そして、異常がない場合、解析プログラムは、次のサンプリングデータの解析処理を実行する。一方、S13で異常が検知された場合、解析プログラムは、S12での頻度集計に用いられたHost PIDの値とGuest_CR3の値と命令アドレスのシンボル解決を実行し、シ
ンボル解決されたプロファイルをディスプレイ等に出力する(S14)。S13で異常が検知された場合は、キー情報の集計値が所定の条件を充足する場合の一例である。S14の処理は、キー情報に含まれる1以上の識別子またはレジスタ値を仮想化プログラムまたは1以上の仮想マシンのそれぞれで実行されるプログラム内で定義された名前識別子に対応付けてキー情報の集計値とともに出力することの一例である。
例えば、解析プログラムは、仮想マシンのゲストOSから取得したGuest_CR3と仮想マ
シン上のPIDのマップを基に、サンプリングデータ中の仮想マシンのGuest_CR3から仮
想マシンのPIDを特定する。また、プロファイラは、仮想マシンのゲストOSから取得した仮想マシン上のPIDとプロセス名のマップから仮想マシン上のユーザプロセスのプロセス名、あるいはプロセスで実行されるプログラム名を特定する。また、解析プログラムは、仮想マシンの上のオブジェクトファイルから取得した関数名と命令アドレスのマップを基に、サンプリングデータの命令アドレスを関数名に対応づける。したがって、処理例2では、コントローラマシン1が異常検知エンジンにより異常を検知した場合に、コントローラマシン1は、シンボル解決を実行し、ホストマシン2に構築された仮想マシン上の関数を特定して、問題箇所を提示できる。
<処理例3>
処理例3では、Host PIDとGuest_CR3と仮想マシン上のプロセスとして実行されるプロ
グラム中の関数を特定する関数IDとを連結した連結値でサンプリングデータを集計する処理を例示する。ここで、関数IDとは、仮想マシンで実行されるプログラム中の関数を
一意に識別する情報である。処理例3では、コントローラマシン1の解析プログラムは、事前に、プログラムのオブジェクトファイル中から関数の先頭アドレスと、関数のIDのマップを作成しておく。また、コントローラマシン1の解析プログラムは、仮想マシンのOSからプロセス情報として、メモリマップを取得しておく。メモリマップは、プロセス内のプログラム(オブジェクトファイル)の先頭アドレスを示すので、解析プログラムは、関数IDとプロセス中の命令アドレスのマップを作成できる。したがって、Host PIDとGuest_CR3と関数IDの連結値でサンプリングデータを集計することで、プロファイラは
、ホストマシン2に構築された仮想マシン上で実行されるプログラム中の関数ごとに、サンプリングデータを集計できる。
図10は、処理例3における解析プログラムの処理を例示するフローチャートである。処理例3では、解析プログラムは、Host PIDの値とGuest_CR3の値と関数IDを連結した
連結値を作成する(S21)。関数IDは、プログラム中の関数を一意に特定するIDであり、関数名であってもよい。解析プログラムは、事前にメモリマップとプログラムのオブジェクトファイルを基に、命令アドレスから関数を一意に特定するためのマップとして、関数IDと当該関数の命令アドレス(先頭アドレス)との関係を保存する。なお、マップは命令アドレス順にソーティングされるので、各関数の末尾の命令アドレスは、次の関数の先頭アドレスの1つ前のアドレスとして特定される。S21の処理は、キー情報を作成することの一例である。
そして、解析プログラムは、S21で求めた連結値で、サンプリングデータの頻度を集計する(S22)。この場合の集計は、サンプリングデータ中の命令アドレス、即ち、仮想マシンのプログラムカウンタ値を関数IDに対応付ける処理を伴う。したがって、集計結果は、複数の関数間でのCPUの占有割合を示すデータとなる。すなわち、解析プログラムは、関数IDと命令アドレスのマップを基に、サンプリングデータ中の命令アドレスを関数IDに対応づける。この処理は、ある種のシンボル解決ということもできる。したがって、処理例3は、処理例2に対して、解析時に一部のシンボル解決を組み込んだ処理ということもできる。S22の処理は、キー情報の集計値を算出することの一例である。
そして、コントローラマシン1は、異常検知エンジンにより、S22で求めた頻度集計結果からホストマシン2における異常発生の有無を判定する(S23)。S23の処理は、キー情報の集計値が所定の条件を充足するか否かを判定することの一例である。
そして、異常がない場合、解析プログラムは、次のサンプリングデータの解析処理を実行する。一方、S23で異常が検知された場合、解析プログラムは、処理結果をコントローラマシン1のディスプレイ等に出力する(S24)。なお、解析プログラムは、関数IDを関数名に変換して、処理結果をコントローラマシン1のディスプレイ等に出力してもよい。S23で異常が検知された場合は、キー情報の集計値が所定の条件を充足する場合の一例である。S24の処理は、キー情報に含まれる1以上の識別子またはレジスタ値を仮想化プログラムまたは1以上の仮想マシンのそれぞれで実行されるプログラム内で定義された名前識別子に対応付けてキー情報の集計値とともに出力することの一例である。
<実施形態の効果>
以上述べたように、本実施形態によれば、コントローラマシン1は、仮想マシン環境で、ホストマシン2で実行されるプロセスのPID、仮想マシン上のCR3、仮想マシンの命令アドレス等を用いて連結値を作成する。この連結値は、ホストマシン2上で、仮想マシンのユーザプロセス、仮想マシンで実行されるプログラムの命令アドレス、あるいは、仮想マシンで実行されるプログラム中の関数を特定するキー情報ということができる。コントローラマシン1は、仮想マシン環境でホストマシン2から取得したサンプリングデータおよびホストマシン2のコンテキスト待避領域から取得した仮想マシンのサンプリング
データを上記連結値で集計する。連結値は、単に、プロセスのPID、仮想マシン上のCR3、仮想マシンの命令アドレス等を組み合わせた値であるので、極めて簡易に作成できる。また、連結値は、ホストマシン2上に構築された仮想マシン上のユーザプロセス、ユーザプロセスで実行されるプログラム中の命令アドレス、あるいは、関数を特定する値(キー情報)となる。したがって、本実施形態の処理では、コントローラマシン1は、比較的負荷の重いシンボル解決をしないで、サンプリングデータから頻度情報の集計を行い、異常検知エンジンにより異常判定を実施できる。そして、コントローラマシン1は、異常が検知されたときにシンボル解決を行い、ユーザに、仮想環境での仮想マシン、ユーザプロセス名、プログラム名、関数名等のシンボルとともに、集計されたプロファイルを提示できる。
<変形例>
上記実施形態では、コントローラマシン1が解析プログラムを実行し、Host PIDと、Guest_CR3、仮想マシンの命令アドレスあるいは関数ID等との連結値をキー情報として、
サンプリングデータを集計し、異常を検知し、シンボル解決を実行した。しかし、このような処理がコントローラマシン1の処理に限定される訳ではない。例えば、ホストマシン2上の仮想マシンの1つがサンプリングデータを集計し、異常を検知し、シンボル解決を実行してもよい。ただし、仮想マシンの1つがサンプリングデータを集計し、異常を検知し、シンボル解決を実行する場合には、解析プログラムの処理自体が、サンプリングデータに影響する可能性が生じる。つまり、図6の構成から明らかなように、収集したサンプリングデータの解析と、次のサンプリングデータの収集が同一のホストマシン2で実行される可能性が高まるためである。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ
等に固定された記録媒体としても利用可能である。
1 コントローラマシン
2 ホストマシン

Claims (3)

  1. メモリと1以上のプロセッサとを備え、前記1以上のプロセッサの少なくとも1つが前記メモリに格納された命令にしたがって前記プロセッサを1以上の仮想マシンとして動作させる仮想化プログラムを実行する情報処理装置であって、前記1以上のプロセッサの1つが、
    前記1以上の仮想マシンでのプログラム実行時に所定のサンプリング周期で取得した動作情報に含まれる、前記プロセッサ上で前記仮想マシンを実行するときのプロセスの識別情報と前記仮想マシン上のプロセスに一意に対応するレジスタ値とを基に前記動作情報を集計するためのキー情報を作成し、前記作成したキー情報にしたがって前記取得した動作情報を集計して、前記キー情報の集計値を算出することと、
    前記キー情報の集計値が所定の条件を充足する場合に、前記キー情報に対応する、前記仮想マシンを実行するときのプロセスの識別情報と前記仮想マシン上のプロセスに一意に対応するレジスタ値とを前記仮想化プログラムまたは前記1以上の仮想マシンのそれぞれで実行されるプログラム内で定義された名前識別子に対応付けて前記キー情報の集計値とともに出力することと、を実行する情報処理装置。
  2. メモリと1以上のプロセッサとを備え、前記1以上のプロセッサの少なくとも1つが前記メモリに格納された命令にしたがって、前記プロセッサを1以上の仮想マシンとして動作させる仮想化プログラムを実行する情報処理装置であって、前記1以上のプロセッサの1つが、
    前記1以上の仮想マシンでのプログラム実行時に所定のサンプリング周期で取得した動作情報に含まれる、前記プロセッサ上で前記仮想マシンを実行するときのプロセスの識別情報と前記仮想マシン上のプロセスに一意に対応するレジスタ値とを基に前記動作情報を集計するためのキー情報を作成し、前記作成したキー情報にしたがって前記取得した動作情報を集計して、前記キー情報の集計値を算出することと、
    前記キー情報の集計値が所定の条件を充足する場合に、前記キー情報に対応する、前記仮想マシンを実行するときのプロセスの識別情報と前記仮想マシン上のプロセスに一意に対応するレジスタ値とを前記仮想化プログラムまたは前記1以上の仮想マシンのそれぞれで実行されるプログラム内で定義された名前識別子に対応付けて前記キー情報の集計値とともに出力することと、を実行する情報処理方法。
  3. メモリと1以上のプロセッサとを備え、前記1以上のプロセッサの少なくとも1つが前記メモリに格納された命令にしたがって、前記プロセッサを1以上の仮想マシンとして動作させる仮想化プログラムを実行する情報処理装置であって、前記1以上のプロセッサの1つが、
    前記1以上の仮想マシンでのプログラム実行時に所定のサンプリング周期で取得した動作情報に含まれる、前記プロセッサ上で前記仮想マシンを実行するときのプロセスの識別情報と前記仮想マシン上のプロセスに一意に対応するレジスタ値とを基に前記動作情報を集計するためのキー情報を作成し、前記作成したキー情報にしたがって前記取得した動作情報を集計して、前記キー情報の集計値を算出することと、
    前記キー情報の集計値が所定の条件を充足する場合に、前記キー情報に対応する、前記仮想マシンを実行するときのプロセスの識別情報と前記仮想マシン上のプロセスに一意に対応するレジスタ値とを前記仮想化プログラムまたは前記1以上の仮想マシンのそれぞれで実行されるプログラム内で定義された名前識別子に対応付けて前記キー情報の集計値とともに出力することと、を実行させるためのプログラム。
JP2017096998A 2017-05-16 2017-05-16 情報処理装置、情報処理方法、およびプログラム Active JP6904049B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017096998A JP6904049B2 (ja) 2017-05-16 2017-05-16 情報処理装置、情報処理方法、およびプログラム
US15/968,785 US10733009B2 (en) 2017-05-16 2018-05-02 Information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017096998A JP6904049B2 (ja) 2017-05-16 2017-05-16 情報処理装置、情報処理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2018194988A JP2018194988A (ja) 2018-12-06
JP6904049B2 true JP6904049B2 (ja) 2021-07-14

Family

ID=64272090

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017096998A Active JP6904049B2 (ja) 2017-05-16 2017-05-16 情報処理装置、情報処理方法、およびプログラム

Country Status (2)

Country Link
US (1) US10733009B2 (ja)
JP (1) JP6904049B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6693308B2 (ja) * 2016-07-05 2020-05-13 富士通株式会社 負荷推定プログラム、負荷推定方法及び負荷推定装置
JP7135831B2 (ja) * 2018-12-20 2022-09-13 富士通株式会社 分析プログラム、および分析装置
US11537424B2 (en) * 2019-05-10 2022-12-27 Kontain Inc. Scalable and secure containers
JP7423271B2 (ja) 2019-11-18 2024-01-29 株式会社アイ・アイ・エム 監視装置、監視システム及び監視プログラム
KR102288091B1 (ko) * 2020-04-23 2021-08-10 주식회사 옐로나이프 운전자의 시점을 기초로한 클러스터 디자인 요소의 시인성 개선 장치 및 방법
US11669312B2 (en) * 2021-04-27 2023-06-06 Red Hat, Inc. Profiling and optimization of compiler-generated code

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644312B2 (en) * 2002-12-31 2010-01-05 International Business Machines Corporation Virtual machine monitoring for application operation diagnostics
US8010849B2 (en) * 2006-09-05 2011-08-30 Arm Limited Diagnosing faults within programs being executed by virtual machines
US8208381B2 (en) * 2007-07-27 2012-06-26 Eg Innovations Pte. Ltd. Root-cause approach to problem diagnosis in data networks
JP5119994B2 (ja) 2008-03-14 2013-01-16 富士通株式会社 性能モニタリングプログラム、性能モニタリング方法、性能モニタリング装置
JP2010134557A (ja) 2008-12-02 2010-06-17 Nec Corp 仮想マシン運用管理システム、その運用管理方法、及びプログラム
US8645764B2 (en) * 2010-12-17 2014-02-04 Oracle International Corporation Diagnostic framework for use with application servers and virtual machines
JP2011150736A (ja) 2011-05-09 2011-08-04 Fujitsu Ltd プロファイリングプログラム、プロファイリング方法、およびコンピュータ
US9015714B2 (en) * 2012-11-27 2015-04-21 Citrix Systems, Inc. Diagnostic virtual machine created to monitor cluster of hypervisors based on user requesting assistance from cluster administrator
JP6079317B2 (ja) 2013-03-05 2017-02-15 富士通株式会社 仮想計算機システム及びその管理方法並びに仮想計算機システムの管理プログラム

Also Published As

Publication number Publication date
JP2018194988A (ja) 2018-12-06
US10733009B2 (en) 2020-08-04
US20180336057A1 (en) 2018-11-22

Similar Documents

Publication Publication Date Title
JP6904049B2 (ja) 情報処理装置、情報処理方法、およびプログラム
US8862727B2 (en) Problem determination and diagnosis in shared dynamic clouds
US9524180B2 (en) Managing virtual machines using tracing information
US8627143B2 (en) Dynamically modeling and selecting a checkpoint scheme based upon an application workload
JP5353227B2 (ja) 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。
Suneja et al. Exploring vm introspection: Techniques and trade-offs
US9965631B2 (en) Apparatus and method for analyzing malicious code in multi-core environment using a program flow tracer
US8887139B2 (en) Virtual system and method of analyzing operation of virtual system
US20130055206A1 (en) Synchronously Debugging A Software Program Using A Plurality Of Virtual Machines
US11734098B2 (en) Computer-readable recording medium storing failure cause identification program and method of identifying failure cause
CN106293881B (zh) 一种基于非一致性i/o访问构架的性能监控器及其监控方法
CN112181833A (zh) 一种智能化模糊测试方法、装置及系统
Yamamoto et al. Unified performance profiling of an entire virtualized environment
Xie et al. Metis: a profiling toolkit based on the virtualization of hardware performance counters
Nemati et al. Fine-grained nested virtual machine performance analysis through first level hypervisor tracing
CN108228319A (zh) 一种基于多桥的语义重构方法
Khandual Performance monitoring in linux kvm cloud environment
Nemati et al. VM processes state detection by hypervisor tracing
US10929164B2 (en) Enhancing ability of a hypervisor to detect an instruction that causes execution to transition from a virtual machine to the hypervisor
JP6874345B2 (ja) 情報システム、情報処理装置、情報処理方法、およびプログラム
Utomo et al. Towards a Resilient Server with an external VMI in the Virtualization Environment
KR101567879B1 (ko) 가상머신 상태 진단 시스템
JP7106979B2 (ja) 情報処理装置、情報処理プログラム及び情報処理方法
Wang et al. ReSeer: Efficient search-based replay for multiprocessor virtual machines
Zhang et al. VMFDF: a virtualization-based multi-level fault detection framework for high availability computing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210422

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210607

R150 Certificate of patent or registration of utility model

Ref document number: 6904049

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150