(57)【特許請求の範囲】
【請求項１】
記憶部を有するコンピュータに、
要求が送信されてから、送信された要求に対する処理を複数の情報処理装置が連携して実行した結果を示す実行結果情報と前記複数の情報処理装置の稼動状態を示す稼動状態情報とを含む応答が返信されるまでに要した処理時間を算出させ、
返信された前記応答に含まれる各情報処理装置の稼動状態情報をそれぞれ抽出させ、
抽出された各情報処理装置の稼動状態情報に、算出された処理時間を対応付けて前記記憶部に記憶させ、
全処理時間範囲を第１の単位時間で区画した処理時間範囲毎に、前記記憶部に記憶された前記複数の情報処理装置の稼動状態情報を、対応する処理時間で分別させ、
全処理時間範囲に対し、分別された各処理時間範囲に属する稼動状態情報に対応する処理時間を積算した合計処理時間の占める割合が、所定の閾値より大きい処理時間範囲に属する稼動状態情報を分析させ、
前記所定の閾値より大きい処理時間範囲に属する稼動状態情報を分析した結果を出力させることを特徴とする分析支援プログラム。
【請求項２】
前記稼動状態情報は、
前記複数の情報処理装置における各処理の内訳と、各内訳の処理時間を示す処理時間情報を含み、
前記所定の閾値より大きい処理時間範囲に属する稼動状態情報の分析は、さらに、
前記コンピュータに、
第２の単位時間で区画された処理時間範囲毎に、前記記憶部に記憶された前記複数の情報処理装置の稼動状態情報を、対応する内訳の処理時間で分別し、
各処理時間範囲に属する内訳の処理時間の積算値又は内訳の数を算出させることを特徴とする請求項１記載の分析支援プログラム。
【請求項３】
前記稼動状態情報は、
前記複数の情報処理装置のカーネル状態の内訳を含んで構成され、
前記所定の閾値より大きい処理時間範囲に属する稼動状態情報の分析は、さらに、
前記コンピュータに、
前記記憶部に記憶された稼動状態情報のカーネル状態の内訳を組み合わせた各グループに属する稼動状態情報の数が、前記所定の閾値より大きい処理時間範囲に属する全ての稼動状態情報の数に対して占める割合を算出させることを特徴とする請求項１記載の分析支援プログラム。
【請求項４】
前記稼動状態情報は、
情報処理装置毎且つ処理毎に、稼動状態情報に含まれる内訳が区別されたことを特徴とする請求項１〜請求項３のいずれか１項に記載の分析支援プログラム。
【請求項５】
記憶部を有するコンピュータが、
要求が送信されてから、送信された要求に対する処理を複数の情報処理装置が連携して実行した結果を示す実行結果情報と前記複数の情報処理装置の稼動状態を示す稼動状態情報とを含む応答が返信されるまでに要した処理時間を算出し、
返信された前記応答に含まれる各情報処理装置の稼動状態情報をそれぞれ抽出し、
抽出された各情報処理装置の稼動状態情報に、算出された処理時間を対応付けて前記記憶部に記憶し、
全処理時間範囲を第１の単位時間で区画した処理時間範囲毎に、前記記憶部に記憶された前記複数の情報処理装置の稼動状態情報を、対応する処理時間で分別し、
全処理時間範囲に対し、分別された各処理時間範囲に属する稼動状態情報に対応する処理時間を積算した合計処理時間の占める割合が、所定の閾値より大きい処理時間範囲に属する稼動状態情報を分析し、
前記所定の閾値より大きい処理時間範囲に属する稼動状態情報を分析した結果を出力させることを特徴とする分析支援方法。
【請求項６】
要求が送信されてから、送信された要求に対する処理を複数の情報処理装置が連携して実行した結果を示す実行結果情報と前記複数の情報処理装置の稼動状態を示す稼動状態情報とを含む応答が返信されるまでに要した処理時間を算出する算出部と、
返信された前記応答に含まれる各情報処理装置の稼動状態情報をそれぞれ抽出する抽出部と、
抽出された各情報処理装置の稼動状態情報に、算出された処理時間を対応付けて記憶する記憶部と、
全処理時間範囲を第１の単位時間で区画した処理時間範囲毎に、前記記憶部に記憶された前記複数の情報処理装置の稼動状態情報を、対応する処理時間で分別するとともに、全処理時間範囲に対し、分別された各処理時間範囲に属する稼動状態情報に対応する処理時間を積算した合計処理時間の占める割合が、所定の閾値より大きい処理時間範囲に属する稼動状態情報を分析する分析部と、
前記所定の閾値より大きい処理時間範囲に属する稼動状態情報を分析した結果を出力する出力部とを有することを特徴とする分析支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分析を支援する技術に関する。
【背景技術】
【０００２】
近年、コンピュータシステムが社会で担う役割が大きくなってきていると共に、その構成は複雑化し、処理データ量も増加してきている。そして、かかるコンピュータシステムにおいては、さらなる処理速度の向上や信頼性の向上が求められている。このため、このような要求に対処するべく、ある１つの処理要求に対し、複数のコンピュータで連携して処理を行うコンピュータシステムが採用されている。
【０００３】
しかしながら、このように複数のコンピュータで１つの処理要求に対応する処理を連携して実行する場合において、処理遅延などの問題が発生したときには、どのコンピュータが原因になっているのかを特定するのが困難である。そこで、複数のコンピュータで連携して処理が実行されたときの各コンピュータの稼動状態を分析する技術として、次のような技術が提案されている。即ち、１つのコンピュータ（コンピュータ１）から他のコンピュータ（コンピュータ２）に処理を派生（分散）させる構成において、コンピュータ１において、自装置における処理の統計情報を生成して蓄積する。一方、コンピュータ２では、自装置における処理の統計情報を生成し、これに、処理の分散元がコンピュータ１であることを示す情報を付加して蓄積する。そして、これらのコンピュータの稼動状態を分析する段階において、各コンピュータに蓄積された統計情報を関連付ける。
【特許文献１】特開平６−２８３２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、かかる技術においては、コンピュータの稼動状態を分析する段階において、すでに各コンピュータごとに統計情報が生成され、蓄積されていることが前提となっている。即ち、処理が繰り返し実行された結果、各コンピュータについて蓄積された統計情報を基に分析が行われる。このため、１つ１つの処理要求に対する処理において、コンピュータ１及びコンピュータ２が夫々どのような稼動状態になっていたかについては、次のように、特定することができない。
【０００５】
例えば、上述の技術において、コンピュータ１及びコンピュータ２により連携して行った処理時間が１ｍｓとなっている場合における、各コンピュータの遅延原因を分析することを想定する。この場合、各コンピュータで統計情報が作成された結果、コンピュータ１では、各遅延原因が占める確率として、原因Ａが６０パーセント、原因Ｂが４０パーセントであることが特定できたとする。一方、コンピュータ２では、原因Ｃが２０パーセント、原因Ｄが８０パーセントとなっていることが特定できたとする。これらの情報からは、各コンピュータにおける遅延原因を、複数の処理についての統計結果として夫々特定することはできる。しかし、例えば、コンピュータ１において原因Ａが発生した処理において、その処理を連携して実行したコンピュータ２ではどのような遅延原因が生じたのかについては、予め各コンピュータごとに統計情報が生成されてしまっていては特定することができない。
【０００６】
このように、かかる技術では、各コンピュータの稼動状態を夫々分析することは可能なものの、これらの複数のコンピュータの状態を複合的に分析することは困難であり、分析できる内容に限界があった。
【０００７】
そこで、本発明は以上のような従来の問題点に鑑み、１つの処理要求に対する処理を複数のコンピュータにおいて連携して実行するときの各コンピュータの稼動状態について、複合的に分析可能にすることを目的とする。
【課題を解決するための手段】
【０００８】
このため、本技術の一実施形態では、要求が送信されてから、送信された要求に対する処理を複数の情報処理装置が連携して実行した結果を示す実行結果情報と複数の情報処理装置の稼動状態を示す稼動状態情報とを含む応答が返信されるまでに要した処理時間を算出させる。また、返信された応答に含まれる各情報処理装置の稼動状態情報をそれぞれ抽出させ、抽出された各情報処理装置の稼動状態情報に、算出された処理時間を対応付けて記憶部に記憶させる。次に、全処理時間範囲を第１の単位時間で区画した処理時間範囲毎に、記憶部に記憶された複数の情報処理装置の稼動状態情報を、対応する処理時間で分別させる。それから、全処理時間範囲に対し、分別された各処理時間範囲に属する稼動状態情報に対応する処理時間を積算した合計処理時間の占める割合が、所定の閾値より大きい処理時間範囲に属する稼動状態情報を分析させる。さらに、所定の閾値より大きい処理時間範囲に属する稼動状態情報を分析した結果を出力させる。
【発明の効果】
【０００９】
本技術によれば、１つの処理要求に対する処理の実行時に各情報処理装置において複合的に生じる稼動状態が特定される。
【発明を実施するための最良の形態】
【００１０】
図１は、コンピュータ処理分析システム（分析支援装置）の全体構成図である。コンピュータ処理分析システムは、サーバ１０，サーバ２０，分析装置３０，クライアント４０及びスイッチ５０を含む。サーバ１０，サーバ２０，分析装置３０及びクライアント４０は、少なくともＣＰＵ（Central Processing Unit）及び記憶装置を含んだコンピュータであり、スイッチ５０を介し、ネットワークで相互に接続されている。また、スイッチ５０は、通常のスイッチング機能を備えると共に、ポートミラーリング機能を備える。そして、クライアント４０からサーバ１０に送信される処理要求を含むリクエストパケット及びサーバ１０からクライアント４０に返信されるリプライパケットを、分析装置３０に対しポートミラーリングする。また、本システムでは、クライアント４０からの処理要求に対し、サーバ１０及びサーバ２０が連携して処理を実行する。このとき、サーバ１０からサーバ２０に対して処理を分散する。
【００１１】
サーバ１０は、他のコンピュータとのパケットの送受信を行うパケット送受信部１０Ａと、処理要求を含むリクエストパケットを受信したときに、その処理要求に対応する処理を実行し、処理結果を反映させたリプライパケットを生成する処理部１０Ｂと、少なくとも自装置の稼働状態を示す情報をリプライパケットに付加する情報付加部１０Ｃと、を含む。
【００１２】
サーバ２０もサーバ１０と同様の構成であり、サーバ１０におけるパケット送受信部１０Ａ，処理部１０Ｂ及び情報付加部１０Ｃに夫々対応する、パケット送受信部２０Ａ，処理部２０Ｂ、及び、情報付加部２０Ｃを含む。
【００１３】
分析装置３０は、スイッチ５０からポートミラーリングされたリクエストパケットを保存するリクエストパケット保存ファイル３０Ａと、同じくスイッチ５０からポートミラーリングされたリプライパケットに付加された、サーバ１０及びサーバ２０の両方の稼働状態を示す情報を含む内部情報並びにリクエストパケット及びリプライパケットの受信時刻の差分から算出された処理時間を蓄積するための内部情報ＤＢ３０Ｂと、リクエストパケット及びリプライパケットを受信するパケット受信部３０Ｃと、リプライパケットに付加された内部情報及び処理時間を内部情報ＤＢ３０Ｂに蓄積する情報蓄積部３０Ｄと、内部情報ＤＢ３０Ｂに蓄積された内部情報及び処理時間を用いてサーバ１０及びサーバ２０の状態を分析する分析部３０Ｅと、を含む。なお、分析装置３０の情報蓄積部３０Ｄにより、算出ステップ，算出手段，抽出ステップ，抽出手段，蓄積ステップ及び蓄積手段が実現される。さらに、分析部３０Ｅにより、分析ステップ，分析手段，出力ステップ及び出力手段が実現される。
【００１４】
クライアント４０は、サーバ１０に対して処理を要求するリクエストパケットを送信するとともに、サーバ１０からのリプライパケットを受信する。
スイッチ５０は、分析装置３０が接続されたポートをミラーポートとし、クライアント４０からサーバ１０に対して送信されたリクエストパケット及びサーバ１０からクライアント４０に対して返信されたリプライパケットを、分析装置３０に対してポートミラーリングする。
【００１５】
図２は、サーバ１０，サーバ２０，分析装置３０及びクライアント４０における処理の流れを示す原理図である。
クライアント４０では、処理要求を含むリクエストパケットをサーバ１０に対して送信する（１）。そのリクエストパケットは、スイッチ５０により分析装置３０にポートミラーリングされる。そして、分析装置３０でこれを受信し（２）、リクエストパケット保存ファイル３０Ｂに保存する（３）。一方、サーバ１０でリクエストパケットを受信し（４）、要求された処理を実行すると共に（５）、さらに処理を分散するべく、サーバ２０に対してリクエストパケットを送信する（６）。サーバ２０では、リクエストパケットを受信し（７）、要求された処理を実行する（８）。そして、サーバ２０では、リプライパケットを生成してサーバ２０の稼働状態を示す情報を付加し（９）、サーバ１０に対して返信する（１０）。サーバ１０では、サーバ２０の稼働状態を示す情報が付加されたリプライパケットを受信する（１１）。そして、リプライパケットを生成して、サーバ１０の稼働状態を示す情報及びサーバ２０から受信したリプライパケットに含まれるサーバ２０の稼働状態を示す情報を含む内部情報を付加し（１２）、さらに、そのリプライパケットをクライアント４０に対して返信する（１３）。返信されたリプライパケットは、スイッチ５０により分析装置３０にポートミラーリングされ、分析装置３０で受信されるとともに（１４）、クライアント４０で受信される（１５）。そして、分析装置３０では、受信したリプライパケット及びリクエストパケット保存ファイル３０Ａに保存されたリクエストパケットの夫々の受信時刻に基づいて、サーバ１０及びサーバ２０で連携して行った処理時間を算出する。さらに、その算出した処理時間をサーバ１０及びサーバ２０の内部情報に関連付けて内部情報ＤＢ３０Ｂに蓄積し、その蓄積した情報に基づいて各サーバの稼働状態を分析する（１６）。
【００１６】
ここで、サーバ１０からクライアント４０に返信されるリプライパケット、即ち、サーバ１０及びサーバ２０の内部情報が付加されたリプライパケットの構造について、従来のリプライパケットと対比しつつ説明する。
【００１７】
従来のリプライパケットは、図３に示すように、ヘッダ及びリプライデータから構成される。なお、このリプライパケットのヘッダには、送信元ＩＰアドレス，送信元ポート番号，送信先ＩＰアドレス，送信先ポート番号及びＩＯサイズなどが含まれる。
【００１８】
一方、本システムにおいて、サーバ１０からクライアント４０に返信されるリプライパケットでは、かかる従来のリクエストパケットのヘッダに対し、さらに、同じく図３に示すように、サーバ１０及びサーバ２０の稼働状態を示す情報が内部情報として付加される。そして、この内部情報の詳細な構造の一例について示したのが図４である。これらのサーバの内部情報は、その先頭に、内部情報を挿入するサーバ数（本システムではサーバ１０及びサーバ２０の２つ）を含む。そして、各サーバについて、夫々、どのサーバの情報であるかを識別するサーバの情報と、処理により実現される機能を特定するファンクションの情報と、各ファンクションに関連する内部情報の内訳について、その内訳の数を定義する内訳エントリ数と、具体的な内部情報の内訳と、を含む。この各サーバの情報に含めるファンクションの数は、必要に応じて変えることができる。また、１つのファンクションに含める内訳の数も必要に応じて変えることができる。このように、各サーバで実行される処理に含まれるファンクションの数やそのファンクションに関連する内部情報の内訳の数に合わせてデータ構造を変えることを可能にすることで、多様な処理の分析に対応することができる。また、分析対象となるサーバの構成によっては、例えばカーネル状態を示す情報を数多く収集することが必要となり得るが、そのような場合にも必要な情報を全て収集することができる。
【００１９】
次に、サーバ１０，サーバ２０及び分析装置３０で実行される処理について夫々説明する。
図５は、サーバ１０における第１の処理の内容を示す。このサーバ１０における第１の処理は、パケット送受信部１０Ａにおいてクライアント４０からのリクエストパケットをサーバ１０が受信するごとに実行される。
【００２０】
ステップ１（図では「Ｓ１」と略記する。以下同様）では、クライアント４０からのリクエストパケットを、パケット送受信部１０Ａにおいて受信する。
ステップ２では、処理部１０Ｂにおいて、受信したリクエストパケットの処理要求に対応する処理を実行する。
【００２１】
ステップ３では、処理をサーバ２０に分散するため、処理部１０Ｂにおいてサーバ２０に対するリクエストパケットを生成し、パケット送受信部１０Ａから、サーバ２０に対しリクエストパケットを送信する。
【００２２】
図６は、サーバ１０における第２の処理の内容を示す。このサーバ１０における第２の処理は、サーバ２０における内部情報が付加されたリプライパケットをパケット送受信部１０Ａにおいて受信するごとに実行される。
【００２３】
ステップ１１では、サーバ２０の稼働状態を示す情報が付加されたリプライパケットを、パケット送受信部１０Ａにおいて受信する。
ステップ１２では、処理部１０Ｂにおいて、クライアント４０へのリプライパケットを生成する。
【００２４】
ステップ１３では、処理要求に対応する処理時におけるサーバ１０の稼働状態を示す情報を、情報付加部１０Ｃにおいて抽出する。
ステップ１４では、サーバ２０から受信したリプライパケットに付加されているサーバ２０の稼働状態を示す情報を、情報付加部１０Ｃにおいて抽出する。
【００２５】
ステップ１５では、情報付加部１０Ｃにおいて、抽出したサーバ１０及びサーバ２０の両方の稼働状態を示す情報を含む内部情報を付加する。
ステップ１６では、パケット送受信部１０Ａにおいて、内部情報が付加されたリプライパケットをクライアント４０に返信する。
【００２６】
図７は、サーバ２０における処理内容を示す。このサーバ２０における処理は、サーバ１０からのリクエストパケットをパケット送受信部２０Ａにおいて受信するごとに実行される。
【００２７】
ステップ２１では、サーバ１０からのリクエストパケットをパケット送受信部２０Ａにおいて受信する。
ステップ２２では、処理部２０Ｂにおいて、受信したリクエストパケットの処理要求に対応する処理を実行する。
【００２８】
ステップ２３では、処理部２０Ｂにおいて、サーバ１０へのリプライパケットを生成する。
ステップ２４では、情報付加部２０Ｃにおいて、処理要求に対応する処理時におけるサーバ２０の稼働状態を示す情報を抽出する。
【００２９】
ステップ２５では、情報付加部２０Ｃにおいて、抽出した稼働状態を示す情報をリプライパケットに付加する。
ステップ２６では、パケット送受信部２０Ａにおいて、サーバ２０の稼働状態を示す情報が付加されたリプライパケットをサーバ１０に返信する。
【００３０】
かかるサーバ１０及びサーバ２０の処理によれば、クライアント４０からの処理要求に対応した処理ごとにサーバ１０からクライアント４０へ返信されるリプライパケットに、サーバ１０及びサーバ２０の稼働状態を示す情報を含んだ内部情報が付加される。そして、サーバ１０からクライアント４０へ返信されるリプライパケットが、スイッチ５０により分析装置３０にポートミラーリングされることで、分析装置３０では、各処理要求に対応する処理ごとに、この内部情報を収集することができる。
【００３１】
図８は、分析装置３０における第１の処理の内容を示す。この分析装置３０における第１の処理は、クライアント４０からサーバ１０へのリクエストパケットがスイッチ５０によりポートミラーリングされたものをパケット受信部３０Ｃにおいて受信するごとに実行される。なお、この処理は、パケット受信部３０Ｃにおいて実現される。
【００３２】
ステップ３１では、クライアント４０からサーバ１０へのリクエストパケットを受信する。
ステップ３２では、受信したリクエストパケットに受信時刻を示すタイムスタンプを付し、リクエストパケット保存ファイル３０Ａに保存する。
【００３３】
図９は、分析装置３０における第２の処理の内容を示す。この分析装置３０における第２の処理は、サーバ１０からクライアント４０へのリプライパケットがスイッチ５０によりポートミラーリングされたものをパケット受信部３０Ｃにおいて受信するごとに実行される。
【００３４】
ステップ４１では、パケット受信部３０Ｃにおいて、サーバ１０からクライアント４０へのリプライパケットを受信する。
ステップ４２では、受信したリプライパケットに対応するリクエストパケットを、その受信時刻を示すタイムスタンプとともにリクエストパケット保存ファイル３０Ａから取得する。そして、リプライパケットとリクエストパケットとの受信時刻の差分から、サーバ１０及びサーバ２０で連携した行われた処理時間を算出する。
【００３５】
ステップ４３では、受信したリプライパケットから、内部情報を抽出する。
ステップ４４では、抽出した内部情報と、算出した処理時間とを関連付けて、内部情報ＤＢ３０Ｂに蓄積する。なお、ステップ４２からステップ４４は、情報蓄積部３０Ｄにおいて実現される。
【００３６】
図１０は、分析装置３０における第３の処理の内容を示す。この分析装置３０における第３の処理は、スケジューリングされたジョブや管理者によるオペレーションなどにより実行される。なお、この処理は、分析部３０Ｅにおいて実現される。
【００３７】
ステップ５１では、内部情報ＤＢ３０Ｂに蓄積された内部情報及びこれに関連付けられた処理時間を抽出する。
ステップ５２では、抽出した内部情報及び処理時間について所定の統計処理を施し、サーバ１０及びサーバ２０の稼働状況を分析する。
【００３８】
ステップ５３では、分析結果を出力する。なお、出力方法としては、例えば、ディスプレイに表示したり、紙媒体等に印刷したりすることができる。
ここで、クライアント４０からの処理要求により、サーバ１０及びサーバ２０の記憶装置に対して８ＫＢのデータの書込処理及び読出処理を行う場合を例として、上述の分析装置３０における第３の処理における所定の統計処理について、さらに詳細に説明する。ここでは、（１）各サーバにおける処理要求に対応する処理の内訳及びその内訳の処理時間がリプライパケットに付加される例、（２）各サーバにおけるカーネル状態の内訳がリプライパケットに付加される例、について夫々説明する。
（１）各サーバにおける処理要求に対応する処理の内訳及びその内訳の処理時間がリプライパケットに付加される例
この例では、サーバ１０及びサーバ２０において連携して実行される書込処理及び読出処理の夫々について、その処理の内訳及び内訳の処理時間として、ディスクＩＯ（ディスク入出力）処理，ロック待ち処理，メタデータ更新処理及びプロトコル生成処理の処理時間（単位：マイクロ秒（ｕｓ））を収集するものとする。
【００３９】
このとき、サーバ１０からクライアント４０に対して返信され、分析装置３０にポートミラーリングされるリプライパケットに付加される、書込処理及び読出処理の実行時における夫々の内部情報は、上述したサーバ１０及びサーバ２０における処理を経て、夫々図１１及び図１２に示すような構造となる。
【００４０】
図１３は、これらのリプライパケットから抽出され、内部情報ＤＢ３０Ｂに蓄積された内部情報に含まれる処理の内訳及びその内訳の処理時間に基づき、上述した分析装置３０で、書込処理及び読出処理の夫々について実行される統計処理の内容を示す。
【００４１】
ステップ６１では、内部情報ＤＢ３０Ｂに蓄積された内部情報を、内部情報に関連付けられた処理時間に応じて、所定規則（例えば１０ｍｓ単位など）で区画された処理時間範囲ごとに分別する。なお、この所定規則が第１の所定規則に相当し、この値は任意に定めることができる。そして、その処理時間範囲ごとに、これに分別された内部情報に関連付けられた処理時間を積算した合計処理時間（積算値）を算出する。
【００４２】
ステップ６２では、ステップ６１における算出結果に基づき、区画された処理時間範囲のうち、その処理時間範囲における合計処理時間が全処理時間範囲における合計処理時間の予め設定した閾値（例えば１０パーセントなど）を超える割合を有する処理時間範囲を特定する。そして、この特定した処理時間範囲に属する内部情報を、分析対象とする。なお、この予め設定する閾値は、任意に定めることができる。
【００４３】
ステップ６３では、ステップ６２で特定した分析対象となった内部情報に含まれる、各サーバごとの処理の内訳及びその内訳ごとの処理時間を抽出する。さらに、この処理の内訳を、内訳の処理時間に応じて、所定規則（例えば１０ｍｓ単位など）で区画された処理時間範囲ごとに分別する。そして、その処理時間範囲ごとに、これに分別された内訳の処理時間を積算した合計処理時間（積算値）を算出する。なお、この所定規則が第２の所定規則に相当し、この値は任意に定めることができる。
【００４４】
なお、上記のステップ６２では、各処理時間範囲に属する内部情報に関連付けられた処理時間を積算した合計処理時間を算出しているが、各処理時間範囲に属する内部情報の件数を積算した合計件数を算出してもよい。この場合には、各処理時間範囲における合計件数が全処理時間範囲における件数に対して占める割合が閾値より大きい処理時間範囲に属する内部情報が、分析対象となる。
【００４５】
また、上記のステップ６３では、各処理時間範囲に属する処理の内訳の処理時間を積算した合計処理時間を算出しているが、各処理時間範囲に属する処理の内訳の件数を積算した合計件数を算出してもよい。
【００４６】
図１４は、書込処理及び読出処理の夫々について、処理１件の処理時間及び処理時間範囲ごとに分別された内部情報に関連付けられた処理時間を積算した合計処理時間の関係を示す、上記ステップ６１の実行結果としてのヒストグラムの一例を示す。ここで、当該ヒストグラムにおいて表示されているパーセンテージは、各処理時間範囲における合計処理時間が、全処理時間範囲における合計処理時間に占める割合を示す。なお、この値は、各処理時間範囲における合計処理時間を、全処理時間範囲における合計処理時間で除算することで算出できる。閾値を１０パーセントで予め設定している場合において、書込処理の分析結果に着目すると、処理時間範囲が１０ｍｓ以下、５０ｍｓ及び１００ｍｓ以上である場合において、内部情報に関連付けられた合計処理時間が全体に占める割合が１０パーセントを超えていることが判る。そして、図１５は、この結果に基づき、内訳１件の処理時間及びこの処理時間範囲ごとに分別された内訳の件数を積算した合計件数の関係を示す、上記のステップ６３の実行結果としてのヒストグラムの一例を示す。なお、このヒストグラムでは、書込処理の処理時間が５０ｍｓの場合を対象としている。このヒストグラムから、サーバ１０のディスクＩＯ処理及びサーバ２０のディスクＩＯ処理においてある処理時間を要する件数が、他の処理に比べ特に多くなっていることが判る（処理時間が３０ｍｓの場合）。このため、書込処理の処理時間が５０ｍｓのときには、サーバ１０のディスクＩＯ処理及びサーバ２０のディスクＩＯ処理がボトルネックとなっている可能性があることが推測できる。
【００４７】
（２）各サーバにおけるカーネル情報がリプライパケットに付加される例
この例では、サーバ１０及びサーバ２０における書込処理及び読出処理の夫々について、空きスレッド数，空きキュー数及びＩＯ待ち数を、内部情報として収集するものとする。
【００４８】
このとき、サーバ１０からクライアント４０に対して返信され、分析装置３０にポートミラーリングされるリプライパケットに付加される、書込処理及び読出処理の実行時における夫々の内部情報は、上述したサーバ１０及びサーバ２０における処理を経て、夫々図１６及び図１７に示すような構造となる。
【００４９】
図１８は、このリプライパケットに付加された内訳ごとの処理時間の情報に基づき、上述した分析装置３０で実行される統計処理について、さらに詳細に説明したものである。
ステップ７１及びステップ７２は、夫々上述のステップ６１及びステップ６２と同じ処理であるため、説明を省略する。
【００５０】
ステップ７３では、ステップ７２で抽出した内部情報のカーネル状態の内訳、即ち、空きスレッド数，空きキュー数及びＩＯ待ち数を抽出する。そして、夫々のサーバの空きスレッド数，空きキュー数及びＩＯ待ち数を組み合わせた各グループに属する内部情報の件数が、分析対象となる全ての内部情報の件数に対して占める割合を算出する。この夫々のサーバの空きスレッド数，空きキュー数及びＩＯ待ち数の組み合わせは、任意に定めることができる。例えば、サーバ１０の空きスレッド数が０であり且つ空きキュー数が０である一方でＩＯ待ち数が０でない場合において、サーバ２０においても同様の状態が発生している場合を１つのグループとしてもよい。また、別のグループとして、サーバ１０のＩＯ待ち数が０である一方でサーバ２０のＩＯ待ち数が０である組み合わせを１つのグループとしてもよい。また、内部情報のカーネル状態によっては、その内訳において生じ得る全ての組み合わせについて、夫々にグループ化してもよい。なお、この組み合わせのグループを定める規則が、所定規則に相当する。
【００５１】
図１９は、書込処理の処理時間が５０ｍｓの場合における、サーバ１０及びサーバ２０の空きスレッド数，空きキュー数及びＩＯ待ち数の組み合わせの各グループに属する内部情報の件数が、全体の件数に占める割合を算出した表の一例を示す。この表からは、サーバ１０のＩＯ待ち数が１−５０であり、且つ、サーバ２０の空きスレッド数が１−１０であると共に、空きキュー数が１−２０の場合の割合が６１パーセントであり、全体に占める割合が多いことが判る。このため、書込処理における処理時間が５０ｍｓの場合には、このような稼働状態がサーバ１０及びサーバ２０の処理におけるボトルネックとなっていることが推測できる。
【００５２】
かかる分析装置３０の処理によれば、１つの処理要求に対する処理における各サーバの稼働状態を示す情報を含む内部情報が、リプライパケットから抽出される。このため、１つの処理要求に対する処理時に各サーバにおいて複合的に生じる稼動状態を特定することができる。また、リクエストパケット及びリプライパケットのタイムスタンプの差分から、サーバ１０及びサーバ２０で連携して行われる処理時間が、各処理要求に対応する処理ごとに算出される。そして、この算出された処理時間と、その処理時におけるサーバ１０及びサーバ２０の内部情報と、が各処理要求に対する処理ごとに関連付けられているため、処理に要した時間ごとに各サーバの稼働状態を特定することが可能となる。
【００５３】
さらに、これらの内部情報及び処理時間が蓄積され、蓄積された内部情報が、これに関連付けられた処理時間によって、所定の規則で区画された処理時間範囲ごとに分別される。また、その処理時間範囲ごとに、これに属する内部情報に関連付けられた処理時間が積算された合計処理時間又は合計件数が算出される。そして、その合計処理時間又は合計件数が夫々全処理時間範囲における合計処理時間又は合計件数に対して占める割合が、所定の閾値を超える処理時間範囲が特定され、これに属する内部情報が分析対象とされる。このため、蓄積された内部情報に関連付けられた処理時間が、ある範囲内に集中しているときに、その処理時間範囲を特定すると共に、これに属する内部情報を分析対象として特定することができる。なお、このとき、合計処理時間に基づいて割合を算出した場合には、１件の処理時間が長いほど、即ち、遅延が生じているほど、その処理時間範囲に属する内部情報の合計処理時間が全処理時間範囲の合計処理時間に対して占める割合が大きくなりやすい。このため、遅延が生じている処理時間範囲を特定しやすくなる。
【００５４】
そして、（１）の統計処理では、特定された処理時間範囲に属する分析対象としての内部情報について、その処理の内訳が、処理の内訳の処理時間に応じてさらに処理時間範囲ごとに分別される。そして、処理の内訳ごとに、その内訳の処理時間を積算した合計処理時間又は内訳の合計件数が算出される。このため、分析対象とされた処理時間範囲に属する処理において、各コンピュータでは夫々どのような処理の内訳にどれ位の処理時間を費やしているのかについて、その傾向を特定することができる。
【００５５】
また、（２）の統計処理においては、特定された処理時間範囲に属する分析対象としての内部情報について、そのカーネル状態の内訳を組み合わせた各グループに属する内部情報の件数が、分析対象となる全ての内部情報の件数に対して占める割合が算出される。このため、処理時間がその特定された処理時間範囲に属する処理において、各サーバでは夫々どのようなカーネル状態になっているのかについて、その傾向を特定することができる。
【００５６】
このように、これらの統計処理が施された分析結果が出力されることで、複数のコンピュータに連携して１つの処理をさせる場合において、どのような稼働状態が各コンピュータ間で複合的に生じるのかについて、処理時間に応じた傾向が把握可能となる。そして、複数のサーバで連携して行った処理時間がある特定の範囲内に属しているときにおける、各サーバで複合的に生じた稼働状態について、管理者が詳細に把握することができる。このとき、遅延が生じている処理時間範囲に属する内部情報が分析対象として特定されれば、その処理時間を要した処理における各サーバの遅延原因を把握することができる。このため、複数のサーバに連携して処理をさせるときに、各サーバにどのように機能分散や負荷分散をさせればよいかについて、管理者が適切な判断をすることが可能となる。
【００５７】
なお、本システムでは、分析装置３０において、サーバ１０からクライアント４０に返信されたリプライパケットをポートミラーリングにより受信し、サーバ１０及びサーバ２０の稼働状態の分析を行っている。しかし、このような構成に限らず、例えば、クライアント４０において、サーバ１０から受信したリプライパケットに付加された内部情報に基づいて、稼働状況の分析を行ってもよい。そのようにすれば、分析装置として別のコンピュータを導入する必要がなく、システムの構成を単純にすることができる。また、その場合には、スイッチ５０においてポートミラーリングをする必要もない。
【００５８】
また、本システムでは、２つのサーバで処理を分散し、夫々のサーバでリプライパケットに自装置の稼働状態を示す情報を付加しているが、処理を分散するサーバの数をさらに増やしてもよい。その場合には、処理を分散された各サーバにおいて、自装置に対して処理を分散した分散元に対し、自装置の内部情報を付加したリプライパケットを返信するという、上述のサーバ２０の処理と同様の処理が、処理を連携して行う各サーバにおいて行われる。そして、クライアント４０にリプライパケットを返信するサーバでは、処理を連携して行った全てのサーバの内部情報を付加したリプライパケットをクライアント４０に返信する。ここで、図２０は、サーバ０からサーバｎまでの稼働状態を示す情報を収集する場合におけるリプライパケットの構造例を示す。このように、サーバの数に関わらず、複数のサーバの稼働状態を示す情報を内部情報として１つのリプライパケットのヘッダに付加することができる。そして、分析装置３０では、このリプライパケットを用いて分析を行う。
【００５９】
さらに、各サーバにおける処理要求に対応する処理の内訳及びその内訳の処理時間と、各サーバにおけるカーネル状態を示す情報と、は、１つのリプライパケットに付加してもよい。図４及び図２０に示されるリプライパケットの内部情報の構造からも明らかであるように、本システムにおいては、１つのリプライパケットに付加する内部情報の内訳の種類及び数に制限を設けていない。このような構造を採用していることで、多種多様な処理に対する分析を可能にし、また、各サーバで実行したある１つの種類の処理について、多面的な分析を行うことができる。
【００６０】
さらに、上述の説明では、クライアントサーバシステムにおいて、サーバの状態を分析するべくサーバの内部情報をリプライパケットに付加する例を示したが、このようなシステム構成に限られない。例えば、複数のノードが備えるストレージにデータを分散して蓄積するマルチノードストレージにおいて、各ノード間で送受信されるリプライパケットに各ノードの内部情報を付加するとともに、そのリプライパケットを分析装置にポートミラーリングしてもよい。そして、分析装置において、その受信したリプライパケットに付加された内部情報に基づいて、各ノードの状態について分析を行ってもよい。
【００６１】
以上の実施形態に関し、更に以下の付記を開示する。
【００６２】
（付記１）処理要求を含むリクエストパケットが送信されてから、その処理要求に対応する処理を複数のコンピュータが連携して実行した結果に、予め各コンピュータに組み込んだ機能によりその複数のコンピュータの稼動状態を示す情報を含む内部情報が付加されたリプライパケットが返信されるまでに要した処理時間を算出する算出ステップと、前記リプライパケットから、前記複数のコンピュータの内部情報を抽出する抽出ステップと、前記抽出ステップにより抽出された内部情報に、前記算出ステップにより算出された処理時間を関連付けて記憶装置に蓄積する蓄積ステップと、前記蓄積ステップにより記憶装置に蓄積された前記内部情報及びその内部情報に関連付けられた処理時間に対して所定の統計処理を施し、前記複数のコンピュータの稼動状態を分析する分析ステップと、前記分析ステップにより分析された結果を出力する出力ステップと、をコンピュータに実現させることを特徴とするコンピュータ稼動状態分析支援プログラム。
【００６３】
（付記２）前記分析ステップは、第１の所定規則で区画された各処理時間範囲ごとに、前記記憶装置に蓄積された内部情報をその内部情報に関連付けられた処理時間で分別し、各処理時間範囲に属する内部情報に関連付けられた処理時間の積算値が全処理時間範囲の内部情報に関連付けられた処理時間の積算値に対して占める割合が、所定の閾値より大きな処理時間範囲に属する内部情報を、分析対象とすることを特徴とする付記１記載のコンピュータ稼動状態分析支援プログラム。
【００６４】
（付記３）前記分析ステップは、第１の所定規則で区画された各処理時間範囲ごとに、前記記憶装置に蓄積された内部情報を、その内部情報に関連付けられた処理時間で分別し、各処理時間範囲に属する内部情報の件数が全処理時間範囲の内部情報の件数に対して占める割合が、所定の閾値より大きな処理時間範囲に属する内部情報を、分析対象とすることを特徴とする付記１記載のコンピュータ稼動状態分析支援プログラム。
【００６５】
（付記４）前記内部情報は、各コンピュータにおける前記処理の詳細な内訳及びその各内訳の処理時間を示す情報を含んで構成され、前記分析ステップは、さらに、第２の所定規則で区画された各処理時間範囲ごとに、前記分析対象とされた内部情報に含まれる内訳を、その内訳の処理時間で分別し、各処理時間範囲に属する内訳の処理時間の積算値又は内訳の件数を、夫々の内訳について算出することを特徴とする付記２又は付記３に記載のコンピュータ稼動状態分析支援プログラム。
【００６６】
（付記５）前記内部情報は、前記処理の実行時における前記複数のコンピュータのカーネル状態の内訳を含んで構成され、前記分析ステップは、さらに、前記記憶装置に蓄積された内部情報のカーネル状態の内訳を所定規則で組み合わせた各グループに属する内部情報の件数が、前記分析対象となる全ての内部情報の件数に対して占める割合を算出することを特徴とする付記２又は付記３に記載のコンピュータ稼動状態分析支援プログラム。
【００６７】
（付記６）前記内部情報は、各コンピュータごと且つ前記処理によって実現される各機能ごとに、その内部情報に含まれる内訳が区別されたことを特徴とする付記１〜付記５のいずれか１つ記載のコンピュータ稼動状態分析支援プログラム。
【００６８】
（付記７）処理要求を含むリクエストパケットが送信されてから、その処理要求に対応する処理を複数のコンピュータが連携して実行した結果に、予め各コンピュータに組み込んだ機能によりその複数のコンピュータの稼動状態を示す情報を含む内部情報が付加されたリプライパケットが返信されるまでに要した処理時間を算出する算出ステップと、前記リプライパケットから、前記複数のコンピュータの内部情報を抽出する抽出ステップと、前記抽出ステップにより抽出された内部情報に、前記算出ステップにより算出された処理時間を関連付けて記憶装置に蓄積する蓄積ステップと、前記蓄積ステップにより記憶装置に蓄積された前記内部情報及びその内部情報に関連付けられた処理時間に対して所定の統計処理を施し、前記複数のコンピュータの稼動状態を分析する分析ステップと、前記分析ステップにより分析された結果を出力する出力ステップと、をコンピュータが実行することを特徴とするコンピュータ稼動状態分析支援方法。
【００６９】
（付記８）処理要求を含むリクエストパケットが送信されてから、その処理要求に対応する処理を複数のコンピュータが連携して実行した結果に、予め各コンピュータに組み込んだ機能によりその複数のコンピュータの稼動状態を示す情報を含む内部情報が付加されたリプライパケットが返信されるまでに要した処理時間を算出する算出手段と、前記リプライパケットから、前記複数のコンピュータの内部情報を抽出する抽出手段と、前記抽出手段により抽出された内部情報に、前記算出手段により算出された処理時間を関連付けて記憶装置に蓄積する蓄積手段と、前記蓄積手段により記憶装置に蓄積された前記内部情報及びその内部情報に関連付けられた処理時間に対して所定の統計処理を施し、前記複数のコンピュータの稼動状態を分析する分析手段と、前記分析手段により分析された結果を出力する出力手段と、を含んで構成されたことを特徴とするコンピュータ稼動状態分析装置。
【図面の簡単な説明】
【００７０】
【図１】コンピュータ処理分析システムの概要図
【図２】各サーバ，分析装置３０及びクライアント４０間における処理の流れの原理図
【図３】リプライパケットの構造を示す説明図
【図４】リプライパケットの構造（内部情報の詳細構造含む）を示す説明図
【図５】サーバ１０の第１の処理を示すフローチャート
【図６】サーバ１０の第２の処理を示すフローチャート
【図７】サーバ２０の処理を示すフローチャート
【図８】分析装置３０の第１の処理を示すフローチャート
【図９】分析装置３０の第２の処理を示すフローチャート
【図１０】分析装置３０の第３の処理を示すフローチャート
【図１１】書込処理における処理の内訳及びその処理時間を収集する例におけるリプライパケットの内部情報の構造を示す説明図
【図１２】読出処理における処理の内訳及びその処理時間を収集する例におけるリプライパケットの内部情報の構造を示す説明図
【図１３】処理の内訳及びその処理時間を収集する例における分析装置３０の第３の処理を示すフローチャート
【図１４】処理１件の処理時間と合計処理時間との関係を表すヒストグラムを示す説明図
【図１５】書込処理５０ｍｓの場合における処理の内訳の処理時間と合計件数との関係を表すヒストグラムを示す説明図
【図１６】書込処理におけるカーネル情報を収集する例におけるリプライパケットの内部情報の構造を示す説明図
【図１７】読出処理におけるカーネル情報を収集する例におけるリプライパケットの内部情報の構造を示す説明図
【図１８】カーネル情報を収集する例における分析装置３０の第３の処理を示すフローチャート
【図１９】書込処理５０ｍｓの場合におけるカーネル状態の内訳の組み合わせを示す説明図
【図２０】リプライパケットの構造（内部情報の詳細構造含む）を示す説明図
【符号の説明】
【００７１】
１０    サーバ
１０Ａ    パケット送受信部
１０Ｂ    処理実行部
１０Ｃ    情報付加部
２０Ａ    パケット送受信部
２０Ｂ    処理実行部
２０Ｃ    情報付加部
３０Ａ    リクエストパケット保存ファイル
３０Ｂ    内部情報ＤＢ
３０Ｃ    パケット受信部
３０Ｄ    情報蓄積部
３０Ｅ    分析部
【図１】
0005104529.tif 000002
【図２】
0005104529.tif 000003
【図３】
0005104529.tif 000004
【図４】
0005104529.tif 000005
【図５】
0005104529.tif 000006
【図６】
0005104529.tif 000007
【図７】
0005104529.tif 000008
【図８】
0005104529.tif 000009
【図９】
0005104529.tif 000010
【図１０】
0005104529.tif 000011
【図１１】
0005104529.tif 000012
【図１２】
0005104529.tif 000013
【図１３】
0005104529.tif 000014
【図１４】
0005104529.tif 000015
【図１５】
0005104529.tif 000016
【図１６】
0005104529.tif 000017
【図１７】
0005104529.tif 000018
【図１８】
0005104529.tif 000019
【図１９】
0005104529.tif 000020
【図２０】
0005104529.tif 000021