(57)【要約】【課題】  複数のトランザクションを並行処理する際のボトルネックについて、その発生箇所の特定を可能とするボトルネック検出システム、測定対象サーバ、ボトルネック検出方法およびプログラムを提供する。【解決手段】  トレーサ５は指定された負荷量のトランザクションを処理しているときの測定対象サーバ１０の実行履歴を収集し、解析手段１２は実行履歴を受け取り、解析し、ソフトウェア部品についての性能指標を分析し、判定手段１４は解析結果を受け取り、取得した負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理する。【選択図】  図１
2006227999.tif 000002
【特許請求の範囲】
【請求項１】
指定された負荷量のトランザクションを処理しているときの測定対象サーバの実行履歴を収集するトレーサと、
前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析する解析手段と、
前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定する判定手段と、
を備えることを特徴とするボトルネック検出システム。
【請求項２】
指定された負荷量に従って測定対象サーバにトランザクションを送る負荷発生手段と、
トランザクションを処理しているときの前記測定対象サーバの実行履歴を収集するトレーサと、
前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析する解析手段と、
前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定する判定手段と、
を備えることを特徴とするボトルネック検出システム。
【請求項３】
トランザクションを処理する測定対象サーバと、
指定された負荷量に従って前記測定対象サーバにトランザクションを送る負荷発生手段と、
トランザクションを処理しているときの前記測定対象サーバの実行履歴を収集するトレーサと、
前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析する解析手段と、
前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定する判定手段と、
を備えることを特徴とするボトルネック検出システム。
【請求項４】
前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す集計結果表を作成する集計手段をさらに備え、
前記判定手段は、前記集計結果表に格納された値を所定のアルゴリズムで処理することにより、ボトルネックを特定することを特徴とする請求項１から３のいずれか１項に記載のボトルネック検出システム。
【請求項５】
前記判定手段は、前記値を所定のアルゴリズムで処理することにより、ボトルネック部分および原因を特定することを特徴とする請求項１から４のいずれか１項に記載のボトルネック検出システム。
【請求項６】
前記指定された負荷量は、制御手段によって指定されることを特徴とする請求項１から５のいずれか１項に記載のボトルネック検出システム。
【請求項７】
前記負荷量を示す値は、前記制御手段から取得することを特徴とする請求項１から６のいずれか１項に記載のボトルネック検出システム。
【請求項８】
前記トレーサは、少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集し、
前記判定手段は、前記高負荷をかけたときと低負荷をかけたときの性能指標であるリソース使用時間および経過時間を比較してボトルネックを特定することを特徴とする請求項１から７のいずれか１項に記載のボトルネック検出システム。
【請求項９】
前記測定対象サーバは、ＯＳ  ｋｅｒｎｅｌに組み込んだカーネル・プローブとトランザクション処理ソフトウェアに組み込んだアプリケーション・プローブを備え、
前記トレーサは、前記カーネル・プローブおよび前記プリケーション・プローブから少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集し、
前記解析手段は、前記アプリケーション・プローブで区切られるソフトウェア部品について性能指標であるリソース使用時間および経過時間を求め、
前記判定手段は、前記性能指標から、負荷を増やしていくと他のソフトウェア部品よりも時間の延びが大きい性能指標をボトルネックとして特定することを特徴とする請求項１から８のいずれか１項に記載のボトルネック検出システム。
【請求項１０】
前記所定のアルゴリズムは、前記結果集計表中の各ソフトウェア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間[1]を求め、次に、全ソフトウェア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求め、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウェア部品と平均値の値を比較し、負荷が増えるに従って平均値よりも値が著しく大きくなっている要素を見つけ、ＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているソフトウェア部品のＣＰＵ使用時間をボトルネックと判定し、また、経過・ＣＰＵ時間比が、平均値よりも値が著しく大きくなっている場合には、そのソフトウェア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定することを特徴とする請求項１から９のいずれか１項に記載のボトルネック検出システム。
【請求項１１】
指定された負荷量に従って負荷発生手段から送られたトランザクションを処理する測定対象サーバであって、
トレーサによって、トランザクションを処理しているときの実行履歴が収集され、
解析手段によって、前記トレーサから前記実行履歴が受け取られ、解析され、自機内のソフトウェア部品についての性能指標が分析され、
判定手段によって、解析手段から解析結果が受け取られ、取得された前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値が所定のアルゴリズムで処理させることで、ボトルネックが特定されることを特徴とする測定対象サーバ。
【請求項１２】
集計手段によって、前記解析手段から解析結果が受け取られ、取得された前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す集計結果表が作成され、
前記判定手段によって、前記集計結果表に格納された値が所定のアルゴリズムで処理されることにより、ボトルネックが特定されることを特徴とする請求項１１記載の測定対象サーバ。
【請求項１３】
前記判定手段によって、前記値が所定のアルゴリズムで処理されることにより、ボトルネック部分および原因が特定されることを特徴とする請求項１１または１２記載の測定対象サーバ。
【請求項１４】
前記指定された負荷量は、制御手段によって指定されることを特徴とする請求項１１から１３のいずれか１項に記載の測定対象サーバ。
【請求項１５】
前記負荷量を示す値は、前記制御手段から取得することを特徴とする請求項１１から１４のいずれか１項に記載の測定対象サーバ。
【請求項１６】
前記トレーサによって、少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴が収集され、
前記判定手段によって、前記高負荷をかけたときと低負荷をかけたときの性能指標であるリソース使用時間および経過時間が比較されてボトルネックが特定されることを特徴とする請求項１１から１５のいずれか１項に記載の測定対象サーバ。
【請求項１７】
ＯＳ  ｋｅｒｎｅｌに組み込んだカーネル・プローブとトランザクション処理ソフトウェアに組み込んだアプリケーション・プローブを備え、
前記トレーサによって、前記カーネル・プローブおよび前記プリケーション・プローブから少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴が収集され、
前記解析手段によって、前記アプリケーション・プローブで区切られるソフトウェア部品について性能指標であるリソース使用時間および経過時間が求められ、
前記判定手段によって、前記性能指標から、負荷を増やしていくと他のソフトウェア部品よりも時間の延びが大きい性能指標がボトルネックとして特定されることを特徴とする請求項１１から１６のいずれか１項に記載の測定対象サーバ。
【請求項１８】
前記所定のアルゴリズムは、前記結果集計表中の各ソフトウェア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間[1]を求め、次に、全ソフトウェア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求め、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウェア部品と平均値の値を比較し、負荷が増えるに従って平均値よりも値が著しく大きくなっている要素を見つけ、ＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているソフトウェア部品のＣＰＵ使用時間をボトルネックと判定し、また、経過・ＣＰＵ時間比が、平均値よりも値が著しく大きくなっている場合には、そのソフトウェア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定することを特徴とする請求項１１から１７のいずれか１項に記載の測定対象サーバ。
【請求項１９】
トレーサが指定された負荷量のトランザクションを処理しているときの測定対象サーバの実行履歴を収集するステップを有し、
解析手段が前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを有し、
判定手段が前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを有することを特徴とするボトルネック検出方法。
【請求項２０】
負荷発生手段が指定された負荷量に従って測定対象サーバにトランザクションを送るステップを有し、
トレーサがトランザクションを処理しているときの前記測定対象サーバの実行履歴を収集するステップを有し、
解析手段が前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを有し、
判定手段が前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを有することを特徴とするボトルネック検出方法。
【請求項２１】
負荷発生手段が指定された負荷量に従って測定対象サーバにトランザクションを送るステップを有し、
前記測定対象サーバがトランザクションを処理するステップを有し、
トレーサがトランザクションを処理しているときの前記測定対象サーバの実行履歴を収集するステップを有し、
解析手段が前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを有し、
判定手段が前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを有することを特徴とするボトルネック検出方法。
【請求項２２】
集計手段が前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す集計結果表を作成するステップをさらに有し、
前記判定手段が、前記集計結果表に格納された値を所定のアルゴリズムで処理することにより、ボトルネックを特定することを特徴とする請求項１９から２１のいずれか１項に記載のボトルネック検出方法。
【請求項２３】
前記判定手段が、前記値を所定のアルゴリズムで処理することにより、ボトルネック部分および原因を特定することを特徴とする請求項１９から２２のいずれか１項に記載のボトルネック検出方法。
【請求項２４】
前記指定された負荷量は、制御手段によって指定されることを特徴とする請求項１９から２３のいずれか１項に記載のボトルネック検出方法。
【請求項２５】
前記負荷量を示す値は、前記制御手段から取得することを特徴とする請求項１９から２４のいずれか１項に記載のボトルネック検出方法。
【請求項２６】
前記トレーサが、少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集し、
前記判定手段が、前記高負荷をかけたときと低負荷をかけたときの性能指標であるリソース使用時間および経過時間を比較してボトルネックを特定することを特徴とする請求項１９から２５のいずれか１項に記載のボトルネック検出方法。
【請求項２７】
前記トレーサが、前記測定対象サーバが備えるＯＳ  ｋｅｒｎｅｌに組み込んだカーネル・プローブおよびトランザクション処理ソフトウェアに組み込んだアプリケーション・プローブから少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集し、
前記解析手段が、前記アプリケーション・プローブで区切られるソフトウェア部品について性能指標であるリソース使用時間および経過時間を求め、
前記判定手段が、前記性能指標から、負荷を増やしていくと他のソフトウェア部品よりも時間の延びが大きい性能指標をボトルネックとして特定することを特徴とする請求項１９から２６のいずれか１項に記載のボトルネック検出方法。
【請求項２８】
前記所定のアルゴリズムは、前記結果集計表中の各ソフトウェア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間[1]を求め、次に、全ソフトウェア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求め、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウェア部品と平均値の値を比較し、負荷が増えるに従って平均値よりも値が著しく大きくなっている要素を見つけ、ＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているソフトウェア部品のＣＰＵ使用時間をボトルネックと判定し、また、経過・ＣＰＵ時間比が、平均値よりも値が著しく大きくなっている場合には、そのソフトウェア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定することを特徴とする請求項１９から２７のいずれか１項に記載のボトルネック検出方法。
【請求項２９】
トレーサに指定された負荷量のトランザクションを処理しているときの測定対象サーバの実行履歴を収集するステップを実行させ、
解析手段に前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを実行させ、
判定手段に前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを実行させることを特徴とするプログラム。
【請求項３０】
負荷発生手段が指定された負荷量に従って測定対象サーバにトランザクションを送るステップを実行させ、
トレーサにトランザクションを処理しているときの前記測定対象サーバの実行履歴を収集するステップを実行させ、
解析手段に前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを実行させ、
判定手段に前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを実行させることを特徴とするプログラム。
【請求項３１】
負荷発生手段に指定された負荷量に従って測定対象サーバにトランザクションを送るステップを実行させ、
前記測定対象サーバにトランザクションを処理するステップを実行させ、
トレーサにトランザクションを処理しているときの前記測定対象サーバの実行履歴を収集するステップを実行させ、
解析手段に前記トレーサから前記実行履歴を受け取り、解析し、前記測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを実行させ、
判定手段に前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを実行させることを特徴とするプログラム。
【請求項３２】
集計手段に前記解析手段から解析結果を受け取り、取得した前記負荷量を示す値から前記負荷量と前記性能指標の関係を示す集計結果表を作成するステップをさらに実行させ、
前記判定手段に、前記集計結果表に格納された値を所定のアルゴリズムで処理することにより、ボトルネックを特定させることを特徴とする請求項２９から３１のいずれか１項に記載のプログラム。
【請求項３３】
前記判定手段に、前記値を所定のアルゴリズムで処理することにより、ボトルネック部分および原因を特定させることを特徴とする請求項２９から３２のいずれか１項に記載のプログラム。
【請求項３４】
前記指定された負荷量は、制御手段によって指定されることを特徴とする請求項２９から３３のいずれか１項に記載のプログラム。
【請求項３５】
前記負荷量を示す値は、前記制御手段から取得することを特徴とする請求項２９から３４のいずれか１項に記載のプログラム。
【請求項３６】
前記トレーサに、少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集させ、
前記判定手段に、前記高負荷をかけたときと低負荷をかけたときの性能指標であるリソース使用時間および経過時間を比較してボトルネックを特定させることを特徴とする請求項２９から３５のいずれか１項に記載のプログラム。
【請求項３７】
前記トレーサに、前記測定対象サーバが備えるＯＳ  ｋｅｒｎｅｌに組み込んだカーネル・プローブおよびトランザクション処理ソフトウェアに組み込んだアプリケーション・プローブから少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集させ、
前記解析手段に、前記アプリケーション・プローブで区切られるソフトウェア部品について性能指標であるリソース使用時間および経過時間を求めさせ、
前記判定手段に、前記性能指標から、負荷を増やしていくと他のソフトウェア部品よりも時間の延びが大きい性能指標をボトルネックとして特定させることを特徴とする請求項２９から３６のいずれか１項に記載のプログラム。
【請求項３８】
前記所定のアルゴリズムは、前記結果集計表中の各ソフトウェア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間[1]を求め、次に、全ソフトウェア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求め、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウェア部品と平均値の値を比較し、負荷が増えるに従って平均値よりも値が著しく大きくなっている要素を見つけ、ＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているソフトウェア部品のＣＰＵ使用時間をボトルネックと判定し、また、経過・ＣＰＵ時間比が、平均値よりも値が著しく大きくなっている場合には、そのソフトウェア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定することを特徴とする請求項２９から３７のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のトランザクションを並行処理する際のボトルネックを検出するボトルネック検出システム、測定対象サーバ、ボトルネック検出方法およびプログラムに関する。
【背景技術】
【０００２】
複数の処理要求（以降、「トランザクション」と呼ぶ）を並行処理するシステム（以降、「サーバ」と呼ぶ）の性能を評価する方法の一例が非特許文献１に記載されている。
【０００３】
この方法では、１トランザクションの処理で使用するサーバ・リソース（ＣＰＵやＤｉｓｋ）の時間という性能基礎データと待ち行列網理論に基づく性能予測モデルを使うことで、サーバが複数トランザクションを処理する際の性能（主には、トランザクションのレスポンス時間とサーバのスループットの関係）を見積もる。
【０００４】
ここで、例えば、非特許文献２に記載のように性能予測モデルとして性能シミュレータを使う場合もあるが、性能評価における入力データと出力結果は上記の非特許文献１と同様である。
【０００５】
さて、この方法で使用する性能予測モデルでは、通常、下記の前提の下で性能を予測している。
【０００６】
１）１トランザクションの処理で使用するサーバ・リソース時間は、サーバが単位時間に処理すべきトランザクション数が変化しても同じ、２）複数トランザクションの間で競合するのは、入力データに対応するサーバ・リソースのみ。このため、これらの前提が成立するサーバ（トランザクションを処理するソフトウェアを含む）では、性能予測モデルで得られる結果（トランザクションのレスポンス時間とサーバのスループットの関係）は、ほぼ忠実に実際のサーバ性能を反映したものとなる。
【０００７】
逆に、１）の条件が成立しないサーバの場合は複数のトランザクションを処理する場合に使用量が増加するサーバ・リソースがボトルネックとなる。
【０００８】
また、２）の条件が成立しないサーバの場合、性能予測モデルに反映されていない要素が実サーバのボトルネックとなるため、それら性能は、性能予測モデルで得られる結果より悪くなってしまうという問題（性能問題）が発生する。
【０００９】
このような問題の実例を４つのＣＰＵを持つサーバが４つのトランザクション処理を同時に開始した状況を図１１および図１２に示す。
【００１０】
図１１では、トランザクション処理中に排他制御の必要な（他のトランザクション処理と同時には実行できない）処理があり、その実行権を獲得するためにＣＰＵを使ってｂｕｓｙ  ｗａｉｔする状況を示している。
【００１１】
この場合、１個のトランザクションを処理するために必要なＣＰＵ時間は３単位であるが、図１１の状況では、各トランザクションの処理に各々３、４、５、６単位のＣＰＵ時間を必要としているため、平均で４．５単位となり、１個のトランザクションを処理するために必要なＣＰＵ時間が増加することになる。
【００１２】
一方、図１２では、排他制御が必要な処理の実行権を獲得するための待ちに、セマフォ等を利用することで、ＣＰＵを使わずに待つ状況を示している。もし、排他制御がないとすると、４ＣＰＵのサーバは３単位のＣＰＵ処理を必要とするトランザクションを１単位時間に４／３個実行できる計算になるが、図１２の状況では、排他制御のためのセマフォがボトルネックとなり、１単位時間に１トランザクションしか処理できない、すなわち、性能が予測より悪くなることになる。
【００１３】
また、個々のトランザクション処理プロセスがＣＰＵ使用時間を返送するインターフェースを備え、各トランザクション処理プロセスの処理能力の測定がトランザクション処理システム全体の処理能力と同時に測定することが可能となるとともに、個々のプロセスの処理能力を同時に計測しているため、トランザクション処理システム内でボトルネックとなっているトランザクション処理プロセスの特定が可能となる技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００１−１４１８９号公報
【非特許文献１】Ｔａｋａｓｈｉ  Ｈｏｒｉｋａｗａ，  Ｐｅｒｆｏｒｍａｎｃｅ  Ａｎａｌｙｓｉｓ  ｏｆ  ａ  Ｃｌｉｅｎｔ−Ｓｅｒｖｅｒ  Ｓｙｓｔｅｍ  Ｕｓｉｎｇ  Ｑｕｅｕｅｉｎｇ  Ｎｅｔｗｏｒｋｓ:  Ａ  Ｃａｓｅ  Ｓｔｕｄｙ，  Ｉｎｔ．  Ｔｒａｎｓ．  Ｏｐｌ  Ｒｅｓ．  Ｖｏｌ．  iv，  Ｎｏ．  ３，  ｐｐ．  １９９−２０９,  １９９７.
【非特許文献２】ｈｔｔｐ:／／ｗｗｗ．ｈｙｐｅｒｆｏｒｍｉｘ．ｃｏｍ／Ｄｅｆａｕｌｔ．ａｓｐ?Ｐａｇｅ＝２１０
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、上述した従来例においては次のような問題点があった。
【００１５】
上記のような性能問題を解消し、性能モデルによる予測結果通りの性能を発揮させるためには、実サーバのボトルネックを見つけて解消する必要があるが、従来の性能測定・分析方法では、ボトルネックの原因となる部分、さらにはその原因（図１１によるものか図１２によるものか）を調べる定型的な方法がなかったため、高度な知識を持つ熟練技術者が、種々の測定ツールを組み合わせてサーバの動作を調べ、その結果と熟練技術者の経験に基づいてボトルネックを推定していた。このため、ボトルネックを特定する作業には担当できる技術者に制約があり、また時間も掛かる上、場合によってはボトルネックの推定を誤ってしまい、以降に実施する対策作業が無駄になってしまうこともあるという問題があった。
【００１６】
すなわち、情報処理システム、特に、複数のトランザクションを並行処理するサーバでは、１つのトランザクションを処理する際の動作に問題はなくても、複数のトランザクションを並行処理する際にボトルネックが発生し、当初計画していた性能を発揮できない場合がある。このような問題に対して対策を講じるためには、問題となっているトランザクション処理ソフトウェアにおいてどの部分がボトルネックとなっているのか、また、その原因は何かを特定する必要がある。従来、このような目的を実現する体系的な方法がなかったため、サーバの動作状況をモニタする様々なツールを熟練者が状況に応じて使い分けて原因を究明していたため、時間がかかる上、人的リソースの問題も大きく、システム構築コストを引き上げる原因の一つとなっていた。
【００１７】
そこで、本発明は、複数のトランザクションを並行処理する際のボトルネックについて、その発生箇所の特定を可能とするボトルネック検出システム、測定対象サーバ、ボトルネック検出方法およびソフトウェアを提供することを目的とする。
【課題を解決するための手段】
【００１８】
請求項１記載の発明は、指定された負荷量のトランザクションを処理しているときの測定対象サーバの実行履歴を収集するトレーサと、トレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析する解析手段と、解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定する判定手段とを備えることを特徴とするボトルネック検出システムである。
【００１９】
請求項２記載の発明は、指定された負荷量に従って測定対象サーバにトランザクションを送る負荷発生手段と、トランザクションを処理しているときの測定対象サーバの実行履歴を収集するトレーサと、トレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析する解析手段と、解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定する判定手段とを備えることを特徴とするボトルネック検出システムである。
【００２０】
請求項３記載の発明は、トランザクションを処理する測定対象サーバと、指定された負荷量に従って測定対象サーバにトランザクションを送る負荷発生手段と、トランザクションを処理しているときの測定対象サーバの実行履歴を収集するトレーサと、トレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析する解析手段と、解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定する判定手段とを備えることを特徴とするボトルネック検出システムである。
【００２１】
請求項４記載の発明は、請求項１から３のいずれか１項に記載のボトルネック検出システムにおいて、解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す集計結果表を作成する集計手段をさらに備え、判定手段は、集計結果表に格納された値を所定のアルゴリズムで処理することにより、ボトルネックを特定することを特徴とする。
【００２２】
請求項５記載の発明は、請求項１から４のいずれか１項に記載のボトルネック検出システムにおいて、判定手段は、値を所定のアルゴリズムで処理することにより、ボトルネック部分および原因を特定することを特徴とする。
【００２３】
請求項６記載の発明は、請求項１から５のいずれか１項に記載のボトルネック検出システムにおいて、指定された負荷量は、制御手段によって指定されることを特徴とする。
【００２４】
請求項７記載の発明は、請求項１から６のいずれか１項に記載のボトルネック検出システムにおいて、負荷量を示す値は、制御手段から取得することを特徴とする。
【００２５】
請求項８記載の発明は、請求項１から７のいずれか１項に記載のボトルネック検出システムにおいて、トレーサは、少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集し、判定手段は、高負荷をかけたときと低負荷をかけたときの性能指標であるリソース使用時間および経過時間を比較してボトルネックを特定することを特徴とする。
【００２６】
請求項９記載の発明は、請求項１から８のいずれか１項に記載のボトルネック検出システムにおいて、測定対象サーバは、ＯＳ  ｋｅｒｎｅｌに組み込んだカーネル・プローブとトランザクション処理ソフトウェアに組み込んだアプリケーション・プローブを備え、トレーサは、カーネル・プローブおよびプリケーション・プローブから少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集し、解析手段は、アプリケーション・プローブで区切られるソフトウェア部品について性能指標であるリソース使用時間および経過時間を求め、判定手段は、性能指標から、負荷を増やしていくと他のソフトウェア部品よりも時間の延びが大きい性能指標をボトルネックとして特定することを特徴とする。
【００２７】
請求項１０記載の発明は、請求項１から９のいずれか１項に記載のボトルネック検出システムにおいて、所定のアルゴリズムは、結果集計表中の各ソフトウェア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間[1]を求め、次に、全ソフトウェア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求め、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウェア部品と平均値の値を比較し、負荷が増えるに従って平均値よりも値が著しく大きくなっている要素を見つけ、ＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているソフトウェア部品のＣＰＵ使用時間をボトルネックと判定し、また、経過・ＣＰＵ時間比が、平均値よりも値が著しく大きくなっている場合には、そのソフトウェア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定することを特徴とする。
【００２８】
請求項１１記載の発明は、指定された負荷量に従って負荷発生手段から送られたトランザクションを処理する測定対象サーバであって、トレーサによって、トランザクションを処理しているときの実行履歴が収集され、解析手段によって、トレーサから実行履歴が受け取られ、解析され、自機内のソフトウェア部品についての性能指標が分析され、判定手段によって、解析手段から解析結果が受け取られ、取得された負荷量を示す値から負荷量と性能指標の関係を示す値が所定のアルゴリズムで処理させることで、ボトルネックが特定されることを特徴とする測定対象サーバである。
【００２９】
請求項１２記載の発明は、集計手段によって、解析手段から解析結果が受け取られ、取得された負荷量を示す値から負荷量と性能指標の関係を示す集計結果表が作成され、判定手段によって、集計結果表に格納された値が所定のアルゴリズムで処理されることにより、ボトルネックが特定されることを特徴とする請求項１１記載の測定対象サーバである。
【００３０】
請求項１３記載の発明は、請求項１１または１２記載の測定対象サーバにおいて、判定手段によって、値が所定のアルゴリズムで処理されることにより、ボトルネック部分および原因が特定されることを特徴とする。
【００３１】
請求項１４記載の発明は、請求項１１から１３のいずれか１項に記載の測定対象サーバにおいて、指定された負荷量は、制御手段によって指定されることを特徴とする。
【００３２】
請求項１５記載の発明は、請求項１１から１４のいずれか１項に記載の測定対象サーバにおいて、負荷量を示す値は、制御手段から取得することを特徴とする。
【００３３】
請求項１６記載の発明は、請求項１１から１５のいずれか１項に記載の測定対象サーバにおいて、トレーサによって、少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴が収集され、判定手段によって、高負荷をかけたときと低負荷をかけたときの性能指標であるリソース使用時間および経過時間が比較されてボトルネックが特定されることを特徴とする。
【００３４】
請求項１７記載の発明は、請求項１１から１６のいずれか１項に記載の測定対象サーバにおいて、ＯＳ  ｋｅｒｎｅｌに組み込んだカーネル・プローブとトランザクション処理ソフトウェアに組み込んだアプリケーション・プローブを備え、トレーサによって、カーネル・プローブおよびプリケーション・プローブから少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴が収集され、解析手段によって、アプリケーション・プローブで区切られるソフトウェア部品について性能指標であるリソース使用時間および経過時間が求められ、判定手段によって、性能指標から、負荷を増やしていくと他のソフトウェア部品よりも時間の延びが大きい性能指標がボトルネックとして特定されることを特徴とする。
【００３５】
請求項１８記載の発明は、請求項１１から１７のいずれか１項に記載の測定対象サーバにおいて、所定のアルゴリズムは、結果集計表中の各ソフトウェア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間[1]を求め、次に、全ソフトウェア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求め、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウェア部品と平均値の値を比較し、負荷が増えるに従って平均値よりも値が著しく大きくなっている要素を見つけ、ＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているソフトウェア部品のＣＰＵ使用時間をボトルネックと判定し、また、経過・ＣＰＵ時間比が、平均値よりも値が著しく大きくなっている場合には、そのソフトウェア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定することを特徴とする。
【００３６】
請求項１９記載の発明は、トレーサが指定された負荷量のトランザクションを処理しているときの測定対象サーバの実行履歴を収集するステップを有し、解析手段がトレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを有し、判定手段が解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを有することを特徴とするボトルネック検出方法である。
【００３７】
請求項２０記載の発明は、負荷発生手段が指定された負荷量に従って測定対象サーバにトランザクションを送るステップを有し、トレーサがトランザクションを処理しているときの測定対象サーバの実行履歴を収集するステップを有し、解析手段がトレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを有し、判定手段が解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを有することを特徴とするボトルネック検出方法である。
【００３８】
請求項２１記載の発明は、負荷発生手段が指定された負荷量に従って測定対象サーバにトランザクションを送るステップを有し、測定対象サーバがトランザクションを処理するステップを有し、トレーサがトランザクションを処理しているときの測定対象サーバの実行履歴を収集するステップを有し、解析手段がトレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを有し、判定手段が解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを有することを特徴とするボトルネック検出方法である。
【００３９】
請求項２２記載の発明は、請求項１９から２１のいずれか１項に記載のボトルネック検出方法において、集計手段が解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す集計結果表を作成するステップをさらに有し、判定手段が、集計結果表に格納された値を所定のアルゴリズムで処理することにより、ボトルネックを特定することを特徴とする。
【００４０】
請求項２３記載の発明は、請求項１９から２２のいずれか１項に記載のボトルネック検出方法において、判定手段が、値を所定のアルゴリズムで処理することにより、ボトルネック部分および原因を特定することを特徴とする。
【００４１】
請求項２４記載の発明は、請求項１９から２３のいずれか１項に記載のボトルネック検出方法において、指定された負荷量は、制御手段によって指定されることを特徴とする。
【００４２】
請求項２５記載の発明は、請求項１９から２４のいずれか１項に記載のボトルネック検出方法において、負荷量を示す値は、制御手段から取得することを特徴とする。
【００４３】
請求項２６記載の発明は、請求項１９から２５のいずれか１項に記載のボトルネック検出方法において、トレーサが、少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集し、判定手段が、高負荷をかけたときと低負荷をかけたときの性能指標であるリソース使用時間および経過時間を比較してボトルネックを特定することを特徴とする。
【００４４】
請求項２７記載の発明は、請求項１９から２６のいずれか１項に記載のボトルネック検出方法において、トレーサが、測定対象サーバが備えるＯＳ  ｋｅｒｎｅｌに組み込んだカーネル・プローブおよびトランザクション処理ソフトウェアに組み込んだアプリケーション・プローブから少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集し、解析手段が、アプリケーション・プローブで区切られるソフトウェア部品について性能指標であるリソース使用時間および経過時間を求め、判定手段が、性能指標から、負荷を増やしていくと他のソフトウェア部品よりも時間の延びが大きい性能指標をボトルネックとして特定することを特徴とする。
【００４５】
請求項２８記載の発明は、請求項１９から２７のいずれか１項に記載のボトルネック検出方法において、所定のアルゴリズムは、結果集計表中の各ソフトウェア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間[1]を求め、次に、全ソフトウェア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求め、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウェア部品と平均値の値を比較し、負荷が増えるに従って平均値よりも値が著しく大きくなっている要素を見つけ、ＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているソフトウェア部品のＣＰＵ使用時間をボトルネックと判定し、また、経過・ＣＰＵ時間比が、平均値よりも値が著しく大きくなっている場合には、そのソフトウェア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定することを特徴とする。
【００４６】
請求項２９記載の発明は、トレーサに指定された負荷量のトランザクションを処理しているときの測定対象サーバの実行履歴を収集するステップを実行させ、解析手段にトレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを実行させ、判定手段に解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを実行させることを特徴とするソフトウェアである。
【００４７】
請求項３０記載の発明は、負荷発生手段が指定された負荷量に従って測定対象サーバにトランザクションを送るステップを実行させ、トレーサにトランザクションを処理しているときの測定対象サーバの実行履歴を収集するステップを実行させ、解析手段にトレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを実行させ、判定手段に解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを実行させることを特徴とするソフトウェアである。
【００４８】
請求項３１記載の発明は、負荷発生手段に指定された負荷量に従って測定対象サーバにトランザクションを送るステップを実行させ、測定対象サーバにトランザクションを処理するステップを実行させ、トレーサにトランザクションを処理しているときの測定対象サーバの実行履歴を収集するステップを実行させ、解析手段にトレーサから実行履歴を受け取り、解析し、測定対象サーバ内のソフトウェア部品についての性能指標を分析するステップを実行させ、判定手段に解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す値を所定のアルゴリズムで処理することにより、ボトルネックを特定するステップを実行させることを特徴とするソフトウェアである。
【００４９】
請求項３２記載の発明は、請求項２９から３１のいずれか１項に記載のソフトウェアにおいて、集計手段に解析手段から解析結果を受け取り、取得した負荷量を示す値から負荷量と性能指標の関係を示す集計結果表を作成するステップをさらに実行させ、判定手段に、集計結果表に格納された値を所定のアルゴリズムで処理することにより、ボトルネックを特定させることを特徴とする。
【００５０】
請求項３３記載の発明は、請求項２９から３２のいずれか１項に記載のソフトウェアにおいて、判定手段に、値を所定のアルゴリズムで処理することにより、ボトルネック部分および原因を特定させることを特徴とする。
【００５１】
請求項３４記載の発明は、請求項２９から３３のいずれか１項に記載のソフトウェアにおいて、指定された負荷量は、制御手段によって指定されることを特徴とする。
【００５２】
請求項３５記載の発明は、請求項２９から３４のいずれか１項に記載のソフトウェアにおいて、負荷量を示す値は、制御手段から取得することを特徴とする。
【００５３】
請求項３６記載の発明は、請求項２９から３５のいずれか１項に記載のソフトウェアにおいて、トレーサに、少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集させ、判定手段に、高負荷をかけたときと低負荷をかけたときの性能指標であるリソース使用時間および経過時間を比較してボトルネックを特定させることを特徴とする。
【００５４】
請求項３７記載の発明は、請求項２９から３６のいずれか１項に記載のソフトウェアにおいて、トレーサに、測定対象サーバが備えるＯＳ  ｋｅｒｎｅｌに組み込んだカーネル・プローブおよびトランザクション処理ソフトウェアに組み込んだアプリケーション・プローブから少なくとも２つ以上の高負荷をかけたときと低負荷をかけたときの実行履歴を収集させ、解析手段に、アプリケーション・プローブで区切られるソフトウェア部品について性能指標であるリソース使用時間および経過時間を求めさせ、判定手段に、性能指標から、負荷を増やしていくと他のソフトウェア部品よりも時間の延びが大きい性能指標をボトルネックとして特定させることを特徴とする。
【００５５】
請求項３８記載の発明は、請求項２９から３７のいずれか１項に記載のソフトウェアにおいて、所定のアルゴリズムは、結果集計表中の各ソフトウェア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間[1]を求め、次に、全ソフトウェア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求め、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウェア部品と平均値の値を比較し、負荷が増えるに従って平均値よりも値が著しく大きくなっている要素を見つけ、ＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているソフトウェア部品のＣＰＵ使用時間をボトルネックと判定し、また、経過・ＣＰＵ時間比が、平均値よりも値が著しく大きくなっている場合には、そのソフトウェア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定することを特徴とする。
【発明の効果】
【００５６】
本発明のボトルネック検出システム、測定対象サーバ、ボトルネック検出方法およびソフトウェアによれば、まず、測定対象サーバで処理すべき負荷が増えたときのボトルネックについて、その発生源であるソフトウエア部品を判断できる。その理由は、カーネル・プローブとアプリケーション・プローブを組み合わせて採取したイベント・トレースを分析し、各ソフトウエア部品について性能指標を求め、ボトルネックを判定しているためである。また、ボトルネックの原因がＣＰＵ使用時間なのかそれ以外の原因によるものなのかを判断することができる。その理由は、イベント・トレースの分析により、各ソフトウエア部品の性能指標としてＣＰＵ消費時間と経過時間を求め、ボトルネックを判定しているためである。
【発明を実施するための最良の形態】
【００５７】
次に、本発明の一実施の形態について図を参照して詳細に説明する。
【００５８】
図１を参照すると、本実施の形態におけるボトルネック検出システムは、ソフトウェア制御により動作する測定対象サーバ１０と、負荷発生手段１１と、解析手段１２と、集計手段１３と、判定手段１４と、制御手段１５とから構成されている。
【００５９】
測定対象サーバ１０は、ソフトウェア部品１〜３、ＯＳ  ｋｅｒｎｅｌ４、トレーサ５とから構成されている。また、ＯＳ  ｋｅｒｎｅｌ４内にはカーネル・プローブ、ソフトウェア部品１〜３内にはアプリケーション・プローブが内蔵されている。
【００６０】
これらの手段はそれぞれ概略以下のような機能を有している。
【００６１】
負荷発生手段１１は、制御手段１５から指定された負荷量に従って測定対象サーバ１０にトランザクションを送る機能を有している。
【００６２】
測定対象サーバ１０は、負荷発生手段１１から送られるトランザクションをＯＳ  ｋｅｒｎｅｌ４が受け取り、これをソフトウェア部品１〜３に渡して処理を行ない、処理結果をＯＳ  ｋｅｒｎｅｌ４を通してトランザクションの要求元に返す機能を有している。
【００６３】
また、トレーサ５は、ＯＳ  ｋｅｒｎｅｌ４に埋め込まれたカーネル・プローブおよびアプリケーション・プローブからソフトウェア実行状況に関する情報を受け取り、これを時系列データ（トレース・データ）として記録する。なお、トレーサ５によるトレース・データ収集は、制御手段１５からの指示に基づいて開始、終了する。
【００６４】
解析手段１２は、制御手段１５からの指示に基づき、測定対象サーバ１０内のトレーサ５からトレース・データを受け取り、解析を行なう機能を有している。
【００６５】
集計手段は、制御手段１５からの指示に基づき、解析手段１２から解析結果、制御手段１５から負荷量を示す値を受け取り、それらを記録する機能を有している。
【００６６】
制御手段１５は、負荷発生手段１１への負荷量を指定しての負荷発生指示、トレーサ５へのトレース・データ収集の開始・終了指示、解析手段１２へのトレース解析指示、集計手段に負荷量を示す値を渡しての集計指示、という一連の操作を、負荷量を変化させて繰り返し行なうことで、集計手段内に各種負荷量についての解析結果を集計結果表として蓄積させる機能を有している。
【００６７】
判定手段１４は、制御手段１５からの指示に基づき、集計結果表を入力し、測定対象サーバ１０のボトルネックを判定する機能を有している。
【００６８】
次に、図１〜７を参照して本実施の形態におけるボトルネックを検出する処理動作について詳細に説明する。
【００６９】
まず、前提として、測定対象サーバ１０によるトランザクション処理について説明する。
【００７０】
測定対象サーバ１０において、トランザクション処理に関与するのは、ＯＳ  ｋｅｒｎｅｌ４とソフトウェア部品１〜３である。ＯＳ  ｋｅｒｎｅｌ４は、複数ソフトウェアの並行実行（マルチ・プロセス）をサポートするオペレーティング・システムであり、プロセスの復帰（ＣＰＵ使用開始・再開）とプロセスの退避（ＣＰＵ使用中断・終了）処理を行なう部分にカーネル・プローブが設置してある。
【００７１】
ソフトウェア部品１〜３は、トランザクションを処理するソフトウェアを構成する部品であり、ソフトウェア部品１、２、３の順に動作して、トランザクションを処理するようになっている。各ソフトウェア部品には、各ソフトウェア部品が実行するトランザクション処理の開始部分と終了部分にアプリケーション・プローブが設置してある。カーネル・プローブが検出するイベントの表記および意味を図２、アプリケーション・プローブが検出するイベントの表記を図３に示す。なお、これらの表記は図４以降で使用する。
【００７２】
測定対象サーバ１０の各ソフトウェア要素（ＯＳ  ｋｅｒｎｅｌ４およびソフトウェア部品１〜３）が１個のトランザクションを処理する際の動作をシーケンス図表記したものを図４に示す。まず、測定対象サーバ１０外部からトランザクションが入力されると、ＯＳ  ｋｅｒｎｅｌ４は、トランザクションを処理するプロセス（ここではｎ）を作成し、その実行を開始する（イベントＰＲｎ）。
【００７３】
その後、処理はＯＳ  ｋｅｒｎｅｌ４からソフトウェア部品１に移動し、ソフトウェア部品１のトランザクションの処理を開始する（イベントＡＰ１ｉ）。次に、ソフトウェア部品１は、ソフトウェア部品２にトランザクションの処理を依頼する。
【００７４】
これにより、処理は、ソフトウェア部品１からソフトウェア部品２に移動し、ソフトウェア部品２のトランザクションの処理を開始する（イベントＡＰ２ｉ）。次に、ソフトウェア部品２は、ソフトウェア部品３にトランザクションの処理を依頼する。
【００７５】
これにより、処理はソフトウェア部品２からソフトウェア部品３に移動し、ソフトウェア部品３のトランザクションの処理を開始する（イベントＡＰ３ｉ）。
【００７６】
ソフトウェア部品３はトランザクションの処理を完了すると、ソフトウェア部品３は処理結果をソフトウェア部品２に返し、処理を終了する（イベントＡＰ３ｏ）。
【００７７】
ソフトウェア部品２はソフトウェア部品３から受け取った処理結果に対して処理した結果をソフトウェア部品１に返し、処理を終了する（イベントＡＰ２ｏ）。
【００７８】
ソフトウェア部品１はソフトウェア部品２から受け取った処理結果に対して処理した結果をＯＳ  ｋｅｒｎｅｌ４に返し、処理を終了する（イベントＡＰ１ｏ）。
【００７９】
ＯＳ  ｋｅｒｎｅｌ４は、ソフトウェア部品１から受け取った処理結果をトランザクションの要求元に返し、トランザクション処理を担当したプロセス（ｎ）の実行を完了させる（イベントＰＳｎ）。
【００８０】
以上、本測定対象サーバ１０では、１個のトランザクションを処理するために１個のプロセスが生成され、処理完了時にプロセスの実行を完了させるため、プロセスとトランザクションが１対１に対応している。
【００８１】
測定対象サーバ１０が複数のトランザクションを並行する際の動作の例を図５に示す。図５では、簡便的に、カーネル・プローブからのイベントのみを記載してある。
【００８２】
図５を参照すると、まず、プロセス１が動作していた状況において、時刻Ｔ１でプロセス１の実行を中断（ＰＳ１）およびプロセス２の実行を開始（ＰＲ２）する。
【００８３】
時刻Ｔ２でプロセス２の実行を中断（ＰＳ２）およびプロセス４の実行を開始（ＰＲ４）する。
【００８４】
時刻Ｔ３でプロセス４の実行を中断（ＰＳ４）およびプロセス１の実行を再開（ＰＲ１）する。
【００８５】
時刻Ｔ４でプロセス１の実行を中断（ＰＳ１）およびプロセス３の実行を開始（ＰＲ３）する。
【００８６】
時刻Ｔ５でプロセス３の実行を中断（ＰＳ３）およびプロセス２の実行を再開（ＰＲ２）する。
【００８７】
このようなプロセスの切り換え操作は、マルチ・プロセスをサポートするＯＳでは通常行なわれている操作であり、タイムスライス（と呼ばれる一定時間ごとに発生する割り込み）もしくは、プロセスによる自発的なＣＰＵの使用中断や完了を契機として行なわれる。
【００８８】
複数のトランザクションを並行している状態における１個のトランザクション処理の動作をシーケンス図として表記したものを図６に示す。この図では、図４と同様、トランザクション処理を担うプロセスをｎとして表記している。図６と図４との違いは、トランザクションを処理するためにＣＰＵを使用している途中にプロセスの切り換えが発生している点である。図６では、Ｔ３とＴ７でプロセス退避（イベントＰＳｎ）、時刻Ｔ４とＴ８でプロセス復帰（イベントＰＲｎ）が発生している。
【００８９】
次に、トレーサ５およびトレーサ５が採取したイベント・トレースの解析について説明する。
【００９０】
トレーサ５は、トレース採取期間中に測定対象サーバ１０内で発生するすべてのイベントを時系列データとして記録する機能を有している。
【００９１】
ここで、トレース対象となるイベントは、カーネル・プローブおよびアプリケーション・プローブに対応している。すなわち、これらのプローブが測定対象サーバ１０におけるソフトウェア実行に伴って実行されると、一旦トレーサ５に制御が渡り、当該プローブが検出したイベントの内容（図２と図３に記載）およびその発生時刻（トレーサ５がイベントを記録する時刻で近似）が１イベント分のデータとして測定対象計算機内に用意した記録装置に記録した後、元のソフトウェア実行を再開する。
【００９２】
イベントの発生時刻は、例えば、測定対象サーバ１０のＣＰＵが提供する機能を使って取得することが可能であり、その他の公知の技術によって取得されてもよい。トレース・データを記録するための記録装置としては、例えば、測定対象サーバ１０の主記憶内に割り当てたトレース・データ用の領域を使用することが可能であり、外部記憶媒体が利用されてもよい。
【００９３】
解析手段１２は、トレーサ５により採取されたトレース・データを分析し、各トランザクションについてソフトウェア部品毎のＣＰＵ使用時間と経過時間を求める。ここで、ＣＰＵはリソースの一例であり、リソースにはＤｉｓｋやネットワーク、メモリ等を含む。
【００９４】
具体的な計算方法を、図６のイベント系列を例に説明する。まず、ソフトウェア部品１は、時刻Ｔ２で実行を開始（ＡＰ１ｉ）し、時刻Ｔ５で処理をソフトウェア部品２に移動させており、この間、時刻Ｔ３でプロセスの実行を中断（ＰＳｎ）し、時刻Ｔ４でプロセスの実行を再開している（以降、前半処理と呼ぶ）。
【００９５】
また、時刻Ｔ１０でソフトウェア部品２から処理結果を受け取り、時刻Ｔ１１まで処理を行なった後、処理結果をＯＳ  ｋｅｒｎｅｌ４に渡すとともに、処理をＯＳ  ｋｅｒｎｅｌ４に移動させている（以降、後半処理と呼ぶ）。
【００９６】
この場合、ソフトウェア部品１前半処理の経過時間はＴ５−Ｔ２、後半処理の経過時間はＴ１１−Ｔ１０であり、全体としての経過時間は、（Ｔ５−Ｔ２）＋（Ｔ１１−Ｔ１０）となる。
【００９７】
また、ＣＰＵ使用時間の前半処理分は、Ｔ３からＴ４までの間ＣＰＵを使用していなかったので、この時間分を経過時間から差し引く、すなわち、（Ｔ５−Ｔ２）−（Ｔ４−Ｔ３）で求められる。
【００９８】
後半処理についてはＣＰＵ使用を中断した期間がなかったので、ＣＰＵ使用時間は経過時間（Ｔ１１−Ｔ１０）と等しくなるので、全体としてのＣＰＵ使用時間は（Ｔ５−Ｔ２）−（Ｔ４−Ｔ３）＋（Ｔ１１−Ｔ１０）となる。
【００９９】
同様に、ソフトウェア部品２の経過時間とＣＰＵ使用時間は両方とも（Ｔ６−Ｔ５）＋（Ｔ１０−Ｔ９）、ソフトウェア部品３の経過時間とＣＰＵ使用時間は、各々、Ｔ９−Ｔ６と（Ｔ９−Ｔ６）−（Ｔ８−Ｔ７）となる。
【０１００】
このように、経過時間はアプリケーション・プローブで検出されるイベントの時刻情報をもとに、当該ソフトウエア部品の処理を開始してから他のソフトウエア部品に処理を移すまでの時間を累計することで求まる。また、ＣＰＵ使用時間は、上記経過時間から、ＣＰＵ処理を中断していた時間、すなわち、カーネル・プローブで検出されるプロセス退避イベントからプロセス復帰イベントまでの時間を累計した時間を引いた時間として求めることができる。
【０１０１】
以上に示した基本要素を利用して複数のトランザクションを並行処理する際のボトルネックを検出する方法を以下に示す。この方法は、制御手段１５が、外部から取込まれた測定条件表（図８）を入力とし、図９のフロー・チャートに従って他の手段に対して順次指示を送ることで実行される。
【０１０２】
測定条件表の１行は１回の測定・解析操作に対応しており、図８では、５種類の負荷（１件／秒、５件／秒、１０件／秒、５０件／秒、１００件／秒）について測定・解析を行なうことを示している。
【０１０３】
制御手段１５は、まず、測定条件表の第一行に示された条件で測定・解析を行なう。すなわち、負荷発生装置に対して測定条件表の第１行目に指定された負荷量（この場合、１件/秒）を指定して負荷発生を指示し、測定条件表の第１行目に指定されたＲａｍｐ  ｕｐ時間（測定対象サーバ１０が指定された負荷量を定常的に処理する状態になるまでの時間。この場合、１０秒）待つ（ステップ１）。なお、負荷発生手段１１は、負荷発生を指示されると、指定された頻度でトランザクションを測定対象サーバ１０に送り、測定対象サーバ１０で処理された結果を受け取るようになっている。
【０１０４】
次に、トレーサ５に対してトレース収集開始を指示し、測定条件表の第１行目に指定された測定時間（トレース・データを採取する時間。この場合、１００秒）待つ（ステップ２）。
【０１０５】
次に、トレーサ５に対してトレース収集終了を指示する（ステップ４）。これにより、トレーサ５は、トレース採取開始から終了までの時間（測定期間）における測定対象サーバ１０の動作（ソフトウェア実行履歴）を記録したトレース・データを保持することになる（トレーサ５の説明参照）。
【０１０６】
次に、制御手段１５は、負荷発生装置に対して負荷発生停止を指示し、測定条件表の第１行目に指定されたＲａｍｐ  ｄｏｗｎ時間（測定対象サーバ１０が処理中のトランザクションを処理し終えてｉｄｌｅに戻るまでの時間）、１５秒待つ（ステップ４）。
【０１０７】
次に、制御手段１５は、解析手段１２に対してトレース解析を指示し、解析完了を待つ（ステップ５）。
【０１０８】
解析手段１２は、この指示を受け取ると、トレーサ５よりトレース・データを受け取り、解析手段１２の説明に従って解析を行ない、各ソフトウェア部品のＣＰＵ使用時間と経過時間を求めた後、これらの数値を測定対象サーバ１０がトレース・データ採取期間中に実行したトランザクションの数（本実施形態の場合、測定対象サーバ１０がトレース・データ採取期間中に実行したトランザクションを処理するプロセスの数と同じである）で割り、１トランザクション当たりの平均値を求める。
【０１０９】
次に、制御手段１５は、集計手段１３に対して、集計手段１３にこの測定・解析での負荷量（この場合、１件／秒）を指定して結果集計を指示する。
【０１１０】
集計手段１３は、この指示を受け取ると、解析手段１２より解析結果（各ソフトウェア部品の１トランザクション当たりのＣＰＵ使用時間と経過時間の平均値）を受け取り、指定された負荷量とともに結果集計表に記録する。
【０１１１】
これまでに示した操作により、図７の結果集計表の１行（この場合、負荷量が１件／秒の行）が作成される。
【０１１２】
このような一連の測定・解析、すなわち、図９のステップ１からステップ６を、制御手段１５の制御の下、図８の測定条件表にある各行について実施（図９のループに対応）することで、図７の結果集計表全体を作成することができる。
【０１１３】
図７の結果集計表が完成すると、制御手段１５は、判定手段１４に対してボトルネック判定を指示する（ステップ７）。
【０１１４】
判定手段１４は、この指示を受け取ると、集計手段１３より結果集計表を受け取り、予め設定されているアルゴリズムで処理することにより、ボトルネック部分および原因を特定する。
【０１１５】
本実施形態における判定手段１４に設定されているアルゴリズムを以下に示す。まず、結果集計表中の各ソフトウエア部品について経過・ＣＰＵ時間比［ｉ］＝経過時間［ｉ］／ＣＰＵ使用時間［ｉ］と、ＣＰＵ使用時間比［ｉ］＝ＣＰＵ使用時間［ｉ］／ＣＰＵ使用時間［１］を求め、次に、全ソフトウエア部品の経過・ＣＰＵ時間比［ｉ］の平均およびＣＰＵ使用時間比［ｉ］の平均を求める。ここで値名［ｉ］は、表中の値名に対応する列においてｉｎｄｅｘがｉの行にある値を示す表記である。
【０１１６】
図７の結果集計表に対して上記の計算を施した結果を図１０に示す。
【０１１７】
次に、判定手段１４では、経過・ＣＰＵ時間比とＣＰＵ使用時間比について、各ソフトウエア部品と平均値の値を比較し、負荷が増えるに従って平均よりも値が著しく（例えば、平均値の２倍以上）大きくなっている要素を見つける。
【０１１８】
図１０を参照すると、ソフトウエア部品２のＣＰＵ使用時間比が、平均よりも値が著しく大きくなっている要素となっているので、この場合のボトルネックは、ソフトウエア部品２のＣＰＵ使用時間であると判定する。
【０１１９】
また、この計算の結果、あるソフトウエア部品の経過・ＣＰＵ時間比が、平均よりも値が著しく大きくなっている場合には、そのソフトウエア部品のＣＰＵ使用時間以外の要素がボトルネックであると判定する。
【０１２０】
上記のように、本実施の形態によれば、測定対象サーバ１０で処理すべき負荷が増えたときのボトルネックについて、その発生源であるソフトウエア部品を判断できる上、その原因がＣＰＵ使用時間なのかそれ以外の原因によるものなのかを判断することができる。
【０１２１】
なお、上述する実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。例えば、上記の実施の形態における測定対象サーバ１０および各手段の機能を実現するためのプログラムを各装置等に読込ませて実行することにより本システムの機能を実現する処理を行なってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるＣＤ−ＲＯＭ、光磁気ディスク等を介して、または伝送媒体であるインターネット、電話回線等を介して伝送波により他のコンピュータシステムに伝送されてもよい。
【０１２２】
上述する実施の形態は、測定対象サーバ１０および各手段が別個に接続されているシステム構成について説明したが、各機能が１つのコンピュータシステムとして実現されている構成や機能毎に複数のサーバ装置等が追加された構成にも適用可能であることはもちろんである。特に、負荷発生の際に生ずる処理負担を分散する構成である、測定対象サーバ１０と、負荷発生手段１１を実現する負荷発生装置と、その他の各手段の機能を実現する装置とからなるシステムであってもよい。
【図面の簡単な説明】
【０１２３】
【図１】本発明の実施形態におけるボトルネック検出システムの概略構成図である。
【図２】カーネル・プローブが検出するイベントの表記および意味を示す図である。
【図３】アプリケーション・プローブが検出するイベントの表記を示す図である。
【図４】測定対象サーバの各ソフトウェア要素が１個のトランザクションを処理する動作のシーケンス図である。
【図５】測定対象サーバが複数のトランザクションを並行するする動作のシーケンス図である。
【図６】複数のトランザクションを並行している状態における１個のトランザクションを処理する動作のシーケンス図である。
【図７】結果集計表の一例を示す図である。
【図８】測定条件表の一例を示す図である。
【図９】制御手段が、測定条件表を入力とし、他の手段に対して順次指示を送る処理動作を示すフロー・チャートである。
【図１０】結果集計表に対して計算を施した結果の一例を示す図である。
【図１１】従来の４つのＣＰＵを持つサーバが４つのトランザクション処理を同時に開始した状況を示す図である。
【図１２】従来の４つのＣＰＵを持つサーバが４つのトランザクション処理を同時に開始した状況を示す図である。
【符号の説明】
【０１２４】
１、２、３    ソフトウェア部品
４    ＯＳ  ｋｅｒｎｅｌ
５    トレーサ
１０    測定対象サーバ
１１    負荷発生手段
１２    解析手段
１３    集計手段
１４    判定手段
１５    制御手段
【図１】
2006227999.tif 000003
【図２】
2006227999.tif 000004
【図３】
2006227999.tif 000005
【図４】
2006227999.tif 000006
【図５】
2006227999.tif 000007
【図６】
2006227999.tif 000008
【図７】
2006227999.tif 000009
【図８】
2006227999.tif 000010
【図９】
2006227999.tif 000011
【図１０】
2006227999.tif 000012
【図１１】
2006227999.tif 000013
【図１２】
2006227999.tif 000014