(57)【特許請求の範囲】
【請求項１】
情報処理システムに応じて予め定められると共に、該情報処理システムに含まれるデバイスに対するデータの入出力に関係する負荷でかつ、該情報処理システムに加える負荷を定めるための負荷条件を取得する条件取得部と、
取得した負荷条件に基づいて、稼働する前記情報処理システムに加える負荷を求め、求めた負荷を前記情報処理システムに加える負荷付与部と、
前記情報処理システムに加えた負荷及び該負荷が加えられているときのデータの入出力の要求に対する前記デバイスの応答時間と、該応答時間と相関関係を示す負荷情報を取得する情報取得部と、
取得した応答時間に基づいて、前記デバイスにデータの入出力を要求してから前記デバイスが応答するまでの応答監視時間を、取得した負荷情報毎に演算し、運用段階で取得された負荷情報に対応する応答監視時間を設定する演算設定部と
を備えた情報処理装置。
【請求項２】
前記負荷情報は、データの入力とデータの出力との比率である
請求項１に記載の情報処理装置。
【請求項３】
前記負荷情報は、データの入出力におけるデータ量である
請求項１または請求項２に記載の情報処理装置。
【請求項４】
情報処理システムに応じて予め定められると共に、該情報処理システムに含まれるデバイスに対するデータの入出力に関係する負荷でかつ、該情報処理システムに加える負荷を定めるための負荷条件を取得し、
取得した負荷条件に基づいて、稼働する前記情報処理システムに対して加える負荷を求め、求めた負荷を、前記情報処理システムに加え、
前記情報処理システムに与えた負荷及び該負荷が加えられているときのデータの入出力の要求に対する前記デバイスの応答時間と、該応答時間と相関関係を示す負荷情報を取得し、
取得した応答時間に基づいて、前記デバイスにデータの入出力を要求してから前記デバイスが応答するまでの応答監視時間を、取得した負荷情報毎に演算し、運用段階で取得された負荷情報に対応する応答監視時間を設定する
情報処理方法。
【請求項５】
前記負荷情報は、データの入力とデータの出力との比率である
請求項４に記載の情報処理方法。
【請求項６】
前記負荷情報は、データの入出力におけるデータ量である
請求項４または請求項５に記載の情報処理方法。
【請求項７】
情報処理システムに応じて予め定められると共に、該情報処理システムに含まれるデバイスに対するデータの入出力に関係する負荷でかつ、該情報処理システムに加える負荷を定めるための負荷条件を取得し、
取得した負荷条件に基づいて、稼働する前記情報処理システムに対して加える負荷を求め、求めた負荷を、前記情報処理システムに加え、
前記情報処理システムに与えた負荷及び該負荷が加えられているときのデータの入出力の要求に対する前記デバイスの応答時間と、該応答時間と相関関係を示す負荷情報を取得し、
取得した応答時間に基づいて、前記デバイスにデータの入出力を要求してから前記デバイスが応答するまでの応答監視時間を、取得した負荷情報毎に演算し、運用段階で取得された負荷情報に対応する応答監視時間を設定する
処理をコンピュータに実行させる情報処理プログラム。
【請求項８】
コンピュータに、請求項４〜請求項６の何れか１項記載の情報処理方法に係る処理を実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
コンピュータを使用して業務処理を行う情報処理システムが知られている。コンピュータを使用して業務処理を行うときには、利用するデータを、ＨＤＤ(Hard Disk Drive)等の記憶装置に記憶して利用することが一般的である。コンピュータで使用する記憶装置等のデバイスに障害が生じると、業務処理に影響を及ぼす場合がある。【０００３】
そこで、業務処理で利用する記憶装置の障害が及ぼす影響を抑制するために、ミラーリング等の冗長化技術により記憶装置の冗長性を向上させることが行われている。例えば、ディスクミラーリングと呼ばれる冗長化技術では、複数のローカルなディスクドライブに同一の内容を記録する。冗長化技術では、複数のディスクや複数の記憶装置の各々に同時にデータを書き込み、データの読み出しは予め定めた主となる単一のディスクや単一の記憶装置から行う。【０００４】
冗長化技術では、主となる単一のディスクや単一の記憶装置に障害が発生した場合、迅速に他のディスクや他の記憶装置を主となるように切り替える等の障害を回避する処理が行われる。コンピュータを使用して業務処理を行う場合、ディスクや記憶装置に障害が発生した際に、他のディスクや他の記憶装置に切り替える等の障害を回避する処理に要する時間は、業務処理を継続するときの妨げになる。ディスクや記憶装置の障害が業務処理に影響を及ぼすことを抑制するために、入出力要求（Ｉ／Ｏ要求）に対する応答を監視し、所定時間を経過すると応答がないものとみなすタイムアウト技術が知られている。つまり、タイムアウト技術は、記憶装置の応答遅延を抑止する機能を含む技術である。【０００５】
タイムアウト技術の一例には、Ｉ／Ｏ要求に対する応答を監視するタイムアウト時間を設定する技術がある。例えば、情報処理システムに一定の負荷を与え、測定した情報処理システムの性能に応じてタイムアウト時間を設定する技術が知られている。システムの性能に応じてタイムアウト時間を設定する技術では、情報処理システムに一定の負荷を与えたときの単位時間当たりの入出力コマンド数と入出力コマンド数に対する応答時間を、処理性能情報として収集する。収集した処理性能情報に基づき、タイムアウト時間の予測値を求めて使用することで、タイムアウト時間が設定される。【０００６】
また、タイムアウト時間を設定する他の例として、Ｉ／Ｏ要求毎に、負荷に応じたタイムアウト時間を問い合わせる技術が知られている。タイムアウト時間を問い合わせる技術では、入出力要求毎にコンピュータに対する負荷に応じてタイムアウト時間を設定することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−１１３３８３号公報
【特許文献２】特開２００５−１６５６５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、情報処理システムにおける負荷は、情報処理システムにおいて実行される業務処理に応じて変化する。従って、情報処理システムに一定の負荷を与えて得られる処理性能情報により設定されるタイムアウト時間として、情報処理システムにおいて実行される業務処理に対応するタイムアウト時間が設定されない場合がある。また、入出力要求毎にコンピュータに対する負荷に応じてタイムアウト時間を設定する場合、入出力要求発行毎に毎回タイムアウト時間を問い合わせる必要がある。従って、入出力要求毎に負荷は増加する。【０００９】
１つの側面では、情報処理システムにおける応答性能を向上させることが目的である。
【課題を解決するための手段】
【００１０】
開示の技術は、情報処理システムに応じて予め定められると共に、該情報処理システムに含まれるデバイスに対するデータの入出力に関係する負荷でかつ、該情報処理システムに加える負荷を定めるための負荷条件を取得する。取得した負荷条件に基づいて、稼働する前記情報処理システムに加える負荷を求め、求めた負荷を、前記情報処理システムに加える。前記情報処理システムに加えた負荷及び該負荷が加えられているときのデータの入出力の要求に対する前記デバイスの応答時間と、該応答時間に相関関係を示す負荷情報を取得する。取得した応答時間に基づいて、前記デバイスにデータの入出力を要求してから前記デバイスが応答するまでの応答監視時間を、取得した負荷情報毎に演算し、運用段階で取得された負荷情報に対応する応答監視時間を設定する。
【発明の効果】
【００１１】
１つの実施態様では、情報処理システムにおける応答性能を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態に係る情報処理装置をコンピュータで実現する場合の一例を示すブロック図である。
【図２】Ｉ／Ｏ特性テーブルの一例を示すイメージ図である。
【図３】各種プログラムを機能的に捉えたブロック図の一例を示すイメージ図である。
【図４】監視デーモンプログラムの初期段階の処理の流れの一例を示すフローチャートである。
【図５】監視デーモンプログラムでタイムアウト時間を求める処理の流れの一例を示すフローチャートである。
【図６】Ｉ／Ｏ負荷とＩ／Ｏ応答時間の関係の一例を示すイメージ図である。
【図７】監視デーモンプログラムの運用段階の処理の流れの一例を示すフローチャートである。
【図８】監視デーモンプログラムでタイムアウト時間を求める処理の流れの一例を示すフローチャートである。
【図９】Ｉ／Ｏ監視ドライバの初期段階の処理の流れの一例を示すフローチャートである。
【図１０】Ｉ／Ｏ監視ドライバのＩ／Ｏ負荷情報が要求されるときの処理の流れの一例を示すフローチャートである。
【図１１】Ｉ／Ｏ監視ドライバの運用段階の処理の流れの一例を示すフローチャートである。
【図１２】Ｉ／Ｏ監視ドライバのＩ／Ｏタイムアウト時間の変更が要求されるときの処理の流れの一例を示すフローチャートである。
【図１３】Ｉ／Ｏ中断ドライバの処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
【００１４】
図１に、本実施形態に係る情報処理装置を、コンピュータで実現する場合の一例を示す。
【００１５】
コンピュータ３２はＣＰＵ４２、メモリ４４、不揮発性の格納部５４を備えている。ＣＰＵ４２、メモリ４４、及び格納部５４はバス８０を介して互いに接続されている。格納部５４はＨＤＤやフラッシュメモリ等によって実現できる。また、コンピュータ３２はネットワーク３６に接続するための通信制御部５０を備え、通信制御部５０はバス８０に接続されている。また、コンピュータ３２は、出力デバイスの一例としての表示装置４６、キーボードやマウス等の入力デバイスの一例としての入力装置４７を備えている。表示装置４６、及び入力装置４７はバス８０に接続されている。また、コンピュータ３２は、光ディスク等の記録媒体４９が挿入され、挿入された記録媒体４９に対して読み書きするための装置（Ｒ／Ｗ装置）４８を備え、Ｒ／Ｗ装置４８はバス８０に接続されている。なお、表示装置４６、入力装置４７、及びＲ／Ｗ装置４８は、省略してもよく、必要に応じてバス８０に接続するようにしてもよい。
【００１６】
また、コンピュータ３２は、情報を格納するためのディスク４０，４１を備え、ディスク４０，４１はディスク制御部５２を介してバス８０に接続されている。なお、ディスク４０，４１は、周知の冗長化プログラムにより冗長化される。冗長化プログラムは、ディスク４０，４１の冗長化処理を実行するソフトウェアである。
【００１７】
冗長化プログラムの一例として、ディスクミラーリングと呼ばれる冗長化技術を用いたプログラムが知られている。ディスクミラーリングによる処理では、ディスク４０，４１の各々に同一の内容のデータを書き込み、データの読み出しは予め定めた主となる単一のディスクから行う。本実施形態では、主となる単一のディスクをディスク４０として説明する。ディスクミラーリングによる処理には、コンピュータ３２において、ディスク４０に障害が発生した場合、迅速にディスク４１を主となるように切り替える等の障害を復旧する処理が含まれる。
【００１８】
なお、以下の説明では、ディスク４０，４１がディスクミラーリングによる処理で冗長化されているので、ディスク４０，４１の各々を区別して扱う必要がないときは、ディスク４０と表記して説明する。
【００１９】
格納部５４には、アプリケーションプログラム６０、及び監視デーモンプログラム６２が記憶されている。アプリケーションプログラム６０、及び監視デーモンプログラム６２は、ＯＳ(Operating System)より上位のユーザ層で実行されるソフトウェアとして分類される。また、格納部５４には、ＯＳのカーネル層で実行されるソフトウェアとして分類されるドライバ６６が記憶されている。また、格納部５４には、Ｉ／Ｏ特性テーブル７６を含むデータベース７４が記憶される。
【００２０】
アプリケーションプログラム６０は、コンピュータ３２で実行される各種のプログラムである。また、監視デーモンプログラム６２は、コンピュータ３２の稼働中に、Ｉ／Ｏ負荷を監視し、コンピュータ３２で実行される業務処理に応じてＩ／Ｏタイムアウト時間を変更するプログラムである。
【００２１】
本実施形態では、コンピュータ３２で実行される業務処理の応答遅延を抑制するために、監視デーモンプログラム６２、及びドライバ６６が実行される。ＣＰＵ４２は、監視デーモンプログラム６２を格納部５４から読み出してメモリ４４に展開し、実行する。また、ＣＰＵ４２は、ドライバ６６を格納部５４から読み出してメモリ４４に展開し、実行する。
【００２２】
ドライバ６６は、Ｉ／Ｏ監視ドライバ６８、Ｉ／Ｏ中断ドライバ７０、及びディスクドライバ７２を含んでいる。Ｉ／Ｏ監視ドライバ６８及びＩ／Ｏ中断ドライバ７０は、ユーザ層に近い上位ドライバに分類され、ディスクドライバ７２は、ハードウェア層に近い下位ドライバに分類される。
【００２３】
Ｉ／Ｏ監視ドライバ６８は、アプリケーションプログラム６０等からのＩ／Ｏ要求を受け取り、下位ドライバへ送出してから下位ドライバからＩ／Ｏ応答が戻るまでの時間を監視する。なお、Ｉ／Ｏ監視ドライバ６８がＩ／Ｏ要求を下位ドライバへ送出してから下位ドライバからＩ／Ｏ応答が戻るまでの時間を、Ｉ／Ｏ応答時間とする。Ｉ／Ｏ監視ドライバ６８は、下位ドライバからのＩ／Ｏ応答をアプリケーションプログラム６０等に返す。一方、Ｉ／Ｏ監視ドライバ６８は、下位ドライバのＩ／Ｏ応答時間が予め設定されたＩ／Ｏタイムアウト時間を超えると、Ｉ／Ｏ中断ドライバ７０にＩ／Ｏキャンセルの要求を送る。
【００２４】
また、Ｉ／Ｏ監視ドライバ６８は、Ｉ／Ｏ負荷情報を記録する。Ｉ／Ｏ負荷情報は、所定時間(t)内の平均Ｉ／Ｏ応答時間(rt)を示す情報を含む。また、Ｉ／Ｏ負荷情報は、所定時間(t)内の平均Ｉ／Ｏ応答時間(rt)や、所定時間(t)当たりのＩ／Ｏ量(iosize)を示す情報を含む。また、Ｉ／Ｏ負荷情報は、所定時間(t)内の読み書き(read,write)についてのＩ／Ｏ数(iops)及び比率(rdperc)を示す情報を含む。また、Ｉ／Ｏ監視ドライバ６８は、Ｉ／Ｏ負荷情報の問合せがある場合、記録しているＩ／Ｏ負荷情報を返信する。また、Ｉ／Ｏ監視ドライバ６８は、Ｉ／Ｏタイムアウト時間の変更通知を受けると、現在設定されているＩ／Ｏタイムアウト時間を更新する。
【００２５】
Ｉ／Ｏ中断ドライバ７０は、Ｉ／Ｏ監視ドライバ６８からＩ／Ｏキャンセル要求を受けると、下位ドライバにキャンセル要求を送出する。
【００２６】
ディスクドライバ７２は、ディスク４０に対して、データの入出力を実行する。すなわち、ディスクドライバ７２は、ディスク４０に対するデータの入出力が要求されると、ディスク４０に対してデータの入出力を処理する。
【００２７】
コンピュータ３２の格納部５４に記憶されるデータベース７４は、Ｉ／Ｏ特性テーブル７６を含んでいる。
【００２８】
ところで、Ｉ／Ｏ負荷は、コンピュータ３２で稼働するアプリケーションプログラム６０における処理で生じるＩ／Ｏ特性によって相違する。例えば、コンピュータ３２がストリーミングサーバとして稼働する場合には、ディスク４０に対してデータの入力に比べてデータの出力の頻度が多い。つまり、ディスク４０に対するデータの書き込み（write）より、ディスク４０からデータを読み取る（read）処理が多い。従って、コンピュータ３２に対してＩ／Ｏ負荷を規定するＩ／Ｏ負荷条件は、コンピュータ３２で稼働するアプリケーションプログラム６０の種類やコンピュータ３２を使用する業務処理の内容に則して設定することが好ましい。そこで、本実施形態では、Ｉ／Ｏ負荷条件を示す情報を、Ｉ／Ｏ特性テーブル７６として格納する。Ｉ／Ｏ特性テーブル７６は、コンピュータ３２で稼働するアプリケーションプログラム６０の種類及び機能等、並びにコンピュータ３２を使用する業務処理等に対するＩ／Ｏ特性を示す情報が登録されるテーブルである。
【００２９】
図２に、Ｉ／Ｏ特性テーブル７６の一例を示す。Ｉ／Ｏ特性テーブル７６は、「アプリケーション」の項目に、アプリケーションプログラム６０を識別するための名称を示す情報が登録される。図２では、項目「アプリケーション」の情報として、「ウェブ」、「メール」、「ビデオストリーミング」の情報が記憶されている一例を示す。「ウェブ」の情報は、コンピュータ３２がウェブサーバとして稼働する場合の情報の一例を示す。また、「メール」の情報は、コンピュータ３２がメールサーバとして稼働する場合の情報の一例を示す。また、「ビデオストリーミング」の情報は、コンピュータ３２がビデオストリーミングサーバとして稼働する場合の情報の一例を示す。
【００３０】
Ｉ／Ｏ特性テーブル７６は、ユーザにより予め登録される。例えば、アプリケーションプログラム６０、或いはコンピュータ３２を使用する業務処理等の、追加、変更または削除が生じたとき、Ｉ／Ｏ特性テーブル７６に対してＩ／Ｏ特性を示す情報が登録、変更または削除される。また、コンピュータ３２を使用して行う業務処理が複数ある場合には、複数の業務処理の各々に対応するＩ／Ｏ特性であるＩ／Ｏ負荷条件を示す情報が登録される。図２の例では、Ｉ／Ｏ負荷条件を示す情報を追加する場合、Ｉ／Ｏ特性テーブル７６に行が追加されて登録される。
【００３１】
なお、コンピュータ３２は開示の技術における情報処理装置の一例である。つまり、開示の技術の情報処理装置がコンピュータ３２で実現され、ＣＰＵ３２が監視デーモンプログラム６２及びドライバ６６を実行することで、コンピュータ３２は開示の技術の情報処理装置として動作される。
【００３２】
また、Ｉ／Ｏタイムアウト時間は、開示の技術の応答監視時間の一例である。また、監視デーモンプログラム６２及びドライバ６６は、開示の技術における情報処理プログラムの一例を含む。また、監視デーモンプログラム６２及びドライバ６６は、コンピュータ３２を情報処理装置として機能させるためのプログラムでもある。また、コンピュータ３２に処理を実行させるためのプログラムを記録した光ディスク等の記録媒体４９は開示の技術の記録媒体の一例である。また、格納部５４の実現例であるＨＤＤ等は、開示の技術の記録媒体の一例でもある。
【００３３】
また、データベース７４に含まれるＩ／Ｏ特性テーブル７６は、開示の技術におけるテーブルの一例である。また、コンピュータ３２の格納部５４に記憶されたデータベース７４は開示の技術のテーブルを記憶した記憶部に対応する。
【００３４】
また、ＣＰＵ４２は、Ｉ／Ｏ監視ドライバ６８を実行することで、開示の技術における監視部として動作する。すなわち、開示の技術の情報処理装置がコンピュータ３２で実現され、Ｉ／Ｏ監視ドライバ６８を実行することでコンピュータ３２は情報処理装置の監視部として動作される。また、ＣＰＵ４２は、Ｉ／Ｏ中断ドライバ７０を実行することで、開示の技術における中断部として動作する。すなわち、開示の技術の情報処理装置がコンピュータ３２で実現され、Ｉ／Ｏ中断ドライバ７０を実行することでコンピュータ３２は情報処理装置の中断部として動作される。
【００３５】
次に本実施形態の作用を説明する。本実施形態では、ディスクの応答遅延を抑制する一例として、コンピュータ３２におけるＩ／Ｏ要求に対する応答に関する処理について説明する。
【００３６】
本実施形態では、Ｉ／Ｏ要求に対する応答遅延に関する課題を解決する。第１の課題は、固定値として応答監視時間（Ｉ／Ｏタイムアウト時間）を定めた場合に、稼働中のコンピュータ３２において変動するＩ／Ｏ負荷の変化に対応することができないことである。すなわち、Ｉ／Ｏタイムアウト時間を固定値とすると、稼働中のコンピュータ３２におけるＩ／Ｏ負荷の状態変化に迅速に対応することができない。従って、稼働中のコンピュータ３２に対して、Ｉ／Ｏタイムアウト時間が長すぎたり短かすぎるように、ばらつく場合がある。例えば、設定されたＩ／Ｏタイムアウト時間がＩ／Ｏ負荷の状態に対して長い場合、ディスクに不具合が発生しても、不具合が生じたディスクの特定に時間を要するため、システムにスローダウンが発生する場合がある。
【００３７】
第２の課題は、応答監視時間は、コンピュータ３２を扱うユーザが個別に設定することが必要であるため、ユーザ負担が大きいことである。すなわち、ユーザによるＩ／Ｏタイムアウト時間の設定では、ユーザがシステム構成を把握しつつ設定しなければならないため、ユーザの負担が増加する。なお、Ｉ／Ｏタイムアウト時間は、Ｉ／Ｏを処理するドライバが設定処理することが好ましいが、ドライバには複雑な処理を実装することが困難であるという課題も付随する。
【００３８】
上記第１の課題及び第２の課題を解決するために、本実施形態では、システムのＩ／Ｏ負荷を定期的に監視し、Ｉ／Ｏ負荷の状態に応じてＩ／Ｏタイムアウト時間を変更する。すなわち、稼働中のコンピュータ３２におけるＩ／Ｏ負荷の変化に対応するために、Ｉ／Ｏ負荷を監視する。そして、Ｉ／Ｏ負荷の監視結果からＩ／Ｏタイムアウト時間を求めて、稼働中のコンピュータ３２におけるＩ／Ｏ負荷に応じたＩ／Ｏタイムアウト時間を設定する。また、Ｉ／Ｏ負荷の監視処理は、ユーザ層で実行されるプロセスで実現する。従って、Ｉ／Ｏ負荷の監視処理を実行するときにはドライバの負担にならず、Ｉ／Ｏ性能に影響を与えない。また、Ｉ／Ｏタイムアウト時間を自動的に設定することにより、ユーザの負担が抑制される。
【００３９】
まず、コンピュータ３２で実現されるディスクの応答遅延を抑制する処理は、最初に実行する初期段階の応答遅延抑制処理と、初期段階の後に実行する運用段階の応答遅延抑制処理とに分類できる。初期段階の応答遅延抑制処理では、Ｉ／Ｏ負荷条件に応じたＩ／Ｏ負荷をコンピュータ３２に与えたときのＩ／Ｏ応答時間に基づき、Ｉ／Ｏタイムアウト時間を求め、データとして保存する。運用段階の応答遅延抑制処理では、コンピュータ３２の稼働中に変化する現在のＩ／Ｏ負荷を検出し、Ｉ／Ｏ負荷に応じたＩ／Ｏタイムアウト時間を求め、データを更新する。初期段階の応答遅延抑制処理、及び運用段階の応答遅延抑制処理について、図３を参照して説明する。
【００４０】
図３に、コンピュータ３２で実行される各種プログラムを機能的に捉えたブロック図の一例を示す。図３は、コンピュータ３２で実行される各種プログラムが実行される層について階層構造で示す一例である。図３は、階層構造として、ユーザ層９０，カーネル層９２、及びハードウェア層９４に分類した一例である。
【００４１】
ドライバ６６は、カーネル層９２に含まれている。ディスクドライバ７２は、カーネル層９２のうちのハードウェア層９４に近い下位ドライバ９２Ｄに分類される。Ｉ／Ｏ監視ドライバ６８及びＩ／Ｏ中断ドライバ７０は、カーネル層９２のうちのユーザ層に近い上位ドライバ９２Ｕに分類される。Ｉ／Ｏ監視ドライバ６８及びＩ／Ｏ中断ドライバ７０を含む上位ドライバ９２Ｕ内のドライバは、Ｉ／Ｏ処理に関係するドライバとして、Ｉ／Ｏ処理ドライバ６７と見なすことができる。なお、図３では、Ｉ／Ｏ監視ドライバ６８にＩ／Ｏ監視スレッド６８Ｓ及びＩ／Ｏ処理スレッド６８Ｔを含む一例を示す。また、図３では、Ｉ／Ｏ中断ドライバ７０にＩ／Ｏ中断スレッド７０Ｓを含む一例を示す。また、図３では、応答遅延抑制処理に含まれる処理にＰａ〜Ｐｊの符号を付し、処理Ｐａ〜Ｐｊとして説明する。
【００４２】
初期段階の応答遅延抑制処理では、まず、ユーザによるＩ／Ｏ負荷条件の入力プロセス５６において、Ｉ／Ｏ負荷条件を示す情報が入力される。具体的には、ユーザは、入力装置４７の操作により、Ｉ／Ｏ負荷条件を示す情報を入力する。ＣＰＵ４２は、ユーザにより入力されたＩ／Ｏ負荷条件を示す情報の入力値を取得し、Ｉ／Ｏ特性テーブル７６に登録する。なお、ユーザは、入力装置４７の操作により、コンピュータ３２で稼働されるアプリケーションに応じたＩ／Ｏ負荷条件を示す情報を指定できる。本実施形態では、Ｉ／Ｏ特性テーブル７６に登録されているＩ／Ｏ負荷条件について応答遅延抑制処理を実行する。
【００４３】
処理Ｐａでは、監視デーモンプログラム６２は、ユーザにより入力されたＩ／Ｏ負荷条件を示す情報を取得する。Ｉ／Ｏ負荷条件は、稼働中のコンピュータ３２におけるＩ／Ｏ負荷の比率(readとwriteの比率)、Ｉ／Ｏサイズの情報を示すものである。監視デーモンプログラム６２は、Ｉ／Ｏ負荷条件を示す情報を取得すると、Ｉ／Ｏ負荷パターンを生成する。Ｉ／Ｏ負荷パターンの一例は、コンピュータ３２に与えるＩ／Ｏ負荷の値、Ｉ／Ｏ負荷を与える時間、及びＩ／Ｏ負荷を与える形式を示す各情報の組み合わせである。
【００４４】
具体的なＩ／Ｏ負荷パターンの一例には、Ｉ／Ｏサイズ（ＫＢ）、read比率（％）、負荷をかける時間（秒）、Ｉ／Ｏ種別の各情報を含む。Ｉ／Ｏ種別を示す情報には、シーケンシャル（seq）、またはランダム（rnd）を示す情報がある。なお、Ｉ／Ｏサイズは、Ｉ／Ｏ負荷条件で示す情報の値に対して０．５倍〜５０倍の値とする。また、read比率は、Ｉ／Ｏ負荷条件で示す情報の値に対して０．５倍〜２倍の値とする。また、Ｉ／Ｏ負荷を与える時間は１分〜５時間とする。
【００４５】
次に、処理Ｐｂでは、監視デーモンプログラム６２は、Ｉ／Ｏ負荷パターンに応じたＩ／Ｏ負荷をコンピュータ３２に与えて、Ｉ／Ｏ応答時間を取得する。すなわち、監視デーモンプログラム６２は、Ｉ／Ｏ負荷パターンを示す情報及び外部コマンドを用いて、Ｉ／Ｏ負荷パターンに応じたＩ／Ｏ負荷を、コンピュータ３２に与える指示を実行する。外部コマンドの一例には、「ｉｏｔｅｓｔ」がある。
【００４６】
次に、処理Ｐｃでは、コンピュータ３２は、Ｉ／Ｏ負荷パターンを示す情報を用いた外部コマンドを実行することで、Ｉ／Ｏ処理を要求する。すなわち、コンピュータ３２は、監視デーモンプログラム６２によるＩ／Ｏ負荷パターンを示す情報及び外部コマンドによる命令を受け取り、コマンド実行プロセス５８において、Ｉ／Ｏ処理を要求する。コマンド実行プロセス５８では、Ｉ／Ｏ監視ドライバ６８に対して外部コマンドが出力される。監視デーモンプログラム６２は、Ｉ／Ｏ監視ドライバ６８に出力された外部コマンドに対するＩ／Ｏ応答時間を、Ｉ／Ｏ監視ドライバ６８から取得する。なお、Ｉ／Ｏ監視ドライバ６８では、Ｉ／Ｏ処理スレッド６８Ｔが、下位ドライバ９２Ｄに含まれるディスクドライバ７２に、Ｉ／Ｏ要求を送り、Ｉ／Ｏ監視スレッド６８Ｓに通知する。Ｉ／Ｏ監視スレッド６８Ｓは、ディスクドライバ７２からの応答を監視し、Ｉ／Ｏ要求から応答の時間を監視デーモンプログラム６２へ送る。監視デーモンプログラム６２は、受け取ったＩ／Ｏ要求から応答までの時間を、Ｉ／Ｏ応答時間として取得する。
【００４７】
監視デーモンプログラム６２は、Ｉ／Ｏ応答時間から、初期段階のＩ／Ｏタイムアウト時間を求める。Ｉ／Ｏタイムアウト時間とＩ／Ｏ負荷情報は、コンピュータ３２の稼働中に使用するので、データとしてコンピュータ３２上に保存する。
【００４８】
運用段階の応答遅延抑制処理では、初期段階の応答遅延抑制処理で求めたＩ／Ｏタイムアウト時間を、コンピュータ３２におけるＩ／Ｏタイムアウト時間に設定する。そして、コンピュータ３２におけるＩ／Ｏ負荷の変化に応じてＩ／Ｏタイムアウト時間のデータを更新する。
【００４９】
まず、運用段階では、アプリケーションプログラム６０は、Ｉ／Ｏ処理ドライバ６７及びディスクドライバ７２を介してディスク４０に対してデータを読み書きする。処理Ｐｄでは、アプリケーションプログラム６０よりＩ／Ｏ処理ドライバ６７にＩ／Ｏ要求が出力される。つまり、アプリケーションプログラム６０でデータを使用するために、Ｉ／Ｏ処理ドライバ６７に含まれるＩ／Ｏ監視ドライバ６８のＩ／Ｏ処理スレッド６８ＴにＩ／Ｏ要求を示す情報が出力される。
【００５０】
Ｉ／Ｏ処理スレッド６８Ｔは、処理Ｐｅにおいて、ディスクドライバ７２を介してディスク４０に対するＩ／Ｏ要求を示す情報を出力する。また、Ｉ／Ｏ処理スレッド６８Ｔは、ディスクドライバ７２を介してディスク４０にＩ／Ｏ要求を出力した後に、処理Ｐｆにおいて、Ｉ／Ｏ監視スレッド６８Ｓに通知する。Ｉ／Ｏ監視スレッド６８Ｓは、処理Ｐｊにおいて、Ｉ／Ｏ処理スレッド６８Ｔからの通知を受け取る（処理Ｐｆ）と、ディスクドライバ７２を介してディスク４０から応答が送られるまで、Ｉ／Ｏを監視する。
【００５１】
Ｉ／Ｏ監視スレッド６８Ｓは、Ｉ／Ｏタイムアウト時間を経過しても、ディスクドライバ７２を介してディスク４０よりの応答がないとき、Ｉ／Ｏタイムアウトが発生したと判断する。Ｉ／Ｏ監視スレッド６８Ｓは、Ｉ／Ｏタイムアウトが発生したと判断すると、処理Ｐｇにおいて、Ｉ／Ｏ中断スレッド７０ＳにＩ／Ｏキャンセル要求を示す情報を出力する。Ｉ／Ｏ監視スレッド６８Ｓは、処理Ｐｈにおいて、監視デーモンプログラム６２からＩ／Ｏ負荷情報の出力要求があると、Ｉ／Ｏ負荷情報を監視デーモンプログラム６２に出力する。なお、Ｉ／Ｏ監視スレッド６８Ｓは、監視デーモンプログラム６２から、Ｉ／Ｏタイムアウト時間の通知を受けると、Ｉ／Ｏタイムアウト時間を更新する。Ｉ／Ｏ中断スレッド７０Ｓは、処理Ｐｉにおいて、Ｉ／Ｏ監視スレッド６８ＳよりＩ／Ｏキャンセル要求を受け取ると、ディスクドライバ７２にディスク４０に対するＩ／Ｏをキャンセルする要求を示す情報を出力する。
【００５２】
監視デーモンプログラム６２は、コンピュータ３２のＩ／Ｏ負荷とＩ／Ｏ応答時間を一定時間間隔で取得する。また、監視デーモンプログラム６２は、Ｉ／Ｏ負荷とＩ／Ｏ応答時間からＩ／Ｏタイムアウト時間を求める。
【００５３】
次に、コンピュータ３２の作動をさらに説明する。
【００５４】
図４に、コンピュータ３２で実行されるユーザ層９０における監視デーモンプログラム６２の初期段階の処理の流れを示す。図４に示す処理ルーチンは、初期段階の応答遅延抑制処理に対応して実行される。
【００５５】
コンピュータ３２において、ＣＰＵ４２は、ステップ１００において、ユーザにより入力されたＩ／Ｏ負荷条件を示す情報を取得する。詳細には、ステップ１００では、ＣＰＵ４２は、ユーザにより入力されたＩ／Ｏ負荷条件を示す情報の入力値を取得し、Ｉ／Ｏ特性テーブル７６に登録する。次に、ＣＰＵ４２は、ステップ１０２において、取得したＩ／Ｏ負荷条件に基づいて、Ｉ／Ｏ負荷パターンを生成する。次に、ＣＰＵ４２は、ステップ１０４において、Ｉ／Ｏ負荷パターンを示す情報及び「ｉｏｔｅｓｔ」等の外部コマンドを用いて、Ｉ／Ｏ負荷パターンに応じたＩ／Ｏ負荷を、コンピュータ３２に与える処理を実行する。すなわち、ＣＰＵ４２が外部コマンドを実行することにより、Ｉ／Ｏ負荷パターンを示す情報がＩ／Ｏ監視ドライバ６８に対して出力される。
【００５６】
次に、ＣＰＵ４２は、ステップ１０６において、Ｉ／Ｏ監視ドライバ６８に出力された外部コマンドに対するＩ／Ｏ負荷情報を、Ｉ／Ｏ監視ドライバ６８から取得する。ステップ１０６では、所定時間毎にＩ／Ｏ負荷情報が取得される。Ｉ／Ｏ負荷情報を取得するための所定時間は、変更可能になっている。なお、取得されるＩ／Ｏ負荷情報は、Ｉ／Ｏ応答時間に相関関係を示す情報であり、Ｉ／Ｏ応答時間、Ｉ／Ｏ数、Ｉ／Ｏ数の比率、及びＩ／Ｏ量を用いる。Ｉ／Ｏ応答時間の一例には、所定時間（ｔ）内の最大Ｉ／Ｏ応答時間または、所定時間（ｔ）の平均Ｉ／Ｏ応答時間がある。また、Ｉ／Ｏ数の一例には、所定時間（ｔ）内のＩ／Ｏ数がある。また、Ｉ／Ｏ数の比率の一例には、所定時間（ｔ）内のread Ｉ／Ｏ数の比率(%)がある。また、Ｉ／Ｏ量の一例には、所定時間（ｔ）内のＩ／Ｏ量がある。
【００５７】
次に、ＣＰＵ４２は、ステップ１０８において、Ｉ／Ｏ応答時間に基づいて、Ｉ／Ｏタイムアウト時間を求める。Ｉ／Ｏ負荷情報とＩ／Ｏタイムアウト時間との関係の一例を次の（１）式に示す。（１）式は、Ｉ／Ｏ応答時間の一例として、所定時間（ｔ）内の最大Ｉ／Ｏ応答時間を採用した場合を示している。
【数１】
0006011639.tif 000002
・・・(1)
但し、ＲＴ        ：Ｉ／Ｏタイムアウト時間 (秒)
ｒｔ        ：Ｉ／Ｏ応答時間(秒)
ｍａｘ（  ）：最大Ｉ／Ｏ応答時間(秒)
ｉｏｐｓ    ：所定時間（ｔ）内のＩ／Ｏ量（（２）式参照）
ｉｏｓｉｚｅ：所定時間（ｔ）内のＩ／Ｏ量（ＫＢ）
ｒｄｐｅｒｃ：所定時間（ｔ）内のread Ｉ／Ｏ数の比率(％)（（３）式参照）
Ｋ          ：Ｉ／Ｏタイムアウト係数（１≦Ｋ≦２）
ｉ          ：コンピュータに付与されている負荷を示す状態
ｊ          ：特定のＩ／Ｏ負荷の状態で測定した回数
【数２】
0006011639.tif 000003
・・・(2)
【数３】
0006011639.tif 000004
・・・(3)
【００５８】
（１）式は、Ｉ／Ｏタイムアウト時間（ＲＴ）が、特定のＩ／Ｏ負荷の状態における最大のＩ／Ｏ応答時間(rt)にＩ／Ｏタイムアウト係数を乗算することにより得られることを示している。
【００５９】
次に、ＣＰＵ４２は、ステップ１１０において、取得したＩ／Ｏ負荷情報の一部の情報（ｉｏｐｓ、ｉｏｓｉｚｅ、ｒｄｐｅｒｃ）及びＩ／Ｏタイムアウト時間（ＲＴ）のデータを、次に示す形式でメモリ４４に保存する。
【数４】
0006011639.tif 000005
但し、
0006011639.tif 000006
【００６０】
ＣＰＵ４２は、Ｉ／Ｏ負荷情報及びＩ／Ｏタイムアウト時間のデータ保存が終了すると、ステップ１１２の処理へ移行する。ＣＰＵ４２は、ステップ１１２において、前述のステップ１０２で生成したＩ／Ｏ負荷パターンの全てについてステップ１０４〜ステップ１１０の処理が終了したか否かを判断する。ＣＰＵ４２は、Ｉ／Ｏ負荷パターンによる前述の処理が未完であるとき、ステップ１１２で否定判断し、ステップ１０４へ戻る。一方、Ｉ／Ｏ負荷パターンの全てについて前述の処理が終了したときは、ＣＰＵ４２は、ステップ１１２で肯定判断し、本処理ルーチンを終了する。
【００６１】
次に、監視デーモンプログラム６２の初期段階の処理において、タイムアウト時間を求める処理をさらに説明する。
【００６２】
図５に、監視デーモンプログラム６２の初期段階の処理において、タイムアウト時間を求める処理の流れを示す。図５に示す処理ルーチンは、図４に示すステップ１０６及びステップ１０８の処理に対応する。
【００６３】
まず、ＣＰＵ４２は、ステップ１２０において、図４のステップ１０６と同様に、Ｉ／Ｏ監視ドライバ６８に出力された外部コマンドに対するＩ／Ｏ負荷情報を、Ｉ／Ｏ監視ドライバ６８から取得する。なお、取得されるＩ／Ｏ負荷情報は、Ｉ／Ｏ応答時間、Ｉ／Ｏ数、Ｉ／Ｏ数の比率、及びＩ／Ｏ量を含む。
【００６４】
次に、ＣＰＵ４２は、ステップ１２２において、Ｉ／Ｏ負荷情報に対するＩ／Ｏタイムアウト時間を示す情報が、メモリ４４に保存されているか否かを判断する。Ｉ／Ｏ負荷情報に対するＩ／Ｏタイムアウト時間（ＲＴ）を示す情報が、メモリ４４に保存されていないとき、ＣＰＵ４２は、ステップ１２２で否定判断し、ステップ１２６において、Ｉ／Ｏタイムアウト時間（ＲＴ＝Ｋ・ｒｔ）を求める。つまり、ステップ１２６では、ステップ１２０で取得したＩ／Ｏ応答時間（ｒｔ）にＩ／Ｏタイムアウト係数（Ｋ）を乗算した値を、Ｉ／Ｏタイムアウト時間（ＲＴ）として求める。
【００６５】
一方、Ｉ／Ｏ負荷情報に対するＩ／Ｏタイムアウト時間を示す情報が、メモリ４４に保存されているとき、ＣＰＵ４２は、ステップ１２２で肯定判断し、ステップ１２４へ進む。ステップ１２４では、メモリ４４に保存されているＩ／Ｏタイムアウト時間を示す値と、ステップ１２０で取得したＩ／Ｏ応答時間にＩ／Ｏタイムアウト係数Ｋを乗算した値とを用いて、「ＲＴ＜Ｋ・ｒｔ」であるか否かを判断する。「ＲＴ＜Ｋ・ｒｔ」のとき、ＣＰＵ４２は、ステップ１２４で肯定判断し、ステップ１２６でＩ／Ｏタイムアウト時間を求めた後、ステップ１２８へ進む。「ＲＴ≧Ｋ・ｒｔ」のとき、ＣＰＵ４２は、ステップ１２４で否定判断し、ステップ１２０へ戻る。
【００６６】
次に、ＣＰＵ４２は、ステップ１２８において、Ｉ／Ｏタイムアウト時間の演算が終了したか否かを判断する。ステップ１２８で否定判断されると、ＣＰＵ４２は、ステップ１２０へ戻り、処理を繰り返す。一方、ステップ１２８で肯定判断されると、ＣＰＵ４２は、本処理ルーチンを終了する。
【００６７】
図６に、Ｉ／Ｏ負荷とＩ／Ｏ応答時間の関係の一例を示す。図６では、Ｉ／Ｏ負荷パターンによる負荷が付与されている間に、所定時間毎に取得されたＩ／Ｏ負荷情報がエリアＡｒの範囲内に打点されている。また、図６では、打点Ｄｐに対応する。Ｉ／Ｏ監視ドライバ６８から所定時間毎に取得したＩ／Ｏ負荷情報のうちの最大Ｉ／Ｏ応答時間を用いて、（１）式を適用して、Ｉ／Ｏタイムアウト時間（ＲＴ）が定まる一例を示す。
【００６８】
次に、監視デーモンプログラム６２の運用段階における作動を説明する。
【００６９】
図７に、コンピュータ３２で実行されるユーザ層９０における監視デーモンプログラム６２の運用段階の処理の流れを示す。図７に示す処理ルーチンは、運用段階の応答遅延抑制処理に対応して実行される。
【００７０】
ＣＰＵ４２は、ステップ１３０において、電源遮断等の監視デーモンプログラム６２の停止要求がなされたか否かを判断する。停止要求がなされたときには、ＣＰＵ４２は、ステップ１３０で肯定判断し、本処理ルーチンを終了する。一方、ステップ１３０で否定判断のときには、ＣＰＵ４２は、ステップ１３２へ処理を移行する。ステップ１３２の処理は、図４に示すステップ１０６の処理と同様に、Ｉ／Ｏ監視ドライバ６８に出力された外部コマンドに対するＩ／Ｏ負荷情報を、Ｉ／Ｏ監視ドライバ６８から取得する。次に、ＣＰＵ４２は、ステップ１３４において、図４に示すステップ１０８の処理と同様に、Ｉ／Ｏ応答時間に基づいて、Ｉ／Ｏタイムアウト時間を求める。
【００７１】
運用段階では、Ｉ／Ｏ負荷におけるＩ／Ｏ応答時間を測定しながら、Ｉ／Ｏタイムアウト時間を補正する。つまり、取得したＩ／Ｏ応答時間が初期段階で求めたＩ／Ｏタイムアウト時間より長いとき、取得したＩ／Ｏ応答時間を基にして求めたＩ／Ｏタイムアウト時間を設定する。一方、短いときは、Ｉ／Ｏタイムアウト時間を維持する。
【００７２】
具体的には、ＣＰＵ４２は、ステップ１３６において、現在設定されているＩ／Ｏタイムアウト時間とステップ１３４で求めたＩ／Ｏタイムアウト時間とを比較し、Ｉ／Ｏタイムアウト時間の変更が必要か否かを判断する。現在設定されているＩ／Ｏタイムアウト時間とステップ１３４で求めたＩ／Ｏタイムアウト時間とが一致または予め定めた閾値の時間内であるときは、Ｉ／Ｏタイムアウト時間を維持できるので、ステップ１３６で否定判断され、ステップ１４０へ進む。次に、ＣＰＵ４２は、ステップ１４０において、図４に示すステップ１１０の処理と同様に、取得したＩ／Ｏ負荷情報のうちの一部の情報（ｉｏｐｓ、ｉｏｓｉｚｅ、ｒｄｐｅｒｃ）及びＩ／Ｏタイムアウト時間（ＲＴ）のデータを、保存し、ステップ１３０へ戻る。
【００７３】
一方、現在設定されているＩ／Ｏタイムアウト時間とステップ１３４で求めたＩ／Ｏタイムアウト時間とが相違または閾値の時間外であるときは、Ｉ／Ｏタイムアウト時間の変更を要するので、ステップ１３６で肯定判断され、ステップ１３８へ進む。ＣＰＵ４２は、ステップ１３８において、ステップ１３４で求めたＩ／Ｏタイムアウト時間、すなわち新規のＩ／Ｏタイムアウト時間をＩ／Ｏ監視ドライバ６８へ通知し、ステップ１４０へ進む。新規のＩ／Ｏタイムアウト時間の通知により、Ｉ／Ｏ監視ドライバ６８では、後述するようにＩ／Ｏタイムアウト時間を更新する。
【００７４】
なお、ステップ１３６における判断処理では、現在設定されているＩ／Ｏタイムアウト時間に対するステップ１３４で求めたＩ／Ｏタイムアウト時間の大小による判断処理を含めてもよい。例えば、Ｉ／Ｏタイムアウト時間を短く設定する要求がないとき、ステップ１３６における判断処理では、ステップ１３４で求めたＩ／Ｏタイムアウト時間が現在設定されているＩ／Ｏタイムアウト時間を超えるときに肯定判断されるようにしてもよい。また、Ｉ／Ｏタイムアウト時間を長くしたり短くしたりする時間範囲を予め定めてもよい。
【００７５】
ところで、監視デーモンプログラム６２の運用段階の処理において、設定されたタイムアウト時間を取得できない場合には、タイムアウト時間の設定処理が不安定になる。そこで、設定されたタイムアウト時間を取得できない場合にタイムアウト時間を求める処理をさらに説明する。
【００７６】
図８に、監視デーモンプログラム６２の運用段階の処理において、タイムアウト時間を求める処理の流れを示す。図８に示す処理ルーチンは、監視デーモンプログラム６２の運用段階の処理において、設定されたタイムアウト時間を取得できない場合に実行される。
【００７７】
まず、ＣＰＵ４２は、ステップ１４２において、図７のステップ１３２と同様に、Ｉ／Ｏ監視ドライバ６８よりＩ／Ｏ負荷情報を取得する。なお、取得されるＩ／Ｏ負荷情報には、Ｉ／Ｏ応答時間が含まれている。
【００７８】
なお、図８の説明では、一部のＩ／Ｏ負荷情報を、
ＩＯＬ（ｉｏｐｓ、ｉｏｓｉｚｅ、ｒｄｐｅｒｃ）
と表記して説明する。また、情報ＩＯＬには、初期段階を示す変数ｉ、運用段階を示す変数ｊ、初期段階の最大値を示す変数ｎ、初期段階の最小値を示す変数ｍを添え字として付与して説明する場合がある。すなわち、初期段階のＩ／Ｏ負荷情報のうちの一部の情報ＩＯＬは、
ＩＯＬｉ（ｉｏｐｓｉ，ｉｏｓｉｚｅｉ，ｒｄｐｅｒｃｉ）
であり、ＩＯＬｉと略記する場合がある。
【００７９】
次に、ＣＰＵ４２は、ステップ１４４において、初期段階の情報ＩＯＬと運用段階の情報ＩＯＬが一致する（ＩＯＬｊ＝ＩＯＬｉ）か否かを判断し、否定判断のときにはステップ１４８へ進む。ステップ１４４で肯定判断されると、ＣＰＵ４２はステップ１４６において、初期段階の情報ＩＯＬによるＩ／Ｏタイムアウト時間ＲＴを運用段階の情報ＩＯＬによるＩ／Ｏタイムアウト時間ＲＴとし、ステップ１６０へ進む。つまり、ＲＴ（ＩＯＬｊ）＝ＲＴ（ＩＯＬｉ）となる。
【００８０】
ステップ１４８では、ＣＰＵ４２は、運用段階の情報ＩＯＬが初期段階の情報ＩＯＬ内にある（ＩＯＬｉ−１＜ＩＯＬｊ＜ＩＯＬｉ）か否かを判断し、否定判断のときにはステップ１５２へ進む。ステップ１４８で肯定判断の場合には、ＣＰＵ４２はステップ１５０において、次の（４）式により求めたＩ／Ｏタイムアウト時間ＲＴを運用段階の情報ＩＯＬによるＩ／Ｏタイムアウト時間ＲＴとし、ステップ１６０へ進む。
ＲＴ（ＩＯＬｊ）＝｛ＲＴ（ＩＯＬｉ）＋ＲＴ（ＩＯＬｉ−１）｝／２  ・・・（４）
【００８１】
ステップ１５２では、ＣＰＵ４２は、運用段階の情報ＩＯＬが初期段階の最大の情報ＩＯＬを超える（ＩＯＬｊ＞ＩＯＬｎ）か否かを判断し、否定判断のときにはステップ１５６へ進む。ステップ１５２で肯定判断の場合には、ＣＰＵ４２はステップ１５４において、次の（５）式により求めたＩ／Ｏタイムアウト時間ＲＴを運用段階の情報ＩＯＬによるＩ／Ｏタイムアウト時間ＲＴとし、ステップ１６０へ進む。
ＲＴ（ＩＯＬｊ）＝２ＲＴ（ＩＯＬｎ）−ＲＴ（ＩＯＬｎ−１）        ・・・（５）
【００８２】
ステップ１５６では、ＣＰＵ４２は、運用段階の情報ＩＯＬが初期段階の最小の情報ＩＯＬ未満（ＩＯＬｊ＜ＩＯＬｍ）か否かを判断し、否定判断のときにはステップ１６０へ進む。ステップ１５６で肯定判断の場合には、ＣＰＵ４２はステップ１５８において、次の（６）式により求めたＩ／Ｏタイムアウト時間ＲＴを運用段階の情報ＩＯＬによるＩ／Ｏタイムアウト時間ＲＴとし、ステップ１６０へ進む。
ＲＴ（ＩＯＬｊ）＝２ＲＴ（ＩＯＬｍ）−ＲＴ（ＩＯＬｍ＋１）        ・・・（６）
【００８３】
なお、ステップ１５６において否定判断されるときには、予め定めた値をＩ／Ｏタイムアウト時間ＲＴとして求めてもよい。
【００８４】
ステップ１６０では、ＣＰＵ４２は、前述の処理により求めたＩ／Ｏタイムアウト時間ＲＴを設定し、本ルーチンを終了する。
【００８５】
次に、Ｉ／Ｏ監視ドライバ６８の初期段階の処理をさらに説明する。
【００８６】
図９に、Ｉ／Ｏ監視ドライバ６８の初期段階の処理の流れを示す。図９に示す処理ルーチンは、初期段階の応答遅延抑制処理に対応して実行される。
【００８７】
ＣＰＵ４２は、ステップ２００において、電源遮断等のＩ／Ｏ監視ドライバ６８の停止要求がなされたか否かを判断する。停止要求がなされたときには、ＣＰＵ４２は、ステップ２００で肯定判断し、本処理ルーチンを終了する。一方、ステップ２００で否定判断のときには、ＣＰＵ４２は、ステップ２０２へ処理を移行する。ステップ２０２の処理は、アプリケーションプログラム６０からＩ／Ｏ要求がなされることを待機する処理である。アプリケーションプログラム６０からＩ／Ｏ要求がなされると、ＣＰＵ４２はステップ２０４へ進み、アプリケーションプログラム６０からのＩ／Ｏ要求を受け取る。次のステップ２０６では、ＣＰＵ４２は、Ｉ／Ｏ要求を下位ドライバ、すなわちディスクドライバ７２へ通知し、次のステップ２０８に進み、Ｉ／Ｏ監視を開始する。
【００８８】
Ｉ／Ｏ監視の開始後には、下位ドライバ、すなわちディスクドライバ７２より、Ｉ／Ｏ応答がなされると、ＣＰＵ４２は次のステップ２１０で受け取る。Ｉ／Ｏ監視ドライバ６８では、ディスクドライバ７２より、Ｉ／Ｏ応答がなされると、Ｉ／Ｏ要求をディスクドライバ７２へ通知してからＩ／Ｏ応答がなされるまでのＩ／Ｏ応答時間を含むＩ／Ｏ負荷情報を取得し、記録する。すなわち、ＣＰＵ４２は、次のステップ２１２において、Ｉ／Ｏ要求をディスクドライバ７２へ通知してからＩ／Ｏ応答がなされるまでのＩ／Ｏ応答時間を含むＩ／Ｏ負荷情報を記録する。次にＣＰＵ４２は、ステップ２１４において、Ｉ／Ｏ監視を終了し、Ｉ／Ｏ応答を示す情報をアプリケーションプログラム６０へ返信したのちに、ステップ２００の処理へ戻る。
【００８９】
ところで、応答遅延抑制処理のために、Ｉ／Ｏ監視ドライバ６８は、監視デーモンプログラム６２から所定時間毎にＩ／Ｏ負荷情報が要求される。そこで、次に、監視デーモンプログラム６２からＩ／Ｏ負荷情報が要求されるときのＩ／Ｏ監視ドライバ６８の処理を説明する。
【００９０】
図１０に、Ｉ／Ｏ監視ドライバ６８のＩ／Ｏ負荷情報が要求されるときの処理の流れを示す。図１０に示す処理ルーチンは、監視デーモンプログラム６２からＩ／Ｏ負荷情報の要求がなされたときに割り込み処理ルーチンとして実行される。
【００９１】
まず、監視デーモンプログラム６２からＩ／Ｏ監視ドライバ６８にＩ／Ｏ負荷情報の要求がなされると、図１０に示す処理ルーチンが実行され、ＣＰＵ４２は、ステップ２１６において、監視デーモンプログラム６２からのＩ／Ｏ負荷情報の要求を受け取る。次に、ＣＰＵ４２は、ステップ２１８において、メモリ４４に記録されているＩ／Ｏ負荷情報を監視デーモンプログラム６２へ通知し、本処理ルーチンを終了する。
【００９２】
次に、Ｉ／Ｏ監視ドライバ６８の運用段階の処理をさらに説明する。
【００９３】
図１１に、Ｉ／Ｏ監視ドライバ６８の運用段階の処理の流れを示す。図１１に示す処理ルーチンは、運用段階の応答遅延抑制処理に対応して実行される。なお、図１１に示す処理ルーチンは、図９に示す処理ルーチンと略同様の処理であるので、同一部分には同一符号を付して詳細な説明を省略する。図１１に示す運用段階の処理ルーチンと、図９に示す初期段階の処理ルーチンとの相違点は、初期段階の処理ルーチンにタイムアウト処理（ステップ２２０，２２２）を追加した処理ルーチンを運用段階の処理ルーチンとした点である。
【００９４】
ＣＰＵ４２は、Ｉ／Ｏ監視ドライバ６８の停止要求がなされるまで、アプリケーションプログラム６０からのＩ／Ｏ要求をディスクドライバ７２へ通知してから、Ｉ／Ｏ監視を開始する（ステップ２２０〜２０８）。
【００９５】
Ｉ／Ｏ監視を開始すると、ＣＰＵ４２は、ステップ２２０において、Ｉ／Ｏ監視タイムアウトが発生したか否かを判断する。すなわち、ディスクドライバ７２からＩ／Ｏ応答がなく、かつＩ／Ｏ要求をディスクドライバ７２へ通知してからの経過時間が、Ｉ／Ｏタイムアウト時間を超えたときに、ＣＰＵ４２はＩ／Ｏタイムアウトが発生したと判断する。Ｉ／Ｏタイムアウト時間内にディスクドライバ７２よりＩ／Ｏ応答がなされると、ＣＰＵ４２はステップ２２０で否定判断し、Ｉ／Ｏ負荷情報を記録して、Ｉ／Ｏ応答を示す情報をアプリケーションプログラム６０へ返信する（ステップ２１０〜２１４）。
【００９６】
一方、ディスクドライバ７２からＩ／Ｏ応答がなく、かつＩ／Ｏ要求をディスクドライバ７２へ通知してからの経過時間が、Ｉ／Ｏタイムアウト時間を超えたときに、ＣＰＵ４２は、ステップ２２０で肯定判断し、ステップ２２２へ処理を移行する。ステップ２２２では、ＣＰＵ４２は、Ｉ／Ｏ中断ドライバ７０へ、Ｉ／Ｏキャンセルを示す情報を出力する。すなわち、ステップ２２２の処理では、Ｉ／Ｏ監視ドライバ６８は、Ｉ／Ｏ中断ドライバ７０に対してＩ／Ｏキャンセルを要求する。詳細は後述するが、Ｉ／Ｏ中断ドライバ７０は、Ｉ／Ｏ監視ドライバ６８からＩ／Ｏキャンセルの要求を受け取ると、ディスクドライバ７２へ既になされているＩ／Ｏ要求を中止する要求を通知する。
【００９７】
ところで、応答遅延抑制処理のために、Ｉ／Ｏ監視ドライバ６８は、監視デーモンプログラム６２からＩ／Ｏタイムアウト時間の変更が要求される場合がある。そこで、次に、監視デーモンプログラム６２からＩ／Ｏタイムアウト時間の変更が要求されるときのＩ／Ｏ監視ドライバ６８の処理を説明する。
【００９８】
図１２に、Ｉ／Ｏ監視ドライバ６８のＩ／Ｏタイムアウト時間の変更が要求されるときの処理の流れを示す。図１２に示す処理ルーチンは、監視デーモンプログラム６２からＩ／Ｏタイムアウト時間の変更の要求がなされたときに割り込み処理ルーチンとして実行される。
【００９９】
まず、監視デーモンプログラム６２からＩ／Ｏ監視ドライバ６８にＩ／Ｏタイムアウト時間の変更の要求がなされると、図１０に示す処理ルーチンが実行される。まず、ＣＰＵ４２は、ステップ２３０において、監視デーモンプログラム６２からのＩ／Ｏタイムアウト時間の変更通知を受け取る。次に、ＣＰＵ４２は、ステップ２３２において、メモリ４４に記録されているＩ／Ｏタイムアウト時間を監視デーモンプログラム６２より通知されたＩ／Ｏタイムアウト時間に変更して、本処理ルーチンを終了する。
【０１００】
次に、Ｉ／Ｏ中断ドライバ７０の処理をさらに説明する。Ｉ／Ｏ中断ドライバ７０は、Ｉ／Ｏ監視ドライバ６８よりＩ／Ｏキャンセルが要求されると処理を実行する。
【０１０１】
図１３に、Ｉ／Ｏ中断ドライバ７０の処理の流れを示す。図１３に示す処理ルーチンは、Ｉ／Ｏ監視ドライバ６８からＩ／Ｏキャンセルの要求がなされると実行される。
【０１０２】
まず、ＣＰＵ４２は、ステップ３００において、Ｉ／Ｏ監視ドライバ６８からのＩ／Ｏキャンセルの要求を受け取る。次に、ＣＰＵ４２は、ステップ３０２において、ディスクドライバ７２へ既になされているＩ／Ｏ要求を中止する要求を通知して、本処理ルーチンを終了する。ディスクドライバ７２は、Ｉ／Ｏ中断ドライバ７０よりＩ／Ｏ要求を中止する要求を受け取ると、アプリケーションプログラム６０から既になされているＩ／Ｏ要求を削除することで、Ｉ／Ｏ要求を中止する処理を実行する。
【０１０３】
以上説明したように、本実施形態では、コンピュータ３２で実行される業務処理により生じるＩ／Ｏ負荷に応じてＩ／Ｏタイムアウト時間を変更できる。従って、コンピュータ３２で実行される業務処理に対して長すぎたり短すぎるＩ／Ｏタイムアウト時間が設定されることを抑制できる。業務処理に則したＩ／Ｏタイムアウト時間が設定されることにより、ディスクや記録装置に不具合が生じた場合であっても、業務処理を実行する上で、業務処理を遅延させることなく、不具合を検出できる。このように、本実施形態では、コンピュータを使用して業務処理を実行する情報処理システムにおける応答性能を向上することができる。
【０１０４】
また、本実施形態では、ディスクや記録装置に不具合を早期に検出できる。従って、不具合の対象となるディスクや記録装置を特定して、コンピュータや情報処理システムからディスクや記録装置を切り離すことができ、コンピュータや情報処理システムの処理に関するスローダウンを抑制できる。
【０１０５】
また、本実施形態では、業務処理により生じるＩ／Ｏ負荷に応じてＩ／Ｏタイムアウト時間を変更できるので、ユーザがシステム構成を把握しつつＩ／Ｏタイムアウト時間を設定する作業は軽減できる。従って、ユーザの負担は軽減する。
【０１０６】
なお、上記では情報処理装置をコンピュータ３２により実現する一例を説明した。しかし、これらの構成に限定されるものではなく、上記説明した要旨を逸脱しない範囲において、各種の改良及び変更を行っても良いのはもちろんである。
【０１０７】
また、上記ではプログラムが記憶部に予め記憶（インストール）されている態様を説明したが、これに限定されるものではない。例えば、開示の技術における情報処理プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【０１０８】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【図１】
0006011639.tif 000007
【図２】
0006011639.tif 000008
【図３】
0006011639.tif 000009
【図４】
0006011639.tif 000010
【図５】
0006011639.tif 000011
【図６】
0006011639.tif 000012
【図７】
0006011639.tif 000013
【図８】
0006011639.tif 000014
【図９】
0006011639.tif 000015
【図１０】
0006011639.tif 000016
【図１１】
0006011639.tif 000017
【図１２】
0006011639.tif 000018
【図１３】
0006011639.tif 000019