(57)【特許請求の範囲】
【請求項１】
情報処理装置において、
記憶部と、
前記情報処理装置の動作試験を実行中の第１の期間において、前記情報処理装置の障害発生を検知したとき、前記情報処理装置の負荷状態を示す第１の検出値を前記記憶部に格納し、前記第１の期間の後に前記情報処理装置の動作試験を実行中の第２の期間において、前記情報処理装置の負荷状態を監視し、前記情報処理装置の負荷状態を示す第２の検出値が前記第１の検出値に近づくように、前記情報処理装置に与える処理負荷を調整する制御部と、
を有し、
前記制御部は、前記第１の検出値および前記第２の検出値として、前記情報処理装置内のバスの負荷状態を示す検出値を検出し、前記第２の期間において、前記バスに接続された入出力回路に前記バスを通じてデータの入出力を実行させるためのコマンドのそれぞれによって入出力が要求されるデータ量を変化させることで、前記情報処理装置に与える処理負荷を調整することを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記第１の検出値および前記第２の検出値として、前記情報処理装置が備えるプロセッサの負荷状態を示す検出値を検出し、前記第２の期間において、前記プロセッサに実行させるタスク数を変化させることで、前記情報処理装置に与える処理負荷を調整することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御部は、前記第１の検出値および前記第２の検出値として、前記情報処理装置が備えるプロセッサの負荷状態を示す検出値を検出し、前記第２の期間において、前記プロセッサに実行させる所定タスクの実行遅延時間を変化させることで、前記情報処理装置に与える処理負荷を調整することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記制御部は、前記第１の期間において、タイムアウトの発生により前記情報処理装置の障害発生を検知した場合には、タイムアウトとなった処理の開始時刻を特定し、前記第１の検出値として、前記開始時刻における前記情報処理装置の負荷状態を示す検出値を前記記憶部に格納することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
情報処理装置の動作を試験する試験方法において、
前記情報処理装置が、
前記情報処理装置の動作試験を実行中の第１の期間において、前記情報処理装置の障害が発生したとき、前記情報処理装置の負荷状態を示す第１の検出値を記憶部に格納し、
前記第１の期間の後に前記情報処理装置の動作試験を実行中の第２の期間において、前記情報処理装置の負荷状態を監視し、前記情報処理装置の負荷状態を示す第２の検出値が前記第１の検出値に近づくように、前記情報処理装置に与える処理負荷を調整する、
処理を含み、
前記第１の検出値および前記第２の検出値として、前記情報処理装置内のバスの負荷状態を示す検出値を検出し、前記第２の期間において、前記バスに接続された入出力回路に前記バスを通じてデータの入出力を実行させるためのコマンドのそれぞれによって入出力が要求されるデータ量を変化させることで、前記情報処理装置に与える処理負荷を調整することを特徴とする試験方法。
【請求項６】
コンピュータに、
前記コンピュータの動作試験を実行中の第１の期間において、前記コンピュータの障害が発生したとき、前記コンピュータの負荷状態を示す第１の検出値を記憶部に格納し、
前記第１の期間の後に前記コンピュータの動作試験を実行中の第２の期間において、前記コンピュータの負荷状態を監視し、前記コンピュータの負荷状態を示す第２の検出値が前記第１の検出値に近づくように、前記コンピュータに与える処理負荷を調整する、
処理を実行させ、
前記第１の検出値および前記第２の検出値として、前記コンピュータ内のバスの負荷状態を示す検出値を検出し、前記第２の期間において、前記バスに接続された入出力回路に前記バスを通じてデータの入出力を実行させるためのコマンドのそれぞれによって入出力が要求されるデータ量を変化させることで、前記コンピュータに与える処理負荷を調整することを特徴とする試験制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、試験方法および試験制御プログラムに関する。
【背景技術】
【０００２】
情報処理装置内のハードウェアや情報処理装置で使用されるソフトウェアの開発工程においては、品質向上のためにハードウェアやソフトウェアに対する動作試験が行われる。動作試験中に障害が発生した場合には、出力されたメッセージやログの内容などを基に、障害の発生箇所や発生原因の特定作業が行われる。また、障害の発生箇所や発生原因を特定できない場合には、同じ障害を再現するための試験がさらに行われることがある。
【０００３】
障害を再現するための試験の技術としては、例えば、障害発生時にホスト装置が発行したコマンドを、再現試験時に順番通りに再発行する技術が提案されている。
また、障害の解析技術としては、例えば、電子計算機システムでアプリケーション障害が発生した場合の動作環境と予めアプリケーションの動作が保証された標準環境との違いである差分を動作環境に適用して障害が発生した原因を特定する技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１３２３８号公報
【特許文献２】特開平８−５０５５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年では、動作試験の対象とする情報処理装置のハードウェア構成や各ハードウェアの動作が複雑になっている。このことから、障害の再現試験を行っても同じ障害が発生せず、障害の発生箇所や発生原因を正確に特定できないケースが増えているという問題がある。
【０００６】
１つの側面では、本発明は、障害の再現性を向上できる情報処理装置、試験方法および試験制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、情報処理装置が提供される。この情報処理装置は記憶部と制御部とを有する。制御部は、情報処理装置の動作試験を実行中の第１の期間において、情報処理装置の障害発生を検知したとき、情報処理装置の負荷状態を示す第１の検出値を記憶部に格納し、第１の期間の後に情報処理装置の動作試験を実行中の第２の期間において、情報処理装置の負荷状態を監視し、情報処理装置の負荷状態を示す第２の検出値が第１の検出値に近づくように、情報処理装置に与える処理負荷を調整する。
【０００８】
また、１つの態様では、情報処理装置の動作を試験する試験方法が提供される。この試験方法は、情報処理装置が、情報処理装置の動作試験を実行中の第１の期間において、情報処理装置の障害が発生したとき、情報処理装置の負荷状態を示す第１の検出値を記憶部に格納し、第１の期間の後に情報処理装置の動作試験を実行中の第２の期間において、情報処理装置の負荷状態を監視し、情報処理装置の負荷状態を示す第２の検出値が第１の検出値に近づくように、情報処理装置に与える処理負荷を調整する。
【０００９】
また、１つの態様では、試験制御プログラムが提供される。この試験制御プログラムは、コンピュータに、コンピュータの動作試験を実行中の第１の期間において、コンピュータの障害が発生したとき、コンピュータの負荷状態を示す第１の検出値を記憶部に格納し、第１の期間の後にコンピュータの動作試験を実行中の第２の期間において、コンピュータの負荷状態を監視し、コンピュータの負荷状態を示す第２の検出値が第１の検出値に近づくように、コンピュータに与える処理負荷を調整する処理を実行させる。
【発明の効果】
【００１０】
１つの側面では、障害の再現性を向上できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の情報処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態のストレージシステムを示す図である。
【図３】ＣＭのハードウェア例を示す図である。
【図４】ＣＭの機能例を示す図である。
【図５】管理テーブルの例を示す図である。
【図６】トレーステーブルの例を示す図である。
【図７】解析テーブルの例を示す図である。
【図８】ＣＰＵコア調整用テーブルの例を示す図である。
【図９】ＩＯ装置調整用テーブルの例を示す図である。
【図１０】収集部による情報収集の具体例を示す図である。
【図１１】解析部の処理の具体例を示すタイムチャートである。
【図１２】動作試験の処理の例を示すフローチャートである。
【図１３】収集処理の例を示すフローチャートである。
【図１４】解析処理の例を示すフローチャートである。
【図１５】ＣＰＵコアの処理負荷の調整方法の例を示す図である。
【図１６】バスの伝送負荷の調整方法の例を示す図である。
【図１７】再試験時の処理例（その１）を示すフローチャートである。
【図１８】再試験時の処理例（その２）を示すフローチャートである。
【図１９】再試験時の処理例（その３）を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置の構成例および処理例を示す図である。情報処理装置１は、所定の情報処理を実行する装置であり、例えば、コンピュータとして実現される。また、情報処理装置１では、自装置の動作を検証するための動作試験が行われる。動作試験は、例えば、情報処理装置１が試験プログラム４を実行することで行われる。
【００１３】
情報処理装置１は、制御部２と記憶部３を有する。記憶部３は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。記憶部３は、後述する第１の検出値３ａを記憶する。
【００１４】
制御部２は、例えば、プロセッサである。プロセッサは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。また、プロセッサには、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１５】
情報処理装置１の動作試験は、第１の期間と、その後の第２の期間とで行われる。第１の期間における動作試験で障害の発生が検知された場合に、第２の期間において、発生した障害を再現するための動作試験が行われる。
【００１６】
動作試験を実行中の第１の期間において、制御部２は、情報処理装置１の負荷状態を監視する（ステップＳ１）。負荷状態としては、例えば、情報処理装置１が備えるプロセッサの負荷状態や、情報処理装置１の内部のバスの負荷状態が監視される。そして、制御部２は、情報処理装置１の障害発生を検知すると（ステップＳ２）、情報処理装置１の負荷状態を示す第１の検出値３ａを記憶部３に格納する（ステップＳ３）。
【００１７】
その後、障害再現のための動作試験を実行中の第２の期間において、制御部２は、情報処理装置１の負荷状態を監視して、情報処理装置１の負荷状態を示す第２の検出値を取得する（ステップＳ４）。負荷状態の監視内容は、第１の期間と同じでよい。制御部２は、記憶部３に格納された第１の検出値３ａを読み出し、読み出した第１の検出値３ａと、監視によって得られた第２の検出値とを比較する（ステップＳ５）。そして、制御部２は、第２の検出値が第１の検出値３ａに近づくように、情報処理装置１に与える処理負荷を調整する（ステップＳ６）。例えば、監視により得られる第２の検出値が第１の検出値３ａに一致するまで、ステップＳ４〜Ｓ６の処理が繰り返される。
【００１８】
情報処理装置１に与える処理負荷を調整する方法としては、例えば、次のような方法が用いられる。制御部２は、情報処理装置１が備えるプロセッサに実行させるタスク数を増減させる。また、制御部２は、プロセッサに実行させる所定タスクの実行遅延時間を増減する。所定タスクとしては、ＣＰＵビジー率を調整するためのダミー処理を実行するタスクを用いることができる。また、制御部２は、情報処理装置１内のバスに接続された入出力回路にこのバスを通じてデータの入出力を実行させるためのコマンドの発行数を増減する。また、制御部２は、コマンドのそれぞれによって入出力が要求されるデータ量を増減する。
【００１９】
制御部２による上記調整処理により、第２の期間では、情報処理装置１の負荷状態が、第１の期間で障害発生が検知されたときの情報処理装置１の負荷状態に近づけられる。これにより、障害の再現試験中の情報処理装置１のハードウェアの状態が、第１の期間で障害発生が検知されたときの情報処理装置１のハードウェアの状態に近くなる。その結果、第１の期間で発生した障害が第２の期間でも発生する可能性が高くなり、障害の再現性を向上できる。障害が再現されやすくなることで、障害の発生箇所や発生原因を正確に特定できる可能性を高くすることができる。
【００２０】
［第２の実施の形態］
次に、第１の実施の形態の情報処理装置１を含むシステムとして、ストレージシステムを例示する。
【００２１】
図２は、第２の実施の形態のストレージシステムを示す図である。第２の実施の形態のストレージシステムは、ストレージ装置１００およびホスト装置４００，４００ａを含む。
【００２２】
ストレージ装置１００とホスト装置４００，４００ａとの間は、ＳＡＳ（Serial Attached SCSI）やファイバチャネル（ＦＣ：Fibre Channel）などのケーブルを用いて接続されている。このような接続構成をＤＡＳ（Direct Attached Storage）と呼ぶこともある。ただし、ストレージ装置１００とホスト装置４００，４００ａとをファイバチャネルやｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続してもよい。ストレージ装置１００をＮＡＳ（Network Attached Storage）として用いることもできる。
【００２３】
ストレージ装置１００は、ＣＥ（Controller Enclosure）１１０およびＤＥ（Drive Enclosure）１２０を有する。ＣＥ１１０は、ＣＭ（Controller Module）２００，２００ａを有する。ＣＭ２００，２００ａは、ホスト装置４００，４００ａからの要求に応じたＤＥ１２０に対するデータアクセス、ストレージ装置１００内のハードウェアモジュールの動作などを制御する。同様の機能を有するＣＭ２００，２００ａが冗長化されていることにより、ホスト装置４００，４００ａからＤＥ１２０へのアクセス動作の信頼性が高められている。また、ＣＭ２００，２００ａは互いに接続されており、例えばキャッシュされたデータや所定の設定データなど、一方のＣＭに記憶された情報が他方のＣＭにも記憶されるようになっている。なお、ＣＭ２００，２００ａは、第１の実施の形態の情報処理装置１の一例であり、動作試験の対象装置である。
【００２４】
ＤＥ１２０は、ＨＤＤ３００，３００ａ，３００ｂを有する。なお、ＤＥ１２０に搭載されるＨＤＤの数は、３台に限定されるものではない。
ホスト装置４００，４００ａは、ユーザが利用するクライアントコンピュータである。ホスト装置４００，４００ａは、ストレージ装置１００に対して、ストレージ装置１００のＤＥ１２０に搭載されたＨＤＤ３００〜３００ｂに対するアクセスを要求する。
【００２５】
また、ＣＭ２００，２００ａには、試験端末５００を接続可能になっている。試験端末５００は、ＣＭ２００，２００ａの動作試験時に、管理者が利用するクライアントコンピュータである。例えば、試験端末５００は、ＣＭ２００，２００ａで実行される試験を開始するための起動コマンドを送信する。また、試験端末５００は、ＣＭ２００，２００ａから試験結果を受信する。
【００２６】
図３は、ＣＭのハードウェア例を示す図である。ＣＭ２００は、マルチコアＣＰＵ２０１、ＲＡＭ２０４、ＰＣＨ（Platform Controller Hub）２０５、ＳＳＤ（Solid State Drive）２０６、読み取り装置２０７、ＰＣＩｅ（Peripheral Components Interconnect Express）スイッチ２０８、ＣＡ２０９，２０９ａおよびＳＡＳコントローラ２１０，２１０ａを有する。
【００２７】
マルチコアＣＰＵ２０１には、ＲＡＭ２０４が接続されている。マルチコアＣＰＵ２０１には、ＰＣＨ２０５を介して、ＳＳＤ２０６、読み取り装置２０７が接続されている。マルチコアＣＰＵ２０１には、ＰＣＩｅスイッチ２０８を介して、ＣＡ２０９，２０９ａおよびＳＡＳコントローラ２１０，２１０ａが接続されている。
【００２８】
マルチコアＣＰＵ２０１は、複数のＣＰＵコアおよびＤＭＡ（Direct Memory Access）処理部２０３を含む。図３の例では、マルチコアＣＰＵ２０１は、ＣＰＵコア２０２，２０２ａを含んでいる。ＣＰＵコア２０２，２０２ａは、ＣＭ２００の情報処理を制御する演算回路である。ＤＭＡ処理部２０３は、ＣＰＵコア２０２またはＣＰＵコア２０２ａからの指示に応じて、ＲＡＭ２０４に記憶されたデータを他方のＣＭ２００ａに送信する。
【００２９】
ＲＡＭ２０４は、ＣＭ２００の主記憶装置である。ＲＡＭ２０４は、揮発性の半導体メモリである。ＲＡＭ２０４は、マルチコアＣＰＵ２０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ２０４は、マルチコアＣＰＵ２０１による処理に用いる各種データを記憶する。
【００３０】
ＰＣＨ２０５は、マルチコアＣＰＵ２０１とＳＳＤ２０６、マルチコアＣＰＵ２０１と読み取り装置２０７、マルチコアＣＰＵ２０１と試験端末５００との間で、データを送受信する。また、ＰＣＨ２０５には、ＬＡＮ（Local Area Network）インタフェースが接続されていてもよい。例えば、試験端末５００がＬＡＮインタフェースに接続され、マルチコアＣＰＵ２０１と試験端末５００とが、ＰＣＨ２０５およびＬＡＮインタフェースを介して通信してもよい。
【００３１】
ＳＳＤ２０６は、ＣＭ２００の補助記憶装置である。ＳＳＤ２０６は、不揮発性の半導体メモリである。ＳＳＤ２０６には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。ＣＭ２００は、補助記憶装置として、ＳＳＤ２０６の代わりにＨＤＤを備えていてもよい。
【００３２】
読み取り装置２０７は、可搬型の記録媒体２０７ａに記録されたプログラムやデータを読み取る装置である。記録媒体２０７ａとして、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置２０７は、例えば、ＣＰＵコア２０２からの命令に従って、記録媒体から読み取ったプログラムやデータをＣＰＵコア２０２に送信する。
【００３３】
ＰＣＩｅスイッチ２０８は、マルチコアＣＰＵ２０１とＣＡ２０９，２０９ａおよびＳＡＳコントローラ２１０，２１０ａとの間で、データを送受信する。ＣＡ２０９は、ホスト装置４００と通信するためのインタフェースであり、ＣＡ２０９ａは、ホスト装置４００ａと通信するためのインタフェースである。ＳＡＳコントローラ２１０，２１０ａは、ＤＥ１２０内のＨＤＤと通信するためのインタフェースである。
【００３４】
なお、ＣＭ２００ａもＣＭ２００と同様のハードウェアにより実現できる。
図４は、ＣＭの機能例を示す図である。ＣＭ２００は、記憶部２２０、監視部２３０、試験処理部２４０、収集部２５０、解析部２６０および調整部２７０を有する。
【００３５】
記憶部２２０は、例えば、ＲＡＭ２０４またはＳＳＤ２０６に確保した記憶領域として実装される。記憶部２２０は、収集部２５０、解析部２６０および調整部２７０の処理に用いられる情報を記憶する。記憶部２２０は、管理テーブル、トレーステーブル、解析テーブル、ＣＰＵコア調整用テーブル、ＩＯ（Input Output）装置調整用テーブルおよび監視テーブルを記憶する。
【００３６】
管理テーブルには、ＩＯ装置がどのバスと接続しており、どのＣＰＵコアから命令を受けるかを示す情報が登録されている。ここで、例えば、ＩＯ装置とは、ＤＭＡ処理部２０３、ＣＡ２０９、ＳＡＳコントローラ２１０である。また、ＩＯ装置としては、これらのデバイスの外部に接続された外部装置（例えば、ＳＡＳコントローラ２１０に接続された、ＤＥ１２０内のＨＤＤ）が含まれてもよい。
【００３７】
トレーステーブルには、時刻毎のＣＰＵコアのアイドル時間およびＩＯ装置に対するデータ転送量、ＩＯ処理実行回数を示す情報が登録される。
解析テーブルには、ＣＰＵコアおよびバスの負荷状態を示す情報が登録される。ここで、例えば、解析テーブルに登録される対象のバスは、ＤＭＡ処理部２０３とＣＭ２００ａとを接続するバス、ＰＣＩｅスイッチ２０８とＣＡ２０９とを接続するバス、ＰＣＩｅスイッチ２０８とＣＡ２０９ａとを接続するバス、ＰＣＩｅスイッチ２０８とＳＡＳコントローラ２１０とを接続するバス、ＰＣＩｅスイッチ２０８とＳＡＳコントローラ２１０ａとを接続するバスである。
【００３８】
ＣＰＵコア調整用テーブルには、ＣＰＵコアの処理負荷を調整するために用いられる情報が登録される。ＩＯ装置調整用テーブルには、試験処理部２４０による試験処理において、ＩＯ装置の負荷（すなわち、単位時間当たりのデータ転送量）を調整するために用いられる情報が登録される。
【００３９】
監視テーブルは、例えば、ＣＰＵコア用とＩＯ装置用の２種類が存在する。ＣＰＵコア用の監視テーブルには、ＣＰＵコアがプロセスを動作させていないアイドル時間が登録される。ＩＯ装置用の監視テーブルには、ＩＯ装置に対するデータ転送量、ＩＯ処理実行回数を示す情報が登録される。
【００４０】
監視部２３０は、ＣＰＵコア毎にアイドル時間を検出する。監視部２３０は、検出した各ＣＰＵコアのアイドル時間を監視テーブルに登録する。また、監視部２３０は、ＣＰＵコアからの要求に応じてＩＯ装置毎に実行されるＩＯ処理の回数、および、ＩＯ処理によるＩＯ装置毎のデータ転送量を検出する。具体的には、監視部２３０は、試験処理部２４０が各ＩＯ装置にＩＯ処理の実行を要求することを監視することで、ＩＯ処理の実行回数およびデータ転送量を検出する。監視部２３０は、検出したＩＯ処理の実行回数およびデータ転送量を監視テーブルに登録する。
【００４１】
監視部２３０によるＣＰＵコアのアイドル時間の検出処理は、例えば、ＯＳプログラムの実行により実現される。また、監視部２３０によるＩＯ装置ごとのＩＯ処理実行回数およびデータ転送量の検出処理は、例えば、対応するＩＯ装置を制御するためのドライバプログラムの実行により実現される。すなわち、監視部２３０は、実際には、対応するプログラム（ＯＳプログラム、ＩＯ装置の種類毎のドライバプログラム）毎に存在する。このような監視部２３０の実際の構成や処理については、図１０において説明する。
【００４２】
試験処理部２４０の処理は、試験プログラムの実行によって実現される。試験処理部２４０は、試験プログラムにしたがって、ＣＭ２００の動作試験を行う。試験処理部２４０による動作試験の処理とは、例えば、ホスト装置４００，４００ａからの要求に応じてＤＥ１２０内のＨＤＤにアクセスする処理が正常に実行されるかを試験するための処理である。また、動作試験の処理は、ＣＭ２００内の特定のハードウェア、またはＣＭ２００に接続された特定の装置が正常に動作するかを試験するための処理であってもよい。動作試験によって検知される障害は、主にハードウェア障害である。
【００４３】
試験処理部２４０は、動作試験で障害が発生した場合、試験を中止する。試験処理部２４０は、障害がタイムアウトによるものであるか否かを収集部２５０に通知する。ここで、タイムアウトとは、ＣＰＵコアがＩＯ装置に対する要求を送信した場合、ＣＰＵコアが要求に対する応答を所定時間内に受信できない場合である。また、試験処理部２４０は、障害がタイムアウトの場合、タイムアウトの原因となったコマンドの名称を収集部２５０に通知する。
【００４４】
試験処理部２４０は、障害が発生した後に、障害再現用の再試験を行う。再試験の内容は、元の動作試験の内容と同じであってもよいし、異なる内容であってもよい。試験処理部２４０は、再試験でＩＯ装置調整用テーブルに登録されている内容を読み込み、その内容に応じて再試験中の動作状態を調整する。
【００４５】
収集部２５０、解析部２６０および調整部２７０の処理は、例えば、試験制御プログラムの実行によって実現される。試験制御プログラムは、例えば、試験プログラムの実行時に自動的に、または管理者の操作に応じて実行される。また、試験制御プログラムは、試験プログラムの一部に含まれていてもよい。
【００４６】
収集部２５０は、タイマ機能を用いて、定期的に監視テーブルからＣＰＵコアのアイドル時間およびＩＯ装置に対するＩＯ処理実行回数、データ転送量を取得する。以下、収集部２５０によるアイドル時間、ＩＯ処理実行回数およびデータ転送量の定期的な収集処理を、“定期収集”と呼ぶ。
【００４７】
また、収集部２５０は、試験で障害が発生した場合、監視テーブルから障害が発生した時点のＣＰＵコアのアイドル時間およびＩＯ装置に対するＩＯ処理実行回数、データ転送量を取得する。以下、障害が発生したことを契機とする収集部２５０によるアイドル時間、ＩＯ処理実行回数およびデータ転送量の収集処理を、“ポイント収集”と呼ぶ。収集部２５０は、定期収集およびポイント収集した情報をトレーステーブルに登録する。
【００４８】
解析部２６０は、トレーステーブルに登録されたＣＰＵのアイドル時間およびＩＯ装置に対するＩＯ処理実行回数、データ転送量から、ＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳ（Input Output Per Second）を算出する。ここで、ＣＰＵコアのＣＰＵビジー率とは、所定時間当たりのアイドル時間の割合を、値“１”から減算して得られる値である。バスのスループットとは、所定時間当たりにバスがＩＯ装置にデータを転送する量である。バスのＩＯＰＳとは、１秒当たりにバスを通じてＩＯ装置との間で実行されたＩＯ処理の回数（具体的には、実行されたＩＯ処理に対応するコマンド数）である。解析部２６０は、算出した内容を解析テーブルに登録する。解析部２６０の詳細な説明は、図１１で行う。
【００４９】
調整部２７０は、試験で障害が発生した後に再試験を行いながら、再試験におけるＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳを解析テーブルに登録されたＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳに近づくように、ＣＭ２００に与える処理負荷を調整する。すなわち、調整部２７０は、再試験を行いながら、ＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳが、障害発生時と同じになるように調整する。
【００５０】
具体的には、再試験時には次のような処理が行われる。収集部２５０は、再試験で定期収集を２回以上行う。解析部２６０は、定期収集したＣＰＵのアイドル時間およびＩＯ装置に対するＩＯ処理実行回数、データ転送量から、ＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳを算出する。算出方法の詳細な説明は、図１７で行う。調整部２７０は、算出したＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳが、解析テーブルに登録されたＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳに近づくように、ＣＭ２００に与える処理負荷を調整する。
【００５１】
ＣＭ２００に与える処理負荷の調整方法としては、次のような方法が用いられる。
調整部２７０は、各ＣＰＵコアに実行させる、ＣＰＵビジー率の調整用のタスクの実行数を、増減する。調整用のタスクとは、例えば、意味のないメモリアクセスなどのダミーの処理を実行するものである。例えば、調整用タスクの実行数を増やすことで、ＣＰＵコアのアイドル時間が短くなり、ＣＰＵビジー率を高めることができる。
【００５２】
また、調整部２７０は、調整用のタスクに設定するディレイ時間を増減する。ディレイ時間とは、調整用のタスクの実行遅延時間である。例えば、調整用のタスクが実行される際、メモリアクセスなどのダミー処理が行われた後、設定されたディレイ時間の分だけ待ち状態となり、待ち状態の間、次のタスクが実行されない。例えば、ディレイ時間を増加させることで、ＣＰＵビジー率を低下させることができる。
【００５３】
また、調整部２７０は、試験処理部２４０に対して設定するキューイング数およびコマンド当たりのデータサイズを増減する。キューイング数とは、対応するＩＯ装置に対して仕掛かり中にすることが可能なコマンド数、すなわち、その時点でＩＯ装置に発行済みであり、かつ、応答を未受信のコマンドの最大数である。例えば、キューイング数を増加させることで、ＣＰＵコアと該当ＩＯ装置との間で伝送されるデータ量が増加する。その結果、ＩＯ装置との経路上のバスのスループットが増加し、処理負荷が大きくなる。また、コマンド当たりのデータサイズとは、１つのコマンドによって入出力を要求可能なデータのサイズである。例えば、データサイズを小さくすることで、ＣＰＵコアから該当ＩＯ装置へ発行されるコマンド数が多くなり、ＩＯ装置との経路上のバスのＩＯＰＳが増加する。その結果、ＣＰＵコアとＩＯ装置との通信回数が増加し、処理負荷が大きくなる。
【００５４】
調整部２７０は、上記で説明したＣＰＵコアのＣＰＵビジー率を変えるための情報をＣＰＵコア調整用テーブルに登録する。調整部２７０は、ＣＰＵコア調整用テーブルに登録された内容に基づいて、ＣＰＵコアの処理負荷の状態を調整する。このようにして、調整部２７０は、監視対象の各ＣＰＵコアの処理負荷の状態が障害発生時と同様になるように調整する。また、調整部２７０は、上記で説明したバスのスループットを変えるための情報をＩＯ装置調整用テーブルに登録する。試験処理部２４０が、ＩＯ装置調整用テーブルに登録された内容に基づいて再試験時のキューイング数やコマンド当たりのデータサイズを調整する。このようにして、監視対象の各バスの負荷状態が障害発生時と同様になるように調整される。
【００５５】
調整部２７０は、算出したＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳが解析テーブルに登録されたＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳになるまで、再試験を何回も繰り返し、ＣＭ２００の負荷状態を調整する。
【００５６】
図５は、管理テーブルの例を示す図である。管理テーブル２２１は、予め記憶部２２０に格納されている。管理テーブル２２１は、ＩＯ装置名、ＣＰＵコア、識別符号およびバスの項目を含む。
【００５７】
ＩＯ装置名の項目には、ＩＯ装置を識別する名称が登録される。ＣＰＵコアの項目には、ＣＰＵコアを識別する名称が登録される。識別符号の項目には、ＩＯ装置を識別する符号が登録される。バスの項目には、バスを識別する名称が登録される。
【００５８】
例えば、管理テーブル２２１には、ＩＯ装置名が“ＩＯ装置Ｘ１”、ＣＰＵコアが“Ｃ１”、識別符号が“Ｘ１”、バスが“Ｂ１”という情報が登録される。これは、“ＩＯ装置Ｘ１”がバス“Ｂ１”と接続しており、ＣＰＵコア“Ｃ１”から命令を受付けることを示している。換言すると、ＣＰＵコア“Ｃ１”から“ＩＯ装置Ｘ１”までの経路上にバス“Ｂ１”が存在することを示している。
【００５９】
管理テーブル２２１は、後述するように、解析部２６０によって参照される。解析部２６０は、収集部２５０によってＩＯ装置毎に収集された負荷状態を示す情報を、管理テーブル２２１に基づいて、バス毎の負荷状態を示す情報に変換することができる。
【００６０】
図６は、トレーステーブルの例を示す図である。トレーステーブル２２２は、収集部２５０によって記憶部２２０に格納される。ＣＰＵコア毎にトレーステーブル２２２が、記憶部２２０に格納される。例えば、図３の構成の場合、ＣＰＵコア２０２のトレーステーブル２２２が、記憶部２２０に登録され、ＣＰＵコア２０２ａのトレーステーブル２２２が、記憶部２２０に登録される。さらに、トレーステーブル２２２は、定期収集およびポイント収集のたびに、収集部２５０によって記憶部２２０に登録される。
【００６１】
トレーステーブル２２２は、収集時刻、アイドル時間、各ＩＯ装置に対するデータ転送量、各ＩＯ装置に対するＩＯ処理実行回数の項目を含む。収集時刻の項目には、収集した時刻が登録される。アイドル時間は、収集した時刻におけるＣＰＵコアのアイドル時間が登録される。また、例えば、ＩＯ装置Ｘ１に対するデータ転送量の項目には、ＣＰＵコアがＩＯ装置Ｘ１に対して転送したデータ量が登録される。ＩＯ装置Ｘ１に対するＩＯ処理実行回数の項目には、ＣＰＵコアがＩＯ装置Ｘ１に対してＩＯ処理した回数が登録される。
【００６２】
なお、トレーステーブル２２２に登録されるアイドル時間、データ転送量およびＩＯ処理実行回数は、例えば、ＣＭ２００が起動してから、または試験処理部２４０の処理が開始されてからの累積数を示す。
【００６３】
図７は、解析テーブルの例を示す図である。解析テーブル２２３は、解析部２６０によって記憶部２２０に格納される。解析テーブル２２３は、各ＣＰＵコアのＣＰＵビジー率、各バスのスループット、各バスのＩＯＰＳの項目を含む。
【００６４】
例えば、ＣＰＵコアＣ１のＣＰＵビジー率の項目には、ＣＰＵコアＣ１のＣＰＵビジー率が登録される。ＣＰＵコアＣｎのＣＰＵビジー率の項目には、ＣＰＵコアＣｎのＣＰＵビジー率が登録される。バスＢ１のスループットの項目には、バスＢ１のスループットが登録される。バスＢ１のＩＯＰＳの項目には、バスＢ１のＩＯＰＳが登録される。バスＢｍのスループットの項目には、バスＢｍのスループットが登録される。バスＢｍのＩＯＰＳの項目には、バスＢｍのＩＯＰＳが登録される。なお、ｎ、ｍは３以上の整数である。
【００６５】
図８は、ＣＰＵコア調整用テーブルの例を示す図である。ＣＰＵコア調整用テーブル２２４は、記憶部２２０に格納されており、調整部２７０によって更新される。ＣＰＵコア調整用テーブル２２４は、ＣＰＵコア、タスク数およびディレイ時間の項目を含む。
【００６６】
ＣＰＵコアの項目には、ＣＰＵコアを識別する名称が登録される。タスク数の項目には、ＣＰＵコアに単位時間当たりに実行させる、ＣＰＵビジー率調整用のタスク数が登録されている。ディレイ時間の項目には、調整用のタスクの実行遅延時間が登録されている。
【００６７】
例えば、ＣＰＵコア調整用テーブル２２４には、ＣＰＵコアが“Ｃ１”、タスク数“Ｄ１”ディレイ時間が“Ｅ１”という情報が登録される。これは、ＣＰＵコア“Ｃ１”に実行させる調整用のタスク数が“Ｄ１”であることを示している。また、ＣＰＵコア“Ｃ１”が調整用タスクを実行する際の実行遅延時間が“Ｅ１”であることを示している。
【００６８】
図９は、ＩＯ装置調整用テーブルの例を示す図である。ＩＯ装置調整用テーブル２２５は、記憶部２２０に格納されており、調整部２７０によって更新され、試験処理部２４０によって参照される。ＩＯ装置調整用テーブル２２５は、ＩＯ装置名、キューイング数およびデータサイズの項目を含む。
【００６９】
ＩＯ装置名の項目には、ＩＯ装置を識別する名称が登録される。キューイング数の項目には、仕掛かり中にすることが可能なコマンド数が登録されている。データサイズの項目には、１コマンドで入出力を要求可能なデータサイズが登録されている。
【００７０】
例えば、ＩＯ装置調整用テーブル２２５には、ＩＯ装置名が“ＩＯ装置Ｘ１”、キューイング数“Ｆ１”、データサイズ“Ｇ１”という情報が登録される。これは、調整部２７０が“ＩＯ装置Ｘ１”に対するデータ転送量、ＩＯ処理実行回数を調整するためにキューイング数を“Ｆ１”、データサイズ“Ｇ１”に設定することを示している。
【００７１】
次に、図１０，図１１を用いて、収集部２５０による定期収集およびポイント収集について説明する。
まず、図１０は、収集部による情報収集の具体例を示す図である。前述のように、図４に示した監視部２３０は、実際には、対応するプログラム毎に存在する。図１０では、監視部２３０の例として、監視部２３１，２３１ａ，２３１ｂを示す。
【００７２】
監視部２３１の処理は、ＯＳプログラムの実行によって実現される。すなわち、監視部２３１は、ＯＳの機能の一部である。監視部２３１は、マルチコアＣＰＵ２０１に搭載されたＣＰＵコア毎にアイドル時間を監視し、監視結果を監視テーブル２２６に登録する。監視テーブル２２６は、記憶部２２０に格納される。監視テーブル２２６には、ＣＰＵコア毎のアイドル時間の累積値が登録される。図１０の例では、監視テーブル２２６には、ＣＰＵコアＣ１（例えば、ＣＰＵコア２０２）のアイドル時間と、ＣＰＵコアＣ２（例えば、ＣＰＵ２０２ａ）のアイドル時間とが登録されている。
【００７３】
監視部２３１は、例えば、各ＣＰＵコアでのアイドルタスクの実行数をＣＰＵコア毎にカウントすることで、各ＣＰＵコアでのアイドル時間を算出する。アイドルタスクとは、ＣＰＵコアで実行されるタスクの中で最も実行優先度が低いタスク、または、アイドル用にあらかじめ専用に用意されたタスクである。監視部２３１は、例えば、システムクロックと同じ周期で、各ＣＰＵコアに対して割り込みを行い、アイドルタスクが実行されているＣＰＵコアに対応するアイドル時間のカウント数を“１”インクリメントする。
【００７４】
監視部２３１ａ，２３１ｂの処理は、それぞれ対応するＩＯ装置を制御するためのドライバプログラムの実行によって実現される。図１０では、ＩＯ装置の例として、ＤＥ１２０に搭載されたＨＤＤ３００，３００ａと、ＣＡ２０９，２０９ａとを示す。
【００７５】
監視部２３１ａの処理は、ＤＥ１２０に搭載されたＨＤＤを制御するためのドライバプログラムの実行によって実現される。すなわち、監視部２３１ａは、ＨＤＤを制御するためのドライバの機能の一部である。監視部２３１ａは、ＤＥ１２０に搭載されたＨＤＤごとに、試験処理部２４０から要求されたＩＯ処理の実行回数（具体的には、各ＩＯ処理の実行を要求するためのコマンドの発行数）と、ＩＯ処理によるＨＤＤと試験処理部２４０との間のデータ転送量とを検出する。監視部２３１ａは、例えば、試験処理部２４０から（すなわち、ＣＰＵコアから）監視部２３１ａに対して発行されるコマンドを監視することで、ＩＯ処理の実行回数およびデータ転送量を検出することができる。
【００７６】
監視部２３１ａは、ＩＯ処理の実行回数およびデータ転送量の検出結果を監視テーブル２２６ａに登録する。監視テーブル２２６ａは、記憶部２２０に格納される。監視テーブル２２６ａには、ＨＤＤ毎のＩＯ処理の実行回数およびデータ転送量の各累積値が登録される。図１０の例では、監視テーブル２２６ａには、ＨＤＤ＃１（例えば、ＨＤＤ３００）に対するＩＯ処理の実行回数およびデータ転送量と、ＨＤＤ＃２（例えば、ＨＤＤ３００ａ）に対するＩＯ処理の実行回数およびデータ転送量とが登録されている。
【００７７】
監視部２３１ｂの処理は、ＣＡ２０９，２０９ａを制御するためのドライバプログラムの実行によって実現される。すなわち、監視部２３１ｂは、ＣＡ２０９，２０９ａを制御するためのドライバの機能の一部である。監視部２３１ａは、ＣＡ２０９，２０９ａのそれぞれについて、試験処理部２４０から要求されたＩＯ処理の実行回数と、ＩＯ処理によるＣＰＵコアとＣＡ２０９，２０９ａのそれぞれとの間のデータ転送量とを検出する。監視部２３１ａと同様に、監視部２３１ｂは、例えば、試験処理部２４０から（すなわち、ＣＰＵコアから）監視部２３１ｂに対して発行されるコマンドを監視することで、ＩＯ処理の実行回数およびデータ転送量を検出することができる。
【００７８】
監視部２３１ｂは、ＩＯ処理の実行回数およびデータ転送量の検出結果を監視テーブル２２６ｂに登録する。監視テーブル２２６ｂは、記憶部２２０に格納される。図示しないが、監視テーブル２２６ｂには、ＣＡ２０９，２０９ａのそれぞれについてのＩＯ処理の実行回数およびデータ転送量の各累積値が登録される。
【００７９】
収集部２５０は、定期収集およびポイント収集の際に、監視テーブル２２６，２２６ａ，２２６ｂに登録された情報を収集し、収集内容をその都度、対応するトレーステーブル２２２に登録する。なお、実際には、収集部２５０は、監視テーブル２２６，２２６ａ，２２６ｂに直接アクセスするのではなく、次のようにして情報を収集する。収集部２５０は、監視部２３１に対して情報提供を要求し、監視部２３１は、要求に応じて、監視テーブル２２６に登録された情報を収集部２５０に通知する。同様に、収集部２５０は、監視部２３１ａに対して情報提供を要求し、監視部２３１ａは、要求に応じて、監視テーブル２２６ａに登録された情報を収集部２５０に通知する。また、収集部２５０は、監視部２３１ｂに対して情報提供を要求し、監視部２３１ｂは、要求に応じて、監視テーブル２２６ｂに登録された情報を収集部２５０に通知する。
【００８０】
図１１は、解析部の処理の具体例を示すタイムチャートである。試験処理部２４０が実行する試験で発生する障害内容には、タイムアウトによる障害とタイムアウト以外の障害との２つがある。タイムアウトによる障害は、ＣＰＵコアからＩＯ装置に対して処理が要求された後、所定のタイムアウト時間以内にその処理に対する正常な応答が返信されなかった場合に検知される。タイムアウトによる障害とタイムアウト以外の障害とで、解析部２６０が解析テーブル２２３に登録する処理が異なる。そこで、障害内容の違いによる解析部２６０の処理について説明する。
【００８１】
図１１（Ａ）は、タイムアウト以外の障害が発生した場合を示している。動作試験が進行するのにしたがい、収集部２５０は、ＣＰＵコア毎のアイドル時間と、ＩＯ装置毎のＩＯ処理の実行回数およびデータ転送量を、一定時間毎に収集（すなわち、定期収集）する。また、時刻Ｔ１において障害が発生したとすると、収集部２５０は、時刻Ｔ１でも、ＣＰＵコア毎のアイドル時間と、ＩＯ装置毎のＩＯ処理の実行回数およびデータ転送量を収集（すなわち、ポイント収集）する。
【００８２】
ここで、時刻Ｔ１で発生した障害がタイムアウト以外の障害であったとする。この場合、解析部２６０は、時刻Ｔ１で収集した情報と時刻Ｔ１から最も近い時刻Ｔ２に定期収集した情報とに基づいて、各ＣＰＵコアのＣＰＵビジー率と、各バスのスループットおよびＩＯＰＳとを算出する。
【００８３】
具体的には、解析部２６０は、ＣＰＵコアのＣＰＵビジー率を、「（時刻Ｔ１のアイドル時間−時刻Ｔ２のアイドル時間）／（時刻Ｔ１−時刻Ｔ２）」という式により算出する。ここで、時刻Ｔ１−時刻Ｔ２で算出される値の単位は秒でもよい。
【００８４】
また、解析部２６０は、バスのスループット、ＩＯＰＳを算出する前に、各ＩＯ装置のスループットおよびＩＯＰＳを以下のように算出する。例えば、ＩＯ装置のスループットは、「（時刻Ｔ１のデータ転送量−時刻Ｔ２のデータ転送量）／（時刻Ｔ１−時刻Ｔ２）」という式により算出される。また、ＩＯ装置のＩＯＰＳは、「（時刻Ｔ１のＩＯ処理実行回数−時刻Ｔ２のＩＯ処理実行回数）／（時刻Ｔ１−時刻Ｔ２）」という式により算出される。
【００８５】
解析部２６０は、管理テーブル２２１を参照して、バスとＩＯ装置との接続関係からバス毎のスループットおよびＩＯＰＳを算出する。例えば、ＣＰＵコアＣ１からＩＯ装置Ｘ１およびＩＯ装置Ｘ２への経路上にはバスＢ１が存在する。そのため、解析部２６０は、バスＢ１のスループットを、「ＩＯ装置Ｘ１のデータ転送量＋ＩＯ装置Ｘ２のデータ転送量」と算出する。また、解析部２６０は、バスＢ１のＩＯＰＳを、「ＩＯ装置Ｘ１のＩＯＰＳ＋ＩＯ装置Ｘ２のＩＯＰＳ」と算出する。このように、解析部２６０は、各バスのスループット、ＩＯＰＳを算出する。
【００８６】
解析部２６０は、算出したＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳを解析テーブル２２３に登録する。
一方、図１１（Ｂ）は、タイムアウトによる障害が発生した場合を示している。時刻Ｔ１１〜Ｔ１４は、収集部２５０が定期収集をした時刻である。また、時刻Ｔ３において障害が発生し、収集部２５０がポイント収集したとする。
【００８７】
ここで、時刻Ｔ３において、収集部２５０は、試験処理部２４０から障害内容がタイムアウトによる障害である旨の通知を受信したとする。この場合、収集部２５０は、試験処理部２４０からタイムアウトとなったコマンドの名称を受信する。解析部２６０は、タイムアウトとなったコマンドを試験処理部２４０が送信した時刻Ｔ４を特定する。例えば、解析部２６０は、試験処理部２４０が生成したログを参照することで、タイムアウトとなったコマンドが送信された時刻を特定することができる。あるいは、タイムアウト時間が一律に設定されている場合、解析部２６０は、時刻Ｔ３からタイムアウト時間分だけ前の時刻を、時刻Ｔ４と特定してもよい。解析部２６０は、時刻Ｔ４の前後である時刻Ｔ１２と時刻Ｔ１３とで定期収集された情報に基づいて、各ＣＰＵコアのＣＰＵビジー率と、バスのスループットおよびＩＯＰＳとを算出する。
【００８８】
例えば、解析部２６０は、ＣＰＵコアのＣＰＵビジー率を、「（時刻Ｔ１３のアイドル時間−時刻Ｔ１２のアイドル時間）／（時刻Ｔ１３−時刻Ｔ１２）」という式により算出する。また、解析部２６０は、バスのスループット、ＩＯＰＳを算出する前に、ＩＯ装置のスループットおよびＩＯＰＳを以下のように算出する。例えば、ＩＯ装置のスループットは、「（時刻Ｔ１３のデータ転送量−時刻Ｔ１２のデータ転送量）／（時刻Ｔ１３−時刻Ｔ１２）」という式により算出される。また、ＩＯ装置のＩＯＰＳは、「（時刻Ｔ１３のＩＯ処理実行回数−時刻Ｔ１２のＩＯ処理実行回数）／（時刻Ｔ１３−時刻Ｔ１２）」という式により算出される。解析部２６０は、管理テーブル２２１を参照して、バスとＩＯ装置との接続関係からバス毎のスループットおよびＩＯＰＳを算出する。解析部２６０は、算出したＣＰＵコアのＣＰＵビジー率およびバスのスループット、ＩＯＰＳを解析テーブル２２３に登録する。
【００８９】
図１２は、動作試験の処理の例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
（Ｓ１１）試験処理部２４０は、例えば、試験端末５００からの指示に応じて、動作試験を開始する。試験処理部２４０は、試験が開始した旨を収集部２５０に通知する。
【００９０】
（Ｓ１２）収集部２５０は、定期収集を行う。このステップＳ１２の処理は、次のステップＳ１３で“Ｙｅｓ”と判定されるまでの間、一定時間間隔で実行される。
（Ｓ１３）収集部２５０は、試験処理部２４０から動作試験において障害が発生した旨の通知がされたか否かを判定する。通知されている場合、処理をステップＳ１４に進める。通知されていない場合、処理をステップＳ１２に進める。なお、図示しないが、収集部２５０は、障害が発生した旨の通知がされずに動作試験が終了した場合、処理を終了する。
【００９１】
（Ｓ１４）収集部２５０は、ポイント収集を行う。収集部２５０は、収集処理が終了した旨を解析部２６０に通知する。また、試験処理部２４０は、タイムアウトによる障害であるか否かを収集部２５０に通知する。試験処理部２４０は、タイムアウトによる障害の場合、タイムアウトとなったコマンドの名称を収集部２５０に通知する。
【００９２】
（Ｓ１５）解析部２６０は、収集部２５０が収集した情報に基づいて解析処理を行う。解析部２６０は、解析処理の結果を解析テーブル２２３に登録する。
（Ｓ１６）試験処理部２４０は、障害が発生したことを試験端末５００に通知する。これにより、試験端末５００の画面に障害が発生した旨が表示される。
【００９３】
（Ｓ１７）試験処理部２４０は、例えば、試験端末５００からの指示に応じて、障害再現のための再試験を実行する。再試験の実行中には、収集部２５０、解析部２６０、調整部２７０の処理により、ＣＭ２００のハードウェアの負荷状態を障害発生時の状態に近づけるような制御が行われる。なお、再試験は、少なくとも、障害が発生した時点で終了される。
【００９４】
図１３は、収集処理の例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。また、図１３に示す処理はステップＳ１２，Ｓ１４の処理に対応する。すなわち、定期収集およびポイント収集は、いずれも図１３のような手順で実行される。
【００９５】
（Ｓ２１）収集部２５０は、現在の時刻を取得する。収集部２５０は、現在の時刻をトレーステーブル２２２に登録する。
（Ｓ２２）収集部２５０は、監視テーブルから各ＣＰＵコアのアイドル時間を取得する。図１０の構成の場合、収集部２５０は、監視部２３１に対してアイドル時間の通知を要求し、監視部２３１が、監視テーブル２２６に登録された各ＣＰＵコアのアイドル時間を読み出して、収集部２５０に通知する。収集部２５０は、各ＣＰＵコアのアイドル時間をトレーステーブル２２２に登録する。
【００９６】
（Ｓ２３）収集部２５０は、監視テーブルから各ＩＯ装置に対応するＩＯ処理実行回数およびデータ転送量を取得する。図１０の構成の場合、収集部２５０は、監視部２３１ａに対してＩＯ処理実行回数およびデータ転送量の通知を要求する。監視部２３１ａは、監視テーブル２２６ａに登録された各ＨＤＤのＩＯ処理実行回数およびデータ転送量を読み出して、収集部２５０に通知する。また、収集部２５０は、監視部２３１ｂに対してＩＯ処理実行回数およびデータ転送量の通知を要求する。監視部２３１ｂは、監視テーブル２２６ｂに登録された各ＣＡのＩＯ処理実行回数およびデータ転送量を読み出して、収集部２５０に通知する。収集部２５０は、各ＩＯ装置に対するデータ転送量をトレーステーブル２２２に登録する。
【００９７】
（Ｓ２４）このステップＳ２４は、ポイント収集の場合のみ実行される。収集部２５０は、試験処理部２４０から、障害内容がタイムアウトによるものであるか否かを示す情報を受信する。また、障害内容がタイムアウトによるものである場合、収集部２５０は、試験処理部２４０から、タイムアウトとなったコマンドの名称を受信する。
【００９８】
図１４は、解析処理の例を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。また、図１４に示す処理はステップＳ１５の処理に対応する。
【００９９】
（Ｓ３１）解析部２６０は、図１３のステップＳ２４で収集部２５０が試験処理部２４０から受信した情報に基づいて、障害がタイムアウトによるものであるか否かの判定を行う。タイムアウトによる障害の場合、処理をステップＳ３２に進める。タイムアウト以外の障害の場合、処理をステップＳ３４に進める。
【０１００】
（Ｓ３２）解析部２６０は、図１３のステップＳ２４で収集部２５０が試験処理部２４０から受信した、タイムアウトとなったコマンドの名称に基づいて、試験処理部２４０によるこのコマンドの発行時刻を特定する。例えば、解析部２６０は、試験処理部２４０が生成して記憶部２２０に格納されたログを参照し、タイムアウトとなったコマンドの発行時刻を特定する。あるいは、タイムアウト時間が一律に設定されている場合、解析部２６０は、図１２のステップＳ１３で障害発生が通知された時刻から、タイムアウト時間分だけ前の時刻を、コマンドの発行時刻と特定してもよい。
【０１０１】
（Ｓ３３）解析部２６０は、特定した時刻の前後に定期収集された情報に基づいて、ＣＰＵコア毎のＣＰＵビジー率およびＩＯ装置毎のスループット、ＩＯＰＳを算出する。さらに、解析部２６０は、管理テーブル２２１を参照し、ＩＯ装置毎のスループット、ＩＯＰＳからバス毎のスループット、ＩＯＰＳを算出する。解析部２６０は、算出した内容を解析テーブル２２３に登録する。そして、処理を終了する。
【０１０２】
（Ｓ３４）解析部２６０は、ポイント収集で収集した情報と障害が発生した時刻から最も近い時刻に定期収集した情報とに基づいてＣＰＵコア毎のＣＰＵビジー率およびＩＯ装置毎のスループット、ＩＯＰＳを算出する。さらに、解析部２６０は、管理テーブル２２１を参照し、ＩＯ装置毎のスループット、ＩＯＰＳからバス毎のスループット、ＩＯＰＳを算出する。解析部２６０は、算出した内容を解析テーブル２２３に登録する。そして、処理を終了する。
【０１０３】
ここで、収集部２５０が、ＣＭ２００の内部のバス毎にスループットやＩＯＰＳを直接的に収集することは難しい。これに比べて、図１３のように、ＩＯ装置単位でＩＯ処理実行回数やデータ転送量を収集する方が容易である。解析部２６０は、管理テーブル２２１を参照してＩＯ装置とバスとの接続関係を把握することで、ＩＯ装置単位で収集されたＩＯ処理実行回数やデータ転送量を、バス単位のスループットやＩＯＰＳに変換する。このような処理により、解析部２６０は、ＣＭ２００に搭載されたＣＰＵコア毎およびバス毎に、障害が発生した際の負荷状態を示す情報を解析テーブル２２３に登録することができる。
【０１０４】
次に、障害再現のための再試験時の制御について説明する。まず、図１５および図１６を用いて、ＣＭ２００に与える処理負荷を調整する方法について説明する。
図１５は、ＣＰＵコアの処理負荷の調整方法の例を示す図である。調整部２７０は、各ＣＰＵコアに実行させる、ＣＰＵビジー率の調整用のタスクの時間当たりの実行数を増減することで、ＣＭ２００に与える処理負荷を調整する。調整用のタスクとは、例えば、意味のないメモリアクセスなどのダミーの処理を実行するものである。さらに、調整部２７０は、調整用のタスクに設定するディレイ時間を増減することで、ＣＭ２００に与える処理負荷を調整することもできる。ディレイ時間とは、調整用のタスクの実行遅延時間である。
【０１０５】
図１５の例では、ＣＰＵコア調整用テーブル２２４において、ＣＰＵコアＣ１（ＣＰＵコア２０２に対応）でのタスク実行数として“２”が設定され、ＣＰＵコアＣ２（ＣＰＵコア２０２ａに対応）でのタスク実行数として“３”が設定されているとする。この場合、調整部２７０は、調整用タスクＴＳ１，ＴＳ２を生成して、所定時間内に調整用タスクＴＳ１，ＴＳ２をＣＰＵコア２０２に実行させる。また、調整部２７０は、調整用タスクＴＳ１１，ＴＳ１２、ＴＳ１３を生成して、所定時間内に調整用タスクＴＳ１１，ＴＳ１２、ＴＳ１３をＣＰＵコア２０２ａに実行させる。
【０１０６】
各調整用タスクの処理内容は同じである。例えば、ＣＰＵコア２０２は、調整用タスクＴＳ１を実行すると、ＲＡＭ２０４の所定アドレスから所定回数のデータ読み出しを行う。次に、ＣＰＵコア２０２は、ＣＰＵコア調整用テーブル２２４におけるＣＰＵコア２０２に対応するレコードから、ディレイ時間を読み出す。ＣＰＵコア２０２は、読み出したディレイ時間の分だけ待ち状態となり、待ち状態が解除されると次のタスクを実行する。
【０１０７】
以上のような調整用のタスクを用いることにより、調整部２７０は、各ＣＰＵコアの処理負荷を調整することができる。例えば、調整用タスクの実行数を増やすことで、ＣＰＵコアのアイドル時間が短くなり、そのＣＰＵコアについてのＣＰＵビジー率を高めることができる。また、ディレイ時間を増加させることで、ＣＰＵコアの待ち時間が長くなり、そのコアについてのＣＰＵビジー率を低下させることができる。
【０１０８】
なお、ＣＰＵコア毎のＣＰＵビジー率の調整方法としては、次のような方法を用いることもできる。この方法では、記憶部２２０に各ＣＰＵコアに対応するディレイ時間が設定されたテーブルが記憶される。ディレイ時間は調整部２７０により設定される。試験処理部２４０がＩＯ装置のドライバに対してコマンドを発行すると、ドライバは、コマンド要求元のＣＰＵコアに対応するディレイ時間をテーブルから読み出す。ドライバは、読み出したディレイ時間分だけＣＰＵコアに対する応答処理の実行を遅延させる。なお、この方法は、例えば、所定時間内にＣＰＵコアに上記の調整用のタスクを１つも実行させていない（すなわち、設定されたタスク実行数が“０”である）にもかかわらず、ＣＰＵビジー率をさらに下げたい場合に利用することもできる。
【０１０９】
図１６は、バスの伝送負荷の調整方法の例を示す図である。調整部２７０は、試験処理部２４０に対して設定するキューイング数およびコマンド当たりのデータサイズを増減することで、ＣＭ２００に与える処理負荷を調整する。キューイング数とは、対応するＩＯ装置に対して仕掛かり中にすることが可能なコマンド数、すなわち、その時点でＩＯ装置に発行済みであり、かつ、応答を未受信のコマンドの最大数である。また、コマンド当たりのデータサイズとは、１つのコマンドによって入出力を要求可能なデータのサイズである。
【０１１０】
図１６では、ＩＯ装置の例としてＨＤＤ３００，３００ａを示している。また、図１６の例では、ＨＤＤ３００のキューイング数として“３”が設定され、ＨＤＤ３００ａのキューイング数として“２”が設定されているものとする。この場合、試験処理部２４０は、ＩＯ装置調整用テーブル２２５におけるＨＤＤ３００に対応するレコードに基づいて、ＨＤＤ３００に対して最大で３つのコマンドを仕掛かり中にすることができる。また、試験処理部２４０は、ＩＯ装置調整用テーブル２２５におけるＨＤＤ３００ａに対応するレコードに基づいて、ＨＤＤ３００ａに対して最大で２つのコマンドを仕掛かり中にすることができる。キューイング数が増加することで、ＣＰＵコアと該当ＩＯ装置との間で伝送されるデータ量が増加する。その結果、ＩＯ装置との経路上のバスのスループットが増加し、データ伝送負荷が大きくなる。
【０１１１】
また、図１６の例では、ＩＯ装置調整用テーブル２２５において、ＨＤＤ３００よりＨＤＤ３００ａの方が、コマンド当たりのデータサイズとして大きな値が設定されているものとする。この場合、データの読み出しコマンドに関しては、試験処理部２４０が１つのコマンドを発行してＨＤＤ３００からデータを読み出す場合よりも、１つのコマンドを発行してＨＤＤ３００ａからデータを読み出す場合の方が、読み出しデータ量が大きくなる。データの書き込みコマンドに関しても同様である。
【０１１２】
コマンド当たりのデータサイズを小さくすることで、ＣＰＵコアから該当ＩＯ装置へ発行されるコマンド数が多くなり、ＩＯ装置との経路上のバスのＩＯＰＳが増加する。その結果、ＣＰＵコアとＩＯ装置との通信回数が増加し、それらの間の経路上のバスのデータ伝送負荷が大きくなる。
【０１１３】
なお、調整部２７０は、キューイング数とコマンド当たりのデータサイズの一方のみの設定を変更可能であってもよい。
図１７は、再試験時の処理例（その１）を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。また、図１７に示す処理はステップＳ１７の処理に対応する。
【０１１４】
（Ｓ４１）調整部２７０は、解析テーブル２２３の登録内容を読み込む。
（Ｓ４２）試験処理部２４０は、例えば、試験端末５００からの指示に応じて、再試験を開始する。試験処理部２４０は、ＩＯ装置調整用テーブル２２５の登録内容を読み込み、これ以後、読み込んだ登録内容に基づいて、各ＩＯ装置にコマンドを発行する際のキューイング数およびコマンド当たりのデータサイズを調整する。
【０１１５】
（Ｓ４３）調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されたＣＰＵコア毎のタスク数に基づいて、各ＣＰＵコアに調整用タスクを実行させる。また、ＣＰＵコアが調整用タスクを実行した際には、ＣＰＵコア調整用テーブル２２４の該当レコードに登録されたディレイ時間に基づいて、実行遅延時間（待ち時間）が調整される。
【０１１６】
（Ｓ４４）試験処理部２４０は、ＣＰＵコアとＩＯ装置との通信が安定しているか否かを判定する。例えば、再試験の開始から所定時間が経過すると、通信が安定したと判定される。安定している場合、処理をステップＳ４５に進める。安定していない場合、試験処理部２４０は、安定するまで待機する。
【０１１７】
（Ｓ４５）収集部２５０は、定期収集を２回行って、定期収集毎に収集したＣＰＵコアのアイドル時間、ＩＯ装置に対するデータ転送量、ＩＯ処理実行回数をトレーステーブル２２２に登録する。処理内容は、ステップＳ１２，Ｓ１４と同じである。
【０１１８】
（Ｓ４６）解析部２６０は、ステップＳ４５で収集部２５０が収集したＣＰＵコアのアイドル時間、ＩＯ装置のＩＯ処理実行回数、データ転送量に基づいて、ＣＰＵコア毎のＣＰＵビジー率およびバス毎のスループット、ＩＯＰＳを算出する。
【０１１９】
具体的には、解析部２６０は、ＣＰＵコアのＣＰＵビジー率を、「（２回目に収集したアイドル時間−１回目に収集したアイドル時間）／（２回目に収集した時刻−１回目に収集した時刻）」という式により算出する。
【０１２０】
また、解析部２６０は、バスのスループット、ＩＯＰＳを算出する前に、ＩＯ装置のスループットおよびＩＯＰＳを以下のように算出する。ＩＯ装置のスループットは、「（２回目に収集したデータ転送量−１回目に収集したデータ転送量）／（２回目に収集した時刻−１回目に収集した時刻）」という式により算出される。ＩＯ装置のＩＯＰＳは、「（２回目に収集したＩＯ処理実行回数−１回目に収集したＩＯ処理実行回数）／（２回目に収集した時刻−１回目に収集した時刻）」という式により算出される。
【０１２１】
解析部２６０は、管理テーブル２２１を参照して、バスとＩＯ装置との接続関係からバス毎のスループットおよびＩＯＰＳを算出する。例えば、解析部２６０は、バスＢ１のスループットを、「ＩＯ装置Ｘ１のデータ転送量＋ＩＯ装置Ｘ２のデータ転送量」と算出する。また、解析部２６０は、バスＢ１のＩＯＰＳを、「ＩＯ装置Ｘ１のＩＯＰＳ＋ＩＯ装置Ｘ２のＩＯＰＳ」と算出する。このように、解析部２６０は、各バスのスループット、ＩＯＰＳを算出する。
【０１２２】
そして、解析部２６０は、処理をステップＳ５１に進める。
なお、以上の図１７では、ステップＳ４５で定期収集が２回実行され、その収集結果に基づいてステップＳ４６でＣＰＵコアのＣＰＵビジー率とバスのスループットおよびＩＯＰＳが算出された。これに対し、他の例として、ステップＳ４５で定期収集が３回以上実行され、それらの収集結果に基づいてステップＳ４６でＣＰＵコアのＣＰＵビジー率とバスのスループットおよびＩＯＰＳが算出されてもよい。この場合、解析部２６０は、例えば、隣接する２回の定期収集の結果に基づいてＣＰＵコアのＣＰＵビジー率とバスのスループットおよびＩＯＰＳを算出し、算出された複数のＣＰＵビジー率とバスのスループットおよびＩＯＰＳのそれぞれの平均値を計算する。
【０１２３】
図１８は、再試験時の処理例（その２）を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。また、図１８に示す処理はステップＳ１７の処理に対応する。
【０１２４】
（Ｓ５１）調整部２７０は、解析テーブル２２３から１つのバスを選択する。調整部２７０は、選択したバスについて解析テーブル２２３に登録されているスループットと、選択したバスと同じバスについてステップＳ４６で算出したスループットとが同じであるか否かを判定する。スループットが同じ場合、処理をステップＳ５５に進める。スループットが同じでない場合、処理をステップＳ５２に進める。
【０１２５】
（Ｓ５２）調整部２７０は、ステップＳ５１で比較したスループットのうち、解析テーブル２２３に登録されている方が大きいか否かを判定する。解析テーブル２２３に登録されている方が大きい場合、処理をステップＳ５３に進める。解析テーブル２２３に登録されている方が小さい場合、処理をステップＳ５４に進める。
【０１２６】
（Ｓ５３）調整部２７０は、管理テーブル２２１を参照し、ステップＳ５１で選択したバスに接続されているＩＯ装置を特定する。調整部２７０は、ＩＯ装置調整用テーブル２２５に登録されているキューイング数のうち、特定したＩＯ装置に対応するキューイング数を増加させる。例えば、調整部２７０は、ＩＯ装置調整用テーブル２２５に登録されているキューイング数を１つ増加させる。そして、処理をステップＳ５５に進める。
【０１２７】
（Ｓ５４）調整部２７０は、管理テーブル２２１を参照し、ステップＳ５１で選択したバスに接続されているＩＯ装置を特定する。調整部２７０は、ＩＯ装置調整用テーブル２２５に登録されているキューイング数を減少させる。例えば、調整部２７０は、ＩＯ装置調整用テーブル２２５に登録されているキューイング数のうち、特定したＩＯ装置に対応するキューイング数を１つ減少させる。
【０１２８】
（Ｓ５５）調整部２７０は、ステップＳ５１で選択したバスについて解析テーブル２２３に登録されているＩＯＰＳと、選択したバスと同じバスについてステップＳ４６で算出したＩＯＰＳとが同じであるか否かを判定する。ＩＯＰＳが同じ場合、処理をステップＳ５９に進める。ＩＯＰＳが同じでない場合、処理をステップＳ５６に進める。
【０１２９】
（Ｓ５６）調整部２７０は、ステップＳ５５で比較したＩＯＰＳのうち、解析テーブル２２３に登録されている方が大きいか否かを判定する。解析テーブル２２３に登録されている方が大きい場合、処理をステップＳ５７に進める。解析テーブル２２３に登録されている方が小さい場合、処理をステップＳ５８に進める。
【０１３０】
（Ｓ５７）調整部２７０は、ＩＯ装置調整用テーブル２２５に登録されているデータサイズのうち、ステップＳ５３またはステップＳ５４で特定したＩＯ装置に対応するデータサイズを、所定サイズだけ小さくする。そして、処理をステップＳ５９に進める。
【０１３１】
（Ｓ５８）調整部２７０は、ＩＯ装置調整用テーブル２２５に登録されているデータサイズのうち、ステップＳ５３またはステップＳ５４で特定したＩＯ装置に対応するデータサイズを、所定サイズだけ大きくする。
【０１３２】
（Ｓ５９）調整部２７０は、解析テーブル２２３に登録された全てのバスに対して処理済みであるか否かを判定する。処理済みの場合、処理をステップＳ６１に進める。処理済みでない場合、処理をステップＳ５１に進める。
【０１３３】
ステップＳ５３，Ｓ５４では、例として調整部２７０はキューイング数を１つ増減することを示したが、２以上の整数を増減させてもよい。また、予めどれくらいのキューイング数当たりどのくらいのスループットに相当するのかが分かっている場合は、解析テーブル２２３に登録されているスループットと同じになるようにキューイング数を設定してもよい。
【０１３４】
同様に、予めどのくらいのデータサイズがどのくらいのＩＯＰＳに相当するのかが分かっている場合は、解析テーブル２２３に登録されているＩＯＰＳと同じになるようにデータサイズを調整してもよい。
【０１３５】
図１９は、再試験時の処理例（その３）を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。また、図１９に示す処理はステップＳ１７の処理に対応する。
【０１３６】
（Ｓ６１）調整部２７０は、解析テーブル２２３から１つのＣＰＵコアを選択する。調整部２７０は、選択したＣＰＵコアについて解析テーブル２２３に登録されているＣＰＵビジー率と、選択したＣＰＵコアと同じＣＰＵコアのステップＳ４６で算出したＣＰＵビジー率とが同じであるか否かを判定する。ＣＰＵビジー率が同じ場合、処理をステップＳ６５に進める。ＣＰＵビジー率が同じでない場合、処理をステップＳ６２に進める。
【０１３７】
（Ｓ６２）調整部２７０は、ステップＳ６１で比較したＣＰＵビジー率のうち、解析テーブル２２３に登録されている方が大きいか否かを判定する。解析テーブル２２３に登録されている方が大きい場合、処理をステップＳ６３に進める。解析テーブル２２３に登録されている方が小さい場合、処理をステップＳ６４に進める。
【０１３８】
（Ｓ６３）調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されている、ステップＳ６１で選択したＣＰＵコアに対応する調整用タスク数を増加させる。例えば、調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されている調整用タスク数を１つ増加させる。または、調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されている、ステップＳ６１で選択したＣＰＵコアに対応するディレイ時間を短くする。例えば、調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されているディレイ時間を１マイクロ秒短くする。そして、処理をステップＳ６５に進める。
【０１３９】
なお、ステップＳ６３では、調整部２７０は、例えば、調整用タスク数とディレイ時間のうち、ディレイ時間を優先的に変更する。そして、調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されているディレイ時間が登録可能な最小値になっている場合に、調整用タスク数を増加させる。
【０１４０】
（Ｓ６４）調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されている、ステップＳ６１で選択したＣＰＵコアに対応する調整用タスク数を減少させる。例えば、調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されている調整用タスク数を１つ減少させる。または、調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されている、ステップＳ６１で選択したＣＰＵコアに対応するディレイ時間を長くする。例えば、調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されているディレイ時間を１マイクロ秒長くする。
【０１４１】
なお、ステップＳ６４では、調整部２７０は、例えば、調整用タスク数とディレイ時間のうち、調整用タスク数を優先的に変更する。そして、調整部２７０は、ＣＰＵコア調整用テーブル２２４に登録されている調整用タスク数が登録可能な最小値になっている場合に、ディレイ時間を長くする。
【０１４２】
（Ｓ６５）調整部２７０は、解析テーブル２２３に登録された全てのＣＰＵコアに対して処理済みであるか否かを判定する。処理済みの場合、処理をステップＳ６６に進める。処理済みでない場合、処理をステップＳ６１に進める。
【０１４３】
（Ｓ６６）調整部２７０は、ＣＰＵコア毎のＣＰＵビジー率およびバス毎のスループット、ＩＯＰＳを調整できているか否かを判定する。すなわち、調整部２７０は、ステップＳ５１，Ｓ５５，Ｓ６１において全て“Ｙｅｓ”であるか否かを判定する。調整できている場合、処理をステップＳ６９に進める。調整できていない場合、調整部２７０は、試験処理部２４０に試験中止の要求を通知する。そして、処理をステップＳ６７に進める。
【０１４４】
（Ｓ６７）試験処理部２４０は、試験を中止する。試験処理部２４０は、試験を中止した旨を調整部２７０に通知する。また、試験処理部２４０は、負荷の調整が必要なために試験を中止した旨を、試験端末５００に通知する。
【０１４５】
（Ｓ６８）調整部２７０は、試験処理部２４０に試験の再実行の指示をする。そして、処理をステップＳ４２に進める。また、試験端末５００でのユーザの操作に応じて試験を再実行するようにしてもよい。また、ステップＳ６８では、ＣＭ２００が再起動され、再起動後にステップＳ４２からの処理が実行されてもよい。
【０１４６】
この後にステップＳ４２からの処理が実行されたとき、更新後のＣＰＵコア調整用テーブル２２４およびＩＯ装置調整用テーブル２２５の値に基づいて、試験処理が実行され、調整用タスクの発行および実行が行われる。これにより、ＣＭ２００の負荷状態が調整後の負荷状態に変更される。
【０１４７】
（Ｓ６９）例えば、障害が発生するまで、再試験が継続される。
なお、上記の例では、キューイング数およびコマンド当たりのデータサイズを調整部２７０がＩＯ装置調整用テーブル２２５に設定し、再試験の実行開始時（ステップＳ４２）に試験処理部２４０がＩＯ装置調整用テーブル２２５の内容を読み込むことで、キューイング数およびコマンド当たりのデータサイズが制御される構成とした。しかし、このような形態に限らず、例えば、調整後のキューイング数およびコマンド当たりのデータサイズが、試験プログラム自体に設定されてもよい。この場合、ステップＳ６８の次にステップＳ４２が実行される際には、調整後のキューイング数およびコマンド当たりのデータサイズが設定された試験プログラムにしたがって、試験処理部２４０の再試験処理が実行される。
【０１４８】
以上の第２の実施の形態では、調整部２７０は、ＣＰＵコア毎のＣＰＵビジー率およびバス毎のスループット、ＩＯＰＳの検出値が、解析テーブル２２３に登録されているＣＰＵコア毎のＣＰＵビジー率およびバス毎のスループット、ＩＯＰＳになるまで、試験プログラムを用いて再試験を繰り返しながら調整する。このような調整により、各ＣＰＵコアや各バスの負荷状態を、障害発生時の負荷状態に近づけることができる。これにより、障害の再現性を向上できる。
【０１４９】
また、障害がタイムアウトによるものの場合でも、障害がタイムアウト以外の場合であっても、調整時にターゲットにする各ＣＰＵコアや各バスの負荷状態の情報を、障害発生が通知されたタイミングまたはこれより前の期間の中から適切なタイミングで収集することができる。その結果、再試験時における各ＣＰＵコアや各バスの負荷状態を、障害発生時の負荷状態に正確に近づけることができる。
【０１５０】
なお、第１の実施の形態の情報処理は、情報処理装置１が備えるプロセッサに、プログラムを実行させることで実現できる。第２の実施の形態の情報処理は、ＣＰＵコア２０２，２０２ａにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体（例えば、ＲＡＭ２０４，ＳＳＤ２０６，記録媒体２０７ａなど）に記録できる。
【０１５１】
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体（例えば、記録媒体２０７ａ）が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。
【０１５２】
また、上記の情報処理の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
なお、各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
【符号の説明】
【０１５３】
１  情報処理装置
２  制御部
３  記憶部
３ａ  第１の検出値
４  試験プログラム
Ｓ１，Ｓ２，Ｓ３，Ｓ４，Ｓ５，Ｓ６  ステップ
【図１】
0006379841.tif 000002
【図２】
0006379841.tif 000003
【図３】
0006379841.tif 000004
【図４】
0006379841.tif 000005
【図５】
0006379841.tif 000006
【図６】
0006379841.tif 000007
【図７】
0006379841.tif 000008
【図８】
0006379841.tif 000009
【図９】
0006379841.tif 000010
【図１０】
0006379841.tif 000011
【図１１】
0006379841.tif 000012
【図１２】
0006379841.tif 000013
【図１３】
0006379841.tif 000014
【図１４】
0006379841.tif 000015
【図１５】
0006379841.tif 000016
【図１６】
0006379841.tif 000017
【図１７】
0006379841.tif 000018
【図１８】
0006379841.tif 000019
【図１９】
0006379841.tif 000020