(57)【要約】【課題】タイムアウトを回避しつつ、スループットの改善を図ること。【解決手段】ネットワーク接続制御装置２は、制御部７を含む。制御部７は、コネクション要求を第１の記憶部５に格納し、コネクション要求の確立待ち時間を特定可能な確立待ち時間情報と、コネクション要求の確立後の処理負荷に関する負荷情報とを第２の記憶部６に格納し、コネクションを確立できる状態であり、かつ２以上のコネクション要求を第１の記憶部５に格納している状態であるとき、確立待ち時間情報と負荷情報とに基づいて処理負荷が大きなコネクション要求のタイムアウトリスクを評価し、タイムアウトリスクがあると評価した場合、処理負荷が大きなコネクション要求を優先的に処理してコネクションを確立し、タイムアウトリスクがないと評価した場合、処理負荷が小さなコネクション要求を優先的に処理してコネクションを確立する。【選択図】図１
2018005266.tif 000002
【特許請求の範囲】
【請求項１】
装置間のネットワークのコネクションの確立を行うことで通信を開始するネットワーク接続制御装置であって、コネクション要求を第１の記憶部に格納し、前記コネクション要求の確立待ち時間を特定可能な確立待ち時間情報と、前記コネクション要求の確立後の処理負荷に関する負荷情報とを第２の記憶部に格納し、
コネクションを確立できる状態であり、かつ２以上のコネクション要求を前記第１の記憶部に格納している状態であるとき、前記確立待ち時間情報と前記負荷情報とに基づいて処理負荷が大きなコネクション要求のタイムアウトリスクを評価し、
タイムアウトリスクがあると評価した場合、前記第１の記憶部に格納されたコネクション要求のうち、前記処理負荷が大きなコネクション要求を優先的に処理して前記コネクションを確立し、タイムアウトリスクがないと評価した場合、処理負荷が小さなコネクション要求を優先的に処理して前記コネクションを確立する、
制御部を含むネットワーク接続制御装置。
【請求項２】
前記制御部は、送信したコマンドに対する応答としてのコネクション要求を前記第１の記憶部に格納する、請求項１に記載のネットワーク接続制御装置。
【請求項３】
前記制御部は、コネクションを確立できる状態であり、かつ２以上のコネクション要求を前記第１の記憶部に格納している状態になる度に、前記処理負荷が大きなコネクション要求のタイムアウトリスクを評価する、請求項１または２に記載のネットワーク接続制御装置。
【請求項４】
前記処理負荷が大きなコネクション要求は、一旦確立したコネクションにおいて複数のコマンドを発行予定のコネクション要求である、請求項１乃至３の何れか１項に記載のネットワーク接続制御装置。
【請求項５】
前記制御部は、前記処理負荷が大きなコネクション要求の第１の優先度を算出し、前記処理負荷が小さなコネクション要求の第２の優先度を算出し、前記第１の優先度と前記第２の優先度とに基づいて前記処理負荷が大きなコネクション要求のタイムアウトリスクを評価する、請求項１乃至４の何れか１項に記載のネットワーク接続制御装置。
【請求項６】
前記制御部は、前記処理負荷が大きなコネクション要求の確立待ち時間が所定時間よりも短い場合と比較して前記処理負荷が大きなコネクション要求の確立待ち時間が前記所定時間よりも長い場合、前記第１の優先度が前記第２の優先度よりも高くなる重み付けをして前記第１の優先度と前記第２の優先度を算出する、請求項５に記載のネットワーク接続制御装置。
【請求項７】
前記第１の記憶部は、コネクション要求をキュー構造にして格納可能であって、
前記制御部は、前記処理負荷が大きなコネクション要求を第１のキューに格納し、前記処理負荷が小さなコネクション要求を第２のキューに格納する、請求項１乃至６の何れか１項に記載のネットワーク接続制御装置。
【請求項８】
前記制御部は、前記第１のキューに格納されているコネクション要求のうち確立待ち時間が最も長いコネクション要求と、前記第２のキューに格納されているコネクション要求のうち確立待ち時間が最も長いコネクション要求とを比較し、前記処理負荷が大きなコネクション要求のタイムアウトリスクを評価する、請求項７に記載のネットワーク接続制御装置。
【請求項９】
装置間のネットワークのコネクションの確立を行うことで通信を開始するコンピュータに、
コネクション要求を第１の記憶部に格納し、
前記コネクション要求の確立待ち時間を特定可能な確立待ち時間情報と、前記コネクション要求の確立後の処理負荷に関する負荷情報とを第２の記憶部に格納し、
コネクションを確立できる状態であり、かつ２以上のコネクション要求を前記第１の記憶部に格納している状態であるとき、前記確立待ち時間情報と前記負荷情報とに基づいて処理負荷が大きなコネクション要求のタイムアウトリスクを評価し、
タイムアウトリスクがあると評価した場合、前記第１の記憶部に格納されたコネクション要求のうち、前記処理負荷が大きなコネクション要求を優先的に処理して前記コネクションを確立し、タイムアウトリスクがないと評価した場合、処理負荷が小さなコネクション要求を優先的に処理して前記コネクションを確立する、
処理を実行させるネットワーク接続制御プログラム。
【請求項１０】
装置間のネットワークのコネクションの確立を行うことで通信を開始する情報処理システムであって、
伝送路と、
コネクション要求を送信する、第１のネットワーク接続制御装置と、
前記第１のネットワーク接続制御装置から前記伝送路を介して受信したコネクション要求を第１の記憶部に格納し、
前記コネクション要求の確立待ち時間を特定可能な確立待ち時間情報と、前記コネクション要求の確立後の処理負荷に関する負荷情報とを第２の記憶部に格納し、
コネクションを確立できる状態であり、かつ２以上のコネクション要求を前記第１の記憶部に格納している状態であるとき、前記確立待ち時間情報と前記負荷情報とに基づいて処理負荷が大きなコネクション要求のタイムアウトリスクを評価し、
タイムアウトリスクがあると評価した場合、前記第１の記憶部に格納されたコネクション要求のうち、前記処理負荷が大きなコネクション要求を優先的に処理して前記コネクションを確立し、タイムアウトリスクがないと評価した場合、処理負荷が小さなコネクション要求を優先的に処理して前記コネクションを確立する、
制御部を含む第２のネットワーク接続制御装置と、
を含む情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク接続制御装置、ネットワーク接続制御プログラムおよび情報処理システムに関する。
【背景技術】
【０００２】
通信装置間（例えば、コンピュータと周辺機器）のデータ転送方式としてコネクションを確立してデータ転送を行うもの（例えば、ファイバチャネル（ＦＣ：Fibre Channel））が知られている。このようなデータ転送方式は、１パスで同時に複数のコネクションを確立できるものがある。通信装置は、コネクションを確立した後に、受信したコマンドを一旦キューに格納してから順次コマンドを実行するものが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１５／１１１１４８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通信装置は、一方のコネクション要求に他方が応じることでコネクションを確立するが、他方がコネクション要求に応えられずにコネクションの確立が待たされる場合がある。このようなコネクションの確立待ちは、必ずしも両者の間で確立可能なコネクション数が同じであるとは限らないことにより、例えば通信装置の一方が上位層（アプリケーションなど）からの制約により確立可能なコネクション数を制限されている場合がある。コネクションの確立待ちは、Ｂｕｓｙ応答やコネクション要求の再送などによる通信負荷の増大や、コネクション要求のタイムアウトを惹起する。
【０００５】
１つの側面では、本発明は、タイムアウトを回避しつつ、スループットの改善を図ることができるネットワーク接続制御装置、ネットワーク接続制御プログラムおよび情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの態様では、装置間のネットワークのコネクションの確立を行うことで通信を開始するネットワーク接続制御装置が提供される。このネットワーク接続制御装置は、制御部を含む。制御部は、コネクション要求を第１の記憶部に格納し、コネクション要求の確立待ち時間を特定可能な確立待ち時間情報と、コネクション要求の確立後の処理負荷に関する負荷情報とを第２の記憶部に格納し、コネクションを確立できる状態であり、かつ２以上のコネクション要求を第１の記憶部に格納している状態であるとき、確立待ち時間情報と負荷情報とに基づいて処理負荷が大きなコネクション要求のタイムアウトリスクを評価し、タイムアウトリスクがあると評価した場合、第１の記憶部に格納されたコネクション要求のうち、処理負荷が大きなコネクション要求を優先的に処理してコネクションを確立し、タイムアウトリスクがないと評価した場合、処理負荷が小さなコネクション要求を優先的に処理してコネクションを確立する。
【０００７】
また、１つの態様では、ネットワーク接続制御プログラムが提供される。このネットワーク接続制御プログラムは、装置間のネットワークのコネクションの確立を行うことで通信を開始するコンピュータに、コネクション要求を第１の記憶部に格納し、コネクション要求の確立待ち時間を特定可能な確立待ち時間情報と、コネクション要求の確立後の処理負荷に関する負荷情報とを第２の記憶部に格納し、コネクションを確立できる状態であり、かつ２以上のコネクション要求を第１の記憶部に格納している状態であるとき、確立待ち時間情報と負荷情報とに基づいて処理負荷が大きなコネクション要求のタイムアウトリスクを評価し、タイムアウトリスクがあると評価した場合、第１の記憶部に格納されたコネクション要求のうち、処理負荷が大きなコネクション要求を優先的に処理してコネクションを確立し、タイムアウトリスクがないと評価した場合、処理負荷が小さなコネクション要求を優先的に処理してコネクションを確立する、処理を実行させる。
【０００８】
また、１つの態様では、装置間のネットワークのコネクションの確立を行うことで通信を開始する情報処理システムが提供される。この情報処理システムは、伝送路と第１のネットワーク接続制御装置と第２のネットワーク接続制御装置とを含む。第１のネットワーク接続制御装置は、コネクション要求を送信する。第２のネットワーク接続制御装置は、制御部を含む。制御部は、第１のネットワーク接続制御装置から伝送路を介して受信したコネクション要求を第１の記憶部に格納し、コネクション要求の確立待ち時間を特定可能な確立待ち時間情報と、コネクション要求の確立後の処理負荷に関する負荷情報とを第２の記憶部に格納し、コネクションを確立できる状態であり、かつ２以上のコネクション要求を第１の記憶部に格納している状態であるとき、確立待ち時間情報と負荷情報とに基づいて処理負荷が大きなコネクション要求のタイムアウトリスクを評価し、タイムアウトリスクがあると評価した場合、第１の記憶部に格納されたコネクション要求のうち、処理負荷が大きなコネクション要求を優先的に処理してコネクションを確立し、タイムアウトリスクがないと評価した場合、処理負荷が小さなコネクション要求を優先的に処理してコネクションを確立する。
【発明の効果】
【０００９】
１つの側面では、タイムアウトを回避しつつ、スループットの改善を図ることができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の情報処理システムの一例を示す図である。
【図２】第２の実施の形態の情報処理システムの一例を示す図である。
【図３】業務サーバのハードウェア構成の一例を示す図である。
【図４】コネクションの確立処理を示すシーケンスの一例を示す図である。
【図５】業務サーバが有する機能の一例を示す図である。
【図６】コマンド管理テーブルの一例を示す図である。
【図７】キュー管理テーブルの一例を示す図である。
【図８】優先度設定テーブルの一例を示す図である。
【図９】優先度と経過時間との関係を示すグラフの一例を示す図である。
【図１０】コネクションを確立する順序の一例を示す図である。
【図１１】業務サーバの処理の一例（その１）を示す図である。
【図１２】業務サーバの処理の一例（その２）を示す図である。
【図１３】業務サーバの処理の一例（その３）を示す図である。
【図１４】業務サーバの処理の一例（その４）を示す図である。
【図１５】業務サーバが送信するコネクション要求の処理の一例を示すフローチャートである。
【図１６】コネクション要求の受信処理の一例を示すフローチャートである。
【図１７】コネクションの確立が可能になった場合の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムの一例を示す図である。情報処理システム１は、ネットワーク接続制御装置２、ネットワーク接続制御装置３および伝送路４を含む。ネットワーク接続制御装置２とネットワーク接続制御装置３とは、伝送路４を介してコネクションを確立して通信を開始する。
【００１２】
ネットワーク接続制御装置２は、第１の記憶部５と第２の記憶部６と制御部７を含む。制御部７は、コネクション要求を第１の記憶部５に格納する。制御部７は、確立待ち時間情報と負荷情報とを第２の記憶部６に格納する。なお、第１の記憶部５と第２の記憶部６は、例えば、ＲＡＭ（Random Access Memory）などであり、制御部７は、例えば、プロセッサが所要の処理を実行することにより実現し得る。
【００１３】
制御部７は、ネットワーク接続制御装置３から受信したコネクション要求を第１の記憶部５に格納する。例えば、制御部７は、ネットワーク接続制御装置３から受信したコネクション要求Ｘ１，Ｘ２，Ｘ３を、第１の記憶部５に格納する。
【００１４】
制御部７は、確立待ち時間情報を第２の記憶部６に格納する。確立待ち時間情報は、コネクション要求の確立待ち時間を特定可能な情報である。例えば、確立待ち時間情報は、制御部７がコネクション要求をネットワーク接続制御装置３から受信した時刻である。制御部７は、コネクション要求Ｘ１をネットワーク接続制御装置３から受信した時刻（確立待ち時間情報Ｙ１）を、第２の記憶部６が有する確立待ち時間情報格納部６ａに格納する。制御部７は、コネクションの確立が可能になった場合、制御部７がコネクション要求をネットワーク接続制御装置３から受信した時刻からコネクションの確立が可能になった時点までの時間を確立待ち時間として特定できる。
【００１５】
また、確立待ち時間情報は、制御部７がコネクション要求をネットワーク接続制御装置３に受信した時点のカウント値でもよい。制御部７は、コネクションの確立が可能になった場合、カウント値から確立待ち時間を特定できる。
【００１６】
制御部７は、ネットワーク接続制御装置３から受信したコネクション要求に含まれている負荷情報を第２の記憶部６に格納する。例えば、制御部７は、第２の記憶部６が有する負荷情報格納部６ｂに負荷情報を格納する。
【００１７】
負荷情報は、コネクション要求の確立後の処理負荷に関する情報である。例えば、負荷情報は、ネットワーク接続制御装置３から受信したコネクション要求によって確立するコネクションにおける処理負荷が大きなコネクション要求であるか否かを示す情報である。例えば、負荷情報は、処理負荷が大きなコネクション要求であることを示す「１」、または処理負荷が小さなコネクション要求であることを示す「０」の何れかである。例えば、処理負荷が大きなコネクション要求がコネクション要求Ｘ１であり、処理負荷が小さなコネクション要求がコネクション要求Ｘ２，Ｘ３である。
【００１８】
なお、「処理負荷が大きなコネクション要求」とは、一旦確立したコネクションを解放するまでの時間が大きい、あるいは大きいことが見込まれるコネクション要求である。例えば、「処理負荷が大きなコネクション要求」は、一旦確立したコネクションにおいて複数のコマンド（例えばコマンドチェイン）を発行予定のコネクション要求である。なお、「処理負荷が大きなコネクション要求」は、一旦確立したコネクションにおいて１つのコマンドを発行する場合であってもネットワーク接続制御装置３が応答するまでに所定以上の時間がかかることが見込まれるコマンドを発行予定のコネクション要求であってもよい。
【００１９】
制御部７は、コネクションを確立できる状態、かつ２以上のコネクション要求を第１の記憶部５に格納している状態であるとき、確立待ち時間情報と負荷情報とに基づいて、処理負荷が大きなコネクション要求のタイムアウトリスクを評価する。
【００２０】
例えば、制御部７は、処理負荷が大きなコネクション要求の優先度と処理負荷が小さなコネクション要求の優先度とを比較してタイムアウトリスクを評価する。制御部７は、タイムアウトリスクを評価するときに、確立待ち時間情報を参照することで確立待ち時間を算出できる。制御部７は、処理負荷が大きなコネクション要求の優先度と処理負荷が小さなコネクション要求の優先度を、確立待ち時間と負荷情報とを用いて算出する。制御部７は、処理負荷が大きなコネクション要求の優先度が処理負荷が小さなコネクション要求の優先度よりも高い場合、処理負荷が大きなコネクション要求にタイムアウトリスクがあると判定できる。一方、制御部７は、処理負荷が小さなコネクション要求の優先度が処理負荷が大きなコネクション要求の優先度よりも高い場合、処理負荷が大きなコネクション要求にタイムアウトリスクがないと判定できる。
【００２１】
制御部７は、タイムアウトリスクがあると評価した場合、第１の記憶部５に格納されたコネクション要求のうち、処理負荷が大きなコネクション要求を優先的に処理してコネクションを確立する。
【００２２】
一方、制御部７は、タイムアウトリスクがないと評価した場合、第１の記憶部５に格納されたコネクション要求のうち、処理負荷が小さなコネクション要求を優先的に処理してコネクションを確立する。
【００２３】
なお、コネクションの確立待ちは、ネットワーク接続制御装置２とネットワーク接続制御装置３とでコネクションを確立できる数が異なる場合に起こり得る。例えば、ネットワーク接続制御装置２を介して通信を行う上位アプリケーションがレガシーアプリケーションであり、確立可能なコネクション数（例えば「１」）を制限しているときに、対向するネットワーク接続制御装置３との間で確立可能なコネクション数の不均衡を生じる。なお、確立可能なコネクション数の不均衡は、上位アプリケーションに起因するものに限らず、ネットワーク環境の制限によるものなどであってもよい。
【００２４】
第１の実施の形態によれば、制御部７は、コネクション要求Ｘ１にタイムアウトリスクがあると評価した場合、コネクション要求Ｘ１をコネクション要求Ｘ２，Ｘ３よりも優先してコネクションを確立する。これにより、ネットワーク接続制御装置２は、コネクション要求Ｘ１のタイムアウトを回避できる。
【００２５】
一方、制御部７は、コネクション要求Ｘ１にタイムアウトリスクがないと評価した場合、コネクションの確立時間（コネクションの確立から解放までの時間）の短いコネクション要求Ｘ２をコネクション要求Ｘ１よりも優先してコネクションを確立する。また、制御部７は、コネクションの確立が可能なときに、コネクション要求Ｘ１にタイムアウトリスクがないと評価した場合、コネクション要求Ｘ１よりもコネクション要求Ｘ３を優先してコネクションを確立する。
【００２６】
このように、制御部７は、コネクションの確立時間の短いコネクション要求を優先して確立する。これにより、ネットワーク接続制御装置２は、コネクション要求Ｘ１にタイムアウトリスクがあると評価するまでの間、多くのコネクション要求（例えば、コネクション要求Ｘ２，Ｘ３）に応えることができる。ネットワーク接続制御装置２は、多くのコネクション要求に応えることで、処理負荷が小さなコネクション要求に対してＢｕｓｙ応答などを実行する可能性を低くできる。これにより、ネットワーク接続制御装置２は、スループットの改善を図ることができる。
【００２７】
よって、ネットワーク接続制御装置２は、タイムアウトを回避しつつ、スループットの改善を図ることができる。
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムの一例を示す図である。情報処理システム１０は、業務サーバ１００、ストレージ装置２００および伝送路３００を含む。例えば、業務サーバ１００およびストレージ装置２００は、データセンタ内に設置される。業務サーバ１００とストレージ装置２００とは、伝送路３００を介して接続できる。伝送路３００は、例えば、ファイバチャネルなどの伝送方式でデータ転送可能な通信路である。
【００２８】
業務サーバ１００は、ストレージ装置２００に格納されたデータにアクセスするサーバコンピュータである。例えば、業務サーバ１００は、ファイバチャネルでデータ転送を行うとき、ＣＨ（Channel）の数を制御する。業務サーバ１００は、通信インタフェース１０７を有する。通信インタフェース１０７は、業務サーバ１００がストレージ装置２００と通信を行うためのインタフェースである。
【００２９】
ストレージ装置２００は、複数のストレージデバイス（例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive））を内蔵し、業務サーバ１００の処理に用いられるデータを記憶する。例えば、ストレージ装置２００は、ＣＵ（Control Unit）を有してストレージデバイスを制御する。また、さらに、ストレージ装置２００は、通信インタフェース２０１を有する。通信インタフェース２０１は、ストレージ装置２００が業務サーバ１００と通信を行うためのインタフェースである。
【００３０】
業務サーバ１００とストレージ装置２００とは、通信インタフェース１０７と通信インタフェース２０１とに接続された伝送路３００を介して通信を行う。
次に、業務サーバ１００のハードウェアについて説明する。図３は、業務サーバのハードウェア構成の一例を示す図である。業務サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、読み取り装置１０６および通信インタフェース１０７を有する。
【００３１】
プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field Programmable Gate Array）などである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００３２】
ＲＡＭ１０２は、業務サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３３】
ＨＤＤ１０３は、業務サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。業務サーバ１００は、フラッシュメモリやＳＳＤなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３４】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、業務サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００３５】
入力信号処理部１０５は、業務サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００３６】
読み取り装置１０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。更に、プロセッサ１０１は、記録媒体１３から読み取ったプログラムやデータを、業務サーバ１００のＲＡＭ１０２やＨＤＤ１０３に格納するよう業務サーバ１００に指示することもできる。
【００３７】
通信インタフェース１０７は、ストレージ装置２００と通信を行うためのインタフェースである。
次に、コネクションの確立について説明する。図４は、コネクションの確立処理を示すシーケンスの一例を示す図である。業務サーバ１００とストレージ装置２００とは、伝送路３００を介してコネクションを確立できる。業務サーバ１００とストレージ装置２００は、以下のようにしてコネクションの確立を行う。
【００３８】
（ＳＴ１０１）業務サーバ１００は、コマンド（Ｌ）をストレージ装置２００に送信する。コマンド（Ｌ）は、業務サーバ１００とストレージ装置２００とでコネクションを確立するためのコネクション要求を含むものである。なお、コマンド（Ｌ）の「Ｌ」は、コマンドの識別情報であり、例えばコマンドＩＤ（identifier）である。
【００３９】
（ＳＴ１０２）ストレージ装置２００は、コネクション要求（Ｌ）とＡＣＣ応答（Ｌ）を業務サーバ１００に送信する。コネクション要求（Ｌ）は、コネクションの確立を要求するコマンドであり、業務サーバ１００が送信したコマンド（Ｌ）に対して発行されるコマンドである。ＡＣＣ応答（Ｌ）は、確認応答コマンドであり、業務サーバ１００が送信したコマンド（Ｌ）に対して発行されるコマンドである。
【００４０】
（ＳＴ１０３）業務サーバ１００は、受信したコネクション要求（Ｌ）に対するＡＣＣ応答（Ｌ）をストレージ装置２００に送信する。これにより、業務サーバ１００とストレージ装置２００は、コネクションを確立する。例えば、業務サーバ１００とストレージ装置２００は、確立したコネクションを占有して、コマンド（Ｌ）に関する通信処理を行うことができる。
【００４１】
（ＳＴ１０４）業務サーバ１００とストレージ装置２００は、コマンド（Ｌ）に関する通信処理を終えると、確立したコネクションを切断する。
業務サーバ１００とストレージ装置２００は、許容される多重度に応じた数のコネクションを確立することができる。例えば、業務サーバ１００とストレージ装置２００とは、許容される多重度が異なる場合、許容される多重度が小さい方の数を上限とする数だけコネクションを確立できる。
【００４２】
第２の実施の形態では、業務サーバ１００は、レガシーアプリケーションによって多重度が「１」に制限されているものとする。
業務サーバ１００は、コネクションを確立できない場合、ストレージ装置２００から受信したコネクション要求に対するＡＣＣ応答ができない。業務サーバ１００は、コネクション要求を受信してから所定時間を経過してもＡＣＣ応答ができない場合、Ｂｕｓｙ応答をストレージ装置２００に送信する。Ｂｕｓｙ応答は、コネクション要求に応答できない旨を示す情報である。
【００４３】
なお、ストレージ装置２００は、送信したコネクション要求のタイムアウト監視を行う。例えば、ストレージ装置２００は、コネクション要求のタイムアウトによりコネクション要求を再送したり、Ｂｕｓｙ応答の受信によりコネクション要求を再送したりする。このようなコネクション要求の再送は、通信負荷を大きくする。
【００４４】
次に、業務サーバ１００の機能について説明する。図５は、業務サーバが有する機能の一例を示す図である。業務サーバ１００は、記憶部１１０、アクセス制御部１２０およびドライバ１３０を有する。
【００４５】
記憶部１１０は、チェイン有り用キューとチェイン無し用キューとを有する。例えば、記憶部１１０は、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域として実装される。チェイン有り用キューとチェイン無し用キューは、いずれもコネクション要求を格納できる。チェイン有り用キューは、コマンドチェインのコネクション要求を格納するキューである。コマンドチェインのコネクション要求は、業務サーバ１００が複数のコマンドをストレージ装置２００に発行する際に確立するコネクション要求である。チェイン無し用キューは、コマンドチェイン以外のコネクション要求を格納するキューである。コマンドチェイン以外のコネクション要求は、業務サーバ１００が１つのコマンドをストレージ装置２００に発行する際に確立するコネクション要求である。
【００４６】
コマンドチェインのコネクション要求によって確立されるコネクションは、コマンドチェイン以外のコネクション要求よりもコネクションの確立時間が長い、または長くなることが予定される。コマンドチェインのコネクション要求は、第１の実施の形態の処理負荷が大きなコネクション要求に相当する。コマンドチェイン以外のコネクション要求は、第１の実施の形態の処理負荷が小さなコネクション要求に相当する。
【００４７】
記憶部１１０は、コマンド管理テーブル、キュー管理テーブルおよび優先度設定テーブルを記憶する。コマンド管理テーブルは、コネクション要求に関する情報である。キュー管理テーブルは、チェイン有り用キューおよびチェイン無し用キューに関する情報である。優先度設定テーブルは、後述する優先度の算出に用いられる情報である。
【００４８】
アクセス制御部１２０は、コマンドの送信をドライバ１３０に依頼する。ドライバ１３０は、アクセス制御部１２０からコマンドの送信依頼を受領する。ドライバ１３０は、送信依頼されたコマンドに関する情報をコマンド管理テーブルに登録する。送信依頼されたコマンドに関する情報は、コマンドチェインのために確立するコマンドであるか否かを判別可能な情報を含む。ドライバ１３０は、コマンド管理テーブルに登録した後にストレージ装置２００に送信依頼されたコマンドを送信する。
【００４９】
ドライバ１３０は、コネクション要求をストレージ装置２００から受信する。ストレージ装置２００から受信したコネクション要求は、ドライバ１３０が送信したコマンドを特定可能な情報（例えば、コマンドＩＤ）を含む。ドライバ１３０は、コネクション要求からコネクション要求の契機になったコマンドを特定できる。
【００５０】
ドライバ１３０は、コネクションを確立できない場合、コマンド管理テーブルを参照し、受信したコネクション要求がコマンドチェインのコネクション要求であるかを判定する。ドライバ１３０は、コマンドチェインのコネクション要求であると判定した場合、受信したコネクション要求をチェイン有り用キューに格納する。ドライバ１３０は、コマンドチェインのコネクション要求でないと判定した場合、受信したコネクション要求をチェイン無し用キューに格納する。
【００５１】
ドライバ１３０は、チェイン有り用キューまたはチェイン無し用キューにコネクション要求を格納してから所定時間が経過したときに、Ｂｕｓｙ応答をストレージ装置２００に送信する。なお、所定時間は、ドライバ１３０が頻繁にＢｕｓｙ応答を送信しないような時間である。
【００５２】
ドライバ１３０は、コネクションの確立を可能な状態になったときに、チェイン有り用キューまたはチェイン無し用キューから取り出す対象となるコネクション要求を決定する。ドライバ１３０は、チェイン有り用キューおよびチェイン無し用キューに格納されているコネクション要求の優先度で取り出す対象となるコネクション要求を決定する。コネクション要求の優先度については、後で説明する。
【００５３】
ドライバ１３０は、チェイン有り用キューに格納されているコネクション要求の優先度とチェイン無し用キューに格納されているコネクション要求の優先度とを比較する。ドライバ１３０は、最も優先度の高いコネクション要求をチェイン有り用キューまたはチェイン無し用キューから取り出す。ドライバ１３０は、取り出したコネクション要求に対するＡＣＣ応答をストレージ装置２００に送信する。これにより、業務サーバ１００は、取り出したコネクション要求のコネクションを確立できる。
【００５４】
なお、アクセス制御部１２０およびドライバ１３０は、例えば、プロセッサ１０１が所定のプログラムを実行することによって実現される。
次に、記憶部１１０に格納される各テーブルについて詳細に説明する。図６は、コマンド管理テーブルの一例を示す図である。コマンド管理テーブル１１１は、コマンドＩＤ、ポインタ、チェイン、受領時刻、コマンドＩＤ（ｎｅｘｔ）およびコマンドＩＤ（ｐｒｅｖ）の項目を含む。
【００５５】
コマンドＩＤの項目は、アクセス制御部１２０から送信依頼されたコマンドを識別する情報を示す。ポインタの項目は、チェイン有り用キューまたはチェイン無し用キューにおけるコネクション要求が格納されている位置を示す。チェインの項目は、コマンドチェインのコネクション要求であるか否かを判別可能な情報を示し、例えば、コマンドチェインのコネクション要求を「１」で示し、コマンドチェインのコネクション要求でないことを「０」で示す。受領時刻の項目は、アクセス制御部１２０から送信依頼されたコマンドをドライバ１３０が受領した時刻を示す。なお、図６では、時刻Ｔ１から時刻Ｔ２、時刻Ｔ３、時刻Ｔ４、時刻Ｔ５、時刻Ｔ６の順に時刻が新しい。
【００５６】
コマンドＩＤ（ｎｅｘｔ）の項目は、コマンドＩＤの項目に登録されるコネクション要求が格納されているキューにおける次の接続位置にあるコネクション要求（コマンドＩＤ）を示す。コマンドＩＤ（ｐｒｅｖ）の項目は、コマンドＩＤの項目に登録されるコネクション要求が格納されているキューにおける前の接続位置にあるコネクション要求（コマンドＩＤ）を示す。
【００５７】
なお、コマンドがストレージ装置２００に送信されていない場合、ポインタ、チェイン、受領時刻、コマンドＩＤ（ｎｅｘｔ）、コマンドＩＤ（ｐｒｅｖ）の項目には、「ｎｕｌｌ」が登録される。
【００５８】
例えば、コマンド管理テーブル１１１は、コマンドＩＤが「Ｃ５」、ポインタが「Ｐ５」、チェインが「０」、受領時刻が「Ｔ４」、コマンドＩＤ（ｎｅｘｔ）が「Ｃ６」、コマンドＩＤ（ｐｒｅｖ）が「Ｃ４」という情報を示す。コマンドＩＤ「Ｃ５」のコネクション要求は、コマンドチェインのコネクション要求ではなく、記憶部１１０のポインタの「Ｐ５」に格納されていることを示す。コマンドＩＤ「Ｃ５」のコネクション要求は、ドライバ１３０がアクセス制御部１２０から時刻「Ｔ４」に送信依頼を受領したことを示す。コマンドＩＤ「Ｃ５」のコネクション要求は、チェイン無し用キュー内においてコマンドＩＤ「Ｃ６」が次の接続位置となる位置に格納されていることを示す。コマンドＩＤ「Ｃ５」のコネクション要求は、チェイン無し用キュー内においてコマンドＩＤ「Ｃ４」が前の接続位置となる位置に格納されていることを示す。
【００５９】
図７は、キュー管理テーブルの一例を示す図である。キュー管理テーブル１１２は、チェイン有りおよびチェイン無しの項目を含む。チェイン有りの項目は、キューの先頭コマンドＩＤおよびキューの終端コマンドＩＤの項目を含む。キューの先頭コマンドＩＤの項目は、チェイン有り用キューに格納されている先頭のコネクション要求のコマンドＩＤを示す。キューの終端コマンドＩＤの項目は、チェイン有り用キューに格納されている終端のコネクション要求のコマンドＩＤを示す。
【００６０】
また、チェイン無しの項目は、キューの先頭コマンドＩＤおよびキューの終端コマンドＩＤの項目を含む。キューの先頭コマンドＩＤの項目は、チェイン無し用キューに格納されている先頭のコネクション要求のコマンドＩＤを示す。キューの終端コマンドＩＤの項目は、チェイン無し用キューに格納されている終端のコネクション要求のコマンドＩＤを示す。
【００６１】
図８は、優先度設定テーブルの一例を示す図である。優先度設定テーブル１１３は、設定種別および設定値の項目を含む。設定種別の項目は、優先度の算出に用いるパラメータ種別を示す。設定値の項目は、優先度の算出に用いるパラメータ値を示す。ドライバ１３０は、パラメータ値を用いて優先度を算出する。なお、ドライバ１３０は、予め優先度設定テーブル１１３にパラメータ値を設定する。
【００６２】
優先度設定テーブル１１３は、パラメータ種別「ａ」、パラメータ種別「ａ’」、パラメータ種別「ｂ」、パラメータ種別「ｃ」を含む。パラメータ種別「ａ」、パラメータ種別「ａ’」、パラメータ種別「ｂ」、パラメータ種別「ｃ」は、その全てが予め設定されるものであってもよいし、一部が予め設定されてその余りが算出後に設定されるものであってもよい。
【００６３】
例えば、ドライバ１３０は、パラメータ種別「ａ」、パラメータ種別「ａ’」、パラメータ種別「ｂ」の値を予め設定し、式（１）を用いてパラメータ種別「ｃ」の値を算出する。式（１）中の「ｘ」は、設定値の１つであって、例えばコネクション要求のタイムアウト時間の半分の時間であり、より具体的にはタイムアウト時間が３０秒のとき「１５」である。
【００６４】
ａｘ2＋ｂｘ＝ａ’ｘ2＋ｂｘ＋ｃ・・・（１）
ドライバ１３０は、パラメータ値としてａ＝２、ａ’＝１、ｂ＝４、ｘ＝１５を設定したとき、式（１）よりパラメータ種別「ｃ」のパラメータ値として「２２５」を算出できる。
【００６５】
次に、優先度について説明する。図９は、優先度と経過時間との関係を示すグラフの一例を示す図である。縦軸は優先度を示し、横軸は経過時間を示す。経過時間は、コマンド管理テーブル１１１に登録されている受領時刻からドライバ１３０が優先度を算出する時点までの時間である。
【００６６】
曲線４１０は、コマンドチェインのコネクション要求の優先度と経過時間との関係を示す。ドライバ１３０は、式（２）を用いてコマンドチェインのコネクション要求の優先度を算出できる。式（２）中のパラメータ種別「ａ」、パラメータ種別「ｂ」は、優先度設定テーブル１１３に登録されているパラメータ種別である。式（２）中の「ｘ1」は、コマンドチェインのコネクション要求の経過時間を示す。
【００６７】
優先度＝ａｘ12＋ｂｘ1・・・（２）
曲線４２０は、コマンドチェイン以外のコネクション要求の優先度と経過時間との関係を示す。ドライバ１３０は、式（３）を用いて、コマンドチェイン以外のコネクション要求の優先度を算出できる。式（３）中のパラメータ種別「ａ’」、パラメータ種別「ｂ」、パラメータ種別「ｃ」は、優先度設定テーブル１１３に登録されている。式（３）中の「ｘ2」は、コマンドチェイン以外のコネクション要求の経過時間を示す。
【００６８】
優先度＝ａ’ｘ22＋ｂｘ2＋ｃ・・・（３）
例えば、パラメータ種別「ａ」とパラメータ種別「ａ’」は、コマンドチェインのコネクション要求であるか否かによる重み付けである。パラメータ種別「ｂ」は、経過時間に対する重み付けである。
【００６９】
曲線４１０は、経過時間が長くなるほど、コマンドチェインのコネクション要求の優先度が高くなることを示す。また、曲線４２０は、経過時間が長くなるほど、コマンドチェイン以外のコネクション要求の優先度が高くなることを示す。
【００７０】
また、パラメータ種別「ａ」、パラメータ種別「ｂ」は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がない場合、コマンドチェインのコネクション要求の優先度がコマンドチェイン以外のコネクション要求の優先度よりも高くするような値である。ドライバ１３０は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がない場合、パラメータ種別「ａ」、パラメータ種別「ｂ」を式（２）に設定して、コマンドチェインのコネクション要求の優先度を高く算出する。図９は、コマンドチェインのコネクション要求の経過時間が境界線４００の時間よりも長い場合、コマンドチェインのコネクション要求の優先度がコマンドチェイン以外のコネクション要求の優先度よりも高くなることを示す。
【００７１】
このように、ドライバ１３０は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がない場合、コマンドチェインのコネクション要求をチェイン有り用キューから優先して取り出して、コネクションを確立する。ドライバ１３０は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がない場合、コマンドチェインのコネクション要求のタイムアウト回避を優先する。これにより、業務サーバ１００は、コマンドチェインのコネクション要求をタイムアウトから回避できる。
【００７２】
また、パラメータ種別「ａ’」、パラメータ種別「ｂ」は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がある場合、コマンドチェイン以外のコネクション要求の優先度がコマンドチェインのコネクション要求の優先度よりも高くするような値である。ドライバ１３０は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がある場合、パラメータ種別「ａ’」、パラメータ種別「ｂ」を式（３）に設定して、コマンドチェイン以外のコネクション要求の優先度を高く算出する。図９は、境界線４００の時間よりも経過時間が短い場合、コマンドチェイン以外のコネクション要求の優先度がコマンドチェインのコネクション要求の優先度よりも高くなることを示す。
【００７３】
ドライバ１３０は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がある場合、コマンドチェイン以外のコネクション要求をチェイン無し用キューから優先して取り出して、コネクションを確立する。このように、ドライバ１３０は、コネクションの確立時間が短いコネクション要求を優先して確立する。これにより、業務サーバ１００は、コマンドチェインのコネクション要求がタイムアウトになる可能性が高くなるまでの間、多くのコマンドチェイン以外のコネクション要求に応えることができる。すなわち、業務サーバ１００は、コマンドチェイン以外のコネクション要求に対してＢｕｓｙ応答をする前にコネクションを確立する。そのため、業務サーバ１００は、コマンドチェイン以外のコネクション要求に対してＢｕｓｙ応答などを実行する可能性を低くできる。よって、業務サーバ１００は、スループットの改善を図ることができる。
【００７４】
なお、ドライバ１３０は、式（２）、式（３）に設定されるパラメータ種別のパラメータ値を所定期間毎に見直してもよい。例えば、ドライバ１３０は、コネクションを確立した処理の履歴に基づいて、式（２）、式（３）にパラメータ種別のパラメータ値を更新することができる。そして、ドライバ１３０は、更新後のパラメータ種別のパラメータ値を優先度設定テーブル１１３に登録することができる。
【００７５】
次に、コネクションを確立する順序について、具体例を用いて説明する。図１０は、コネクションを確立する順序の一例を示す図である。図１０（１）と図１０（２）は、コネクションを確立する順序を比較することを示している。
【００７６】
図１０（１）は、ドライバ１３０がコネクション要求「Ｄ１」、コネクション要求「Ｅ１」、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」の順にコネクションを確立したことを示す。なお、コネクション要求「Ｅ１」は、コマンドチェインのコネクション要求であり、コネクション要求「Ｄ１」、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」は、コマンドチェイン以外のコネクション要求である。コネクション要求「Ｄ１」、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」は、コネクション要求「Ｅ１」と比較してコネクションの確立時間が短い。
【００７７】
図１０（１）は、ドライバ１３０がコマンドをストレージ装置２００に送信してからコネクション要求「Ｄ１」、コネクション要求「Ｅ１」、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」のコネクションが切断されるまでの時間を示す。すなわち、コネクションが切断されるまでの時間は、ドライバ１３０がコマンドを送信してからコネクションを確立して、ストレージ装置２００に対する様々な処理が完了するまでの時間である。
【００７８】
コネクション要求「Ｄ２」、コネクション要求「Ｄ３」による処理完了時間は、コネクション要求「Ｅ１」のコネクションの確立時間が長くなるため、長くなる。また、ドライバ１３０は、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」を受信してから所定時間が経過した場合、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」に対するＢｕｓｙ応答をストレージ装置２００に送信する。そのため、業務サーバ１００の処理負荷が高くなる。また、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」は、タイムアウトする可能性もある。
【００７９】
そこで、第２の実施の形態では、ドライバ１３０は、コネクション要求「Ｅ１」がタイムアウトになる可能性が低い場合、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」のコネクションを優先して確立する。
【００８０】
図１０（２）は、ドライバ１３０がコネクション要求「Ｄ１」、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」、コネクション要求「Ｅ１」の順にコネクションを確立した場合を示す。また、図１０（２）は、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」による処理完了時間が短くなることを示す。そして、業務サーバ１００は、コネクション要求「Ｄ２」、コネクション要求「Ｄ３」のコネクションを優先して確立することでコネクション要求「Ｄ２」、コネクション要求「Ｄ３」に対するＢｕｓｙ応答をストレージ装置２００に送信しなくて済む。よって、業務サーバ１００は、スループットの改善を図ることができる。
【００８１】
次に、第２の実施の形態の具体例を説明する。具体例では、コマンドＩＤ「Ｃ０」のコネクション要求は、コネクション要求「Ｃ０」である。同様に、コマンドＩＤ「Ｃ１」のコネクション要求は、コネクション要求「Ｃ１」である。コマンドＩＤ「Ｃ２」のコネクション要求は、コネクション要求「Ｃ２」である。コマンドＩＤ「Ｃ３」のコネクション要求は、コネクション要求「Ｃ３」である。コマンドＩＤ「Ｃ４」のコネクション要求は、コネクション要求「Ｃ４」である。コマンドＩＤ「Ｃ５」のコネクション要求は、コネクション要求「Ｃ５」である。コマンドＩＤ「Ｃ６」のコネクション要求は、コネクション要求「Ｃ６」である。
【００８２】
図１１は、業務サーバの処理の一例（その１）を示す図である。図１１は、コマンド管理テーブル１１１、キュー管理テーブル１１２および優先度設定テーブル１１３が記憶部１１０に記憶されていることを示す。
【００８３】
図１１は、記憶部１１０がチェイン有り用キューとチェイン無し用キューとを有していることを示す。チェイン有り用キューは、コネクション要求「Ｃ１」，「Ｃ０」を格納する。チェイン無し用キューは、コネクション要求「Ｃ４」，「Ｃ５」，「Ｃ６」を格納する。ドライバ１３０は、チェイン有り用キューおよびチェイン無し用キューに格納されているコネクション要求を受領時刻の古い順に格納する。
【００８４】
また、業務サーバ１００とストレージ装置２００とは、既に１つのコネクションを確立している。そのため、ドライバ１３０は、ストレージ装置２００からコネクション要求を受信しても直ぐにコネクションを確立できない。
【００８５】
図１２は、業務サーバの処理の一例（その２）を示す図である。図１２は、ドライバ１３０がストレージ装置２００からコネクション要求「Ｃ３」を受信した状態を示す。なお、コネクション要求「Ｃ３」は、ドライバ１３０がストレージ装置２００に送信したコマンド（コマンドＩＤは、Ｃ３）に対するコネクション要求である。
【００８６】
ドライバ１３０は、コマンド管理テーブル１１１を参照し、コネクション要求「Ｃ３」がコマンドチェインでないと判定する。ドライバ１３０は、コネクション要求「Ｃ３」をチェイン無し用キューに格納すると決定する。ドライバ１３０は、コマンド管理テーブル１１１を参照し、コネクション要求「Ｃ３」の受領時刻「Ｔ３」を取得する。ドライバ１３０は、コネクション要求「Ｃ３」の受領時刻「Ｔ３」に基づいて、コネクション要求「Ｃ３」をコネクション要求「Ｃ４」の次に格納すると決定する。ドライバ１３０は、チェイン無し用キューのコネクション要求「Ｃ４」の次にコネクション要求「Ｃ３」を格納する。
【００８７】
ドライバ１３０は、コマンド管理テーブル１１１のポインタの項目にコネクション要求「Ｃ３」を格納した位置を登録する。ドライバ１３０は、コマンド管理テーブル１１１のコネクション要求「Ｃ３」のレコードのコマンドＩＤ（ｎｅｘｔ）の項目に「Ｃ５」、コマンドＩＤ（ｐｒｅｖ）の項目に「Ｃ４」を登録する。また、ドライバ１３０は、コネクション要求「Ｃ３」を格納したことにより、コマンド管理テーブル１１１のコマンドＩＤ（ｎｅｘｔ）およびコマンドＩＤ（ｐｒｅｖ）の項目を更新する。
【００８８】
業務サーバ１００とストレージ装置２００は、コネクション要求「Ｃ３」を格納後、確立していたコネクションを切断する。そして、ドライバ１３０は、コネクションの確立が可能な状態になったと判定する。
【００８９】
図１３は、業務サーバの処理の一例（その３）を示す図である。ドライバ１３０は、キュー管理テーブル１１２を参照し、チェイン有り用キューの先頭に格納されているコネクション要求「Ｃ１」を特定する。ドライバ１３０は、コマンド管理テーブル１１１を参照し、コネクション要求「Ｃ１」の受領時刻「Ｔ１」を取得する。ドライバ１３０は、コネクション要求「Ｃ１」の受領時刻「Ｔ１」から現時刻までの経過時間を算出する。ドライバ１３０は、優先度設定テーブル１１３に登録されているパラメータ値と経過時間とを式（２）に設定し、コネクション要求「Ｃ１」の優先度を算出する。
【００９０】
ドライバ１３０は、キュー管理テーブル１１２を参照し、チェイン無し用キューの先頭に格納されているコネクション要求「Ｃ４」を特定する。ドライバ１３０は、コマンド管理テーブル１１１を参照し、コネクション要求「Ｃ４」の受領時刻「Ｔ２」を取得する。ドライバ１３０は、コネクション要求「Ｃ４」の受領時刻「Ｔ２」から現時刻までの経過時間を算出する。ドライバ１３０は、優先度設定テーブル１１３に登録されているパラメータ値と経過時間とを式（３）に設定し、コネクション要求「Ｃ４」の優先度を算出する。
【００９１】
ドライバ１３０は、コネクション要求「Ｃ１」の優先度とコネクション要求「Ｃ４」の優先度とを比較する。ドライバ１３０は、コネクション要求「Ｃ４」の優先度がコネクション要求「Ｃ１」の優先度よりも高いと判定する。ドライバ１３０は、チェイン無し用キューからコネクション要求「Ｃ４」を取り出す。ドライバ１３０は、コネクション要求「Ｃ４」に対するＡＣＣ応答をストレージ装置２００に送信する。これにより、業務サーバ１００とストレージ装置２００は、コネクション要求「Ｃ４」のコネクションを確立できる。
【００９２】
ここで、各キューの中で経過時間が最も長くなるコネクション要求は、各キューの先頭に存在する。例えば、コネクション要求「Ｃ１」の経過時間は、チェイン有り用キューの中で最も長い。また、コネクション要求「Ｃ４」の経過時間は、チェイン無し用キューの中で最も長い。そのため、コネクション要求「Ｃ１」の優先度は、チェイン有り用キューの中で優先度を算出した場合、最も高くなる。また、コネクション要求「Ｃ４」の優先度は、チェイン無し用キューの中で優先度を算出した場合、最も高くなる。そして、ドライバ１３０は、チェイン有り用キューおよびチェイン無し用キューから取り出すコネクション要求は１つなので、各キューの先頭に格納されているコネクション要求の優先度のみを算出すればよい。よって、業務サーバ１００は、２つのキューに格納されている全てのコネクション要求の優先度を算出せずに、各キューの先頭に格納されているコネクション要求の優先度のみを算出することで、処理負荷を軽減することができる。
【００９３】
図１４は、業務サーバの処理の一例（その４）を示す図である。図１４は、コネクション要求「Ｃ４」のコネクションを確立した後の記憶部１１０の状態を示す。
ドライバ１３０は、コマンド管理テーブル１１１を参照し、コネクション要求「Ｃ４」のレコードのポインタの項目にｎｕｌｌを登録する。ドライバ１３０は、コマンド管理テーブル１１１を参照し、コネクション要求「Ｃ４」のレコードのコマンドＩＤ（ｎｅｘｔ）およびコマンドＩＤ（ｐｒｅｖ）の項目にｎｕｌｌを登録する。また、ドライバ１３０は、コマンド管理テーブル１１１からコネクション要求「Ｃ４」のレコードを削除してもよい。
【００９４】
チェイン無し用キューの先頭は、コネクション要求「Ｃ３」になる。ドライバ１３０は、コマンド管理テーブル１１１を参照し、コネクション要求「Ｃ３」のレコードのコマンドＩＤ（ｐｒｅｖ）の項目にｎｕｌｌを登録する。また、ドライバ１３０は、キュー管理テーブル１１２に、チェイン無し用キューの先頭がコネクション要求「Ｃ３」であることを登録する。
【００９５】
次に、業務サーバ１００で実行される処理について、フローチャートを用いて説明する。図１５は、業務サーバが送信するコネクション要求の処理の一例を示すフローチャートである。図１５の処理は、アクセス制御部１２０がドライバ１３０にコマンドの送信依頼をすることで開始する。
【００９６】
（Ｓ１１）ドライバ１３０は、アクセス制御部１２０からコマンドの送信依頼を受領する。送信依頼は、コマンドＩＤおよびコマンドチェインのコマンドであるか否かを示す情報を含む。
【００９７】
（Ｓ１２）ドライバ１３０は、送信依頼されたコマンドＩＤに対応するコマンド管理テーブル１１１の受領時刻の項目に現時刻を登録する。また、ドライバ１３０は、送信依頼されたコマンドＩＤに対応するレコードがコマンド管理テーブル１１１に存在しない場合、レコードを新規に作成する。そして、ドライバ１３０は、送信依頼されたコマンドＩＤに対応するコマンド管理テーブル１１１の受領時刻の項目に現時刻を登録する。
【００９８】
（Ｓ１３）ドライバ１３０は、送信依頼されたコマンドＩＤに対応するコマンド管理テーブル１１１のチェインの項目にコマンドチェインのコマンドであるか否かを登録する。
（Ｓ１４）ドライバ１３０は、ストレージ装置２００にコマンドを送信する。そして、処理を終了する。
【００９９】
ストレージ装置２００は、ドライバ１３０が送信したコマンドを受信する。ストレージ装置２００は、コマンドに対するコネクション要求を業務サーバ１００に送信する。ストレージ装置２００が送信したコネクション要求は、業務サーバ１００が送信したコマンドのコマンドＩＤを含んでいる。また、ストレージ装置２００は、コマンドに対するＡＣＣ応答を業務サーバ１００に送信する。
【０１００】
図１６は、コネクション要求の受信処理の一例を示すフローチャートである。図１６の処理は、ストレージ装置２００が業務サーバ１００にコネクション要求を送信することで開始する。
【０１０１】
（Ｓ２１）ドライバ１３０は、ストレージ装置２００からコネクション要求を受信する。また、ドライバ１３０は、ストレージ装置２００からＡＣＣ応答を受信する。
（Ｓ２２）ドライバ１３０は、チェイン有り用キューおよびチェイン無し用キューの何れもが空であるか否かを判定する。空の場合、ドライバ１３０は、処理をステップＳ２３に進める。空でない場合、ドライバ１３０は、処理をステップＳ２５に進める。
【０１０２】
（Ｓ２３）ドライバ１３０は、コネクションの確立が可能であるか否かを判定する。すなわち、ドライバ１３０は、コネクションを確立している数が業務サーバ１００の多重度未満であるか否かを判定する。コネクションの確立が可能な場合、ドライバ１３０は、処理をステップＳ２４に進める。コネクションの確立が可能でない場合、ドライバ１３０は、処理をステップＳ２５に進める。
【０１０３】
（Ｓ２４）ドライバ１３０は、ストレージ装置２００にＡＣＣ応答を送信する。そして、処理を終了する。これにより、ドライバ１３０は、ステップＳ２１で受信したコネクション要求のコネクションを確立できる。
【０１０４】
（Ｓ２５）ドライバ１３０は、ステップＳ２１で受信したコネクション要求からコマンドＩＤを取得する。
（Ｓ２６）ドライバ１３０は、コマンド管理テーブル１１１を参照し、取得したコマンドＩＤからステップＳ２１で受信したコネクション要求がコマンドチェインのコネクション要求である否かの情報とコマンドＩＤに対応する受領時刻とを取得する。
【０１０５】
（Ｓ２７）ドライバ１３０は、ステップＳ２１で受信したコネクション要求がコマンドチェインのコネクション要求である場合、ステップＳ２１で受信したコネクション要求をチェイン有り用キューに格納すると決定する。一方、ドライバ１３０は、ステップＳ２１で受信したコネクション要求がコマンドチェインのコネクション要求でない場合、ステップＳ２１で受信したコネクション要求をチェイン無し用キューに格納すると決定する。
【０１０６】
次に、ドライバ１３０は、ステップＳ２６で取得した受領時刻に基づいて、ステップＳ２１で受信したコネクション要求を格納する位置を決定する。
（Ｓ２８）ドライバ１３０は、決定した格納位置にステップＳ２１で受信したコネクション要求を格納する。これにより、ドライバ１３０は、チェイン有り用キューおよびチェイン無し用キューに格納されるコネクション要求を受領時刻順に並べることができる。
【０１０７】
ドライバ１３０は、ステップＳ２１で受信したコネクション要求を格納した位置をコマンド管理テーブル１１１に登録する。また、ドライバ１３０は、ステップＳ２１で受信したコネクション要求を格納したことにより、コマンド管理テーブル１１１のコマンドＩＤ（ｎｅｘｔ）およびコマンドＩＤ（ｐｒｅｖ）の項目を更新する。そして、処理を終了する。
【０１０８】
図１７は、コネクションの確立が可能になった場合の処理の一例を示すフローチャートである。ドライバ１３０は、コネクションを確立できる状態であり、かつ２以上のコネクション要求を記憶部１１０に格納している状態になる度に図１７の処理を実行する。
【０１０９】
（Ｓ３１）ドライバ１３０は、チェイン有り用キューが空であるか否かを判定する。空の場合、ドライバ１３０は、処理をステップＳ３２に進める。空でない場合、ドライバ１３０は、処理をステップＳ３４に進める。
【０１１０】
（Ｓ３２）ドライバ１３０は、チェイン無し用キューが空であるか否かを判定する。空の場合、ドライバ１３０は、処理を終了する。空でない場合、ドライバ１３０は、処理をステップＳ３３に進める。
【０１１１】
（Ｓ３３）ドライバ１３０は、キュー管理テーブル１１２を参照し、チェイン無し用キューに格納されているコネクション要求の先頭のコマンドＩＤを特定する。ドライバ１３０は、コマンド管理テーブル１１１を参照し、特定したコマンドＩＤのコネクション要求が格納されている位置を特定する。ドライバ１３０は、特定した位置に格納されているコネクション要求を取り出す。そして、ドライバ１３０は、処理をステップＳ３９に進める。
【０１１２】
（Ｓ３４）ドライバ１３０は、チェイン無し用キューが空であるか否かを判定する。空の場合、ドライバ１３０は、処理をステップＳ３８に進める。空でない場合、ドライバ１３０は、処理をステップＳ３５に進める。
【０１１３】
（Ｓ３５）ドライバ１３０は、キュー管理テーブル１１２を参照し、チェイン有り用キューに格納されているコネクション要求の先頭のコマンドＩＤを特定する。ドライバ１３０は、コマンド管理テーブル１１１を参照し、特定したコマンドＩＤの受領時刻を取得する。
【０１１４】
ドライバ１３０は、キュー管理テーブル１１２を参照し、チェイン無し用キューに格納されているコネクション要求の先頭のコマンドＩＤを特定する。ドライバ１３０は、コマンド管理テーブル１１１を参照し、特定したコマンドＩＤの受領時刻を取得する。
【０１１５】
（Ｓ３６）ドライバ１３０は、チェイン有り用キューに格納されている先頭のコネクション要求の受領時刻から現時刻までの経過時間を算出する。ドライバ１３０は、優先度設定テーブル１１３に登録されているパラメータ値と経過時間とを式（２）に設定して、チェイン有り用キューに格納されている先頭のコネクション要求の優先度を算出する。
【０１１６】
また、ドライバ１３０は、チェイン無し用キューに格納されている先頭のコネクション要求の受領時刻から現時刻までの経過時間を算出する。ドライバ１３０は、優先度設定テーブル１１３に登録されているパラメータ値と経過時間とを式（３）に設定して、チェイン無し用キューに格納されている先頭のコネクション要求の優先度を算出する。
【０１１７】
（Ｓ３７）ドライバ１３０は、チェイン有り用キューに格納されている先頭のコネクション要求の優先度とチェイン無し用キューに格納されている先頭のコネクション要求の優先度とを比較する。ドライバ１３０は、チェイン無し用キューに格納されている先頭のコネクション要求の優先度がチェイン有り用キューに格納されている先頭のコネクション要求の優先度よりも高いか否かを判定する。高い場合、ドライバ１３０は、処理をステップＳ３３に進める。低い場合、ドライバ１３０は、処理をステップＳ３８に進める。
【０１１８】
（Ｓ３８）ドライバ１３０は、コマンド管理テーブル１１１を参照し、チェイン有り用キューに格納されている先頭のコネクション要求が格納されている位置を特定する。ドライバ１３０は、特定した位置に格納されているコネクション要求を取り出す。
【０１１９】
（Ｓ３９）ドライバ１３０は、ステップＳ３３またはステップＳ３８で取り出したコネクション要求に対するＡＣＣ応答をストレージ装置２００に送信する。そして、処理を終了する。これにより、ドライバ１３０は、取り出したコネクション要求のコネクションを確立することができる。
【０１２０】
第２の実施の形態によれば、ドライバ１３０は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がない場合、コマンドチェインのコネクション要求をチェイン有り用キューから優先して取り出してコネクションを確立する。これにより、業務サーバ１００は、コマンドチェインのコネクション要求をタイムアウトから回避できる。
【０１２１】
また、ドライバ１３０は、コマンドチェインのコネクション要求のタイムアウト時間までに余裕がある場合、コマンドチェイン以外のコネクション要求をチェイン無し用キューから優先して取り出してコネクションを確立する。このように、ドライバ１３０は、コネクションの確立時間が短いコネクション要求を優先して確立する。これにより、業務サーバ１００は、コマンドチェインのコネクション要求がタイムアウトになる可能性が高くなるまでの間、多くのコマンドチェイン以外のコネクション要求に応えることができる。そのため、業務サーバ１００は、コマンドチェイン以外のコネクション要求に対してＢｕｓｙ応答などを実行する可能性を低くできる。よって、業務サーバ１００は、スループットの改善を図ることができる。
【０１２２】
よって、業務サーバ１００は、タイムアウトを回避しつつ、スループットの改善を図ることができる。
また、第１の実施の形態の情報処理は、ネットワーク接続制御装置２に用いられるプロセッサに、プログラムを実行させることで実現できる。第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
【０１２３】
例えば、プログラムを記録した記録媒体は、プログラムを流通させることで配布することができる。また、アクセス制御部１２０およびドライバ１３０に相当する機能を実現するプログラムは、別個のプログラムとして各プログラムを別個に配布することができる。アクセス制御部１２０およびドライバ１３０の機能は、別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、ＲＡＭ１０２やＨＤＤ１０３に格納し（インストールし）、記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１２４】
１  情報処理システム
２，３  ネットワーク接続制御装置
４  伝送路
５  第１の記憶部
６  第２の記憶部
６ａ  確立待ち時間情報格納部
６ｂ  負荷情報格納部
７  制御部
【図１】
2018005266.tif 000003
【図２】
2018005266.tif 000004
【図３】
2018005266.tif 000005
【図４】
2018005266.tif 000006
【図５】
2018005266.tif 000007
【図６】
2018005266.tif 000008
【図７】
2018005266.tif 000009
【図８】
2018005266.tif 000010
【図９】
2018005266.tif 000011
【図１０】
2018005266.tif 000012
【図１１】
2018005266.tif 000013
【図１２】
2018005266.tif 000014
【図１３】
2018005266.tif 000015
【図１４】
2018005266.tif 000016
【図１５】
2018005266.tif 000017
【図１６】
2018005266.tif 000018
【図１７】
2018005266.tif 000019