次に、本発明を実施する形態について図面を参照して詳細に説明する。以下の実施の形態に記載されている構成は単なる例示であり、本願発明の技術範囲はそれらには限定されない。
<第1の実施形態>
以下、本発明の第1の実施形態について説明する。まず、図1及び図2を参照して、本実施形態における解析装置について説明する。図1は本実施形態における解析装置の機能的な構成を例示する、ブロック図である。また、図2は、本実施形態における解析装置を、任意の仮想化基盤を用いて構成された仮想化環境において、少なくとも一部にソフトウェア・プログラム(コンピュータ・プログラム)を用いて実現する場合の具体例を示す図である。なお、図1には、解析対象装置100の一部として解析装置104が設けられた構成が例示されているが、本実施形態はこの構成には限定されない。解析対象装置100と、解析装置104とは、図2に例示するように、個別の装置として実現してもよい。
解析対象装置100は、演算部101と、通信バス103を介して当該演算部101と通信可能に接続されたメモリ部102とを備える。係る解析対象装置100は、物理的なハードウェアにより構成されたコンピュータ等の情報処理装置であってもよい。また、係る解析対象装置100は、図2に例示するように、情報処理装置等の各種ハードウェアを仮想化可能な仮想化基盤において提供される、仮想的なコンピュータ(VM:Virtual Machine)であってもよい。この場合、解析対象装置100は、仮想化基盤において提供される一つのVMとして実現されてもよい。係るVMは、例えば、VMの動作を制御する機能を有するVMM(Virtual Machine Monitor)であるVMM200において実行される。なお、以下において、上記説明したVMを構成する仮想的なデバイスを、仮想デバイスと称する場合がある。
演算部101は、各種演算処理を実行可能なCPU(Central Processing Unit)や、MPU(Microprocessing Unit)である。演算部101は、例えば、メモリ部102に記憶された各種データ及びプログラム(コンピュータ・プログラム)を読み出して、当該プログラムに実装された処理を実行する。係る演算部101は、当該演算部101における演算処理の状態を表す状態保持データを有する。当該状態保持データは、例えば、演算部101が備えるレジスタやMMU(Memory Management Unit)等(いずれも不図示)に保持されるデータ等であってもよい。
演算部101は、各種ロジック回路や集積回路等のハードウェアを用いて構成される物理的な演算装置であってもよい。演算部101は、また、図2に例示するように、当該ハードウェアを仮想化可能な仮想化基盤における、仮想的な演算装置(仮想CPU)であってもよい。
本実施形態における演算部101が備えるレジスタやMMU等の値は、外部から取得もしくは設定可能である。例えば、当該演算部101が物理的なハードウェアにより構成される場合、当該ハードウェアにおける特定の入出力ポート等を介して、レジスタやMMU等に保持された値が入出力可能であってもよい。係る特定の入出力ポートは、例えば、ハードウェアデバッグに用いる特定のピンに接続されたポートであってもよい。
また、当該演算部101を仮想的な演算装置として構成した場合、仮想化基盤が提供する機能や、仮想化基盤が提供するデータを介して、レジスタやMMU等に保持された値が入出力可能であってもよい。仮想化基盤が提供する機能は、例えば、特定のAPI(Application Programming Interface)等であってもよい。また、仮想化基盤が提供するデータは、例えば、仮想CPUのレジスタ値を保持するデータ等であってもよい。
上記処理を実現する具体的な方法は、演算部101の具体的な構成等に応じて周知の技術を適宜採用してよいので、詳細な説明は省略する。
メモリ部102は、例えば、解析対象装置におけるメインメモリとして機能し、上記したように、演算部101において処理される各種プログラムやデータを保持する。係るメモリ部102は、特定のハードウェア(集積回路等)により構成された物理的なメモリ装置(メモリデバイス)であってもよい。係るメモリ装置は、例えば、DIMM(Dual Inline Memory Module)により構成されたDRAM(Dynamic Random Access Memory)であってもよい。また、メモリ部102は、図2に例示するように、上記した所定の仮想化基盤において提供される、仮想的なメモリ装置(メモリデバイス)であってもよい。
本実施形態におけるメモリ部102については、当該メモリ部102に記憶される記憶内容(記憶データ)を外部から取得または設定可能である。より具体的には、メモリ部102が物理的なハードウェアにより構成された場合、上記演算部101と、メモリ部102とを接続する通信バス103において送受信されるデータを取得することにより、当該メモリ部102に記憶されるデータを取得することができる。また、特定のタイミングにおいて、当該メモリ部102の記憶領域を全て出力(メモリダンプ)することにより、当該メモリ部102に記憶されたデータが取得されてもよい。また、通信バス103等を介して、上記取得されたデータをメモリ部102に書き戻すことにより、当該メモリ部102に記憶される記憶内容が、外部から設定されてもよい。なお、以下において、メモリ部102における記憶領域を「メモリ空間」と称する場合がある。
また、メモリ部102が仮想的なメモリ装置として構成された場合、仮想化基盤が提供する機能(例えば、特定のAPI等)や、仮想化基盤が提供するデータを介して、当該メモリ部102に記憶されるデータが、取得または設定されてもよい。上記仮想化基盤が提供するデータは、例えば、仮想的なメモリ部に記憶されたデータの保存領域を特定可能な情報(データ)等であってもよい。係る処理の具体的な実現方法は、メモリ部102の具体的な構成に応じて周知の技術を適宜採用してよいので、詳細な説明は省略する。
なお、解析対象装置100において、演算部101あるいはメモリ部102と、図示しない周辺デバイスとの間の入出力が、メモリ部102における特定の領域を介して実行される場合がある。具体的には、係る入出力は、例えば、メモリマップドIO(MMIO(Memory−mapped Input Output))等の方法により実行される。この場合、係るMMIOにおいて用いられるメモリ領域に対して入出力されるデータも、上記と同様に外部から取得可能である。即ち、演算部101とメモリ部102との間の送受信データを取得することにより、図示しない周辺デバイスとの間で通信される入出力データを取得することが可能である。
通信バス103は、少なくとも上記演算部101及びメモリ部102との間を通信可能に接続する通信回線である。通信バス103の構成は、上記演算部101及びメモリ部102の具体的な構成に応じて適宜選択してよい。なお、本実施形態における通信バス103は、必ずしもバス接続による通信回線には限定されず、例えば、上記演算部101及びメモリ部102をピアツーピアで接続してもよい。また、上記演算部101及びメモリ部102が上記仮想化基盤において提供される仮想的なハードウェアとして構成される場合、通信バス103は、仮想的な通信バスとして、任意の適切な方法で実現されてよい。また、通信バス103は、必ずしも仮想化された通信回線を用いて実装されなくともよい。通信バス103は、例えば、単に演算部101とメモリ部102との間でデータを送受信可能な任意の方法を用いて実装されてよい。
次に、上記のように構成された解析対象装置100における演算処理の状態を解析可能な、解析装置104の構成について説明する。
本実施形態における解析装置104は、上記演算部101及びメモリ部102に通信可能に接続されたディスパッチャ105を有する。また、解析装置104は、ディスパッチャ105が取得したデータを加工するデータマッパ106を有する。また、解析装置104は、データマッパ106が加工したデータを、当該データを保存する方法を規定したポリシに基づいて高速リポジトリ109(第1の記憶装置)に保存するデータライタ107を有する。
また、本実施形態における解析装置104は、データライタ107の動作を制御可能な記録管理部108を有する。また、解析装置104は、高速リポジトリ109に保存されたデータを複製して長期間保存可能な解析ストレージ110(第2の記憶装置)を有する。
また、本実施形態における解析装置104は、解析対象装置100の動作に影響を与えるインシデントを検知可能なセンサ111、及び、解析装置104に対して各種要求を通知する監視装置112と通信可能に接続されていてもよい。なお、本実施形態において、監視装置112、及び、センサ111を設けるか否かは、適宜選択してよい。
次に上記のように構成された解析装置104の各構成要素について説明する。
まず、本実施形態におけるディスパッチャ105について説明する。本実施形態におけるディスパッチャ105は、解析対象装置100における演算部101及びメモリ部102と通信可能に接続され、当該演算部101と、当該メモリ部102との間で送受信される対象であるデータ(以下「送受信対象データ」)を取得する。また、本実施形態におけるディスパッチャ105は、後述するデータマッパ106と通信可能に接続され、上記取得したデータをデータマッパ106に通知する。また、本実施形態におけるディスパッチャ105は、記録管理部108と通信可能に接続されてもよい。
具体的には、ディスパッチャ105は、例えば、通信バス103を介して、上記送受信対象データを取得してもよい。また、上記演算部101及びメモリ部102が仮想デバイスとして構築される場合、ディスパッチャ105は、上記説明したように仮想化基盤が提供する各種機能などを用いて上記送受信対象データを取得してもよい。
なお、本実施形態におけるディスパッチャ105は、必ずしも、通信バス103を介して上記送受信対象データを取得する必要はない。上記したように、本実施形態における演算部101、及び、メモリ部102については、それらが保持するデータ等を外部から取得あるいは設定可能である。このため、ディスパッチャ105は、上記説明したような方法により、上記演算部101、あるいはメモリ部102が保持するデータをそれぞれ直接取得することにより、送受信対象データに相当するデータを取得してもよい。
本実施形態におけるディスパッチャ105は、上記取得した送受信対象データに基づいて、解析対象装置100における演算処理の状態を再現可能なデータである採取対象データを生成する。
ここで、本実施形態における解析対象装置100における演算処理の状態は、メモリ部102に記憶された記憶データ、及び、演算部101における状態保持データの少なくともいずれかを用いて表すことが可能である。採取対象データは、解析対象装置100における演算処理の状態を完全に再現可能なデータに限らず、演算処理の状態の一部を再現可能なデータを含む。
具体的には、本実施形態における採取対象データは、少なくとも、特定の時点におけるメモリ部102に記憶された記憶データを含む。係る記憶データは、当該記憶データがメモリ部102において記憶された領域を特定可能な情報(アドレス等)を含んでもよい。また、採取対象データは、特定の時点における演算部101の演算状態を特定可能なデータ(レジスタ値等)を含んでもよい。
ディスパッチャ105は、例えば、演算部101及びメモリ部102の間を送受信される送受信対象データを、特定の開始点から時系列に全て取得(キャプチャ)することにより、係る開始点以降の特定の時点においてメモリ部102が記憶する記憶データを構築することができる。また、ディスパッチャ105は、特定の時点において上記メモリ部102が記憶する記憶データの複製(メモリダンプ)を取得することにより、特定の時点においてメモリ部102が記憶する記憶データを構築することができる。ディスパッチャ105は、上記のようにして取得された記憶データを含むよう、上記採取対象データを生成してもよい。また、ディスパッチャ105は、演算部101から状態保持データを取得し、係る状態保持データを含むよう、上記採取対象データを生成してもよい。
なお、上記したように、解析対象装置100がMMIOを実行する場合、解析対象装置100の周辺装置(不図示)と、演算部101またはメモリ部102との間の通信データも取得可能である。このため、ディスパッチャ105は、解析対象装置100の周辺装置(不図示)の処理状態についても、間接的に取得することが可能である。
なお、ディスパッチャ105は、所定のサンプリング設定に従って、特定の周期ごとに上記採取対象データを生成してもよい。この場合、例えば、後述する記録管理部108が、ディスパッチャ105に対してサンプリング周期を設定してもよい。係るサンプリング周期は、例えば、演算部101のクロックカウント、バス103のクロックカウント、あるいは、時間的な間隔(インターバル)等を用いて適宜設定されてよい。かかるサンプリング周期が設定された場合、ディスパッチャ105は、当該サンプリング周期ごとに上記送受信対象データを取得し、取得した送受信対象データに基づいて採取対象データを生成してもよい。
また、上記サンプリング周期が設定されている場合であっても、ディスパッチャ105は、例えば、後述する記録管理部108からの要求に応じて、係るサンプリングのタイミングとは関係なく、上記採取対象データを生成してもよい。
上記のように構成されたディスパッチャ105は、サンプリング周期を調整することにより、単位時間あたりに生成される採取対象データの数を調整可能である。これにより、後述する高速リポジトリ109に対して、単位時間あたりに保存されるデータのサイズを調整することが可能である。また、ディスパッチャ105は、記録管理部108からの要求に応じて適宜採取対象データを生成可能であることから、例えば、インシデント発生時に即時的に採取対象データを生成することが可能である。
ディスパッチャ105は、採取対象データの生成元となった送受信対象データを取得したタイミング(時点)、あるいは時刻を表す情報(採取タイミング情報)を、上記採取対象データに付与してもよい。
上記のように構成されたディスパッチャ105は、例えば、時系列に上記採取対象データを生成し、当該生成した採取対象データを、後述するデータマッパ106に通知する。
なお、ディスパッチャ105は、例えば、後述する記録管理部108からの要求に応じて、上記採取対象データの生成を開始してもよく、解析装置104を起動した時点から自動的に上記採取対象データの生成を開始してもよい。
次に、本実施形態におけるデータマッパ106について説明する。本実施形態におけるデータマッパ106は、上記ディスパッチャ105と通信可能に接続され、当該ディスパッチャ105が生成した採取対象データを受け付ける。そして、データマッパ106は、マッピングデータ106aに基づいて、当該採取対象データを加工する。この場合、データマッパ106は、ディスパッチャ105から採取対象データを取得してもよく、ディスパッチャ105が、データマッパ106に対して採取対象データを設定(通知)してもよい。
以下、図面を参照して、本実施形態におけるマッピングデータ106aについて説明する。図3は、本実施形態におけるマッピングデータ106aの具体例を示す図である。
マッピングデータ106aには、ディスパッチャ105から受け付けた採取対象データに含まれる記憶データが、上記メモリ部102において記憶される記憶領域を特定可能な情報(メモリ領域特定情報301)が設定される。採取対象データに含まれる記憶データは、メモリ領域特定情報301に基づいて、メモリ部102における特定の記憶領域(記憶領域の範囲)毎に分類される。より具体的には、採取対象データに含まれる記憶データは、当該記憶データが記憶される上記メモリ部102における1以上の記憶領域(記憶領域の範囲)毎に分類される。
また、マッピングデータ106aには、メモリ領域特定情報301により特定される記憶領域に対して付与される識別情報(タグ情報302)が設定される。
本実施形態におけるマッピングデータ106aは、メモリ領域特定情報301と、タグ情報302とを関連付けて保持する。即ち、本実施形態におけるマッピングデータ106aにより、メモリ領域特定情報301により1以上の領域に分類された記憶データに対して、当該領域を識別可能なタグ情報302を付与することが可能となる。
なお、メモリ領域特定情報301は、図3に例示するように、上記メモリ空間における特定の記憶領域を特定可能な情報として、上記メモリ部102におけるメモリ空間のオフセットアドレスと、当該オフセットアドレスからのサイズとを含んでもよい。係るオフセットアドレスからのサイズは、上記メモリ空間における特定の記憶領域のサイズを表す。
また、メモリ領域特定情報301は、上記メモリ空間における特定の記憶領域を特定可能な情報として、図4に例示するように、上記メモリ部102におけるメモリ空間における特定の位置を表す開始アドレスと、終了アドレスとを含んでもよい。
本実施形態におけるデータマッパ106は、上記マッピングデータ106aを参照して、ディスパッチャ105から受け付けた採取対象データに含まれる記憶データに対して、タグ情報を付与する。具体的には、データマッパ106は、図5に例示するように、採取対象データに含まれる記憶データ501に対して、メモリ領域特定情報301により特定される記憶領域毎に、当該記憶領域に関連付けされたタグ情報302を付与する。
図5に示す具体例においては、例えば、記憶データにおいてオフセットアドレスが「0」から始まり、サイズが「1024」である領域についてタグ情報”A”が付与される。同様に、記憶データにおいてオフセットアドレスが「1024」から始まり、サイズが「512」である領域についてタグ情報”B”が付与される。同様に、記憶データにおいてオフセットアドレスが「1536」から始まり、サイズが「512」である領域についてタグ情報”C”が付与される。なお、オフセットアドレス及び、サイズの具体的な単位は適宜定められてよく、例えばバイト単位や、ワード単位で指定されてもよい。
なお、採取対象データに演算部101から取得した状態保持データが含まれる場合、データマッパ106は、状態保持データであることを示す特定のタグ情報を、当該状態保持データに対して付与してもよい。
データマッパ106は、マッピングデータ106aを参照してタグ情報を付与した採取対象データを、データライタ107に通知する。
次に、本実施形態におけるデータライタ107について説明する。本実施形態におけるデータライタ107は、上記データマッパ106、及び、後述する記録管理部108と通信可能に接続される。
データライタ107は、後述する採取ポリシ107aに基づいて、上記データマッパ106から受け付けた採取対象データの少なくとも一部を、保存データとして後述する高速リポジトリ109に保存する。また、本実施形態におけるデータライタ107は、採取ポリシ107aに基づいて、後述する高速リポジトリ109に保存したデータを、後述する解析ストレージ110に保存(蓄積)する。また、データライタ107は、後述する記録管理部108からの要求に応じて、後述する高速リポジトリ109に保存したデータを、後述する解析ストレージ110に蓄積する。
以下、データライタ107の具体的な構成について説明する。
まず、本実施形態におけるデータライタ107は、上記データマッパからタグ情報が付与された上記採取対象データを受け付ける。この場合、データライタ107が、上記データマッパ106から上記採取対象データを取得してもよい。また、上記データマッパ106が、データライタ107に対して、上記採取対象データを通知してもよい。
データライタ107は、採取対象データに含まれる記憶データの特定の領域に付与されたタグ情報と、当該特定の領域のデータと、後述する記録タイミング情報と、を関連付けて、保存データとして高速リポジトリ109に書き込む。
この場合、データライタ107は、図7に例示するようなデータ構造により、上記保存データを高速リポジトリ109に保存してもよい。ここで、タグ情報701には、採取対象データに含まれる記憶データの特定の領域に付与されたタグ情報が設定される。記録タイミング情報702には、保存データの記録に関するタイミングや時刻を表す情報が設定される。保存対象データ703には、採取対象データにおいて、タグ情報701により識別される特定の領域のデータが設定される。
ここで、記録タイミング情報702には、例えば、上記説明した採取タイミング情報が設定されてもよい。また、記録タイミング情報702には、当該保存データが高速リポジトリ109に保存されるタイミング(時点)、あるいは時刻を表す情報(保存タイミング情報)が設定されてもよい。なお、当該記録タイミング情報702には、上記説明した保存タイミング情報または採取タイミング情報以外の時刻を表す情報が設定されてもよい。
なお、採取対象データに状態保持データが含まれる場合は、データライタ107は、状態保持データであることを示すタグ情報と、状態保持データの記録タイミング情報と、状態保持データの内容と、を関連付けたデータを、保存データとして扱ってもよい。
次に採取ポリシ107aについて、図6を参照して説明する。本実施形態における採取ポリシ107aは、リポジトリ保存ポリシ601を含む。リポジトリ保存ポリシ601は、上記採取対象データを高速リポジトリ109に保存する方法を規定した第1のポリシである。また、本実施形態における採取ポリシ107aは、ストレージ蓄積ポリシ602を含む。ストレージ蓄積ポリシ602は、高速リポジトリ109に保存した上記保存データを、解析ストレージ110に蓄積する方法を規定した第2のポリシである。
上記リポジトリ保存ポリシ601には、上記データマッパ106において付与されるタグ情報601aと、リポジトリ領域特定情報601bと、リポジトリ領域保存情報601cとが、関連付けて設定される。
リポジトリ領域特定情報601bは、上記保存データが実際に保存される高速リポジトリ109における記憶領域(以下「リポジトリ記憶領域」と称する場合がある)を特定可能な情報である。
リポジトリ領域特定情報601bは、保存データが保存(記憶)される領域の開始位置を指定する開始アドレスと、保存データが保存(記憶)される領域のサイズとを含む。これにより、特定のタグが付与された保存データが保存される、高速リポジトリ109における記憶領域が特定される。なお、リポジトリ領域特定情報601bは、上記開始アドレスと、特定のタグが付与された保存データが保存される領域の終了位置を指定する終了アドレスとを含んでもよい。なお、リポジトリ領域特定情報601bにおける、開始(終了)アドレス及びサイズの具体的な単位は適宜定めてよい。係る単位は、例えば、バイト単位や、ワード単位で指定されてもよい。
リポジトリ領域保存情報601cは、上記リポジトリ記憶領域に対する新たな保存データの保存方法を特定可能な情報を含む。
データライタ107は、リポジトリ保存ポリシ601を参照して、採取対象データに付与されたタグ情報に関連付けされたリポジトリ領域特定情報601bを抽出する。具体的には、データライタ107は、特定のタグ情報が付与された、採取対象データに含まれる記憶データの特定の領域が、高速リポジトリ109において保存データとして保存される領域(リポジトリ記憶領域)を特定する。
そして、データライタ107は、リポジトリ領域保存情報601cを参照して、タグ情報が付与された採取対象データを高速リポジトリ109に保存する保存方法を特定する。そして、データライタ107は、その保存方法に従って、上記タグ情報が付与された採取対象データを上記特定したリポジトリ記憶領域に保存する。
図6に示す具体例においては、例えば、リポジトリ領域保存情報601cに「リングバッファ」、「複製」、「追記」、「保存不要」などの保存方法が指定されている。これらの保存方法は、データライタ107が、リポジトリ領域特定情報601bにより特定されたリポジトリ記憶領域に、タグ情報が付与された採取対象データを保存データとして保存する具体的な方法を特定可能な情報である。より具体的には、データライタ107は、これらの保存方法により、新たな保存データがリポジトリ記憶領域において保存される具体的な領域を特定可能である。これより、リポジトリ領域保存情報601cは、新たな保存データが保存されるリポジトリ記憶領域を特定可能な情報であるといえる。それぞれの保存方法に対する具体的な説明は後述する。
特定のタグ情報601aに対して、リポジトリ領域保存情報601cが「保存不要」と指定されている場合(例えば、図6のタグ情報「D」)、そのタグ情報が付与された採取対象データの領域は、高速リポジトリには保存されない。即ち、データライタ107は、リポジトリ領域保存情報601cに基づいて、採取対象データを保存データとして高速リポジトリに保存するか否かを判定可能である。これより、リポジトリ領域保存情報601cは、採取対象データを保存データとして高速リポジトリに保存するか否かを判定可能な情報であるといえる。なお、本実施形態におけるリポジトリ領域保存情報601cは、図6に示す具体例に限定されず、他の任意の保存方法を採用してもよい。
また、本実施形態におけるデータライタ107は、保存データを高速リポジトリ109に保存する際、当該保存データを任意の圧縮方法により圧縮してもよい。この場合、高速リポジトリに保存(記憶)されるデータの容量を削減可能であることから、データライタ107は、より多くの保存データを高速リポジトリに保存可能である。
ストレージ蓄積ポリシ602は、高速リポジトリ109に保存された保存データを解析ストレージ110に保存(蓄積)するか否かを表す、蓄積要否情報602aを含む。また、ストレージ蓄積ポリシ602は、高速リポジトリに保存された保存データを解析ストレージ110に蓄積する方法を表す、蓄積方法情報602bを含む。データライタ107は、係る蓄積方法情報602bに基づいて、高速リポジトリに保存された保存データを解析ストレージ110に蓄積する契機を特定する。なお、以下において、高速リポジトリ109に保存された保存データを解析ストレージ110に蓄積する処理を、単に「高速リポジトリ109のバックアップ」と称する場合がある。
例えば、図6に例示するように、蓄積要否情報602aが「要」であり、蓄積方法情報602bが「定期(1分毎)」である場合、データライタ107は、ストレージ蓄積ポリシ602に基づいて、1分ごとに高速リポジトリ109をバックアップする。
なお、本実施形態におけるストレージ蓄積ポリシ602は、図6に示す具体例に限定されず、任意の蓄積方法を採用してよい。例えば、データライタ107は、上記リポジトリ保存ポリシ601におけるタグ情報601aを参照して、特定のタグ情報ごとに、蓄積方法を変更してもよい。
高速リポジトリ109のバックアップが不要である場合、ストレージ蓄積ポリシ602の蓄積要否情報602aに「否」が設定されてもよく、ストレージ蓄積ポリシ602自体が採取ポリシ107aから削除されてもよい。
このように構成された本実施形態におけるデータライタ107は、例えば、後述する記録管理部108からの要求が無くとも、採取ポリシ107aに基づいて、高速リポジトリ109を自動的にバックアップ可能である。即ち、データライタ107は、例えば、後述する記録管理部108からバックアップ要求が通知されるより前の保存データを、解析ストレージ110に保存することが可能である。係るバックアップ要求(後述する蓄積要求)は、インシデントの発生に伴い、記録管理部108から通知される要求である。これより、解析装置104は、インシデント発生の前にさかのぼって、解析対象装置100の状態を解析可能である。
また、本実施形態におけるデータライタ107は、後述する記録管理部108からの要求に応じて、高速リポジトリ109をバックアップしてもよい。これにより、本実施形態におけるデータライタ107は、図示しないユーザや管理者などからの指示に応じて、高速リポジトリ109に保存された保存データを解析ストレージに蓄積可能である。
また、本実施形態におけるデータライタ107は、後述する記録管理部108からの要求に応じて、特定のタイミングにおける解析対象装置100の演算状態を保持する保存データに対して、ラベル情報を付与してもよい。
この場合、データライタ107は、記録管理部108から受信したスナップショット情報(後述)から、上記特定のタイミングを表す情報(例えば時刻情報等)と、ラベル情報とを抽出する。そして、データライタ107は、当該特定のタイミングに対応する保存データを高速リポジトリ109、あるいは、解析ストレージ110から抽出し、抽出した保存データに対してラベル情報を付与する。例えば、上記特定のタイミングを表す情報が時刻を表す情報である場合、データライタ107は、保存データの記録タイミング情報702を参照し、上記特定のタイミングに最も近い時刻に取得された保存データにラベル情報を付与してもよい。各保存データに対するラベル情報の付与方法は、適宜定めてよい。
次に、本実施形態における記録管理部108について説明する。
記録管理部108は、図示しないユーザや管理者等から、高速リポジトリ109を解析ストレージ110にバックアップする要求を受けつける。この場合、記録管理部108は、当該要求に従って、データライタ107に対して、高速リポジトリ109のバックアップ要求(蓄積要求)を通知する。
また、記録管理部108は、センサ111から、高速リポジトリ109を解析ストレージ110にバックアップする要求を受けつける。係る要求を受け付けた記録管理部108は、当該要求に従って、データライタ107に対して蓄積要求を通知する。
また、記録管理部108は、図示しないユーザや管理者等から、新たな採取ポリシ107aの設定や、採取ポリシ107aの変更に関する要求を受け付ける。この場合、係る要求を受け付けた記録管理部108は、当該要求に従って、採取ポリシ107aに含まれるリポジトリ保存ポリシ601や、ストレージ蓄積ポリシ602を設定する。なお、この場合、記録管理部108が、採取ポリシ107aを直接変更してもよく、データライタ107に対して採取ポリシ107aの変更を要求してもよい。
また、記録管理部108は、図示しないユーザや管理者等から、マッピングデータ106aの変更に関する要求を受け付ける。この場合、係る要求を受け付けた記録管理部108は、当該要求に従って、マッピングデータ106aを変更する。なお、この場合、記録管理部108が、マッピングデータ106aを直接変更してもよく、データマッパ106に対してマッピングデータ106aの変更を要求してもよい。
また、記録管理部108は、図示しないユーザや管理者等から、ディスパッチャ105に対するサンプリング周期の設定を受け付ける。この場合、係る要求を受け付けた記録管理部108は、当該要求に従って、ディスパッチャ105に対してサンプリング周期の変更を通知する。
また、記録管理部108は、図示しないユーザや管理者等から、上記採取対象データの生成に関する要求を受け付けてもよい。この場合、係る要求を受け付けた記録管理部108は、当該要求に従って、ディスパッチャ105に対して採取対象データの生成を要求する。
また、記録管理部108は、後述するセンサ111から、インシデントの発生に伴う、上記採取対象データの生成に関する要求を受け付けてもよい。この場合、係る要求を受け付けた記録管理部108は、当該要求に従って、ディスパッチャ105に対して採取対象データの生成を要求する。
上記のように構成された記録管理部108及びデータライタ107は、ユーザや管理者の要求に応じて採取ポリシ107aを設定することにより、特定のメモリ空間だけを記録したり、メモリ空間毎に保存方法を変更可能である。即ち、本実施形態においては、採取ポリシ107aに基づいて、高速リポジトリ109に保存される保存データのサイズや保存方法が調整される。これにより、データライタ107は、高速リポジトリ109の記憶容量を節約して、より多くの保存データを蓄積することが可能である。
また、上記したように、記録管理部108がディスパッチャ105に対するサンプリング周期を設定可能である場合、記録管理部108は、単位時間あたりに高速リポジトリ109に保存される保存データの数を調整可能である。
また、上記したように、センサ111においてインシデントの発生を検知した際、記録管理部108は、センサ111から通知される、採取対象データの生成と、高速リポジトリ109のバックアップに関する要求に対応可能である。これにより、解析装置104は、インシデントが発生した時点の付近における、解析対象装置100の動作を解析可能である。
なお、本実施形態における記録管理部108は、図示しないユーザ等から、特定のタイミングにおける解析対象装置100の演算状態をスナップショットとして保存する要求を受け付けてもよい。この場合、記録管理部は108は、スナップショットを表すラベル情報と、当該特定のタイミングを表す情報(例えば時刻情報等)とを含むスナップショット情報を、データライタ107に送信する。なお、係るラベル情報は、図示しないユーザ等から与えられてもよく、記録管理部108が生成してもよい。
次に、本実施形態における高速リポジトリ109について説明する。高速リポジトリ109は、高速な入出力(IO:Input Output)が可能な、所定の記憶容量を有する記憶領域である。高速リポジトリ109としては、例えば、SSDやRAMディスク等、比較的記憶容量が小さいが、データの入出力が高速な記憶装置を採用可能である。
本実施形態における高速リポジトリ109は、データライタ107と通信可能に接続され、データライタ107から受け付けた保存データを、自装置における記憶領域に保存する。この際、高速リポジトリ109において実際の保存データが書き込まれる領域は、上記説明した通り、採取ポリシ107a(特にはリポジトリ保存ポリシ601)により設定される。
本実施形態における高速リポジトリ109の記憶容量には限界があるので、高速リポジトリ109は、データライタ107から受け付けた全ての保存データを長期的に蓄積できない場合がある。このため、上記採取ポリシ107a(特にはリポジトリ保存ポリシ601)に基づいて、高速リポジトリ109に保存されるデータが選択されると共に、その保存方法が設定される。本実施形態における解析装置104は、これにより、なるべく多くの保存データを高速リポジトリ109に保存可能とする。
次に、本実施形態における解析ストレージ110について説明する。解析ストレージ110は、高速リポジトリ109よりも入出力処理が低速であるが、記憶容量が大きい不揮発性の記憶装置である。また、解析ストレージ110は、自装置に記憶された記憶データを長期間にわたって保持可能な記憶装置である。係る解析ストレージ110としては、例えば磁気ディスク装置や、複数の磁気ディスク装置を用いたRAID構成による記憶装置等が採用されてもよい。
本実施形態における解析ストレージ110は、上記説明したデータライタ107と通信可能に接続され、データライタ107から受け付けた蓄積用のデータ(保存データ)を、自装置における特定の記憶領域に書き込む。
なお、解析ストレージ110と、高速リポジトリ109とは、任意の通信回線(通信バス等)により直接接続されてもよい。この場合、データライタ107からの要求に応じて、高速リポジトリ109が保存されたデータを直接解析ストレージ110に転送し、解析ストレージ110が当該データを蓄積してもよい。
本実施形態においては、データライタ107が、上記採取ポリシ107a(特にはストレージ蓄積ポリシ602)に基づいて、高速リポジトリ109に保存された保存データを、解析ストレージ110に蓄積する。本実施形態における解析装置104は、これにより、解析ストレージ110を用いて、ディスパッチャ105にて生成された採取対象データを長期間にわたって蓄積することが可能である。
次に、センサ111について説明する。センサ111は、解析対象装置100における演算処理に影響を及ぼす可能性を有するインシデントを検出可能な、任意の装置である。センサ111は、例えば、周知の侵入検知システム(IDS:Intrusion Detection System)や侵入防止システム(IPS:Intrusion Prevention System)等であってもよい。また、センサ111は、例えば、解析対象装置100の動作状態を類推可能な情報を検知する検知器であってもよい。より具体的には、センサ111は、例えば、解析対象装置100の温度や、演算部101の使用率などを検出する検知器であってもよい。
センサ111は、記録管理部108と通信可能に接続されており、例えば、インシデントを検知した際に、記録管理部108に対して、高速リポジトリ109に保存されたデータを解析ストレージ110に蓄積するよう要求してもよい。また、センサ111は、記録管理部108に対して、ディスパッチャ105における採取対象データの生成を要求してもよい。
このように、解析装置104とセンサ111とが連携することにより、解析装置104は、高速リポジトリ109に保存されたデータを、インシデント発生時に解析ストレージ110に蓄積することが可能である。これにより、解析装置104は、インシデント発生時点の付近における解析対象装置100の動作を解析可能なデータを解析ストレージ110に蓄積可能である。
次に、本実施形態における監視装置112について説明する。監視装置112は、図示しないユーザや管理者等に対して提供されるインタフェース装置であり、解析装置104(特には記録管理部108)と通信可能に接続されている。図示しないユーザや管理者等は、監視装置112を介して、解析装置104に対して各種要求を通知する。なお、監視装置112を設けるか否かは適宜選択してよい。
次に、上記のように構成された本実施形態における解析装置104の動作について説明する。
図8は、ディスパッチャ105によるデータの取得から、データライタ107による高速リポジトリへの保存までの一連の処理を例示したフローチャートである。なお、下記フローチャートに例示する処理は、例えば、記録管理部108からの要求に応じて開始されてもよく、解析装置104が起動された際に、自動的に開始されてもよい。
まず、ディスパッチャ105が、送受信対象データを取得する(ステップS801)。
次に、ディスパッチャ105は、上記ステップS801において取得したデータを複製して、上記説明した採取対象データを生成する(ステップS802)。この場合、ディスパッチャ105は、例えば、以下のような処理により、採取対象データを生成してもよい。即ち、ディスパッチャ105は、演算部101とメモリ部102との間を送受信されるデータを、特定の開始点から時系列に全て取得(キャプチャ)することにより、特定の時点においてメモリ部102が記憶する記憶データを構築する。そして、ディスパッチャ105は、このようにして構築された記憶データを含む上記採取対象データを生成する。また、ディスパッチャ105は、特定の時点において上記メモリ部102が記憶する記憶データの複製(メモリダンプの複製)を取得することにより、係る記憶データを含む上記採取対象データを生成してもよい。
そして、ディスパッチャ105は、上記のようにして生成した採取対象データをデータマッパ106に送信してもよい。
次に、データマッパ106は、上記ステップS802においてディスパッチャ105が生成した採取対象データに対して、マッピングデータ106aを参照してタグ情報を付与する(ステップS803)。具体的には、データマッパ106は、マッピングデータ106aに設定されたメモリ領域特定情報301と、タグ情報302とに基づいて、採取対象データに含まれる特定の領域毎にタグ情報を付与する。
次に、データマッパ106は、上記ステップS803においてタグが付与された採取対象データを、データライタ107に送付(送信)する(ステップS804)。この場合、データライタ107が、係る採取対象データをデータマッパ106から取得してもよい。
採取対象データを受信したデータライタ107は、採取ポリシ107aに基づいて、当該採取対象データを保存データとして高速リポジトリ109に保存する(ステップS805)。
以下、ステップS805における処理の内容について、図9に例示するフローチャートを参照して説明する。
まず、データライタ107は、採取対象データのそれぞれの領域について設定されたタグ情報を確認し、採取ポリシ107aにおいて、当該タグ情報に対応するポリシ(リポジトリ保存ポリシ601)を特定する(ステップS901)。例えば、タグ情報として”A”が設定された採取対象データに含まれる領域について、データライタ107は、リポジトリ保存ポリシ601から、タグ情報”A”に対応するリポジトリ領域特定情報601b(この場合は開始アドレス「0」からサイズ「102400」分)を特定する。また、データライタ107は、リポジトリ保存ポリシ601から、タグ情報”A”に対応するリポジトリ領域保存情報601c(この場合は「リングバッファ」)を特定する。
次に、データライタ107は、採取ポリシ107aに設定された保存方法を確認する(ステップS902)。より具体的には、データライタ107は、上記特定したリポジトリ領域保存情報601cを確認する。
ステップS902における確認の結果、保存方法が「保存不要」である場合(ステップS903において「保存不要」の場合に相当)、データライタ107は処理を終了する。
ステップS902における確認の結果、保存方法が「リングバッファ」である場合、(ステップS903において「リングバッファ」の場合に相当)、データライタ107は、リングバッファに、保存データを保存する(ステップS904)。係るリングバッファは、リポジトリ領域特定情報601bにより特定された高速リポジトリ109の記憶領域に構成される。
より具体的には、例えば、データライタ107は、リポジトリ領域特定情報601bにより特定された領域に構成されたリングバッファに、空きバッファ(空きブロック)が存在するか否かを確認する。空きバッファが存在しない場合、データライタ107は、高速リポジトリ109の当該領域に保存された保存データの内、もっとも古いデータを削除し、そのバッファに新たな保存データを書き込む。即ち、データライタ107は、新しい保存データにより、最も古い保存データを更新する。この場合、データライタ107は、記録タイミング情報702を参照することにより、高速リポジトリ109の特定の領域に保存された最も古いデータを抽出可能である。
ステップS902における確認の結果、保存方法が「複製」である場合、(ステップS903において「複製」の場合に相当)、データライタ107は、リポジトリ領域特定情報601bにより特定された高速リポジトリ109の記憶領域を、保存データにより上書きする(ステップS905)。即ち、保存方法が「複製」である場合、データライタ107は、リポジトリ領域特定情報601bにより特定された領域を、常に新たな保存データにより上書きしてよい。
ステップS902における確認の結果、保存方法が「追記」である場合、(ステップS903において「追記」の場合に相当)、データライタ107は、リポジトリ領域特定情報601bにより特定された高速リポジトリ109の記憶領域に、新たな保存データを追記する(ステップS906)。当該記憶領域に空き領域がなくなった場合、データライタ107は、当該記憶領域に保存されていた保存データを、解析ストレージ110に蓄積し、当該記憶領域を初期化してもよい。
なお、上記保存方法はあくまで例示である。上記以外の保存方法として、例えば、データライタ107は、リポジトリ領域特定情報601bにより特定された高速リポジトリ109の記憶領域の空き容量がなくなるまで新たな保存データを書き込み、空き容量が無くなった場合に書き込みを停止してもよい。また、データライタ107は、リポジトリ領域特定情報601bにより特定された高速リポジトリ109の記憶領域に特定の期間分の保存データを保存し、当該期間が経過した際、保存されていた保存データを廃棄してもよい。本実施形態におけるリポジトリ領域保存情報601cには、上記以外の任意の保存方法が設定されてもよい。
なお、上記ステップS904乃至ステップS906において、データライタ107は、採取対象データの特定の領域に付与されたタグ情報と、採取対象データの記録タイミング情報と、採取対象データの特定の領域に含まれるデータとを関連付けて、保存データとして高速リポジトリ109に書き込む。
次に、図10に例示するフローチャートを参照して、記録管理部108がデータライタ107に対して高速リポジトリ109のバックアップを要求した場合の処理について説明する。
まず、記録管理部108が、監視装置112、あるいは、センサ111から、高速リポジトリ109のバックアップを要求する通知を受信する(ステップS1001)。
記録管理部108は、ステップS1001において受け付けた通知に基づいて、データライタ107に対して、高速リポジトリ109のバックアップ要求(蓄積要求)を通知する(ステップS1002)。
上記ステップS1002における通知を受信したデータライタ107は、高速リポジトリ109に保存された保存データを、解析ストレージ110にバックアップする(ステップS1003)。
次に、図11に例示するフローチャートを参照して、ストレージ蓄積ポリシ602に基づいて、データライタ107が、高速リポジトリ109を解析ストレージ110にバックアップする処理について説明する。
まず、データライタ107は、採取ポリシ107aに含まれるストレージ蓄積ポリシ602を確認する(ステップS1101)。
ステップS1101における確認の結果、ストレージ蓄積ポリシ602が存在しない場合、データライタ107は高速リポジトリ109を解析ストレージ110にバックアップ(蓄積)する必要が無いと判断し(ステップS1102において「蓄積不要」)、処理を終了する。同様に、ストレージ蓄積ポリシ602においてバックアップが不要(蓄積要否情報602aが「否」)であると設定されている場合(ステップS1102において「蓄積不要」)、データライタ107は処理を終了する。
ステップS1102において「蓄積要」の場合(蓄積要否情報602aが「要」の場合)、データライタ107は、蓄積方法情報602bを参照する。そして、データライタ107は、高速リポジトリ109に保存された保存データを、蓄積方法情報602bに基づいて解析ストレージ110にバックアップする(ステップS1103)。
以上のように構成された本実施形態における解析装置104によれば、演算部101と、メモリ部102との間で送受信される対象である送受信対象データに基づいて、ディスパッチャ105が採取対象データを生成する。そして、係る採取対象データに対して、データマッパ106が、マッピングデータ106aに基づいてタグ情報を付与する。そして、データライタ107が、採取ポリシ107aに基づいて採取対象データを高速リポジトリ109に保存する。また、採取ポリシ107aに基づいて、データライタ107が、高速リポジトリ109を、解析ストレージ110にバックアップする。
具体的には、解析装置104は、例えば、特定のタグ情報が付与された領域のみを高速リポジトリ109に保存することが可能である。また、解析装置104は、例えば、特定のタグが付与された保存データを多く保存し、他の特定のタグが付与された保存データを少なく保存することが可能である。この意味において、本実施形態におけるマッピングデータ106a、及び採取ポリシ107aは、タグ情報に基づいて、採取対象データに含まれるデータを保存するか否かを規定する、フィルタとして機能すると言える。
即ち、本実施形態における解析装置104は、採取対象データに付与されたタグ情報に基づいて、当該タグ情報が付与された領域毎に、高速リポジトリへの保存方法を変更可能である。これより、解析装置104は、所定の記憶容量を有する高速リポジトリ109の記憶領域を有効に利用可能である。
また、データライタ107は、保存データを圧縮して高速リポジトリ109に保存可能である。これより、解析装置104は、高速リポジトリの記憶容量に対して、より多くの保存データを保存可能である。
また、ディスパッチャ105におけるサンプリング周期を設定することにより、単位時間に取得する採取対象データの個数を調整することが可能である。これにより、解析装置104は、単位時間に消費する高速リポジトリの記憶容量を調整可能である。
また、センサ111あるいは監視装置112からの通知に基づいて、ディスパッチャ105が採取対象データを生成することが可能である。同様に、センサ111あるいは監視装置112からの通知に基づいて、データライタ107が、高速リポジトリ109を解析ストレージ110にバックアップ可能である。よって、本実施形態における解析装置104は、例えば、特定のインシデントが発生した時点の前後における解析対象装置100の演算状態を保存可能である。
以上より、本実施形態における解析装置104によれば、限られた記憶容量の記憶装置を用いて、解析対象装置100の状態を再現可能なデータを、より多く保存することが可能である。
<第1の実施形態の第1の変形例>
次に、上記説明した第1の実施形態の第1の変形例について説明する。本変形例は、上記第1の実施形態における解析装置104に対して、図12に例示するように、マップジェネレータ1201が追加された点においてのみ相違し、その他は同様である。よって、以下、係る相違点についてのみ説明し、共通する構成についての説明は省略する。
本変形例におけるマップジェネレータ1201は、ディスパッチャ105及びデータマッパ106と通信可能に接続される。また、マップジェネレータ1201は、記録管理部108と通信可能に接続されてもよい。
マップジェネレータ1201は、解析対象装置100の基本構成を表す情報であるアーキテクチャに関する情報に基づいて、適切なマッピングデータを生成する。そして、マップジェネレータ1201は、生成したマッピングデータを、マッピングデータ106aに登録する。マップジェネレータ1201は、生成したマッピングデータをデータマッパ106に送付し、マッピングデータ106aの更新を要求してもよい。
より具体的には、マップジェネレータ1201は、例えば、ディスパッチャ105から、演算部101の基本構成を表すアーキテクチャに関する情報を取得する。また、マップジェネレータ1201は、記録管理部108を介して、解析対象装置100において実行されるOS(Operating System)に関する情報を取得してもよい。この場合、図示しないユーザや管理者等が、記録管理部108を介して、マップジェネレータ1201にOSに関する情報を通知してもよい。
マップジェネレータ1201は、上記取得した演算部101のアーキテクチャに関する情報と、解析対象装置100において実行されるOSに関する情報とを、解析対象装置100のアーキテクチャに関する情報として扱う。マップジェネレータ1201は、係るアーキテクチャに関する情報に基づいてマッピングデータを生成する。そして、マップジェネレータ1201は、当該生成したマッピングデータを、マッピングデータ106aに登録する。
具体的には、マップジェネレータ1201は、例えば、上記記憶データを、解析対象装置100において実行されているプロセス毎の領域に分割し、それぞれの領域に対してプロセス名をタグ情報として関連付けるマッピングデータを生成してもよい。こうして生成されたマッピングデータ106aと、それに応じた採取ポリシ107aとを用いることにより、解析装置104は、例えば、高速リポジトリ109に保存されるデータを、以下のように制御可能である。即ち、解析装置104は、重要度が高い特定のプロセスに関するメモリ領域(記憶データ)を高速リポジトリ109に多く保存し、重要度が低いプロセスに関するメモリ領域を保存しない、等の制御が可能である。
また、マップジェネレータ1201を導入することにより、例えば、解析装置104は、解析対象装置100における処理の状況に応じて、マッピングデータ106aを動的に変更することも可能である。
このように本変形例における解析装置104は、重要度が高いメモリ領域と、そうではないメモリ領域とをタグ情報を用いて区別することにより、当該タグ情報ごとに採取ポリシ107aの保存方法を変更することが可能である。また、マップジェネレータ1201を導入することにより、解析装置104は、解析対象装置100における処理の状況に応じて、重要度が高いメモリ領域と、そうではないメモリ領域とを区別するタグ情報を動的に変更可能である。
よって、本実施形態における解析装置104によれば、限られた記憶容量の記憶装置を用いて、解析対象装置100の状態を再現可能なデータをより多く保存することが可能である。
<第1の実施形態の第2の変形例>
次に、上記説明した第1の実施形態の第2の変形例について説明する。本変形例は、上記第1の実施形態に対して、解析対象装置100が複数台存在する点において異なる。これに伴い、本変形例においては、図13に例示するように、ディスパッチャ105、データマッパ106、及び、マップジェネレータ1201が、複数存在する。なお、複数存在するそれぞれの構成要素自体は、上記説明した第1の実施形態と同様としてよい。
また、図13に例示するデータライタ1301は、上記第1の実施形態におけるデータライタ107に対して、複数のデータマッパ106からの採取対象データを受け付ける点において異なり、その他は同様である。本変形例におけるデータライタ1301は、複数のデータマッパ106から受け付けた採取対象データを、それぞれ保存データとして高速リポジトリ109に保存する。
また、採取ポリシ1301aは、図14に例示するように、第1の実施形態における採取ポリシ107aに対して、複数のディスパッチャ105を識別可能なディスパッチャID(Identifier)1401aを含む点において異なる。採取ポリシ1301aのその他の構成は、採取ポリシ107aと同様である。
データライタ1301は、採取ポリシ1301aに基づいて、各データマッパ106から受け付けた採取対象データを、保存データとして高速リポジトリ109に保存する。この場合、データライタ1301は、採取対象データをどのデータマッパ106から取得したか(いずれのディスパッチャ105により生成された採取対象データか)判別可能である。これより、データライタ1301は、各採取対象データに対して、当該採取対象データを生成したディスパッチャ105に対応するディスパッチャIDが付与されたポリシを適用することが可能である。
なお、データライタ1301は、図15に例示するような形式で、保存データを高速リポジトリ109に保存してもよい。即ち、各保存データは、ディスパッチャID1501によって、何れのディスパッチャ105により生成されたデータであるか(いずれの解析対象装置100に関するデータであるか)判別可能である。
なお、本変形例における解析装置104のその他の動作は、上記第1の実施形態における解析装置104と同様としてよいため、詳細な説明は省略する。
本変形例における解析装置104は、複数の解析対象装置100のそれぞれに関するデータを単一の解析装置104により収集し、解析可能である。よって、本変形例における解析装置104は、上記第1の実施形態と同様の効果を奏すると共に、少ない解析装置104により、多くの解析対象装置100を解析可能である。
なお、図13に例示する構成においては、2台の解析対象装置100が例示されているが、本実施形態はこれには限定されず、任意の台数の解析対象装置100を採用してよい。
<第2の実施形態>
次に、上述した第1の実施形態に係る解析装置を基本とする第2の実施形態について説明する。
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第1の実施形態と同様な構成についての重複する説明は省略する。
図16に例示する、本実施形態における解析装置1604は、上記第1の実施形態における解析装置104に対して、再現部1605を有する点において異なる。なお、以下の説明においては、本実施形態に係る特徴的な部分である再現部1605を中心に説明する。図16に例示する解析部1606は、上記第1の実施形態における解析装置104の構成要素と同様としてよいため、詳細な説明は省略する。
まず、本実施形態における再現対象装置1600について説明する。再現対象装置1600は、演算部1601と、当該演算部1601に通信バス1603を介して通信可能に接続されたメモリ部1602とを備える。なお、演算部1601及びメモリ部1602は、上記第1の実施形態における演算部101及び、メモリ部102と同様としてよいので、詳細な説明は省略する。なお、図16においては、解析対象装置100と、再現対象装置1600とを別々の装置として記載しているが、本実施形態はこれには限定されない。解析対象装置100と、再現対象装置1600は同じ装置として構成されてもよい。
次に、本実施形態における再現部1605について説明する。再現部1605は、データリーダ1609と、プレーヤ1608と、再現指示部1607とを有する。以下それぞれの構成要素について説明する。
まず、本実施形態における再現指示部1607について説明する。再現指示部1607は、データリーダ1609、及び、プレーヤ1608と通信可能に接続される。
再現指示部1607は、例えば、図示しないユーザや管理者等からの要求に応じて、プレーヤ1608に対して、解析対象装置100における特定の演算状態の再現を指示する要求である再現要求を送信する。この場合、再現指示部1607は、例えば、再現対象である解析対象装置100の演算状態を特定可能な再現対象特定情報を、上記再現要求に設定する。そのような再現対象特定情報は、例えば、解析対象装置100の演算状態を再現したいタイミング(あるいは時刻)を表す情報や、上記説明したスナップショットに対応するラベル情報であってもよいが、これには限定されない。
次に、本実施形態におけるプレーヤ1608について説明する。本実施形態におけるプレーヤ1608は、データリーダ1609、及び、再現指示部1607と通信可能に接続される。また、プレーヤ1608は、再現対象装置1600における演算部1601、及び、メモリ部1602に通信可能に接続される。
プレーヤ1608は、例えば、上記再現指示部1607からの要求(再現要求)に応じて、高速リポジトリ109に保存されたデータを演算部1601及びメモリ部1602に展開(設定)する。これにより、プレーヤ1608は、解析対象装置100の演算状態を、再現対象装置1600において再現する。
具体的には、プレーヤ1608は、まず、再現指示部1607から受信した再現要求に含まれる再現対象特定情報を抽出する。そして、プレーヤ1608は、当該再現対象特定情報をデータリーダ1609に送信して、採取対象データの再現を要求する。例えば、再現対象特定情報に時刻情報が設定されている場合、プレーヤ1608は、当該時刻における採取対象データを再現するよう、データリーダ1609に要求する。また、例えば、再現対象特定情報にラベル情報が設定されている場合、当該ラベル情報が付与された保存データに基づいて、採取対象データを再現するよう、データリーダ1609に要求する。データリーダ1609における採取対象データの再現処理については後述する。
プレーヤ1608は、データリーダ1609において再現された採取対象データを、データリーダ1609から受信する。以下、再現された採取対象データを「再現用データ」と称する場合がある。
そして、プレーヤ1608は、当該再現用データに含まれる、メモリ部102の記憶データをメモリ部1602に設定する。当該記憶データに、メモリ部102において記憶される領域を特定可能な情報(アドレス等)が含まれている場合、プレーヤ1608は、係る情報を基に当該記憶データをメモリ部1602に設定する。
また、プレーヤ1608は、当該再現された再現用データに演算部101の状態保持データが含まれる場合、係る状態保持データを演算部1601に設定する。
なお、上記第1の実施形態において説明したように、データライタ107は、採取ポリシ107aに基づいて、ディスパッチャ105において採取された採取対象データの一部を保存データとして高速リポジトリ109に保存する場合がある。即ち、この場合、係る保存データからは、ディスパッチャ105において取得された、元の送受信対象データの一部のみが再現用データとして再現可能である。
この場合、再現用データのみでは、解析対象装置100の動作を完全に再生できない場合がある。しかしながら、少なくとも、再現用データに含まれるデータに基づいて、解析対象装置の特定のタイミングにおける演算状態を解析することが可能である。また、元の採取対象データから欠落している領域の種類や内容によっては、再現対象装置1600に再現用データを展開した際に、解析対象装置100の動作の一部または全部を再生可能である場合がある。
これより、本実施形態におけるプレーヤ1608は、再現用データが元の採取対象データの一部のみを再現可能である場合にも、データリーダ1609において再現された採取可能データを演算部1601及びメモリ部1602に展開してよい。
なお、演算部1601に対する状態保持データの具体的な設定方法は、当該演算部1601の構成に応じて適宜選択してよい。例えば、プレーヤ1608は、演算部1601の特定の入出力ポートを介して、状態保持データを設定してもよい。同様に、メモリ部1602に対する記憶データの具体的な設定方法は、当該メモリ部1602の構成に応じて適宜選択してよい。例えば、プレーヤ1608は、通信バス1603を介してメモリ部1602にそれぞれ必要なデータを流し込んでもよい。また、演算部1601及びメモリ部1602を仮想デバイスとして構成した場合、プレーヤ1608は、仮想化基盤において提供される機能を利用してもよい。
また、プレーヤ1608は、演算部1601を制御することにより、処理速度を遅延させてもよい。より具体的には、プレーヤ1608は、例えば、演算部1601に対して所定のコマンドを送付する、あるいは、演算部1601における所定のレジスタに特定の値を設定することにより、演算部1601の動作周波数(動作クロック)を低くする。また、演算部1601が仮想的な演算装置として提供される場合、プレーヤ1608は、仮想化基盤において提供される機能を用いて、当該演算部1601の動作周波数を変更してもよい。
このように、演算部1601の処理速度を遅くして(低減して)採取対象データを展開することにより、採取対象データが展開された状態における再現対象装置1600の動作を解析することが容易になる。これにより、例えば、再現対象装置1600の動作を解析するために、再現対象装置1600において実行される特定のプロセスを、デバッガ等を用いて追跡することが容易になる。
なお、本実施形態におけるプレーヤ1608は、特定の時点から時系列に順次再現用データをデータリーダ1609に要求してもよい。プレーヤ1608は、順次取得した再現用データを演算部1601及びメモリ部1602に展開してもよい。
また、本実施形態におけるプレーヤ1608は、再現用データを演算部1601及びメモリ部1602に展開した後、演算部1601が処理を実行するよう制御してもよい。この場合、再現用データが展開された状態から、再現対象装置1600を動作させながら、演算状態を解析することが可能である。
次に、本実施形態におけるデータリーダ1609について説明する。データリーダ1609は、高速リポジトリ109、及び、解析ストレージ110と通信可能に接続される。また、データリーダ1609は、プレーヤ1608、及び、再現指示部1607と通信可能に接続される。また、データリーダ1609は採取ポリシ107aを参照可能に構成される。この場合、データリーダ1609は、データライタ107と通信可能に接続され、データライタ107が有する採取ポリシ107aを参照してもよく、データライタ107から採取ポリシ107aを受信(取得)してもよい。
また、データリーダ1609は、必要に応じて、マッピングデータ106aを参照可能に構成される。この場合、データリーダ1609は、データマッパ106と通信可能に接続され、データライタ107が有するマッピングデータ106aを参照してもよく、データライタ107からマッピングデータ106aを受信(取得)してもよい。
データリーダ1609は、再現指示部1607、あるいは、プレーヤ1608からの要求に応じて、解析ストレージ110に保存されている保存データを、高速リポジトリ109に復元(リストア)する。また、データリーダ1609は、高速リポジトリに復元した保存データをもとに、上記第1の実施形態において説明した採取対象データを再現する。以下データリーダ1609の動作について説明する。
まず、データリーダ1609は、プレーヤ1608から採取対象データの再現要求を受け付け、当該採取対象データに相当する保存データを抽出する。具体的には、データリーダ1609は、解析ストレージ110に保存された保存データに付与された記録タイミング情報702を確認し、プレーヤ1608から指定された特定の時刻に最も近い時刻以降の保存データを抽出する(読み出す)。なお、プレーヤ1608から特定のスナップショットを表すラベル情報が指定された場合には、当該ラベル情報が付与された保存データを抽出してもよい。そして、データリーダ1609は、上記抽出した保存データを、高速リポジトリ109に書き込む(リストアする)。
この場合、データリーダ1609は、記録タイミング情報702に、上記抽出した(リストアした)保存データよりも後の時刻が設定されている保存データを時系列に順次読み込んで、高速リポジトリ109に順次リストアしてもよい。
なお、データリーダ1609は、例えば、採取ポリシ107aを参照し、各タグ情報601aに関連付けられたリポジトリ領域特定情報601bによって特定される領域の空き容量が、所定の割合以下になるまで、保存データをリストアし続けてもよい。
データリーダ1609は、保存データがリストアされた高速リポジトリ109を参照して、記録タイミング情報702に特定の時刻情報(プレーヤ1608から指定された、再現対象の時刻情報)が設定された保存データを収集する。データリーダ1609は、収集された保存データを構成するタグ情報701と、保存対象データ703とを用いて、再現用データを生成する。即ち、データリーダ1609は、特定の時点における、解析対象装置100の演算処理の状態を再現可能な再現用データを生成する。
また、データリーダ1609は、特定のラベル(プレーヤ1608から指定された、再現対象のラベル情報)が付与された保存データを収集し、収集された保存データにおける保存対象データ703を用いて、再現用データを生成してもよい。
なお、データリーダ1609は、再現用データを生成する際、必要に応じて、マッピングデータ106aを参照してもよい。
ここで、具体例として、リストアした高速リポジトリ109に、図7に例示するような保存データが保存されており、マッピングデータ106aに図4に例示するデータが設定されていることを仮定する。また、プレーヤ1608が、「時刻10」を表す再現対象特定情報を含む再現要求を、データリーダ1609に送信したことを仮定する。
まず、データリーダ1609は、記録タイミング情報として「時刻10」が設定されている保存データを抽出する。この場合、保存対象データ703が「データA10」、「データB10」、「データC10」のデータが抽出される。
データリーダ1609は、マッピングデータ106aに基づいて、各保存データにおけるタグ情報701と、保存対象データ703とを用いて、再現用データを生成する。この場合、データリーダ1609は、マッピングデータ106aを参照して、上記抽出した保存データに設定されているタグ情報701に対応するタグ情報302を特定する。この場合タグ情報は「A」、「B」、「C」である。
次に、データリーダ1609は、当該特定したタグ情報302に関連付けられたメモリ領域特定情報301を抽出する。そして、データリーダ1609は、当該メモリ領域特定情報301により指定される領域に、保存対象データ703が配置されるよう、再現用データを生成する。即ち、データリーダ1609は、再現用データにおける開始アドレス「0」からサイズ「1024」の範囲に、「データA10」を設定する。また、データリーダ1609は、再現用データにおける開始アドレス「1024」からサイズ「512」の範囲に、「データB10」を設定する。また、データリーダ1609は、再現用データにおける開始アドレス「1536」からサイズ「512」の範囲に、「データC10」を設定する。
ここで、保存対象データ703に含まれる記憶データに、メモリ部102におけるアドレスが含まれている場合、係るアドレスを基に再現用データを生成してもよい。
上記説明した図16に例示する構成においては、再現部1605は、解析装置1604の一部として設けられているが、本実施形態はこれには限定されない。本実施形態における再現部1605は、例えば、図17に例示するように、独立した再現装置1701として構成してもよい。
また、図18に例示するように、上記第1の実施形態における解析装置104の各構成要素が、再生装置の構成要素を兼ねるように構成してもよい。この場合、例えば、第1の実施形態におけるディスパッチャ105に相当するディスパッチャ1801は、プレーヤ1608の機能を兼ね備えるよう構成されてもよい。また、例えば、第1の実施形態におけるデータライタ107に相当するデータライタ1802は、データリーダ1609の機能を兼ね備えるよう構成されてもよい。また、例えば、第1の実施形態における記録管理部108に相当する記録管理部1803は、再現指示部1607の機能を兼ね備えるよう構成されてもよい。
次に、上記のように構成された本実施形態における解析装置の動作について説明する。以下においては、特に再現部1605の動作について、図19に例示するフローチャートを参照して説明する。
まず、図示しないユーザや管理者等が再現指示部1607に対して、特定のタイミングにおける解析対象装置100の演算状態を、再現対象装置1600において再現するよう要求する。
再現指示部1607は、当該要求に応じて、プレーヤ1608に対して解析対象装置100における特定の演算状態の再現を指示する再現要求を送信する(ステップS1901)。
次に、プレーヤ1608が、データリーダ1609に対して、特定のタイミングにおける再現用データを要求する(ステップS1902)。この場合、プレーヤ1608は、データリーダ1609に対して、再現される演算状態を特定可能な情報(特定のタイミングを表す時刻の情報や、ラベル情報等)をデータリーダ1609に送信する。
ステップS1902における要求を受信したデータリーダ1609は、解析ストレージ110から、保存データを高速リポジトリ109に読み込む(ステップS1903)。この場合、データリーダ1609は、ステップS1902において指定された特定のタイミングに最も近い時刻に取得あるいは保存された保存データを高速リポジトリ109に読み込む。なお、データリーダ1609は、特定のラベルが付与された保存データを、高速リポジトリ109に読み込む。
次に、データリーダ1609は、高速リポジトリ109に読み込んだ保存データに基づいて再現用データを生成し、生成した再現用データをプレーヤに送信する(ステップS1904)。保存データからの再現用データを生成する具体的な方法は、上記説明した通りである。
次に、プレーヤ1608は、上記ステップS1904においてデータリーダ1609から受信した再現用データを、演算部1601、および、メモリ部1602に展開(設定)する(ステップS1905)。
なお、本実施形態における再現部1605は、上記ステップS1901乃至ステップS1905を連続して繰り返してもよい。この場合、特定のタイミング以降の保存データを連続的に高速リポジトリが読み出されることになり、再現対象装置1600において、解析対象装置100の動作が連続的に再現される。
上記のように構成された本実施形態における再現部1605は、高速リポジトリ109あるいは解析ストレージ110に保存された保存データに基づいて、特定のタイミングにおける解析対象装置100の演算状態を、再現対象装置1600に再現可能である。これにより、例えば、インシデント発生等の特定のタイミングにおける解析対象装置100の演算処理の状態を、他の再現対象装置1600において解析することが可能である。
また、再現部1605は、再現対象装置1600における演算部1601の動作を遅らせる(動作クロックを低くする)ことが可能である。これによって、再現対象装置1600に再現した演算状態を解析することが容易になる。
また、高速リポジトリ109、及び、解析ストレージ110には、上記第1の実施形態における解析装置104と同様の構成を有する解析部1606によって、保存データが保存される。これより、本実施形態における解析装置は、上記第1の実施形態と同様の効果を奏する。
なお、上記の説明においては、再現指示部1607がプレーヤ1608に対して、再現要求を通知しているが、本実施形態はこれには限定されない。例えば、再現指示部1607は、データリーダ1609に対して再現要求を通知してもよい。データリーダ1609は、係る再現要求に基づいて再現データを生成し、プレーヤ1608に当該再現データを通知してもよい。即ち、再現要求を、再現部1605におけるどの構成要素が解釈するかは適宜選択してよい。
<第2の実施形態の変形例>
次に、上記説明した第2の実施形態に対する変形例について説明する。本変形例は、上記第2の実施形態に対して、再現対象装置1600が複数台存在する点において異なる。本変形例におけるその他の構成は、上記第2の実施形態と同様としてよい。本変形例においては、図20に例示するように、プレーヤ1608が複数存在する。プレーヤ1608自体の構成は、上記第2の実施形態と同様としてよいので、詳細な説明は省略する。なお、図20においては、説明の為、図16に例示する解析装置2001の一部の構成要素が図示されていない。図20において図示されない構成要素は、図16に例示した構成要素と同様としてよいので、詳細な説明は省略する。
本実施形態におけるデータリーダ2003は、複数のプレーヤ1608からの要求に応じて、それぞれのプレーヤ1608に対して、再現用データを提供する。この場合、データリーダ2003は、複数のプレーヤ1608に同じ再現用データを提供してもよく、異なる再現用データを提供してもよい。
具体的には、図19に例示するフローチャートにおいて、ステップS1902が複数のプレーヤ1608において実行される。データリーダ2003には、複数のプレーヤ1608から再現用データの要求が通知される。
データリーダ2003は、図19に例示するステップS1904において、再現用データを複数のプレーヤ1608にそれぞれ送信する。
その他の処理は、上記第1の実施形態と同様としてよいので、詳細な説明は省略する。
上記のように構成された本変形例における再現部2002によれば、解析対象装置100における特定の演算状態を、複数の再現対象装置1600に再現することが可能である。なぜならば、複数の再現対象装置1600毎にプレーヤ1608が設けられ、複数のプレーヤ1608に対して、データリーダ2003が再現用データを送信するからである。
このため、本変形例による再現部2002によれば、同時に複数の再現対象装置1600を用いて解析対象装置100の演算処理の状態を解析することが可能であり、解析処理に要する時間を短縮可能である。
なお、図20に例示する構成においては、2台の再現対象装置1600が例示されているが、本実施形態はこれには限定されず、任意の台数の再現対象装置1600を採用してよい。
<第3の実施形態>
次に、本願発明の第3の実施形態について説明する。
まず、図21を参照して、本実施形態における解析装置2104について説明する。図21は本実施形態における解析装置2104の機能的な構成を例示する、ブロック図である。
解析対象システム2100は、第1の処理部2101と、当該第1の処理部と通信可能に接続された第2の処理部2102とを有する。なお、第1の処理部2101と、第2の処理部2102との間は、任意の通信バス2103により通信可能に接続されてもよい。
第1の処理部2101は、任意の処理を実行し、当該処理の状態を第1の状態情報2101aとして記憶する。なお、本実施形態において、第1の状態情報2101aは、第1の処理部2101の外部から取得または設定可能である。
第2の処理部2102は、任意の処理を実行し、当該処理の状態を第2の状態情報2102aとして記憶する。なお、本実施形態において、第2の状態情報2102aは、第2の処理部2102の外部から取得または設定可能である。
係る第1の処理部、及び、第2の処理部は、例えば、任意の通信回線(通信バス)を介して通信可能に接続された任意のデバイスであってもよい。より具体的には、第1の処理部、及び、第2の処理部は、例えば、PCI(Peripheral Component Interconnect)、SCSI(Small Computer System Interface)、USB(Universal Serial Bus)等の通信バスにより接続された、各種デバイスであってもよい。また、第1の処理部、及び、第2の処理部は、例えば、無線あるいは有線の通信ネットワークにより通信可能に接続された、通信機能を有するデバイスであってもよい。係る通信ネットワークとしては、例えばLAN(Local Area Network)や、Internetなどが採用されてもよい。
本実施形態における解析装置2104は、上記のように構成された解析対象システム2100の状態を解析する解析装置である。解析装置2104は、ディスパッチャ2105と、データマッパ2106と、データライタ2107と、採取ポリシ2108と、第1の記憶装置2109とを備える。以下、それぞれの構成要素について説明する。
本実施形態におけるディスパッチャ2105は、上記第1の処理部2101と、第2の処理部2102と通信可能に接続され、当該第1の処理部と、当該第2の処理部との間で送受信される対象であるデータ(送受信対象データ)を取得する。
ディスパッチャ2105は、通信バス2103を介して、当該送受信対象データを取得してもよい。また、ディスパッチャ2105は、第1の処理部2101、及び、第2の処理部2102から、直接送受信対象データを取得してもよい。
具体的には、ディスパッチャ2105は、例えば、PCIバス等の通信バスに接続された各種デバイスである第1の処理部2101と、第2の処理部2102との間で送受信される各種データやコマンドを取得してもよい。また、ディスパッチャ2105は、例えば、任意の通信ネットワークに接続されたデバイスである第1の処理部2101と、第2の処理部2102との間で送受信される各種データを取得してもよい。
ディスパッチャ2105は、上記取得したデータに基づいて、解析対象システム2100の状態を再現可能なデータである、採取対象データを生成する。ここで、本実施形態における解析対象システム2100の状態は、第1の状態情報2101a、及び、第2の状態情報2102aの少なくとも何れかを用いて表すことが可能であるとする。即ち、ディスパッチャ2105が生成する採取対象データは、特定の時点における第1の状態情報2101a、及び、第2の状態情報2102aの少なくともいずれかを含む。
次に、本実施形態におけるデータマッパ2106について説明する。データマッパ2106は、上記ディスパッチャ2105において生成された上記採取対象データに含まれる1以上の領域に対して、当該領域を識別可能なタグ情報を付与する。
データマッパ2106は、例えば、上記第1の実施形態において説明したデータマッパ106と同様に、採取対象データに含まれる第1の状態情報2101aを複数の領域に分類する。具体的には、データマッパ2106は、第1の状態情報2101aが第1の処理部2101において保存される記憶領域の範囲に基づいて、上記採取対象データに含まれる第1の状態情報2101aを複数の領域に分類する。そして、データマッパ2106は、当該分類された各領域ごとにタグ情報を付与する。同様に、データマッパ2106は、例えば、採取対象データに含まれる第2の状態情報2102aが、第2の処理部2102において保存される記憶領域の範囲に基づいて、上記採取対象データに含まれる第2の状態情報2102aを複数の領域に分類する。そして、データマッパ2106は、当該分類された各領域ごとにタグ情報を付与する。
また、上記に限定されず、データマッパ2106は、例えば、採取対象データの生成元である送受信対象データの種類や属性に応じて、上記採取対象データに含まれる特定の領域にタグを付与してもよい。具体的には、データマッパ2106は、例えば、送受信対象データがPCIバスにおいて送受信されるデータである場合、当該データに含まれるPCIバスにおけるコマンドの種類に応じて、上記採取対象データに含まれる特定の領域にタグ情報を付与してもよい。
また、送受信対象データが通信ネットワークにおいて送受信される通信パケットである場合、通信パケットの宛先情報に応じて、上記採取対象データに含まれる特定の領域にタグ情報を付与してもよい。なお、タグ情報が付与される特定の領域は、送受信対象データの種類に応じて、予め定められてもよい。
次に、本実施形態における採取ポリシ2108について説明する。採取ポリシ2108は、第1のポリシを有する。係る第1のポリシは、上記タグ情報に基づいて、上記タグ情報が付与された上記採取対象データを所定の記憶容量を有する第1の記憶装置2109に保存する手順を規定するポリシである。採取ポリシ2108は、データライタ2107から参照可能である。
採取ポリシ2108には、特定のタグ情報が付与された採取対象データを多く保存し、他のタグ情報が付与された採取対象データを少なく保存するような保存方法が規定されてもよい。
次に、本実施形態におけるデータライタ2107について説明する。データライタ2107は、第1のポリシに基づいて、データマッパ2106により上記タグ情報が付与された1以上の領域を、第1の記憶装置2109に保存する。
上記のように構成された採取ポリシ2108及びデータライタ2107により、解析装置2104は、例えば、採取対象データにおける特定の領域だけを記録することが可能である。また、解析装置2104は、例えば、採取対象データにおける領域毎に、保存方法を変更可能である。即ち、これにより、解析装置2104は、第1の記憶装置2109に保存される保存データのサイズや保存方法を調整することが可能である。また解析装置2104は、第1の記憶装置2109の記憶容量を節約して、より多くの保存データを蓄積することが可能である。
次に、本実施形態における第1の記憶装置2109について説明する。第1の記憶装置2109は、所定の記憶容量を有する記憶装置である。
以上のように構成された本実施形態における解析装置2104は、第1の処理部2101及び第2の処理部2102との間で送受信される対象である送受信対象データから、解析対象システム2100の状態を表す採取対象データを生成する。そして、解析装置2104は、当該採取対象データを保存する方法を規定した採取ポリシ2108に基づいて、当該採取対象データの少なくとも一部を、所定の容量を有する第1の記憶装置2109に記憶する。
解析装置2104は、採取対象データの領域毎に保存方法を変更することが可能であることから、所定の記憶容量を有する第1の記憶装置2109の記憶領域を有効に利用可能である。即ち、本実施形態における解析装置2104は、限られた記憶容量の記憶装置を用いて、解析対象システム2100の状態を再現可能なデータを、より多く保存することが可能である。
なお、本実施形態における解析装置2104は、上記各実施形態における解析装置(104、1604、2001)と組み合わせることも可能である。即ち、上記各実施形態における解析装置(104、1604、2001)により、解析対象装置(解析対象システム)を構成する演算部及びメモリ部における演算処理の状態を再現可能なデータが保存される。これに加えて、本実施形態における解析装置2104により、解析対象装置(解析対象システム)を構成する、他の構成要素(演算部、メモリ部以外のデバイス等)の状態を再現可能なデータが保存される。
これにより、例えば、上記各実施形態における解析装置が、解析対象装置(解析対象システム)における演算処理の状態を再現した際に、当該解析対象装置における他の構成要素の状態を併せて再現可能である。この場合、解析対象装置における演算部、メモリ部、及び他の構成要素の状態が再現されることから、解析対象装置の演算状態がより正確に再現可能である。
<第4の実施形態>
次に、本願発明の第4の実施形態について説明する。
まず、図22を参照して、本実施形態における解析対象装置2200、及び、解析装置2204について説明する。
解析対象装置2200は、演算部2201と、当該演算部と通信可能に接続されたメモリ部2202とを有する。解析対象装置は、演算部2201と、メモリ部2202とを用いて任意の演算処理を実行する。
解析装置2204は、ディスパッチャ2205と、データマッパ2206と、データライタ2207と、第1のポリシ2208を保持する保持部と、第1の記憶装置2209とを備える。以下、それぞれの構成要素について説明する。
まず、本実施形態におけるディスパッチャ2205は、上記解析対象装置2200に通信可能に接続される。この場合、ディスパッチャ2205は、上記演算部2201と、上記メモリ部2202とに通信可能に接続されてもよい。ディスパッチャ2205は、上記演算部2201と、上記メモリ部2202との間で送受信される対象であるデータ(「送受信対象データ」)に基づいて、上記解析対象装置2200における演算処理の状態の少なくとも一部を再現可能なデータである採取対象データを生成する。
なお、本実施形態におけるディスパッチャ2205は、上記第1の実施形態におけるディスパッチャ105と同様としてもよい。
次に、本実施形態におけるデータマッパ2206について説明する。データマッパ2206は、上記ディスパッチャ2205において生成された上記採取対象データに含まれる1以上の領域に対して、当該領域を識別するためのタグ情報を付与する。なお、データマッパ2206は、ディスパッチャ2205から上記採取対象データを取得してもよい。また、ディスパッチャ2205が、上記採取対象データをデータマッパ2206に設定してもよい。
本実施形態におけるデータマッパ2206は、例えば、上記第1の実施形態におけるデータマッパ106と同様としてもよい。
次に、本実施形態における第1のポリシ2208について説明する。第1のポリシ2208は、タグ情報を用いて、所定の記憶容量を有する第1の記憶装置2209に採取対象データを保存する手順を規定するポリシである。第1のポリシ2208は、データライタ2207から参照可能であってもよい。
本実施形態における第1のポリシ2208は、例えば、上記第1の実施形態における採取ポリシ107aと同様としてもよい。
次に、本実施形態におけるデータライタ2207について説明する。データライタ2207は、第1のポリシに基づいて、上記1以上の領域を、第1の記憶装置2209に保存する。データライタ2207は、上記データマッパ2206から採取対象データを取得してもよい。また、上記データマッパ2206が、データライタ2207に対して、採取対象データを設定してもよい。
本実施形態におけるデータライタ2207は、例えば、上記第1の実施形態におけるデータライタ107と同様としてもよい。
次に、本実施形態における第1の記憶装置2209について説明する。第1の記憶装置2209は、所定の記憶容量を有する記憶装置である。第1の記憶装置2209は、上記データライタ2207から保存対象のデータを取得してもよい。また、上記データライタ2207が、第1の記憶装置2209に対して、保存対象のデータを設定(書き込み)してもよい。
本実施形態における第1の記憶装置2209は、例えば、上記第1の実施形態における高速リポジトリ109と同様としてもよい。
なお、本実施形態において、第1のポリシ2208、及び、第1の記憶装置2209は、解析装置2204と通信可能に接続された、任意の外部の装置により提供されてもよい。即ち、第1のポリシ2208、及び、第1の記憶装置2209をどこに配置するかは、適宜定めてよい。
上記のように構成された本実施形態における解析装置2204は、演算部2201及びメモリ部2202との間で送受信される対象である送受信対象データから、解析対象装置2200の状態を表す採取対象データを生成する。そして、解析装置2204は、当該採取対象データを保存する方法を規定した第1のポリシ2208に基づいて、当該採取対象データに含まれる1以上の領域を、所定の容量を有する第1の記憶装置2209に記憶(保存)する。
本実施形態における解析装置2204は、第1のポリシ2208に基づいて、採取対象データに含まれる領域毎に保存方法を変更することが可能である。これより、解析装置2204は、所定の記憶容量を有する第1の記憶装置2209の記憶領域を有効に利用可能である。即ち、本実施形態における解析装置2204は、限られた記憶容量の記憶装置を用いて、解析対象装置2200の状態を再現可能なデータを、より多く保存することが可能である。
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
以下の説明において、解析装置(符号104、符号1604、符号2104、及び、符号2204)をまとめて、単に「解析装置」と称する場合がある。また、当該データ解析装置の各構成要素をまとめて、単に「解析装置の構成要素」と称する場合がある。係る解析装置の構成要素には、例えば、ディスパッチャ(符号105、符号1801、符号2105、符号2205等)が含まれてもよい。係る解析装置の構成要素には、例えば、データマッパ(符号106、符号2106、符号2206等)が含まれてもよい。係る解析装置の構成要素には、例えば、データライタ(符号107、符号1301、符号1802、符号2107、符号2207等)が含まれてもよい。係る解析装置の構成要素には、例えば、採取ポリシ(符号107a、符号1301a、符号2108)、あるいは、第1のポリシ(符号2208等)が含まれてもよい。係る解析装置の構成要素には、例えば、高速リポジトリあるいは第1の記憶装置(符号109、符号2109、符号2209)が含まれてもよい。係る解析装置の構成要素には、例えば、解析ストレージ(符号110)、プレーヤ(符号1608)、データリーダ(符号1609、符号2003)、再現指示部(符号1607)が含まれてもよい。
上記各実施形態において説明した解析装置は、専用のハードウェア装置により構成されてもよい。その場合、上記各図に示した各構成要素は、一部または全部を統合したハードウェア(処理ロジックを実装した集積回路等)として実現されてもよい。
例えば、各構成要素がハードウェアにより実現される場合、それらの構成要素の機能を提供可能な集積回路は、SoC(System−on−a−chip)等により実装されてもよい。この場合、例えば、各構成要素が保持するデータは、SoCとして統合されたRAM領域やフラッシュメモリ領域に記憶されてもよい。
また、この場合、各構成要素を接続する通信回線としては、周知のの通信バスが採用されてもよい。また、各構成要素を接続する通信回線はバス接続に限らず、それぞれの構成要素の間は、ピアツーピアで接続されてもよい。
また、上述した解析装置は、図23に例示するようなハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。
図23における演算装置2301は、汎用のCPU(Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置2301は、例えば後述する不揮発性記憶装置2303に記憶された各種ソフトウェア・プログラムを記憶装置2302に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。
記憶装置2302は、演算装置2301から参照可能な、RAM(Random Access Memory)等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置2302は、揮発性のメモリ装置であってもよい。
不揮発性記憶装置2303は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置2303は、各種ソフトウェア・プログラムやデータ等を記録(保存)してもよい。
ネットワークインタフェース2306は、通信ネットワークに接続するインタフェース装置である。ネットワークインタフェース2306としては、例えば、有線及び無線のLAN(Local Area Network)接続用インタフェース装置等が採用されてもよい。
例えば、上記各実施形態における解析装置は、図示しない当該解析装置のユーザが使用する監視装置(符号112)、あるいは、センサ(符号111)と、上記ネットワークインタフェース2306を介して通信可能に接続されていてもよい。
外部記憶装置2304は、例えば、後述する外部記憶媒体2305に対するデータの読み込みや書き込みを処理する装置である。
外部記憶媒体2305は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記憶媒体である。
入出力インタフェース2307は、外部装置との間の入出力を制御する装置である。
例えば、上記各実施形態においては、センサ111からの入力は、入出力インタフェース2307を介して、記録管理部(符号108等)に入力されてもよい。
上述した各実施形態を例に説明した本発明は、例えば、図23に例示したハードウェア装置により解析装置を構成し、係る装置に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより実現されてもよい。この場合、係る装置に対して供給したソフトウェア・プログラムを、演算装置2301が実行することによって、本願発明が達成されてもよい。
上述した各実施形態において、上記各図に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。但し、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
例えば、図1、図2、図12、図13、図16、図17、図18、図20、図21、及び、図22に例示した各部をソフトウェアモジュールとして実現する場合、これらのソフトウェアモジュールは、不揮発性記憶装置2303に記憶されてもよい。そして、演算装置2301が、それぞれの処理を実行する際に、これらのソフトウェアモジュールを記憶装置2302に読み出してもよい。
また、これらのソフトウェアモジュールは、共有メモリやプロセス間通信等の適宜の方法を用いて、相互に各種データを伝達できるように構成されてもよい。このような構成により、これらのソフトウェアモジュールの間を、相互に通信可能に接続することが可能である。
更に、上記各ソフトウェア・プログラムは外部記憶媒体2305に記録されてもよい。上記解析装置は、当該解析装置等の出荷段階、あるいは運用段階等において、外部記憶装置2304を介して、当該ソフトウェア・プログラムが不揮発性記憶装置2303に格納されるよう構成されてもよい。
また、上記各実施形態において説明した、マッピングデータ(符号106a)、採取ポリシ(符号107a、1301a、2108)、及び、第1のポリシ(符号2208等)は、適切なファイルシステムや、データベース等を用いて、記憶装置2302や、不揮発性記憶装置2303に記憶されてもよい。
なお、上記の場合において、上記解析装置への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更または改良を加えることが可能であることは明らかである。そのような場合、係る変更または改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。また、上記説明した各実施形態を組み合わせた実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、請求の範囲に記載した事項から明らかである。