(57)【要約】【課題】  複数のトランザクションを並列処理するコンピュータシステムにおいて、互いに競合する部分処理を特定する競合部分処理検出方法を提供する。【解決手段】  複数の部分処理からなる複数のトランザクション処理の並列処理を行う時に、まず、トランザクション処理間に競合が発生しない並列処理時における複数のトランザクション処理の部分集合の組み合わせのそれぞれに対して第１の指標値を計測する。次に、トランザクション処理間に競合が発生する並列処理時における複数のトランザクション処理の部分集合の組み合わせのそれぞれに対して第２の指標値を計測する。そして、第1及び第2の指標値に基づいて複数のトランザクション処理における競合が発生する部分処理の組み合わせを検出する。【選択図】  図１
2008269578.tif 000002
【特許請求の範囲】
【請求項１】
複数の部分処理からなる第１及び第2のトランザクション処理の並列処理を行う時に、前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせを検出する競合部分処理検出方法であって、
前記第1及び第2のトランザクション処理間に競合が発生しない並列処理時における前記第1のトランザクション処理の部分集合と第2のトランザクション処理の部分集合との組み合わせのそれぞれに対して第１の指標値を計測し、
前記第1及び第2のトランザクション処理間に競合が発生する並列処理時における前記第1のトランザクション処理の部分集合と第2のトランザクション処理の部分集合との組み合わせのそれぞれに対して第２の指標値を計測し、
前記第1及び前記第2の指標値に基づいて前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせを検出する競合部分処理検出方法。
【請求項２】
前記第2の指標値が前記第1の指標値より大きい場合の部分処理の組み合わせを、前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせとして検出することを特徴とする請求項１に記載の競合部分処理検出方法。
【請求項３】
前記第1及び第2の指標値は、プロセッサ時間、プロセッサが実行した命令数または排他制御のためのロック獲得に失敗した数のいずれかであることを特徴とする請求項１または２に記載の競合部分処理検出方法。
【請求項４】
複数の部分処理からなる第１及び第2のトランザクション処理の並列処理を行う時に、前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせを検出する競合部分処理検出装置であって、
前記第1及び第2のトランザクション処理間に競合が発生しない並列処理時における前記第1のトランザクション処理の部分集合と第2のトランザクション処理の部分集合との組み合わせのそれぞれに対して第１の指標値を計測し、前記第1及び第2のトランザクション処理間に競合が発生する並列処理時における前記第1のトランザクション処理の部分集合と第2のトランザクション処理の部分集合との組み合わせのそれぞれに対して第２の指標値を計測する指標値計測部と、
前記第1及び前記第2の指標値に基づいて前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせを検出する競合部分処理検出部とを備えることを特徴とする競合部分処理検出装置。
【請求項５】
前記競合部分処理検出部は、前記前記第2の指標値が前記第1の指標値より大きい場合の部分処理の組み合わせを、前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせとして検出することを特徴とする請求項４に記載の競合部分処理検出装置。
【請求項６】
前記第1及び第2の指標値は、プロセッサ時間、プロセッサが実行した命令数または排他制御のためのロック獲得に失敗した数のいずれかであることを特徴とする請求項４または５に記載の競合部分処理検出装置。
【請求項７】
コンピュータに、複数の部分処理からなる第１及び第2のトランザクション処理の並列処理を行う時に、前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせを検出させる競合部分処理検出用プログラムであって、
前記第1及び第2のトランザクション処理間に競合が発生しない並列処理時における前記第1のトランザクション処理の部分集合と第2のトランザクション処理の部分集合との組み合わせのそれぞれに対して第１の指標値を計測する第1指標値計測処理と、
前記第1及び第2のトランザクション処理間に競合が発生する並列処理時における前記第1のトランザクション処理の部分集合と第2のトランザクション処理の部分集合との組み合わせのそれぞれに対して第２の指標値を計測する第２指標値計測処理と、
前記第1及び前記第2の指標値に基づいて前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせを検出する競合部分処理検出処理とを含むことを特徴とする競合部分処理検出用プログラム。
【請求項８】
前記競合部分処理検出処理において、前記第2の指標値が前記第1の指標値より大きい場合の部分処理の組み合わせを、前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせとして検出することを特徴とする請求項７に記載の競合部分処理検出方法。
【請求項９】
前記第1及び第2の指標値は、プロセッサ時間、プロセッサが実行した命令数または排他制御のためのロック獲得に失敗した数のいずれかであることを特徴とする請求項７または８に記載の競合部分処理検出用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバにおける複数の処理の競合する部分の特定に関する。特に、本発明は、サーバにおいて複数のトランザクションを同時に処理して競合が発生したときに、競合箇所を特定する技術に関する。
【背景技術】
【０００２】
第一の関連する技術として、非特許文献１に記載されている技術がある。この第一の関連技術は、複数のトランザクションを同時に処理するサーバの性能を評価する技術である。第一の関連技術では、１つのトランザクションの処理で使用されるサーバリソース（ＣＰＵやディスク）の使用時間という性能基礎データと、待ち行列網理論に基づく性能予測モデルとが使用される。これにより、第一の関連技術は、サーバが複数トランザクションを処理する際の性能（主には、トランザクションのレスポンス時間とサーバのスループットの関係）の見積りを行う。
【０００３】
また、第二の関連技術として、非特許文献２に記載されている技術がある。この第二の関連技術は、性能予測モデルとして性能シミュレータを使うものである。第二の関連技術は、第一の関連技術と同様、サーバリソースの使用時間に基づいて、複数トランザクションの処理能力の見積もりを出力する。
【０００４】
【非特許文献１】Ｔａｋａｓｈｉ  Ｈｏｒｉｋａｗａ，  Ｐｅｒｆｏｒｍａｎｃｅ      Ａｎａｌｙｓｉｓ  ｏｆ  ａ  Ｃｌｉｅｎｔ−Ｓｅｒｖｅｒ  Ｓｙｓｔｅｍ  Ｕｓｉ    ｎｇ  Ｑｕｅｕｅｉｎｇ  Ｎｅｔｗｏｒｋｓ：  Ａ  Ｃａｓｅ  Ｓｔｕｄｙ，  Ｉｎｔ．  Ｔｒａｎｓ．  Ｏｐｌ  Ｒｅｓ．  Ｖｏｌ．  ４，  Ｎｏ．  ３，  ｐｐ．  １９９−０９，  １９９７．
【非特許文献２】ｈｔｔｐ：／／ｗｗｗ．ｈｙｐｅｒｆｏｒｍｉｘ．ｃｏｍ／Ｄｅｆ    ａｕｌｔ．ａｓｐ？Ｐａｇｅ＝２１０    第一の関連技術及び第二の関連技術で使用されている性能予測モデルは、通常、次のような条件を前提として性能予測を行っている。
【０００５】
（１）サーバが単位時間に処理すべきトランザクション数が変化した場合でも、１つのトランザクションの処理で使用するサーバリソース時間は変化しない。
【０００６】
（２）複数のトランザクションの間で競合する部分は、入力データ（性能基礎データ）で示されているサーバリソースである。
【０００７】
トランザクションを処理するプログラムを含むサーバにおいて、これら（１）（２）の前提が成り立つ場合、性能予測モデルで得られる結果は、実際のサーバ性能を反映する。前記の結果の一例は、トランザクションのレスポンス時間とサーバのスループットの関係である。
【０００８】
しかし、（１）（２）の条件が成立しない場合、性能予測モデルを用いて得られる結果は実際の性能と一致しない。例えば、複数ＣＰＵを搭載したサーバがトランザクション処理中にクリティカルセクションを持つプログラムを実行したときの性能が、性能予測モデルに基づいて予測される場合がある。この場合、実際の性能よりも高い性能が予測される。つまり、実際の性能が、性能予測モデルに基づいた予測された性能よりも悪い。クリティカルセクションは、あるトランザクション処理プログラム中のセッションと他のトランザクション処理プログラム中のセッションとで同時には実行できないセッションである。
【０００９】
性能予測モデルによる予測される性能と実際の性能とが一致しない状況の例が説明される。図２２には、４つのＣＰＵを備えるサーバが４つのトランザクションのプロセス１〜４を同時に開始したときの処理の経過が図示されている。トランザクション処理を行うためＣＰＵにて実行されるプログラム（以下トランザクション処理プログラムと記す）は、他の処理、同時実行可能な処理及び排他制御が必要な処理から構成される。排他制御が必要な処理は、トランザクション処理中にスピンロック［ｓｐｉｎ  ｌｏｃｋ］により排他制御されてもよい。排他制御が必要な処理は、クリティカルセクション処理である。４つのＣＰＵのうち、１つのＣＰＵが、クリティカルセクション処理の実行権を獲得する。その他の３つのＣＰＵはビジーウェイト（ｂｕｓｙ  ｗａｉｔ）を行う。その間は、上記３つのＣＰＵはトランザクション処理を行うことはできない。
【００１０】
図２２に示されるように、プロセス１から４において、それぞれクリティカルセッションを含むトランザクション処理が実行される。それぞれのトランザクション処理は３単位のＣＰＵ時間が必要する。プロセス１では時刻１から時刻２にかけてクリティカルセクション処理が実行されている。プロセス２では、時刻１から時刻２にかけてビジーウェイトか行われている。そして、プロセス２では、時刻２から時刻３にかけてクリティカルセクション処理が実行されている。プロセス３及び４では、クリティカルセクション処理が始まるのはそれぞれ時刻３及び４からである。プロセス１では、１個のトランザクションを処理するために必要なＣＰＵ時間は３単位である。プロセス２、３及び４では、同様のトランザクション処理をするためにそれぞれ４、５及び６単位のＣＰＵ時間が必要とされる。４つのＣＰＵでトランザクション処理を終了するために必要なＣＰＵ時間の平均は、４．５単位となる。このため、クリティカルセクション処理を含まないトランザクションを処理する場合と比較して、１個のトランザクションを処理するために必要なＣＰＵ時間が長くなる。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
一般に、排他処理が必要な部分は、トランザクション処理の全体にわたって発生しているのではない。トランザクション処理は、複数の部分処理からなる一連の処理である。このトランザクション処理の一部の処理の間で、排他処理が必要な部分が発生することが多い。そこで、一部の排他処理が必要な部分と他の処理との競合による影響を軽減する方法、または、一部の排他処理が必要な部分と他の処理との競合を解消する方法が望まれる。これにより、予測した処理時間と実際の処理時間との不一致が解消される。また、性能モデルによる予測結果通りの性能が発揮される。そこで、これらを実現するためには、競合が発生する部分処理の組み合わせが特定される必要がある。
【００１２】
しかし、競合する部分処理の組み合わせを特定する方法が、従来存在しなかった。従来は、高度な知識を持つ熟練技術者が、競合する部分処理を特定するため、種々の測定ツールを組み合わせてサーバの動作を調べていた。そして、その結果と熟練技術者の経験に基づいて競合する部分処理の発生箇所を推定していた。従来の手法には、膨大な人的リソースが必要であるいう問題があった。また、従来の方法には、作業が長時間化しやすいという問題があった。さらに、競合発生の推定結果が必ずしも正確ではない。そして、競合発生箇所の推定を誤る場合があった。その結果、従来の手法には、以降に実施する対策作業が無駄になることがあるという問題があった。このように、部分処理間の競合箇所を特定する作業は、システム構築コストを引き上げる原因の一つとなっていた。
【００１３】
本発明は、このような状況に鑑みてなされたものである。本発明の目的は、複数のトランザクションを並列処理するコンピュータシステムにおいて、互いに競合する部分処理を特定する技術を提供することである。ここで、トランザクション処理を実行するプログラムは、トランザクション処理プログラムとする。さらに、一のトランザクション処理プログラムは、複数の部分処理からなるとする。
【課題を解決するための手段】
【００１４】
上述の課題を解決するため、本発明は次のような競合部分処理検出方法、システム及びコンピュータプログラムを提供する。
【００１５】
まず、本発明は、複数の部分処理からなる第１及び第2のトランザクション処理の並列処理を行う時に、前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせを検出する競合部分処理検出方法であって、前記第1及び第2のトランザクション処理間に競合が発生しない並列処理時における前記第1のトランザクション処理の部分集合と第2のトランザクション処理の部分集合との組み合わせのそれぞれに対して第１の指標値を計測し、前記第1及び第2のトランザクション処理間に競合が発生する並列処理時における前記第1のトランザクション処理の部分集合と第2のトランザクション処理の部分集合との組み合わせのそれぞれに対して第２の指標値を計測し、前記第1及び前記第2の指標値に基づいて前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせを検出する競合部分処理検出方法を提供する。
【００１６】
さらに、本発明は、前記第2の指標値が前記第1の指標値より大きい場合の部分処理の組み合わせを、前記第1及び前記第2のトランザクション処理における競合が発生する部分処理の組み合わせとして検出することを特徴とする競合部分処理検出方法を提供する。
【００１７】
また、本発明は、前記第1及び第2の指標値は、プロセッサ時間、プロセッサが実行した命令数または排他制御のためのロック獲得に失敗した数のいずれかであることを特徴とする競合部分処理検出方法を提供する。
【発明の効果】
【００１８】
本発明は、互いに複数の部分処理からなる複数のトランザクション処理プログラムについて、競合するトランザクション処理が並列処理されたときの処理時間と競合しないトランザクション処理が並列処理されたたときの処理時間とを比較する。そして、この結果の性能指標値の対応関係に基づいて競合する部分処理の発生箇所の特定を行う。これにより、複数のトランザクション処理プログラムの間で競合が発生した部分処理の組み合わせを検出する技術を提供することができる。これにより、競合する部分処理の特定を容易に行うことができる。このため、人的リソースを削減することが可能である。また、作業時間が短縮される。さらに、システム構築コストを削減することが可能である。
【発明を実施するための最良の形態】
【００１９】
本発明の実施の形態の一例である競合部分処理特定システム１が説明される。図１を参照すると、競合部分処理特定システム１は、測定対象サーバ２、負荷発生部３、計測部４、集計部５、検出部６及び制御部７から構成される。
【００２０】
測定対象サーバ２は、プログラム制御により動作するサーバである。測定対象サーバ２は、トランザクション処理プログラムａ、トランザクション処理プログラムｂ、ＯＳカーネル（ＯＳ  ｋｅｒｎｅｌ）８及びトレーサ９から構成されている。測定対象サーバ２は２種類のトランザクションを処理する。２種類のトランザクションは、トランザクションａ及びトランザクションｂである。この実施の形態では２種類のトランザクションを用いて説明するが、トランザクションは３種類以上でもよい。トランザクションａの処理を実行するプログラムが、トランザクション処理プログラムａである。また、トランザクションｂの処理を実行するプログラムが、トランザクション処理プログラムｂである。測定対象サーバ２は、不図示の２個のＣＰＵを搭載している。トランザクション処理プログラムａ及びｂは、それぞれ別のＣＰＵで実行される。このとき、トランザクション処理プログラムａ及びｂは、一部が同時に実行されてもよい。以下では、トランザクション処理プログラムa及びbが、少なくとも一部が同時に実行される場合が説明される。トランザクション処理プログラムａ及びｂは、それぞれアプリケーションプローブ１０を内蔵する。アプリケーションプローブ１０は、トランザクション処理プログラムの実行状況に関する情報を出力する。ＯＳカーネル８は、カーネルプローブ１１を内蔵している。カーネルプローブ１１は、ＯＳカーネル８の実行状況に関する情報を出力する。以下、アプリケーションプローブ１０及びカーネルプローブ１１は、総称して単にプローブと記されている。
【００２１】
図２（ａ）にトランザクション処理プログラムａの処理フローが示される。トランザクション処理プログラムａは、部分処理１００、２００及び３００から構成される。また、トランザクション処理の開始情報及び終了情報と各部分処理の切り替わり情報とが、トレーサ９に記録される。トレーサ９への情報の記録のため、アプリケーションプローブ１０はトランザクション処理開始情報及び終了情報を収集する。さらに、アプリケーションプローブ１０は、各部分処理の切り替わり情報を収集する。図２（ａ）において、アプリケーションプローブとして、ＡｐＰｒｏｂｅ０１、ＡｐＰｒｏｂｅ１２、ＡｐＰｒｏｂｅ２３及びＡｐＰｒｏｂｅ３０が挙げられている。
【００２２】
また、図２（ｂ）に、トランザクション処理プログラムｂの処理フローが示される。トランザクション処理プログラムｂは、部分処理４００、５００及び６００から構成される。図２（ａ）と同様に、アプリケーションプローブ１０により、トランザクション処理開始情報及び終了情報と各部分処理の切り替わり情報とが収集される。図２（ｂ）において、アプリケーションプローブとして、ＡｐＰｒｏｂｅ０４、ＡｐＰｒｏｂｅ４５、ＡｐＰｒｏｂｅ５６及びＡｐＰｒｏｂｅ６０が挙げられている。
【００２３】
ＯＳカーネル８は、複数のプログラムの並行実行（マルチプロセス）をサポートするオペレーティングシステムのカーネルである。ＯＳカーネル８は、負荷発生部３からトランザクション処理要求を受け取る。ＯＳカーネル８は、受け取ったトランザクション処理を適切なトランザクション処理プログラムに渡して、処理を行う。そして、ＯＳカーネル８は、トランザクション処理結果をそのトランザクション処理の要求元に返す。ＯＳカーネル８には、カーネルプローブ１１が設置されている。カーネルプローブ１１が設置してある部分の一例としては、ＯＳカーネル内のプロセスの復帰（ＣＰＵ使用開始・再開）とプロセスの退避（ＣＰＵ使用中断・終了）処理を行なう部分である。カーネルプローブ１１は、プロセスの復帰及び退避処理の実行状況に関する情報を出力する。
【００２４】
本発明において、トランザクション処理は、複数の部分処理からなる一連の処理である。本発明において、並行処理は、複数のトランザクション処理が並行して処理または実行されることである。ＣＰＵが１個であれば、並行処理は、見かけ上同時に複数のトランザクション処理が実行されることである。このとき、ＣＰＵ時間が非常に短い単位時間に分割され、複数のトランザクション処理のそれぞれに対して順番に単位時間が割り当てられている。また、ＣＰＵが複数であれば、本発明における並列処理は、複数のトランザクション処理それぞれを別のＣＰＵに割り当てて同時に実行することである。並行実行とマルチプロセスとは同様の意味である。
【００２５】
トレーサ９は、アプリケーションプローブ１０及びカーネルプローブ１１からプログラムの実行状況に関する情報を受け取る。さらに、トレーサ９は、受け取った情報を時系列データとして記録する。この時系列データはトレースデータと呼ばれる。トレーサ９は制御部７からのトレース収集開始・終了指示に基づいてトレースデータの収集を開始及び終了する。
【００２６】
負荷発生部３は、制御部７から送られる負荷発生指示に基づいて、測定対象サーバ２にトランザクションを送る。負荷発生指示には、例えば、指定された負荷量が含まれている。
【００２７】
計測部４は、制御部７からトレース計測指示を受け取る。その後、計測部４は、トレース計測指示に基づいて、トレーサ９からトレースデータを受け取り、トレースデータの計測を行う。そして、計測部４は、各部分処理で使用したＣＰＵ時間を求める。ＣＰＵ時間を求める計測処理には、特開２００６‐２２７９９９号公報に記載されている方法が用いられてもよい。計測部４は、トレースデータを計測処理に入力する。これにより、各部分処理で使用したＣＰＵ時間が求められる。図３には、トランザクション処理ａとｂの部分処理にかかるＣＰＵ時間（相対値）が示されている。図３におけるＣＰＵ時間は、トランザクション処理ａ及びｂがそれぞれ単独で実行されたときの時間である。
【００２８】
集計部５は、計測部４から計測結果を受け取る。さらに、集計部５は、制御部７から負荷量を示す値を受け取る。集計部５は、計測結果及び負荷量を示す値を集計結果表として記録する。
【００２９】
検出部６は、制御部７から起動指示を受け取る。さらに、検出部６は、集計部５から集計結果表を受け取る。検出部６は、起動指示に基づいて検出を開始する。検出部６は、集計結果表に基づいて、トランザクション処理プログラムa及びbにおいて資源競合が発生した部分処理の組み合わせを検出する。そして、検出部６は、部分処理の組み合わせの検出結果をボトルネック検出結果として出力する。
【００３０】
制御部７は、トランザクション処理の競合が発生しない負荷量及びトランザクション処理の競合が発生する負荷量の２種類の負荷量のそれぞれについて、以下の（１）〜（５）の一連の処理の実行を指示する。
（１）制御部７は、負荷発生部３に対して負荷量を指定して負荷の発生を指示する。
（２）制御部７は、トレーサ９に対してトレースデータ収集の開始及び終了を指示する。
（３）制御部７は、計測部４に対してトレースデータの計測を指示する。
（４）制御部７は、集計部５に対し、負荷量を示す値を渡し、集計結果表の生成を指示する。
（５）制御部７は、検出部６に対し、集計結果表に基づいて、競合する部分処理の組み合わせを検出するように指示する。
【００３１】
また、本実施の形態の一例において、トランザクション処理の部分処理２００と５は同時に実行することができないクリティカルセクションである。トランザクション処理の部分処理２００と５の片方は、スピンロックにより排他制御されるものである。すなわち、別々のＣＰＵが部分処理２００と５の処理を行おうとした場合は、後から処理に入ろうとしたＣＰＵは、スピンロックによる排他制御がされる。つまり、後から処理に入ろうとしたＣＰＵは、先に処理を行っているＣＰＵがクリティカルセクションの処理を完了するまで待つ。本実施の形態の一例では、事前に分かっていない部分処理２００と５がクリティカルセクションによって競合していることが検出される。
【実施例１】
【００３２】
実施例１が説明される。実施例１では、複数のＣＰＵにより、複数のトランザクションが処理される。そして、複数のトランザクションにおいて、互いに競合している部分処理が特定される。
【００３３】
本実施例の競合部分処理特定システム１において、測定対象サーバ２に対して２種類の負荷がかけられている。本実施例の競合部分処理特定システム１は、２種類の負荷それぞれをかけたときの動作状況において採取されたトレースデータから各部分処理で使用したＣＰＵ時間を求める。そして、本実施例の競合部分処理特定システム１は、その結果からトランザクション中の競合している部分処理を特定する。以下に本実施例の競合部分処理特定システム１が詳しく説明される。また、図２３に、本実施例のフローチャートが示される。
【００３４】
最初に、制御部７は、負荷発生部３に対し、トランザクション処理同士が競合しない負荷量の発生を指示する。トランザクション処理同士が競合しない状況の一例は、同時に１つのトランザクションしか処理しないような状況である。この場合、例えば、負荷発生部３は最初に１つのトランザクションを要求し、その応答が返ってきたら次のトランザクション要求を行う。このようにすると、トランザクション処理の競合は起きない状況が作られる。負荷発生部３は、制御部７から指示された負荷量及び頻度のトランザクション処理を測定対象サーバ２に要求する（Ｓ１）。測定対象サーバ２は、負荷発生部３から要求されたトランザクション処理を実行する（Ｓ２）。図４において、トランザクション処理同士が競合しないトランザクション処理を要求されたときの測定対象サーバ２の動作状況を示すトレースデータの一例が示される。また、図５には、図４のトレースデータをタイミングチャートとして表示したものが示される。ここでは、測定対象サーバ２は、ＣＰＵ１とＣＰＵ２とを含む。ＣＰＵ１は、トランザクションaの処理をトランザクション処理プログラムａにより実行する。また、ＣＰＵ２は、トランザクションbの処理をトランザクション処理プログラムｂにより実行する。さらに、ここでは、ＣＰＵ１により実行される処理がプロセスａとされ、ＣＰＵ２により実行される処理がプロセスｂとされる。測定対象サーバ２の２個のＣＰＵは、プロセスａ及びプロセスｂを並列して実行する。
【００３５】
測定対象サーバ２がトランザクションを処理しているとき、制御部７は、測定対象サーバ２内のトレーサ９に対してトレース収集開始を指示する（Ｓ３）。その後、測定対象サーバ２が予め決められている適切な数のトランザクション処理を実行した後、制御部７はトレース収集終了を指示する。また、制御部７は、トランザクション処理を実行する時間が経過したことにより収集終了を指示してもよい。これにより、トレース収集開始から終了までの間の各プログラムの実行状況に関する情報、すなわち、測定対象サーバ２の動作状況を示すトレースデータがトレーサ９内に蓄積される。
【００３６】
計測部４は、トランザクション処理プログラムの実行状況を計測する。まず、計測部４は、制御部７からトレース計測指示に基づいてトレースデータを読み出す。そして、計測部４は、トレースデータに基づいて、並列に実行されているプロセスａの部分処理とプロセスｂの部分処理の組み合わせにより処理時間を分類する。さらに、計測部４は、各々の部分処理についての処理時間を求める。図５には、プロセスａ−ｂの処理の組み合わせと各組み合わせに対応する処理時間が示されている。プロセスａ−ｂの処理の組み合わせは、プロセスａ及びプロセスｂの部分処理の組み合わせを示している。ここで、「２−４」は、プロセスａの部分処理２００とプロセスｂの部分処理４００とが並列して実行されていること示す。また、「１−０」は、プロセスａの部分処理１００が単独で実行されており、プロセスｂの部分処理は実行されていないことを示す。図６には、図５の実行状況、すなわちプロセスａとｂの処理の組み合わせと実行時間の関係が表により示されている。図６において、各欄の値を列（縦）方向で合計は、プロセスａの各部分処理時間合計が表されている。また、行（横）方向で合計は、プロセスｂの各部分処理時間合計が表されている。図５を見ると、ここでは、排他処理が必要である部分処理２００と部分処理５００との間の競合がない。従って、ここでは、各々の部分処理時間は、図３に示した値と同じになる。例えば、図５では、部分処理２００と部分処理４００とは並列して実行されているが、部分処理４００は排他処理が必要な部分処理でないので、互いに競合していない。従って、部分処理２００に使用されたＣＰＵ時間は、図３に示されるプロセスａを単独で実行した場合と、図５に示されるプロセスａとプロセスｂとを同時に実行した場合とで同じである。どちらの場合であっても、部分処理２００に使用されたＣＰＵ時間は０．９であり、部分処理４００に使用されたＣＰＵ時間は１．０である。
【００３７】
トレースデータ採取中に、測定対象サーバ２が複数のトランザクションを実行すると、前記の計測結果は複数トランザクションの合計値となる。実行したトランザクション数は、トレースデータに記録されているアプリケーションプローブにより検出される。例えば、トランザクション処理開始情報の収集を行うＡｐＰｒｏｂｅ０１とＡｐＰｒｏｂｅ０４等の数から判明する。また、各トランザクションに含まれる部分処理の数もトレースデータに記録されているアプリケーションプローブにより検出される。例えば、終了情報と各部分処理の切り替わり情報の収集を行うＡｐＰｒｏｂｅ１２とＡｐＰｒｏｂｅ２３等の数から判明する。
【００３８】
本実施例では、計測部４は、複数トランザクションについての計測結果（合計値）と実行したトランザクション数を集計部５に送る。集計部５は、計測結果を受け取る（Ｓ５）。そして、集計部５は１トランザクション当たりの時間を求める。図６には、「プロセスａの各部分処理合計」と「プロセスｂの各部分処理合計」とが示されている。
【００３９】
次に、制御部７は、負荷発生部３に対し、トランザクション処理同士が競合する負荷量の発生を指示する。負荷発生部３は、制御部７から指示された負荷量及び頻度のトランザクション処理を測定対象サーバ２に要求する（Ｓ６）。測定対象サーバ２は、負荷発生部３から要求されたトランザクション処理を実行する（Ｓ７）。そして、制御部７は、トレーサ９にトレース収集開始・終了指示を出す。トレーサ９は、測定対象サーバ２がトランザクション処理同士が競合するトランザクション処理を受けたときの動作状況のトレースデータを採取する（Ｓ８）。そして、制御部７は、計測部４にトレース計測指示を出す。計測部４は、トランザクション処理プログラムの実行状況を計測する（Ｓ９）。計測部４は制御部７からトレース計測指示に基づいてトレースデータを読み出し、トレースデータを分析する。
【００４０】
サーバ動作の例が図７と図８とに示される。図７において、プロセスaの部分処理２００とプロセスｂの部分処理５００は排他処理が必要な部分処理である。従って、部分処理２００と部分処理５００との間で競合が発生する。図７において、プロセスｂの部分処理４００と部分処理５００の間、時刻ｔ２４からｔ２５の間の部分が斜線部で記されている。斜線部は、スピンロックを示す。プロセスａにおける部分処理２００は、時刻ｔ２３から先に実行されている。プロセスｂの部分処理５００は、ｔ２４にて後から実行を開始している。従って、プロセスｂの部分処理５００は、スピンロックによりプロセスａの部分処理２００が終了するｔ２５まで処理開始を待たなければならない。図８では、プロセスｂによる部分処理５００がプロセスａの部分処理２００より先に実行されている。プロセスｂによる部分処理５００が、時刻ｔ３３から実行されており、プロセスａの部分処理２００はｔ３４から実行されている。そこで、プロセスａの部分処理２００は、スピンロックによりプロセスｂの部分処理５００が終了するｔ３５まで処理の開始を待たさなければならない。
【００４１】
図９と図１０とには、図６に示される競合のない場合と同様にして図７と図８とにおける実行状況が表で表されている。図９では、プロセスｂの部分処理５００の処理時間は、１．５になっている。図６において、ＣＰＵ消費時間が競合のないときは、プロセスｂの部分処理５００の処理時間は１．２である。プロセスｂの部分処理５００の処理時間は、これは、プロセスｂの部分処理５００が、プロセスａの部分処理２００との競合によりスピンロックされているためである。ＣＰＵ消費時間が競合のあるときのプロセスｂの部分処理５００の処理時間は、ＣＰＵ消費時間が競合のないときの処理時間に比べて大きくなっている。図９と同様に、図１０では、プロセスａの部分処理２００の処理時間が１．５であり、図６に示されるＣＰＵ消費時間が競合のないとき処理時間である０．９に比べて大きくなっている。これは、プロセスａの部分処理２００が、プロセスｂの部分処理５００との競合によるスピンロックされているためである。
【００４２】
測定対象サーバ２が競合する複数のトランザクションを実行しており、トレーサ９がその複数のトランザクション処理のトレースデータを採取したとき、そのトレースデータには、図７や図８に示される競合が混在していると想定される。ここでは、そのトレースデータを計測して得られる結果は、図９と図１０とに示した表の合計として表される。図９と図１０に示した表の合計が、図１１に示される。計測部４は、トランザクション処理同士が競合しない負荷量を測定対象サーバ２にかけたときと同様、図１１に示される計測結果と実行したトランザクション数を集計部５に送る。集計部５は、計測結果を受け取る（Ｓ１０）
集計部５では、図６に示されるトランザクション処理同士が競合しない負荷量が測定対象サーバ２で処理されたときの動作状況を計測した結果と図１１に示されるトランザクション処理同士が競合する負荷量が測定対象サーバ２で処理されたときの動作状況を計測した結果を集計する（Ｓ１１）。集計は、以下の手順で行われる。
【００４３】
まず、集計部５は、図１１に対して次の（１）〜（３）の処理を実行する。そして、集計部５は、図１２のようなテーブルを生成する。
（１）集計部５は、各部分処理合計の欄をトランザクション数で割って、１トランザクション当たりの処理時間の値を求める。上述の例では、トランザクションａ及びトランザクションｂの２つのトランザクションであるので、集計部５は各部分処理合計の欄の値を２で割る。
（２）集計部５は、（１）の結果の各部分処理合計の値と競合のないときの各部分処理の時間との差を求める。そして、集計部５は、求められた結果をプロセスａの各部分処理時間差の欄又はプロセスｂの各部分処理時間差の欄に記入する。
（３）集計部５は、トランザクションａ及びトランザクションｂについて「処理なし（０）」となっている列と行を削除する。
（４）集計部５は、０でない値の入っている欄をマークを記入するする。図１２では、一例として、○が記入されている。
【００４４】
次に、集計部５は、図１２のテーブルにおいて、各部分処理時間差の欄がゼロでない要素（ここでは、部分処理２００と部分処理５００）の行と列でマークの入っている欄にこの値を加える。そして、集計部５は、図１３に示されるテーブルを生成する処理を実行する。
【００４５】
具体的には、まず、集計部５は、プロセスａとプロセスｂの部分処理の組み合わせを表す全要素の初期値が０の配列を用意する。そして、集計部５は、プロセスａの部分処理２００の列においてマークの入った要素、すなわち、部分処理４００、５００、６００の欄に０．３を加える。さらに、集計部５は、プロセスｂの部分処理５００の列においてマークの入った要素、すなわち、部分処理１００、２００、３００の欄に０．１５を加える。
【００４６】
集計部５は、この集計結果を検出部６に送る。検出部６は、集計結果を受け取る（Ｓ１２）。検出部６は、配列の要素中で最も大きな値を持つ要素が競合する部分処理を示すものとして検出する。図１３の例では、最も大きな値を持つ配列要素は部分処理２００の列と部分処理５００の行の交点である。従って、検出部６は、競合している処理は部分処理２００と部分処理５００であると検出する（Ｓ１３）。
【００４７】
以上述べたとおり、本実施例の競合部分処理特定システムは、競合が発生していないとき測定対象サーバの動作のトレースデータと競合が発生しているときの測定対象サーバの動作のトレースデータとに基づいて、競合の原因となっている部分処理を検出することができる。
【実施例２】
【００４８】
次に、本発明の実施例２が説明される。本実施例の機能ブロックの構成は、実施例１の競合部分処理特定システム１と同様である。従って、本実施例の機能ブロックの構成は、図１で示される。以下では、競合部分処理特定システム１と異なる点が説明される。
【００４９】
図２（ａ）にトランザクション処理プログラムａの処理フローが示される。トランザクション処理プログラムａは、部分処理１００、２００及び３００から構成される。また、トランザクション処理の開始情報及び終了情報と各部分処理の切り替わり情報とが、トレーサ９に記録される。トレーサ９への情報の記録のため、アプリケーションプローブ１０によりトランザクション処理開始情報及び終了情報と各部分処理の切り替わり情報とが収集される。図２（ａ）において、アプリケーションプローブとして、ＡｐＰｒｏｂｅ０１、ＡｐＰｒｏｂｅ１２、ＡｐＰｒｏｂｅ２３及びＡｐＰｒｏｂｅ３０が挙げられている。
【００５０】
また、図２（ｂ）に、トランザクション処理プログラムｂの処理フローが示される。トランザクション処理プログラムｂは、部分処理４００、５及び６から構成される。図２（ａ）と同様に、アプリケーションプローブ１０により、トランザクション処理開始情報及び終了情報と各部分処理の切り替わり情報とが収集される。図２（ｂ）において、アプリケーションプローブとして、ＡｐＰｒｏｂｅ０４、ＡｐＰｒｏｂｅ４５、ＡｐＰｒｏｂｅ５６及びＡｐＰｒｏｂｅ６０が挙げられている。
【００５１】
本実施例では、部分処理の開始および終了に着目して競合部分処理特定システム１の動作が説明される。例えば、ＡｐＰｒｏｂｅ１２により、部分処理１００の終了と部分処理２００の開始の２つ動作が検出される。本実施例では、ＡｐＰｒｏｂｅ１２は、まず、部分処理１００の終了に対応する処理を検出し、その後、部分処理２００の開始に対応する処理を検出する。
【００５２】
計測部４は、トレースデータから１イベントずつ読み込む。イベントは、トランザクションの開始や終了、部分処理の実行、部分処理の開始や終了等が含まれる。計測部４は、イベントに応じた操作を行う。例えば、計測部４は、各部分処理で使用したＣＰＵ時間を求めるための操作や、部分処理の開始や終了に対応する操作を行う。また、例えば、計測部４は、図１４に示すような処理中部分処理リストを持っており、処理中部分処理リストの更新を行ってもよい。さらに、計測部４は、例えば図１５に示すような集計結果リストを集計部５から受け取り、集計結果リストの更新を行ってもよい。
【００５３】
図１４に示される処理中部分処理リストは、次の２つの部分処理を表すデータ構造である。
（１）あるイベントが発生した時点において、測定対象サーバ２が処理している部分処理
（２）各部分処理と並列に実行されている他の部分処理
トレースデータから読み込んだイベントに応じて、計測部４は、処理中処理リストに要素を追加・削除等を行う。
【００５４】
図１５に示される集計結果リストは、各部分処理についての動作結果を表すデータ構造である。計測部４は、トレースデータからイベントを読み込んで計測操作をするときに、集計リストに対して、要素の追加や保持されている値に対する加算操作を行う。
【００５５】
計測部４がトレースデータから読み込むイベントが部分処理開始を示すイベントのとき、計測部４は次のような計測操作を行う。
（１）計測部４は、イベントの部分処理に対応する要素を、処理中部分処理リスト中に作成する。そして、計測部４は、その要素が持つ並列実行部分処理リストに、その時点の処理中部分処理リストに保持されている部分処理を加える（以下、開始操作１）。
（２）計測部４は、その時点の処理中部分処理リストに保持されている各部分処理が持つ並列実行部分処理リストに、開始イベントに関連する部分処理を繋ぐ（以下、開始操作２）。
（３）計測部４は、開始操作１で作成したリスト要素を処理中部分処理リストに加える（以下、開始操作３）。
【００５６】
また、計測部４がトレースデータから読み込むイベントが部分処理終了を示すイベントの場合、計測部４は次のような計測操作を行う。
（１）計測部４は、イベントの部分処理についての性能指標値を求める。例えば、この実施例では、計測部４は、ＣＰＵ時間を求める（以下、終了操作１）。
（２）計測部４は、部分処理が持つ並列実行部分処理リストにある各要素（以下、他部分処理）について、集計結果中の部分処理終了のイベントにかかる部分処理における他部分処理欄の性能指標値に（１）で求めた部分処理についての性能指標値を加える。そして、他の部分処理の欄に（１）で求めた部分処理が存在しない場合は、計測部４は新たに他の部分処理の欄を作成する。更に、計測部４は、その回数欄の値に１を加える（以下、終了操作２）。
（３）計測部４は、処理中部分処理リストから部分処理終了のイベントにかかる部分処理の要素を消去する（以下、終了操作３）。
【００５７】
終了操作２において、その部分処理が持つ並列実行部分処理リストが空の場合は、「なし」の欄が操作対象となる。
【００５８】
計測部４による操作の具体例が、図４のイベント系列を用いて説明される。図４のイベント系列のタイミング図は図５に示される。図４のイベント系列を含むトレースデータが入力されたときの動作を以下に示す。行頭の（）内のｔ１１、ｔ１２、…、ｔ１８は、図５に記載の時刻を示す。以下、図１６に示される集計結果の作成方法が説明される。
【００５９】
（ｔ１１）部分処理１００の開始を意味するＡｐＰｒｏｂｅ０１が入力される。この時点では、処理中部分処理リストは空である。従って、開始操作１および開始操作２は行われない。そして、開始操作３により部分処理１００が処理中部分処理リストに繋がれる。
【００６０】
（ｔ１２）ＡｐＰｒｏｂｅ１２が入力されると、部分処理１００の終了についての操作が行われる。そして、部分処理２００の開始についての操作が行われる。部分処理１００の終了についての操作では、計測部４が、終了操作１により部分処理１００のＣＰＵ時間を１．０と求める。
【００６１】
次に、終了操作２が行われる。ここで、処理中部分処理リスト中につながれた部分処理１００の並列実行部分処理リストは空である。従って、集計結果において部分処理１００に「なし」の欄が作成される。部分処理１００の「なし」の欄の性能指標値に終了処理１で求めた１．０が加えられる。また、部分処理１００の「なし」の欄の回数に１が加えらる。その後、終了操作３により、処理中部分処理リストから部分処理１００の要素が削除される。
【００６２】
次に、部分処理２００の開始操作が行われる。これは前記部分処理１００の開始操作と同様である。部分処理２００の開始操作の結果は、処理中部分処理リストに部分処理２００が繋がれた状態である。また、このときの部分処理２００が持つ並列実行部分処理リストは空となる。
【００６３】
（ｔ１３）部分処理４００の開始を意味するＡｐＰｒｏｂｅ０４が入力される。開始操作１により、処理中部分処理リストに繋がれる要素である部分処理４００の並列実行部分処理リストに部分処理２００が繋がれる。開始操作２により、処理中部分処理リストに繋がれている部分処理２００が持つ並列実行部分処理リストに部分処理４００が繋がれる。
【００６４】
その後、開始操作３により、開始操作１で作成された部分処理４００を示すリスト要素が処理中部分処理リストに繋がれる。ここで、処理中部分リストは以下の状態である。
（１）処理中部分処理リストには、部分処理４００と部分処理２００が繋がれている。
（２）処理中部分処理リスト中の部分処理４００が持つ並列実行部分処理リストには、部分処理２００が繋がれている。処理中部分処理リスト中の部分処理２００が持つ並列実行部分処理リストには部分処理４００が繋がれている。
【００６５】
（ｔ１４）部分処理２００の終了と部分処理３００の開始を意味するＡｐＰｒｏｂｅ２３が入力される。部分処理２００の終了についての操作が行われる。その後、部分処理３００の開始についての操作が行われる。部分処理２００の終了についての操作では、計測部４が終了操作１により部分処理２００のＣＰＵ時間を０．９と求める。
【００６６】
次に、終了操作２を行う。処理中部分処理リスト中につながれた部分処理２００の並列実行部分処理リストには部分処理４００が繋がれている。従って、集計結果中の部分処理２００に「部分処理４００」の欄が作成される。部分処理２００の「部分処理４００」の欄の性能指標値に終了処理１で求めた０．９が加えられる。さらに、部分処理２００の「部分処理４００」の欄の回数に１が加えられる。その後、終了操作３により、処理中部分処理リストから部分処理２００の要素が削除される。
【００６７】
次に、部分処理３００の開始操作が行われる。部分処理３００の開始操作は、部分処理４００の開始操作と同様である。操作の結果、処理中部分リストは以下の状態である。
（１）処理中部分処理リストにおいて、部分処理３００と部分処理４００とが繋がれている。
（２）処理中部分処理リスト中の部分処理４００が持つ並列実行部分処理リストにおいて、部分処理４００に部分処理３００と部分処理２００とが繋がれている。また、処理中部分処理リスト中の部分処理３００が持つ並列実行部分処理リストにおいて、部分処理３００に部分処理４００が繋がれている。
なお、図１４は、このときの処理中部分処理リスト及び実行部分処理リストの状態を示している。
【００６８】
（ｔ１５）部分処理４００の終了と部分処理５００の開始を意味するＡｐＰｒｏｂｅ４５が入力される。そして、部分処理４００の終了についての操作が行われる。その後、部分処理５００の開始についての操作が行われる。部分処理４００の終了についての操作では、計測部４が終了操作１により部分処理４００のＣＰＵ時間を１．０と求める。
【００６９】
次に、終了操作２が行われる。処理中部分処理リスト中につながれた部分処理４００の並列実行部分処理リストには部分処理３００と部分処理２００とが繋がれている。従って、集計結果中の部分処理４００に「部分処理３００」と「部分処理２００」の欄が作成される。部分処理４００の「部分処理３００」及び「部分処理２００」の欄の性能指標値に終了処理１で求められた１．０が加えられる。また、部分処理４００の「部分処理３００」及び「部分処理２００」の欄の回数に１が加えられる。その後、終了操作３により処理中部分処理リストから部分処理４００の要素が削除される。この場合、集計結果内の複数欄に対して性能指標値と回数の加算操作が行われる。
【００７０】
次に、部分処理５００の開始操作が行われる。部分処理５００の開始操作は前記部分処理４００や部分処理３００の開始操作と同様である。操作の結果、処理中部分リストは以下の状態である。
（１）処理中部分処理リストには部分処理５００と部分処理３００とが繋がれている。
（２）処理中部分処理リスト中の部分処理５００が持つ並列実行部分処理リストには、部分処理５００に部分処理３００が繋がれている。また、処理中部分処理リスト中の部分処理３００が持つ並列実行部分処理リストには、部分処理３００に部分処理５００と部分処理４００とが繋がれている。
【００７１】
上記の操作がＡｐＰｒｏｂｅ６０まで実行されると、集計結果リストは、図１６に示すようになる。図１７は、図１６の結果を行列表示したものである。各行が集計結果の配下にある部分処理に対応している。各列が前記部分処理の配下にある他部分処理もしくは「なし」の欄に対応している。
【００７２】
以上、説明したアルゴリズムが、図７及び図８の動作をトレースしたデータに適用される。換言すると、図７及び図８の動作のトレースデータが計測部４に入力されるとき、図１８及び図１９に示す行列表がそれぞれ得られる。図１８、図１９および各部分処理が単独で１回動作した場合についての結果を合計したものが図２０に示される。各部分処理が単独で１回動作した場合には、部分処理１００〜６００について、なしの欄のみに値が入力される。ここで、（）内の数値は、性能指標値の平均値である。性能指標値の平均値は、性能指標値を回数で割ることにより求められる。本実施例では、この結果が検出部６に送られる。そして、検出部６は、以下の手順で競合している部分処理を検出する。
【００７３】
検出部６は、図２０の表において、部分処理欄に値が入っている要素の平均値について「なし」欄との差をとる。その結果が図２１に示される。そして、検出部６は、部分処理ｍの行と部分処理ｎの列が交わる点および部分処理ｎの行と部分処理ｍの列が交わる点の両方とも０以外の値が入っているｍ−ｎの組み合わせを探す。図２１では、部分処理２００と部分処理５００との組み合わせが前記の条件に該当する。従って、検出部６は、部分処理２００と部分処理５００の間で競合が起きているという検出結果を出す。
【００７４】
以上述べたとおり、本実施例の競合部分処理特定システムは、競合が発生していないとき測定対象サーバの動作のトレースデータと競合が発生しているときの測定対象サーバの動作のトレースデータとに基づいて、競合の原因となっている部分処理を検出することができる。
【００７５】
更に、本実施例の競合部分処理特定システムは、３個以上の処理が並列して動作しているサーバから採取したトレースデータにも適用可能である。すなわち、本実施例の競合部分処理特定システムは、競合が発生していない状態と競合が発生している状態とを別個に測定・分析する必要はない。本実施例の競合部分処理特定システムは、個々の部分処理について並列に実行されていた部分処理を考慮しての集計操作が行う。
【００７６】
なお、本実施例の競合部分処理特定システムでは、検出部６による検出操作として、「なし」欄との差をとる方法が説明された。しかし、各行について性能指標値の平均値を求め、その平均値との差を調べる方法が用いられてもよい。その場合、検出部６は、差が正の値となっている要素が競合による性能指標値増加の影響を受けていると検出すればよい。また、本実施例の競合部分処理特定システムでは、性能指標値としてＣＰＵ時間が用いられる例が説明された。その他にも、性能指標値は、ＣＰＵで実行した命令数や排他制御のためのロック獲得に失敗した回数等、他の性能指標が使用されてもよい。
【産業上の利用可能性】
【００７７】
本発明の競合部分処理特定システムは、例えば、情報処理システムを構築する際の負荷テストに適用することが出来る。特に、情報処理システムにおいて複数のトランザクションを並列処理する際に発生する競合の原因となっている部分処理を効率的に発見するための測定・分析装置や、測定・分析のためのコンピュータプログラムに適用することが出来る。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施の形態である競合部分処理検出システム１の機能ブロック図である。
【図２】トランザクション処理プログラムａ及びｂにおけるアプリケーションプローブと部分処理の関係を説明するためのフローチャートである。
【図３】各プロセスによりトランザクションが処理した部分処理の順番と、それぞれの部分処理で費やしたＣＰＵ時間との例を説明するための図である。
【図４】トランザクション処理同士が競合しない負荷をかけたときの測定対象サーバ２の動作状況を示すトレースデータの一例である。
【図５】図４のトレースデータを表示したタイミング図である。
【図６】図５の動作状況におけるプロセスａとｂの部分処理の組み合わせとＣＰＵ時間との対応関係を示す表である。
【図７】トランザクション処理同士が競合する負荷をかけたときの測定対象サーバ２の動作状況を示すタイミング図の一例である。
【図８】トランザクション処理同士が競合する負荷をかけたときの測定対象サーバ２の動作状況を示すタイミング図の一例である。
【図９】図７の動作状況におけるプロセスａとｂの部分処理の組み合わせとＣＰＵ時間との対応関係を示す表である。
【図１０】図８の動作状況におけるプロセスａとｂの部分処理の組み合わせとＣＰＵ時間との対応関係を示す表である。
【図１１】図９及び１０の表において、部分処理の組み合わせが同じ欄のＣＰＵ時間同士の和を対応する欄に納めた表である。
【図１２】図１１の表に対して集計部５が一部の処理を行った状態を説明するための表である。
【図１３】図１２の表に対して集計部５が更に処理を行った状態を説明するための表である。
【図１４】処理中部分処理リストの例である。
【図１５】集計結果リストの構造を説明するための図である。
【図１６】集計結果リストの例である。
【図１７】図１６の結果を行列表示したものである。
【図１８】部分処理の組み合わせと、ＣＰＵ時間とその組み合わせを実行した回数とを示す表であり、図７の動作状況を計測部４が計測して生成した表である。
【図１９】部分処理の組み合わせと、ＣＰＵ時間とその組み合わせを実行した回数とを示す表であり、図８の動作状況を計測部４が計測して生成した表である。
【図２０】図１８及び１９の表において、対応する部分処理の組み合わせ毎にＣＰＵ時間と回数の和を求め、ＣＰＵ時間及び回数の和からＣＰＵ時間の平均値を求めて格納した表である。
【図２１】図２０の表において、部分処理の組み合わせの欄に格納されている平均値と、「なし」欄に格納されている平均値との差を格納した表である。
【図２２】４つのＣＰＵを備えるサーバが４つのトランザクション処理を同時に開始したときの処理の経過を示す図である。
【図２３】本発明の実施の形態の動作を示すフローチャートの図である。
【符号の説明】
【００７９】
１    競合部分処理検出システム
２    測定対象サーバ
３    負荷発生部
４    計測部
５    集計部
６    検出部
７    制御部
８    ＯＳカーネル
９    トレーサ
１０  アプリケーションプローブ
１１  カーネルプローブ
【図１】
2008269578.tif 000003
【図２】
2008269578.tif 000004
【図３】
2008269578.tif 000005
【図４】
2008269578.tif 000006
【図５】
2008269578.tif 000007
【図６】
2008269578.tif 000008
【図７】
2008269578.tif 000009
【図８】
2008269578.tif 000010
【図９】
2008269578.tif 000011
【図１０】
2008269578.tif 000012
【図１１】
2008269578.tif 000013
【図１２】
2008269578.tif 000014
【図１３】
2008269578.tif 000015
【図１４】
2008269578.tif 000016
【図１５】
2008269578.tif 000017
【図１６】
2008269578.tif 000018
【図１７】
2008269578.tif 000019
【図１８】
2008269578.tif 000020
【図１９】
2008269578.tif 000021
【図２０】
2008269578.tif 000022
【図２１】
2008269578.tif 000023
【図２２】
2008269578.tif 000024
【図２３】
2008269578.tif 000025