(57)【特許請求の範囲】
【請求項１】
複数のクラスタが共有メモリを共有するシステムの処理能力を測定するシミュレータであって、
前記複数のクラスタが、
Ｉ／Ｏ装置とアプリケーションを実行する手段とを有する第１のクラスタと、
前記共有メモリを排他的使用する状態にするロックシミュレート手段を有する第２のクラスタとから構成され、
前記第１のクラスタを単独で動作させて前記共有メモリにアクセスするアプリケーションを実行した際の処理能力を測定する第１の処理能力測定手段と、
前記第２のクラスタにロックシミュレート手段を動作させて前記共有メモリを所定間隔でロックすると共に、前記第１のクラスタに前記共有メモリにアクセスするアプリケーションを動作させ、複数のクラスタを動作させた際の処理能力を測定する第２の処理能力測定手段と、
前記第１の処理能力測定手段が求めた処理能力と、前記第２の処理能力測定手段が求めた処理能力とから、複数のクラスタで動作させた際の処理能力の係数を求める手段と
を有することを特徴とするシミュレータ。
【請求項２】
前記第１の処理能力測定手段が、処理能力としてＣＰＵ使用時間とトランザクション件数とから１トランザクションあたりのＣＰＵ使用時間を求め、
前記第２の処理能力測定手段が、処理能力としてＣＰＵ使用時間とトランザクション件数とから１トランザクションあたりのＣＰＵ使用時間を求め
ることを特徴とする請求項１記載のシミュレータ。
【請求項３】
前記係数を求める手段が、前記第１の処理能力測定手段が求めた１トランザクションあたりのＣＰＵ使用時間と、前記第２の処理能力測定手段が求めた１トランザクションあたりのＣＰＵ使用時間を計測時に実行したクラスタ数分掛けた値との比から求める
ことを特徴とする請求項２記載のシミュレータ。
【請求項４】
システムを構成する共有メモリを共有する複数のクラスタのうちの、第１のクラスタに設けた、Ｉ／Ｏ装置とアプリケーションを実行する手段と、
システムを構成する共有メモリを共有する複数のクラスタのうちの、第２のクラスタに設けた、前記共有メモリを排他的使用する状態にするロックシミュレート手段と、
前記第１のクラスタを単独で動作させて前記共有メモリにアクセスするアプリケーションを実行した際の処理能力を測定する第１の処理能力測定手段と、
前記第２のクラスタにロックシミュレート手段を動作させて前記共有メモリを所定間隔でロックすると共に、前記第１のクラスタに前記共有メモリにアクセスするアプリケーションを動作させ、複数のクラスタを動作させた際の処理能力を測定する第２の処理能力測定手段と、
前記第１の処理能力測定手段が求めた処理能力と、前記第２の処理能力測定手段が求めた処理能力とから、複数のクラスタで動作させた際の処理能力の係数を求める手段と
して機能させるプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のクラスタからなるシステムの処理能力を測定するシミュレータおよび記録媒体に関するものである。
【０００２】
【従来の技術】
従来、クラスタ結合型マルチプロセッサシステムは（以下マルチクラスタシステムと呼ぶ）は、処理させたい業務が増加した場合、業務量に応じてクラスタを増設できるが、各クラスタ間で同期をとらなければならない処理（主に共用データベースのアクセス）があり、クラスタ間の排他制御機構が必要となる。
【０００３】
クラスタ間でロックの競合が発生し、各クラスタの処理に待ちが生じる。クラスタ数の増加に伴い、ロック競合の度合いは大きくなり、１クラスタ当たりの処理能力が低下する要因となっている。
【０００４】
このようなマルチクラスタシステムの処理能力を評価するための指標としてマルチクラスタ係数があり、１クラスタシステムのときのの処理能力を“１”とした時の、ｎクラスタシステムの能力を示している。このマルチクラスタ係数を測定するための例として、１クラスタシステムの能力は、図１６の（ａ）に示すように、アプリケーションを実際に動作させ、クラスタに高い負荷をかけて、クラスタの処理能力を下記の（式１）によって測定するようにしていた。
【０００５】
また、ｎクラスタシステムの能力は、図１６の（ｂ）に示すように、ｎクラスタの全部にアプリケーションを動作させて、全クラスタの処理能力を測定するようにしていた。
【０００６】
0003796347.tif 000002
【０００７】
【発明が解決しようとする課題】
上述したように、ｎクラスタシステムの処理能力を測定する場合、各クラスタにアプリケーションを動作させるためのＩ／Ｏ装置が必要であるため、特にクラスタ数が多くなるとＩ／Ｏ装置などの設備の量が膨大となってしまう問題あった。
【０００８】
本発明は、これらの問題を解決するため、ｎクラスタシステムで１台のクラスタにＩ／Ｏ装置を設けると共にアプリケーションを動作させ、他のクラスタにはＩ／Ｏ装置を準備なしにしかも、アプリケーションを動作させなくても、ｎクラスタの処理能力の測定を実現することを目的としている。
【０００９】
【課題を解決するための手段】
図１を参照して課題を解決するための手段を説明する。
図１において、ＳＳＵ１１は、共有メモリである。
【００１０】
クラスタ１２は、ＳＳＵ１１をアクセスして各種処理を行う複数のクラスタであって、ロックシュミレート手段２１、ロック発生テーブル２２、および集計手段２３などから構成されるものである。
【００１１】
Ｉ／Ｏ装置群１４は、クラスタ０が使用して各種処理を行うためのものである。
システムディスク１５、１６は、クラスタ１、ｎが使用するものであって、ＯＳなどを格納するものである。
【００１２】
ロックシュミレート手段２１は、ロック（競合）をシミュレートするものである。
ロック発生テーブル２２は、ロック発生状態を登録して管理するものである（図１３参照）。
【００１３】
集計手段２３は、収集したクラスタの処理能力に関する情報を集計するものである。
次に、動作を説明する。
【００１４】
クラスタ１、２のロックシュミレート手段２１がロックを発生させた状態で、クラスタ０のロックシュミレート手段２１がアプリケーションを動作させて処理を実行してこのときの処理状態を測定するようにしている。
【００１５】
また、集計手段２３が測定した処理能力を集計して出力するようにしている。この際、ロックＩＤリスト、ＴＰＳ（１秒当たりのトアンザクション処理件数）、ＣＰＵ（ＣＰＵ使用率）などの情報を収集するようにしている。
【００１６】
従って、ｎクラスタシステムで１台のクラスタにＩ／Ｏ装置を接続すると共にアプリケーションを動作させ、他のクラスタにはＩ／Ｏ装置を準備なしでしかも、アプリケーションを動作させなくても、ｎクラスタの処理能力の測定を実現することが可能となる。
【００１７】
【発明の実施の形態】
次に、図２から図１５を用いて本発明の実施の形態および動作を順次詳細に説明する。
【００１８】
図２は、本発明の全体フローチャートを示す。これは、既述した図１の構成の全体フローチャートを示す。
図２において、Ｓ１は、制御文を解析する。これは、後述する図４のフローチャートに従い、制御文を解析し、制御文解析テーブルを作成する。
【００１９】
Ｓ２は、ロック管理テーブルに設定する。これは、後述する図５のフローチャートに従い、ロック管理テーブルを作成する。
Ｓ３は、ロック発生テーブルに設定する。これは、後述する図６のフローチャートに従い、ロック発生テーブルを作成する。
【００２０】
Ｓ４は、コマンド待ちする。ここでは、ＳＴＡＲＴコマンドが検出されたときにＳ５に進む。
Ｓ５は、ロック獲得／解除処理を行う。これは、後述する図８、図９のフローチャートに従いロックの獲得、解除の処理を行う。
【００２１】
Ｓ６は、コマンド待ちする。ＳＴＯＰコマンドが検出されたときＳ７に進む。
Ｓ７は、レポート出力処理を実行する。これにより、クラスタの処理能力に関する情報を集計して出力する。例えば後述する図１４および図１５に示すような情報を集計して出力する。
【００２２】
以上のように、図１のクラスタ１、２をロック状態にさせたもとで、クラスタ０がＩ／Ｏ装置を接続してアプリを動作させて処理を実行し、このときの各種情報を採取して処理応力を測定することが可能となる。
【００２３】
図３は、本発明の制御文例を示す。これは、既述した図２のＳ１で入力された制御文の例である。
図３の（ａ）は、制御文の例を示す。
【００２４】
図３の（ｂ）は、上記制御文から求めた１サイクル内のう内訳時間を示す。
以上のように、制御文によってＣＰＵ使用率などを指示することが可能となる。
【００２５】
図４は、本発明の動作説明フローチャート（その１）を示す。
図４において、Ｓ１１は、ＤＯ：ＳＹＳＩＮをオープンする。
Ｓ１２は、制御文を１レコードＲＥＡＤする（読み込む）。
【００２６】
Ｓ１３は、制御文管理テーブルを獲得する。
Ｓ１４は、読み込んだ制御文をテーブルに設定する。
Ｓ１５は、制御文管理テーブル間のポインタを設定する。
【００２７】
Ｓ１６は、全てのレコードを読み込み済から判別する。ＹＥＳの場合には、Ｓ１７に進む。
Ｓ１７は、ＤＯ：ＳＹＳＩＮをクローズする。
【００２８】
Ｓ１８は、制御文管理テーブルの先頭ポインタを設定する。
Ｓ１９は、制御文をキーワード毎に分類する。
Ｓ２０は、制御文を判定する。ＴＰＳオペランドのときは、Ｓ２１でＴＰＳオペランドを実行する。ＣＰＵＢＵＳＹの場合にいは、Ｓ２２でＣＰＵＢＵＳＹ率のチェックを行う。ＮＡＭＥコマンドの場合には、Ｓ２３でＮＡＭＥオペランドのチェックを行い、Ｓ２４ＣＴＩＭＥオペランドのチェック、Ｓ２５でチェックを行う。
【００２９】
以上によって、制御文を解析し、後述する図１０に示す制御文管理テーブルに設定することが可能となる。
図５は、本発明の動作説明フローチャート（その２）を示す。
【００３０】
図５において、Ｓ３１は、制御文管理テーブルの先頭ポインタを設定する。
Ｓ３２は、ＬＯＣＫ制御文か判別する。ＹＥＳの場合には、Ｓ３３に進む。ＮＯの場合には、Ｓ３６に進む。
【００３１】
Ｓ３３は、ロック管理テーブルの領域を獲得する。
Ｓ３４は、ロック管理テーブルに値を設定する。ここでは、図示の下記の値を設定する。
【００３２】
・ロック種別名（ＮＡＭＥオペラント値）
・クラスタ間ロック保持時間（ＴＩＭＥオペランド値）
・クラスタ内ロック保持時間（ＣＴＩＭＥオペランド値）
Ｓ３５は、ロック管理テーブル間のポインタ設定する。
【００３３】
Ｓ３６は、すべての制御文管理テーブルを読み込んだか判別する。ＹＥＳの場合には、終了する。ＮＯの場合には、Ｓ３２に戻る。
図６は、本発明の動作説明フローチャート（その３）を示す。これは、ロック発生テーブルの設定処理のフローチャートである。
【００３４】
図６において、Ｓ４１は、ロック管理テーブルの先頭ポインタ設定する。
Ｓ４２は、ＴＩＭＥＡＬＬ＝クラスタ間ロック保持時間を累計する。これは、ＬＯＣＫ制御文のＴＩＭＥオペランド値を累計する。
【００３５】
Ｓ４３は、ＣＴＩＭＥＡＬＬ＝クラスタ内ロック保持時間を累計する。これは、ＬＯＣＫ制御文のＣＴＩＭＥオペランド値を累計する。
Ｓ４４は、Ｉ＝ロック管理テーブル数を累計する。
【００３６】
Ｓ４５は、ＥＶＥＮＴＭＡＸ＝Ｉ×２×２を計算する。ここで、ＥＶＥＮＴＭＡＸは、１サイクル内のイベント数である。
Ｓ４６は、全てのロック管理テーブルを読み込んだか判別する。ＹＥＳの場合には、Ｓ４７に進む。ＮＯの場合には、Ｓ４２に戻り繰り返す。
【００３７】
Ｓ４７は、制御文管理テーブルからＴＰＳ値を取り出す。
Ｓ４８は、制御文管理テーブルからＣＰＵＢＵＳＹ値を取り出す。
Ｓ４９は、１トランあたりのＣＰＵ使用時間（ＣＰＵＴＲＮ）＝ＣＰＵＢＵＳＹのオペランド値÷ＴＰＳオペランド値×１００００を計算する。
【００３８】
Ｓ５０は、サイクル時間／ＴＲＮ（ＣＹＣＬＥＭ）＝ＣＰＵＴＲＮ÷ＣＰＵＳＵＳＹオペランド値×１００を計算する。
Ｓ５１は、トラン間お待ち時間（ＴＲＮＷＡＩＴＩＭ）＝ＣＹＣＥＬＴＭ−ＣＰＵＴＲＮを計算する。
【００３９】
Ｓ５２は、ロック発生間隔時間（ＩＮＴＶＬＴＭ）＝（ＣＰＵＴＲＮ−ＣＴＩＭＥＡＬＬ）÷（Ｉ＋１）を計算する。
Ｓ５３は、ロック発生テーブルの領域獲得（１００サイクル分のデータ格納域を準備）する。
【００４０】
Ｓ５４は、１サイクル内の全イベント毎（ＣＴＩＭＥＡＬＬ、ＴＲＮＷＡＴＩＴＮ、ＩＮＴＶＬＴＭ）に正規乱数を使用して、１００サイクル分の値を作成する。
【００４１】
Ｓ５５は、ロック発生テーブルの１サイクル内のイベント数＝ＥＶＥＮＴＭＡＸ
図７のＳ５６は、１サイクル内で実行するロックイベントの発行順番をランダムに決定する。
【００４２】
Ｓ５７は、イベント種を判別する。ロックの場合には、Ｓ５８に進む。トラン間の待ちイベントまたは、ロック発生間隔イベントの場合には、Ｓ６３に進む。
Ｓ４８は、ＣＴＩＭＥ２（ＣＴＩＭＥ（乱数）−ＴＩＭＥ）÷２を計算する。
【００４３】
Ｓ５９は、ロック発生テーブルにＣＴＩＭＥ２を設定する。
Ｓ６０は、ロック発生テーブレルにＴＩＭＥ設定する。
Ｓ６１は、ロック発生テーブルにクラスタ間ロック種別を設定する。
【００４４】
Ｓ６２は、ロック発生テーブルにイベント種別選択フラグを設定する。
図８および図９は、本発明の動作説明フローチャートを示す。
図８において、Ｓ７１は、現在実行しているサイクル番号（ＣＹＣＬＥＮＵＭ）＝１と設定する。
【００４５】
Ｓ７２は、現在実行しているイベント番号（ＥＶＥＮＴＮＵＭ）＝１と設定する。
Ｓ７３は、イベント判定する。ロックの場合には、Ｓ７４に進む。ＷＡＩＴの場合には、Ｓ９１に進む。
【００４６】
Ｓ７４は、ロック発生テーブルよりロック種を判定する。
Ｓ７５は、ロック発生テータより、クラスタ内ロック時間（乱数）を取り出す。
【００４７】
Ｓ７６は、クラスタ内ロックを獲得する。
Ｓ７７は、ロック発生テーブルのＣＴＩＭＥ２時間ＷＡＩＴする。
Ｓ７８は、ロック発生テーフルより、クラスタ間ロック時間を取り出す。
【００４８】
Ｓ７９は、クラスタ間ロックを獲得する。
Ｓ８０は、クラスタ間ロック時間ＷＡＩＴする。
Ｓ８１は、クラス間ロックを解除する。
【００４９】
Ｓ８２は、ロック発生テーブルより、クラスタ間の時間を取り出す。
図９のＳ８４は、ＥＶＥＮＴＮＵＭ＝ＥＶＥＮＴＮＵＭ設定する。
Ｓ８５は、ＥＶＥＮＴＭＩＮに、＞  ＥＶＥＮＴＭＡＸか判定する。ＹＥＳ場合には、Ｓ７３に戻る。一方、ＮＯの場合には、Ｓ７３に戻る。
【００５０】
Ｓ８６は、ＣＹＣＬＥＮＵＭ＝ＣＹＣＬＥＮＵＭ＋１を計算する。
Ｓ８７は、ＥＶＥＮＴＮＵＭ＝１と設定する。
Ｓ８８は、ＳＴＯＰ要求か判別する。ＹＥＳの場合には、ＣＹＣＬＥＮＵＭにし、ＹＥＳ場合に、Ｓ９０でＣＹＣＬＥＮＵＭ＝１とする。
【００５１】
図１０は、本発明の主制御テーブル例を示す。
図１１は、本発明の制御文解析テーブル例を示す。これは、制御文の解析テーブルであって、制御文フラグ、ＣＰＵ使用率などを設定する。
【００５２】
図１２は、本発明のロック管理テーブル例を示す。これは、図示のように、ロック種別名などを設定するものである。
図１３は、本発明のロック発生テーブル例を示す。これは、現在実行しているサイクル番号など設定して記憶する。
【００５３】
図１４および図１５は、マルチクラスタ係数の求め方を示す。
【００５４】
【発明の効果】
以上説明したように、本発明によれば、ｎクラスタシステムで１台のクラスタにＩ／Ｏ装置を接続すると共にアプリケーションを動作させ、他のクラスタにはＩ／Ｏ装置を準備なしでしかも、アプリケーションを動作させなくても、ｎクラスタの処理能力の測定することが可能となる。これにより、
（１）  クラスタ０から見ると、他のクラスタが実際にはアプリケーションが動作していないにも係わらず高負荷で動作しているように見える。
【００５５】
（２）  他のクラスタでデータベースが格納されているＩ／Ｏ装置へのアクセスが一切ないため、Ｉ／Ｏ装置は不要である。
（３）  実際に共用資源に負荷を与えているので、シミュレーションで予測するよりも、高い精度の予測結果が得られる。
【００５６】
（４）  他のクラスタの負荷はクラスタ０の業務内容によって自在に変更できる。
【図面の簡単な説明】
【図１】本発明のシステム構成図である。
【図２】本発明の全体フローチャートである。
【図３】本発明の制御文例である。
【図４】本発明の動作説明フローチャート（その１）である。
【図５】本発明の動作説明フローチャート（その２）である。
【図６】本発明の動作説明フローチャート（その３）である。
【図７】本発明の動作説明フローチャート（その４）である。
【図８】本発明の動作説明フローチャート（その５）である。
【図９】本発明の動作説明フローチャート（その６）である。
【図１０】本発明の主制御テーブル例である。
【図１１】本発明の制御文解析テーブル例である。
【図１２】本発明のロック管理テーブル例である。
【図１３】本発明のロック発生テーブル例である。
【図１４】本発明のマルチクラスタ係数の求めた方例（その１）である。
【図１５】本発明のマルチクラスタ係数の求めた方例（その２）である。
【図１６】従来技術の説明図である。
【符号の説明】
１１：ＳＳＵ（共用ファイル）
１２：クラスタ
１４：Ｉ／Ｏ装置群
１５、１６：システムディスク
２１：ロックシミュレート手段
２２：ロック発生テーブル
２３：集計手段
【図１】
0003796347.tif 000003
【図２】
0003796347.tif 000004
【図３】
0003796347.tif 000005
【図４】
0003796347.tif 000006
【図５】
0003796347.tif 000007
【図６】
0003796347.tif 000008
【図７】
0003796347.tif 000009
【図８】
0003796347.tif 000010
【図９】
0003796347.tif 000011
【図１０】
0003796347.tif 000012
【図１１】
0003796347.tif 000013
【図１２】
0003796347.tif 000014
【図１３】
0003796347.tif 000015
【図１４】
0003796347.tif 000016
【図１５】
0003796347.tif 000017
【図１６】
0003796347.tif 000018