JP5642725B2 - 性能分析装置、性能分析方法及び性能分析プログラム - Google Patents

性能分析装置、性能分析方法及び性能分析プログラム Download PDF

Info

Publication number
JP5642725B2
JP5642725B2 JP2012036840A JP2012036840A JP5642725B2 JP 5642725 B2 JP5642725 B2 JP 5642725B2 JP 2012036840 A JP2012036840 A JP 2012036840A JP 2012036840 A JP2012036840 A JP 2012036840A JP 5642725 B2 JP5642725 B2 JP 5642725B2
Authority
JP
Japan
Prior art keywords
log
thread
performance analysis
unit
executed
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.)
Expired - Fee Related
Application number
JP2012036840A
Other languages
English (en)
Other versions
JP2013171542A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012036840A priority Critical patent/JP5642725B2/ja
Publication of JP2013171542A publication Critical patent/JP2013171542A/ja
Application granted granted Critical
Publication of JP5642725B2 publication Critical patent/JP5642725B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

この発明は、性能分析装置、性能分析方法及び性能分析プログラムに関する。
近年、Google(登録商標)の検索システムに代表される、大量のサーバを並べて、大規模データを並列分散処理する大規模分散処理技術の研究開発が盛んに行われている。この技術では、大量のサーバに個々の小規模な処理を実行させることで、全体として大規模な処理を可能としていること、データ処理性能の向上やデータ蓄積容量の増大がサーバの台数の追加で実現できることが特長である。
また、この技術では、大量のサーバが用いられていることから、サーバの故障に対して柔軟に対応できるようにデザインされており、例えば、サーバ故障時に当該サーバを自動的に切り離し、全体の処理に影響がないようにするフォールトトレラント(Fault tolerant)性が実現されている。
一方で、大規模分散処理システムにおいては、利用/運用時にある特定の条件下でのみ一部の箇所で性能が劣化し、結果として全体の性能が劣化するサイレント故障と呼ばれるケースが発生する。サイレント故障の原因究明方法は困難であり、大規模分散処理システムのおける大きな課題の一つになっている。これに対して、サーバ・プログラム間の処理の流れをトレースして、時間の長い処理を抽出する技術が知られている。
P. Barham, A. Donnelly, R. Isaacs and R. Mortier.Using Magpie for request extraction and workload modelling.USENIX Association OSDI'04:6th Symposium on Operating Systems Design and Implementation. Marcos K. Aguilera, Jeffrey C. Mogul, Janet L. Wiener, Patrick Reynolds and Athicha Muthitacharoen. Performance Debugging for Distributed Systems of Black Boxes.In the proceedings of the 19th ACM Symposium on Operating Systems Principles, October 2003. R. Fonseca, G. Porter, R. H. Katz, S. Shenker, and I. Stoica.X-Trace: A Pervasive Network Tracing Framework.In Proceedings of USENIX NSDI, 2007. B. H. Sigelman, L. A. Barroso, M. Burrows, P. Stephenson, M. Plakal, D. Beaver, S. Jaspan, and C. Shanbhag. Dapper, a Large-Scale Distributed Systems Tracing Infrastructure.In Google Technical Report dapper-2010-1, April 2010.
しかしながら、上述した従来技術では、大規模分散処理システムにおいて、性能が劣化している箇所を必ずしも特定することができない場合があった。具体的には、上述した従来技術では、サーバ・プログラム間の処理の流れをトレースする際にデータが欠損してしまい、性能が劣化している箇所を必ずしも特定することができない場合があった。また、上述した従来技術では、プログラム間の通信を指定のインターフェースに適合するように変更しなければならず、性能が劣化している箇所を必ずしも特定することができない場合があった。
そこで、本願に係る技術は、上述した従来技術の問題に鑑みてなされたものであって、大規模分散処理システムにおいて、性能が劣化している箇所を容易に特定することを可能にする性能分析装置、性能分析方法及び性能分析プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本願に係る性能分析装置は、大規模分散処理システムにおいて、システムコールに応じて実行されたデータの入出力の情報を取得する取得部と、前記取得部によって取得されたデータの入出力の情報を用いて、当該データの入出力によって実現される処理ごとに、処理の開始から終了までに要した時間を抽出する抽出部と、前記抽出部によって抽出された時間に基づいて遅延している処理を抽出し、当該抽出した処理に関わるデータの入出力が実行された箇所を特定する特定部とを備えたことを特徴とする。
本願に係る可視化装置は、大規模分散処理システムにおいて性能が劣化している箇所を容易に特定することを可能にする。
図1は、実施例1に係る性能分析装置の構成の一例を示す図である。 図2は、実施例1に係るログ収集部(K)による処理の一例を示す図である。 図3Aは、実施例1に係るログ収集部(K)によって収集されるシステムコールの呼出し直前の情報の一例を示す図である。 図3Bは、実施例1に係るログ収集部(K)によって収集されるシステムコールの呼出し直後の情報の一例を示す図である。 図4は、実施例1に係るログ収集部(U)120によって格納されるI/Oログの格納先を決定するための対応テーブルの一例を示す図である。 図5は、実施例1に係るログ蓄積部によって蓄積されるI/Oログのデータ構造の一例を示す図である。 図6Aは、実施例1に係るログ蓄積部によって蓄積されるI/O集約ログのデータ構造の一例を示す図である。 図6Bは、実施例1に係るログ蓄積部によって蓄積されるネットワーク送受信ログのデータ構造の一例を示す図である。 図7は、第1の実施例に係る抽出部によって作成される作業領域の第1の例を模式的に示す図である。 図8は、第1の実施例に係る抽出部によって作成される作業領域の第2の例を模式的に示す図である。 図9は、実施例1に係る抽出部による第1の処理の一例を模式的に示す図である。 図10は、実施例1に係る抽出部による第2の処理の一例を模式的に示す図である。 図11は、実施例1に係る抽出部による第3の処理の一例を模式的に示す図である。 図12は、実施例1に係る抽出部による第4の処理の一例を模式的に示す図である。 図13は、実施例1に係る性能分析装置による処理の手順を示すフローチャートである。 図14は、実施例2に係る性能分析プログラムを実行するコンピュータを示す図である。
以下に添付図面を参照して、本願に係る性能分析装置、性能分析方法及び性能分析プログラムの実施例を詳細に説明する。なお、本願に係る性能分析装置、性能分析方法及び性能分析プログラムは、以下の実施例により限定されるものではない。
[実施例1に係る性能分析装置の構成]
まず、実施例に係る性能分析装置の構成について説明する。図1は、実施例1に係る性能分析装置100の構成の一例を示す図である。図1に示すように、性能分析装置100は、ネットワーク(図示せず)を介して、大規模分散処理システム200と接続され、大規模分散処理システム200の性能分析を行い、性能劣化の原因となっている箇所を特定する。なお、ネットワークは、例えば、LAN(Local Area Network)やWAN(Wide Area Network)などである。
大規模分散処理システム200は、図1に示すように、多数のサーバを有し、各サーバ上で自律的に分散処理を実行するシステムである。具体的には、大規模分散処理システム200は、ユーザに対して種々のサービスを提供するアプリケーションに係る各処理を多数のサーバで分散して処理するシステムである。
ここで、実施例1に係る大規模分散処理システム200においては、図1に示すように、システム内の全サーバにカーネルモード側のログ収集部であるログ収集部(K)110と、ユーザモード側のログ収集部であるログ収集部(U)120とが配置される。なお、ログ収集部(K)110及びログ収集部(U)120は、例えば、それぞれカーネルモジュールデーモンによって構成される。
ログ収集部(K)110は、大規模分散処理システム200の初期化時に、大規模分散処理システム200にて実行される処理を構成するプロセス(スレッド)において、ファイルへの読み書き及び大規模分散処理システム200内のネットワークへの送受信(プロセス間通信)に関するシステムコールが実行されるごとに、所望のログを収集するようにOSカーネルのバイナリーコードを上書きする。
具体的には、ログ収集部(K)110は、図1に示すように、ファイルの読み出しや、書き込み、及び、ネットワークへの送受信のシステムコールの開始直前及び終了直後の時刻、スレッド情報、システムコール引数・戻り値などの情報を収集することが可能となるようにOSカーネルのコードを上書きする。そして、ログ収集部(K)110は、システムコールが実行される際に、当該システムコールの呼出し直前の情報と呼出し直後の情報とを収集して、メモリ(例えば、カーネル内のリングバッファメモリ)に格納する。
図2は、実施例1に係るログ収集部(K)110による処理の一例を示す図である。図2に示すように、例えば、ログ収集部(K)110は、ファイルの読み書き及びネットワークへの送受信に関するシステムコールのコードの前後に当該システムコールの呼出し直前の情報と呼出し直後の情報とを収集するためのコードを挿入する。一例を挙げると、ログ収集部(K)110は、図2に示すように、対象となるシステムコールのコードの直前に、他の処理命令(レジスタの退避命令)のアドレスA1に移動する命令のコードを上書きする。
ログ収集部(K)110は、アドレスA1から順に、レジスタの退避命令、システムコールの呼出直前トレース関数の呼出し命令、レジスタ復旧命令、これまでの戻りアドレス(=A4)をメモリに退避させる退避命令、新たな戻りアドレスをA2に変更する変更命令、アドレスA1への移動命令によって上書きされたコード群のコピーした命令群、アドレスA3に移動させる命令を未使用領域に書き込む。さらに、ログ収集部(K)110は、戻りアドレスA2から順に、レジスタの退避命令、呼出直後トレース関数の呼出し命令、レジスタの復旧命令、戻りアドレスA4へ移動させる命令を未使用領域に書き込む。
これにより、OS内のカーネルにおいては、システムコールが実行させる場合、まず、アドレスA1に遷移する。そして、情報を収集するためのコードを実行することによるレジスタへの影響をなくすために、レジスタの値を一旦メモリに退避させ、その後、ログ収集部(K)110がシステムコールの呼出し直前の情報を収集する。そして、OS内のカーネルにおいては、レジスタを復旧させて、戻りアドレスをA2に変更させた後、これまでシステムコールの直前にあった命令群を実行させ、対象のシステムコールの最初の命令のアドレスA3に遷移させてシステムコールを実行させる。システムコールが実行されると、戻りアドレスA2に遷移して、レジスタの退避を実行した後、ログ収集部(K)110がシステムコールの呼出し直後の情報を収集する。そして、レジスタを復旧させた後、アドレスA4への遷移が行われる。
ログ収集部(K)110は、上述したようにシステムコールの呼出し直前及び直後の情報を収集する。図3Aは、実施例1に係るログ収集部(K)110によって収集されるシステムコールの呼出し直前の情報の一例を示す図である。例えば、ログ収集部(K)110は、図3Aに示すように、システムコール種別が「ファイル読み出し」及び「ファイル書き込み」の場合、「現在時刻・スレッド情報(プロセス名・プロセスID・スレッドID)」、「システムコールのパラメータ(File Descriptor(以降、FD)、要求サイズ、開始位置)」、「FDが指すファイルの情報(フルパス or ソケット種別・自アドレス・対向アドレス)」、「プログラムの呼び出し履歴(スレッド情報・ユーザ空間のスタックメモリからスタックトレースを行い、呼び出し履歴を取得)」などの情報を収集する。
また、ログ収集部(K)110は、図3Aに示すように、システムコール種別が「ネットワーク送信」の場合、「現在時刻・スレッド情報(プロセス名・プロセスID・スレッドID)」、「システムコールのパラメータ(FD、要求サイズ、宛先アドレス)」、「FDが指すファイルの情報(同上)」、「プログラムの呼び出し履歴(同上)」などの情報を収集する。
また、ログ収集部(K)110は、図3Aに示すように、システムコール種別が「ネットワーク受信」の場合、「現在時刻・スレッド情報(プロセス名・プロセスID・スレッドID)」、「システムコールのパラメータ(FD、要求サイズ)」、「FDが指すファイルの情報(同上)」、「プログラムの呼び出し履歴(同上)」などの情報を収集する。
図3Bは、実施例1に係るログ収集部(K)110によって収集されるシステムコールの呼出し直後の情報の一例を示す図である。例えば、ログ収集部(K)110は、図3Bに示すように、システムコール種別が「ファイル読み出し」、「ファイル書き込み」及び「ネットワーク送信」の場合、「現在時刻・スレッド情報(プロセス名・プロセスID・スレッドID)」、「システムコールのパラメータ・戻り値(データ転送サイズまたはエラーコード)」などの情報を収集する。
また、ログ収集部(K)110は、図3Bに示すように、システムコール種別が「ネットワーク受信」の場合、「現在時刻・スレッド情報(プロセス名・プロセスID・スレッドID)」、「システムコールのパラメータ・戻り値(データ転送サイズ or エラーコード・差出アドレス)」などの情報を収集する。
そして、ログ収集部(K)110は、収集した情報をI/O(Input/Output)ログとしてリングバッファメモリに格納する。ここで、ログ収集部(K)110は、ログ収集部(U)がカーネル内のリングバッファメモリにアクセスすることができるようにするために、リングバッファメモリ内に擬似ファイルを生成し、生成した擬似ファイルにI/Oログを格納する。例えば、ログ収集部(K)110は、特定のディレクトリ配下(/sys/module/<モジュール名>など)に擬似ファイルを生成する。
上述した擬似ファイルは、カーネルモードとユーザモードの間でログ等のデータを共有(送受信)するためのファイルであり、名前付パイプと同様の機能を有する。カーネルモード側のログ収集部(K)110からユーザモード側のログ収集部(U)120へのログの送信は、当該擬似ファイルを経由して実施される。すなわち、カーネルモード側のログ収集部(K)110において当該擬似ファイルにI/Oログを書き込んだ場合、ユーザモード側からアクセス可能なカーネルモード内のリングバッファメモリにI/Oログが書き込まれることになる。また、ユーザモード側のログ収集部(U)120は、当該擬似ファイルの実体であるリングバッファメモリにアクセスして、カーネルモード側のログ収集部(K)110から書き込まれたI/Oログを取得する。
上述したように、ログ収集部(K)110は、ファイルの読み書き及びネットワーク送受信に関係するシステムコールの呼出し直前の情報と、直後の情報とを用いてI/Oログを生成して、擬似ファイルに格納する。ここで、ログ収集部(K)110は、予め擬似ファイルに格納されたプロセス名一覧を参照して、I/Oログを生成するか否かを判定する。プロセス名一覧は、I/Oログを生成する対象プロセスが記述されたものであり、ログ収集部(K)110によって対象プロセスの追加・削除が実行されるものである。例えば、ログ収集部(K)110は、ログ収集部(U)120のプロセスをプロセス名一覧から削除する。これにより、ログ収集部(K)110は不要なI/Oログを生成することはなく、例えば、ログ収集部(U)120によるI/Oログの送信とログ収集部(K)110によるI/Oログの生成との無限ループを抑止することができる。
図1に戻って、ログ収集部(U)120は、ログ収集部(K)110によって生成され、擬似ファイルに格納されたI/Oログをユーザモードに読み出し、性能分析装置100のデータベースに格納する。図4は、実施例1に係るログ収集部(U)120によって格納されるI/Oログの格納先を決定するための対応テーブルの一例を示す図である。例えば、ログ収集部(U)120は、図4に示すように、I/Oログのシステムコール種別が「ファイル読み出し」であり、FDが示すファイルの種別が「ソケット」である場合には、当該I/Oログを「ネットワーク受信ログ」に格納する。一方、I/Oログのシステムコール種別が「ファイル読み出し」であり、FDが示すファイルの種別が「ソケット以外(ファイル、パイプ等)」である場合には、ログ収集部(U)120は、当該I/Oログを「ファイル読み出しログ」に格納する。同様に、ログ収集部(U)120は、図4に示す対応テーブルを参照して、I/Oログを性能分析装置100のデータベースに格納する。
ここで、ログ収集部(U)120は、性能分析装置100に格納する前に、読み出したI/Oログに自身が配置されたサーバを一意に特定するための識別子を付与する。さらに、ログ収集部(U)120は、システムコールの呼出し直前及び直後でそれぞれ生成されたI/Oログ同士を関連付ける。
具体的には、ログ収集部(U)120は、システムコールの呼出し直後のI/Oログ「LL」を性能分析装置100に格納する際に、既に格納済みのI/Oログのうち、所定の条件を満たすI/Oログ「LE」がある場合には、I/Oログ「LL」を用いてI/Oログ「LE」の未定部分を上書きする。例えば、ログ収集部(U)120は、下記の条件を全て満たすI/Oログ「LE」が格納済みである場合には、I/Oログ「LL」を用いてI/Oログ「LE」の未定部分を上書きする。
E[スレッドID]=LL[スレッドID]
E[システムコール]=LL[システムコール]
E[終了時刻]が未定
E[開始時刻]<=LL[現在時刻]
E[開始時刻]−LL[現在時刻]が最小
すなわち、 ログ収集部(U)120は、スレッドID及びシステムコールが同一であり、かつ、現在時刻が開始時刻よりも後で、かつ、開始時刻から現在時刻までの期間が最小で、終了時刻が未定であるI/O「LE」がある場合に上書きを実行する。ここで、上記したI/Oログがない場合には、ログ収集部(U)120は、I/Oログ「LL」を性能分析装置100のデータベースに追加格納する。
図1に戻って、性能分析装置100は、図1に示すように、ログ蓄積部130と、抽出部140と、特定部150とを有する。ログ蓄積部130は、ログ収集部(U)120によってI/Oログが格納されたり、抽出部140による処理結果を記憶したりするデータベースを有し、所定のデータ構造でログを蓄積する。データベースは、例えば、ハードディスク、光ディスクなどの記憶装置、または、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子であり、性能分析装置100によって実行される各種プログラムなどを記憶する。
例えば、ログ蓄積部130は、図1に示すように、ファイル読み出しのI/Oログを記憶する記憶領域であるファイル読み出しログ、ファイル書き込みのI/Oログを記憶する記憶領域であるファイル書き込みログ、ネットワーク送信のI/Oログを記憶する記憶領域であるネットワーク送信ログ及びネットワーク受信のI/Oログを記憶する記憶領域であるネットワーク受信ログを備えたデータベースを有する。
図5は、実施例1に係るログ蓄積部130によって蓄積されるI/Oログのデータ構造の一例を示す図である。例えば、ログ蓄積部130は、図5に示すように、ネットワーク送信のI/Oログに、「開始時刻・終了時刻」と、「サーバ名・プロセス名・プロセスID・スレッドID」と、「FD」と、「差出アドレス」と、「宛先アドレス」と、「ソケット種別(stream/datagram等)」と、「要求データサイズ」と、「応答データサイズ・エラーコード」と、「関数の呼び出し履歴」とを含ませて、ネットワーク送信ログに蓄積する。同様に、ログ蓄積部130は、ネットワーク受信のI/Oログ、ファイル読み出しのI/Oログ及びファイル書き込みのI/Oログについて、それぞれ図5に示す情報を含ませて、それぞれの記憶領域に蓄積する。
また、データベースは、図1に示すように、後述する抽出部140によってファイルの読み書きのI/Oログが集約されたI/O集約ログを記憶する記憶領域であるI/O集約ログ及びネットワーク送信のI/Oログとネットワーク受信ログとが連結されたネットワーク連結ログを記憶する記憶領域であるネットワーク送受信ログを備えたデータベースを有する。
図6Aは、実施例1に係るログ蓄積部130によって蓄積されるI/O集約ログのデータ構造の一例を示す図である。例えば、ログ蓄積部130は、図6Aに示すように、I/O集約ログに、「各I/Oログの識別子」と、「シーケンス番号」と、「シーケンスの順番」とを含ませて蓄積する。
図6Bは、実施例1に係るログ蓄積部130によって蓄積されるネットワーク連結ログのデータ構造の一例を示す図である。例えば、ログ蓄積部130は、図6Bに示すように、ネットワーク連結ログに、「要求開始時刻」と、「応答終了時刻」と、「要求アドレス」と、「応答アドレス」と、「ソケット種別(stream/datagram等)」と、「集約ログの一覧」を含ませて、ネットワーク送受信ログに蓄積する。
図1に戻って、抽出部140は、ログ蓄積部130によって蓄積されたI/Oログを処理単位ごとに関連付け、処理ごとの処理時間を抽出する。具体的には、抽出部140は、大規模分散処理システムにおける処理を構成する最小単位であるスレッドごとにI/Oログを集約することで、処理ごとの処理時間を抽出する。ここで、抽出部140は、自身のメモリに作業領域を作成して、作成した作業領域上で処理を実行する。
図7は、第1の実施例に係る抽出部140によって作成される作業領域の第1の例を模式的に示す図である。例えば、抽出部140は、図7に示すように、ネットワーク送信のI/Oログを集約させる作業領域であるネットワーク送信集約ログ、ネットワーク受信のI/Oログを集約させる作業領域であるネットワーク受信集約ログ、ファイル読み出しのI/Oログを集約させる作業領域であるファイル読み出し集約ログ、ファイル書き込みのI/Oログを集約させる作業領域であるファイル書き込み集約ログを有する作業領域を作成する。各作業領域には、図7に示すように、それぞれ集約する際に用いられる情報を保管する領域が存在する。
図8は、第1の実施例に係る抽出部140によって作成される作業領域の第2の例を模式的に示す図である。例えば、抽出部140は、図8に示すように、ネットワーク連結ログを生成する際の作業領域も作成する。なお、ネットワーク連結ログの生成については後述する。以下、抽出部140による処理の詳細について説明する。
抽出部140は、まず、図7に示す作業領域を作成すると、ログ蓄積部130のデータベースによって蓄積されたネットワーク送信のすべてのI/Oログを取得して、ネットワーク送信集約ログに保管する。同様に、抽出部140は、ネットワーク受信のすべてのI/Oログ、ファイル読み出しのすべてのI/Oログ、ファイル書き込みのすべてのI/Oログを取得して、ネットワーク受信集約ログ、ファイル読み出し集約ログ、ファイル書き込み集約ログにそれぞれ保管する。
そして、抽出部140は、スレッドIDごとに、FDと、I/O種別(ファイルの読み込み、ファイルの書き込み、ネットワーク受信及びネットワーク送信)と、差出/宛先アドレスが連続している複数のI/Oログを、一つのログに集約する。図9は、実施例1に係る抽出部140による第1の処理の一例を模式的に示す図である。図9においては、ネットワーク受信のI/Oログを集約する例について示す。
例えば、抽出部140は、図9の上側の図に示すように、スレッドIDが「10」で連続し、FDが「100」で連続し、差出アドレスが「192.168.10.1 80」で連続し、宛先アドレスが「192.168.10.2 12358」で連続している4つのI/Oログ(識別子:1534〜1537)を一つのログに集約する。すなわち、抽出部140は、図9の下側の図に示すように、4つのI/Oログを1つのI/O集約ログに集約する。
ここで、抽出部140は、集約後のログ情報として、「開始時刻」を集約されたI/Oログのうち、もっとも古い値とし、「終了時刻」を集約されたI/Oログのうち、もっとも新しい値とし、「応答データサイズ」を集約されたI/Oログの合計値とする。すなわち、図9の下側の図に示すように、抽出部140は、I/O集約ログの「開始時間」を、4つのI/Oデータのうち一番古い「11:12:01.12345」とし、「終了時間」を、4つのI/Oデータのうち一番新しい「11:12:01.12589」とし、応答データサイズを「4096」とする。
ここで、抽出部140は、待ちが発生したシステムコール間のI/Oログを関連付けることで、連続してあるスレッドで実行されるべきであった処理がOS内の待ちにより他のスレッドで実行されたI/Oログを関連付ける。具体的には、抽出部140は、データ送受信が即座にできないシステムコールの後に発生した、サーバ、I/O種別、FD、差出/宛先アドレスが全て一致する直近のI/Oログを集約する。これにより、システムコール呼出し時に、データ送受信が即座にできない(POSIXでのエラーコードがEAGAIN又はEWOULDBLOCK)エラーが発生した後に、select/pollでデータ準備が完了待ちを経て再試行する場合にも対応することが出来る。
図10は、実施例1に係る抽出部140による第2の処理の一例を模式的に示す図である。例えば、抽出部140は、図10に示すように、エラーコード「EAGAIN」が発生した上側のI/Oログと、下側のI/Oログとを比較して、サーバ、I/O種別、FD、差出/宛先アドレスが全て一致する直近のI/Oログであることを判定する。このことから、抽出部140は、図10の下側の図に示すように、2つのI/Oログを1つのI/O集約ログに集約する。
さらに、抽出部140は、サーバ間のネットワーク通信を結合するため、差出/宛先アドレスが同一で、開始時間、終了時間が重複しているネットワーク受信のI/O集約ログと、ネットワーク送信のI/O集約ログとを関連付ける。ここで、抽出部140は、図8に示す作業領域を用いて処理を実行する。図11は、実施例1に係る抽出部140による第3の処理の一例を模式的に示す図である。
例えば、抽出部140は、図11の上側に示すネットワーク送信集約ログとネットワーク受信集約ログとを比較して、それぞれのテーブルの上側にある2つのI/O集約ログが、差出/宛先アドレスが同一であり、開始時刻から終了時刻までの間に、重複している時間帯があることから、図11の中段のテーブルの上側に示すように、2つのI/O集約ログをネットワーク連結ログとして集約する。同様に、抽出部140は、図11の上側に示すそれぞれのテーブルの下側にある2つのI/O集約ログについても、図11の中段のテーブルの下側に示すように、ネットワーク連結ログとして集約する。
ここで、抽出部140は、ネットワーク連結ログにおいて、要求アドレスと応答アドレスが反転しているもののうち、時間差が近接している2つのネットワーク連結ログを関連付ける。例えば、図11の中段のテーブルに示す2つのネットワーク連結ログが、要求アドレスと応答アドレスとが反転しており、時間差が近接していることから、抽出部140は、図11の下側の図に示すように、2つのネットワーク連結ログを集約する。
さらに、抽出部140は、ネットワーク経由で他のスレッドから受信した要求に応えるために、ネットワーク経由で送受信した要求及び回答と、自スレッドが実行した処理とを関連付ける。具体的には、抽出部140は、受信した要求を処理するために実行されたI/Oログを結合する。
より具体的には、抽出部140は、スレッドIDごとに、ネットワーク受信集約ログ「LR」の開始時刻の後、同一スレッドIDのネットワーク受信集約ログ、または図11にて説明した処理により連結したネットワーク送受信集約ログのいずれかが開始されるまでの間に開始されたすべてのネットワーク受信集約ログ、ネットワーク送信集約ログ、ファイル読み出し集約ログ、ファイル書き込み集約ログのログ識別子を、図7に示す作業領域に保管されたネットワーク受信集約ログのログ識別子における「次に実行する集約ログの識別子一覧」の項目に追加することで、関連付けを行う。
図12は、実施例1に係る抽出部による第3の処理の一例を模式的に示す図である。例えば、抽出部140は、図12に示すように、まず、I/Oログの識別子から当該I/OログのスレッドIDを取得する。そして、抽出部140は、「識別子:54232345」のネットワーク受信集約ログの「次に実行する集約ログの識別子一覧」にファイル読み込み集約ログの「識別子:54232327」を追加する。同様に、抽出部140は、その他のネットワーク受信集約ログにファイル読み込み集約ログを関連付ける。
上述したように、抽出部140は、I/Oログを処理ごとに関連付ける。そして、抽出部140は、関連付けたI/O集約ログや、ネットワーク送受信ログをログ蓄積部130のデータベースに格納する。
図1に戻って、特定部150は、抽出部140によって処理ごとに整理されたI/O集約ログや、ネットワーク送受信ログに基づいて、遅延が生じている処理を抽出し、性能劣化の原因となっている箇所を特定する。例えば、特定部150は、ネットワーク送受信ログから、宛先ポート毎に平均スループット(送受信データサイズ÷処理時間)を算出した統計情報を生成する。そして、特定部150は、生成した統計情報において、平均スループットが予め定められた条件を満たしている宛先ポートのログの一覧Lを抽出する。
ここで、予め定められた条件の例として、「スループット値が閾値であるP(=1〜10程度)パーセンタイル値を満たさないログの一覧Lを抽出する。なお、条件を満たすログが見つからない場合にはPの値を増加し、反対にログ一覧Lに抽出されたログに対応するユニークな宛先ポート数が予め設定した値以上の場合にはPの値を減少して再試行する」などがある。
そして、特定部150は、Lを処理するために行った、 I/O集約ログ(他プロセスへの要求、ファイルの読み書き処理)の中で、処理時間について、自身を処理するために行ったI/O集約ログの処理時間を除き、処理時間の値が最も長いI/O集約ログBを抽出する。そして、特定部150は、抽出したI/O集約ログBを性能劣化要因の被疑I/Oであると決定する。さらに、特定部150は、I/O集約ログBに紐づくI/Oログの全てのプログラム名、プログラム内の関数一覧を抽出する。
[実施例1に係る性能分析装置による処理の手順]
次に、実施例1に係る性能分析装置100による処理の手順について、図13を用いて説明する。図13は、実施例1に係る性能分析装置100による処理の手順を示すフローチャートである。図13に示すように、ログ収集部(K)110は、ファイルへの読み書き及びネットワークへの送受信に関するシステムコールがOS内で実行される際に、所望のログ収集することができるように、OSカーネルのバイナリーコードを上書きする(ステップS101)。
そして、システムコールが実行されると(ステップS102肯定)、ログ収集部(K)110は、システムコールの呼出し直前及び直後の情報を収集して、I/Oログを生成して、擬似ファイルに格納する(ステップS103)。その後、ログ収集部(U)120は、擬似ファイルからI/Oログを読み出し、性能分析装置100に送信する(ステップS104)。なお、システムコールが実行されるまで、ログの収集は待機状態となる。
そして、ログ蓄積部130は、ログ収集部(U)120からI/Oログを取得すると、取得したI/Oログをシステムコールの種別に応じてデータベースに格納する(ステップS105)。その後、抽出部140は、I/Oログを処理単位で関連付ける(ステップS106)。そして、特定部150は、処理ごとに、処理に要した時間を算出し(ステップS107)、算出した時間に基づいて、遅延している処理を抽出して、性能が劣化している箇所を特定する(ステップS108)。
[実施例1の効果]
上述したように、実施例1によれば、ログ蓄積部130は、大規模分散処理システムにおいて、システムコールに応じて実行されたI/Oログを取得する。そして、抽出部140は、ログ蓄積部130によって取得されたI/Oログを用いて、当該I/Oログによって実現される処理ごとに、処理の開始から終了までに要した時間を抽出する。そして、特定部150は、抽出部140によって抽出された時間に基づいて遅延している処理を抽出し、当該抽出した処理に関わるデータの入出力が実行された箇所を特定する。従って、実施例1に係る性能分析装置100は、大規模分散処理システム200を構成するプログラム及びミドルウェアなどを変更することなく、関数レベルで各処理にかかった時間を分析することができ、大規模分散処理システムにおいて性能が劣化している箇所を容易に特定することを可能にする。
また、実施例1によれば、ログ蓄積部130は、データの入出力の情報として、プロセス間通信及びファイルの読み書きにおけるスレッドごとのログを取得する。そして、抽出部140は、ログ蓄積部130によって取得されたスレッドごとのログにおいて、単一の処理を構成するスレッドのログ群を抽出し、当該ログ群に含まれるログそれぞれに記載された開始時間のうち最も早い時間から、ログ群に含まれるログそれぞれに記載された終了時間のうち最も遅い時間までを処理の開始から終了までに要した時間として抽出する。従って、実施例1に係る性能分析装置100は、処理ごとの開始から終了までに要した時間を確実に抽出することを可能にする。
また、実施例1によれば、抽出部140は、システムコールの実行時にエラーが発生した場合に、スレッドごとのログに記載されたサーバ情報、プロセス間通信又はファイルの読み書きの種別、システムコールのパラメータ、データの送受信先がすべて一致し、かつ、発生時間が近似する複数のスレッドを、単一の処理を構成するスレッド群とする。従って、実施例1に係る性能分析装置100は、より多くの処理を分析対象とすることを可能にする。
また、実施例1によれば、抽出部140は、大規模分散処理システムにおけるサーバ間の通信に対応して単一の処理を構成するスレッド群間を関連付ける。従って、実施例1に係る性能分析装置100は、単一サーバ内だけでなく、サーバ間で生じる処理についても分析対象とすることを可能にする。
また、実施例1によれば、抽出部140は、他のスレッドから受信した要求に対して応答を示す、前記他のスレッドが構成する処理とは異なる処理を構成するスレッドと、前記他のスレッドとを関連付ける。従って、実施例1に係る性能分析装置100は、因果関係のある処理について、分析対象とすることができ、性能劣化をより細かく特定することを可能にする。
また、実施例1によれば、特定部150は、抽出部140によって抽出された時間に基づいて、宛先ポートごとの平均スループット値を算出し、算出した平均スループット値が所定の閾値を超えた場合に、遅延していると判定する。従って、実施例1に係る性能分析装置100は、大規模分散処理システム全体において、相対的に処理が遅延している箇所を特定することを可能にする。
これまで実施例1を説明したが、本願に係る実施例は、実施例1に限定されるものではない。すなわち、これらの実施例は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。
例えば、各装置の分散・統合の具体的形態(例えば、図1の形態)は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合することができる。一例を挙げると、抽出部140及び特定部150とを一つの処理部として統合してもよく、一方、ログ蓄積部130を、ログを取得する取得部と、ログを格納する格納部とに分散してもよい。
また、抽出部140を性能分析装置100の外部装置としてネットワーク経由で接続するようにしてもよく、或いは、抽出部140と特定部150とを別の装置がそれぞれ有し、ネットワークに接続されて協働することで、上述した性能分析装置100の機能を実現するようにしてもよい。
上記実施例で説明した性能分析装置100は、あらかじめ用意されたプログラムをコンピュータで実行することで実現することもできる。そこで、以下では、図1に示した性能分析装置100と同様の機能を実現する可視化プログラムを実行するコンピュータの一例を説明する。
図14は、実施例2に係る性能分析プログラムを実行するコンピュータ1000を示す図である。図14に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
ここで、図14に示すように、ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。実施例2に係る性能分析プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施例で説明したログ収集部(K)110と同様の情報処理を実行するログ収集(K)ステップと、ログ収集部(U)120と同様の情報処理を実行するログ収集(U)ステップと、ログ蓄積部130と同様の情報処理を実行するログ蓄積ステップと、抽出部140と同様の情報処理を実行する抽出ステップと、特定部150と同様の情報処理を実行する特定ステップとが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
また、上記実施例で説明したデータベースに記憶されるデータのように、性能分析プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、ログ収集(K)ステップと、ログ収集(U)ステップと、ログ蓄積ステップと、抽出ステップと、特定ステップとを実行する。
なお、性能分析プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
100 性能分析装置
110 ログ収集部(K)
120 ログ収集部(U)
130 ログ蓄積部
140 抽出部
150 特定部
200 大規模分散処理システム

Claims (5)

  1. 大規模分散処理システムにおいて、システムコールに応じて実行されたプロセス間通信及びファイルの読み書きにおけるスレッドごとのログを取得する取得部と、
    前記取得部によって取得されたスレッドごとのログにおいて、単一の処理を構成するスレッド群のログ群を抽出し、当該ログ群に含まれるログそれぞれに記載された開始時間のうち最も早い時間から、前記ログ群に含まれるログそれぞれに記載された終了時間のうち最も遅い時間までを前記処理の開始から終了までに要した時間として抽出する抽出部と、
    前記抽出部によって抽出された時間に基づいて遅延している処理を抽出し、当該抽出した処理に関わるデータの入出力が実行された箇所を特定する特定部と、
    を備えたことを特徴とする性能分析装置。
  2. 前記抽出部は、前記システムコールの実行時にエラーが発生した場合に、前記スレッドごとのログに記載されたサーバ情報、前記プロセス間通信又は前記ファイルの読み書きの種別、前記システムコールのパラメータ、データの送受信先がすべて一致し、かつ、発生時間が近似する複数のスレッドを、前記単一の処理を構成するスレッド群とし、さらに、前記大規模分散処理システムにおけるサーバ間の通信に対応してスレッド群間を関連付けることを特徴とする請求項に記載の性能分析装置。
  3. 前記抽出部は、他のスレッドから受信した要求に対して応答を示す、前記他のスレッドが構成する処理とは異なる処理を構成するスレッドと、前記他のスレッドとを関連付けることを特徴とする請求項又はに記載の性能分析装置。
  4. 大規模分散処理システムの性能を分析する性能分析装置によって実行される性能分析方法であって、
    前記大規模分散処理システムにおいて、システムコールに応じて実行されたプロセス間通信及びファイルの読み書きにおけるスレッドごとのログを取得する取得工程と、
    前記取得工程によって取得されたスレッドごとのログにおいて、単一の処理を構成するスレッド群のログ群を抽出し、当該ログ群に含まれるログそれぞれに記載された開始時間のうち最も早い時間から、前記ログ群に含まれるログそれぞれに記載された終了時間のうち最も遅い時間までを前記処理の開始から終了までに要した時間として抽出する抽出工程と、
    前記抽出工程によって抽出された時間に基づいて遅延している処理を抽出し、当該抽出した処理に関わるデータの入出力が実行された箇所を特定する特定工程と、
    を含んだことを特徴とする性能分析方法。
  5. 大規模分散処理システムの性能を分析する性能分析装置によって実行される性能分析プログラムであって、
    前記大規模分散処理システムにおいて、システムコールに応じて実行されたプロセス間通信及びファイルの読み書きにおけるスレッドごとのログを取得する取得ステップと、
    前記取得ステップによって取得されたスレッドごとのログにおいて、単一の処理を構成するスレッド群のログ群を抽出し、当該ログ群に含まれるログそれぞれに記載された開始時間のうち最も早い時間から、前記ログ群に含まれるログそれぞれに記載された終了時間のうち最も遅い時間までを前記処理の開始から終了までに要した時間を抽出する抽出ステップと、
    前記抽出ステップによって抽出された時間に基づいて遅延している処理を抽出し、当該抽出した処理に関わるデータの入出力が実行された箇所を特定する特定ステップと、
    を前記性能分析装置に実行させることを特徴とする性能分析プログラム。
JP2012036840A 2012-02-22 2012-02-22 性能分析装置、性能分析方法及び性能分析プログラム Expired - Fee Related JP5642725B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012036840A JP5642725B2 (ja) 2012-02-22 2012-02-22 性能分析装置、性能分析方法及び性能分析プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012036840A JP5642725B2 (ja) 2012-02-22 2012-02-22 性能分析装置、性能分析方法及び性能分析プログラム

Publications (2)

Publication Number Publication Date
JP2013171542A JP2013171542A (ja) 2013-09-02
JP5642725B2 true JP5642725B2 (ja) 2014-12-17

Family

ID=49265413

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012036840A Expired - Fee Related JP5642725B2 (ja) 2012-02-22 2012-02-22 性能分析装置、性能分析方法及び性能分析プログラム

Country Status (1)

Country Link
JP (1) JP5642725B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016062506A (ja) * 2014-09-19 2016-04-25 株式会社東芝 監視システム、監視装置及び監視方法
WO2016143026A1 (ja) * 2015-03-09 2016-09-15 三菱電機株式会社 情報処理装置
JP6501159B2 (ja) * 2015-09-04 2019-04-17 株式会社網屋 コンピュータ装置の動作記録の解析、翻訳を行い、監査に対する情報の出力及びシステムの傾向分析装置。
JP7135831B2 (ja) 2018-12-20 2022-09-13 富士通株式会社 分析プログラム、および分析装置
CN114124680B (zh) * 2021-09-24 2023-11-17 绿盟科技集团股份有限公司 一种文件访问控制告警日志管理方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2885907B2 (ja) * 1990-08-28 1999-04-26 日本電信電話株式会社 オンライン中タスク処理時間分析方式
JP3472026B2 (ja) * 1996-03-26 2003-12-02 富士通株式会社 ログ情報採取解析装置

Also Published As

Publication number Publication date
JP2013171542A (ja) 2013-09-02

Similar Documents

Publication Publication Date Title
KR101925696B1 (ko) 대규모 데이터 스트림들의 획득, 저장, 및 소비를 위한 관리 서비스
US10261853B1 (en) Dynamic replication error retry and recovery
US9703647B2 (en) Automated policy management in a virtual machine environment
US7698602B2 (en) Systems, methods and computer products for trace capability per work unit
US10970190B2 (en) Hybrid log viewer with thin memory usage
US9454539B1 (en) System and method for protecting operating system zones
US11157373B2 (en) Prioritized transfer of failure event log data
JP5642725B2 (ja) 性能分析装置、性能分析方法及び性能分析プログラム
US10756947B2 (en) Batch logging in a distributed memory
CN108038201B (zh) 一种数据整合系统及其分布式数据整合系统
EP2424190B1 (en) Monitoring connections
CN114363144B (zh) 一种面向分布式系统的故障信息关联上报方法及相关设备
CN107544832A (zh) 一种虚拟机进程的监控方法、装置和系统
US20200379653A1 (en) Reclaiming free space in a storage system
US11290330B1 (en) Reconciliation of the edge state in a telemetry platform
US11093465B2 (en) Object storage system with versioned meta objects
US11079960B2 (en) Object storage system with priority meta object replication
US20130173780A1 (en) Resource throttling and automated policy management in a virtual machine enviromnent
JPWO2014147699A1 (ja) 管理装置、方法及びプログラム
US11700178B2 (en) System and method for managing clusters in an edge network
WO2020256797A1 (en) Object storage system with meta object replication
JP2014109975A (ja) 性能分析装置、性能分析方法及び性能分析プログラム
CN117435367B (zh) 用户行为处理方法、装置、设备、存储介质和程序产品
US20230342235A1 (en) Computer-readable recording medium storing information processing program, information processing method, and system
JP2012168816A (ja) プロセス再起動装置、プロセス再起動方法およびプロセス再起動プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141008

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141029

R150 Certificate of patent or registration of utility model

Ref document number: 5642725

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees