(57)【要約】  自装置の負荷軽減を可能とする情報処理装置を提供する。  情報処理装置は、送受信部と、測定部と、判定部と、遅延挿入部と、実行部と、を備える。送受信部は、クライアントからのリクエストを受信し、リクエストに対する処理結果をクライアントに送信する。測定部は、リクエストが受信されてから処理結果が送信されるまでの応答時間を測定する。判定部は、応答時間が閾値を超過しているか否かを判定する。遅延挿入部は、応答時間が閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵ（Central Processing Unit）リソースの割り当てを所定期間停止するように、ＣＰＵスケジューラに指示する。実行部は、所定期間に、応答時間が閾値を超過しているリクエストを処理しているプロセスの応答時間を短くするための予め定めた処理である構成変更機能を実行する。
2017022233.tif 000002
【特許請求の範囲】
【請求項１】
クライアントからのリクエストを受信し、前記リクエストに対する処理結果を前記クライアントに送信する送受信手段と、
前記リクエストが受信されてから前記処理結果が送信されるまでの応答時間を測定する測定手段と、
前記応答時間が閾値を超過しているか否かを判定する判定手段と、
前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵ（Central Processing Unit）リソースの割り当てを所定期間停止するように、ＣＰＵスケジューラに指示する、遅延挿入手段と、
前記所定期間に、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスの応答時間を短くするための予め定めた処理である構成変更機能を実行する、実行手段と、
を備える、情報処理装置。
【請求項２】
前記ＣＰＵリソースの割り当てを停止するプロセスに対応するプロトコルのタイムアウト値に基づき、複数の前記構成変更機能のなかから、前記実行手段が実行する前記構成変更機能を選択する、選択手段をさらに備える請求項１の情報処理装置。
【請求項３】
前記遅延挿入手段は、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵリソースの割り当てを、前記タイムアウト値に相当する期間、停止するように前記ＣＰＵスケジューラに指示する、請求項２の情報処理装置。
【請求項４】
前記選択手段は、前記複数の構成変更機能のなかから前記タイムアウト値以内に実行が終了する前記構成変更機能を選択する、請求項２又は３の情報処理装置。
【請求項５】
前記選択手段は、前記複数の構成変更機能のうち、前記タイムアウト値以内に実行が終了し、且つ、実行時間が最大の前記構成変更機能を選択する、請求項２乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記応答時間が前記閾値を超過している場合に、
前記遅延挿入手段に対し、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵリソースの割り当ての停止を指示することと、
前記選択手段に対し、前記複数の構成変更機能のなかから実行時間が短い順に前記構成変更機能の選択及び実行を指示することと、
前記応答時間が前記閾値を超過していたリクエストを処理していたプロセスの応答時間が、前記閾値を超過しているか否かを判定することと、
を繰り返すフィードバック制御手段をさらに備える、請求項２乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記リクエストを処理するプロトコルのタイムアウト値を、オペレーティングシステムの所定領域を参照する、又は、前記リクエストに係るパケットの所定領域を参照することで取得するプロトコル分析手段をさらに備える、請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記測定手段は、
前記クライアントから受信したリクエストから、前記リクエストを識別するリクエストＩＤを生成し、前記リクエストＩＤと前記クライアントから受信したリクエストの到着時刻を関連付け、処理中リストに登録する、リクエスト記録手段と、
前記処理中リストに登録された前記到着時刻と、前記処理結果を前記クライアントに送信する時刻と、に基づいて、前記応答時間を計算する、応答時間計算手段と、
を含む、請求項１乃至７のいずれか一項に記載の情報処理装置。
【請求項９】
クライアントからのリクエストを受信し、前記リクエストに対する処理結果を前記クライアントに送信し、
前記リクエストが受信されてから前記処理結果が送信されるまでの応答時間を測定し、
前記応答時間が閾値を超過しているか否かを判定し、
前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵ（Central Processing Unit）リソースの割り当てを所定期間停止するように、ＣＰＵスケジューラに指示し、
前記所定期間に、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスの応答時間を短くするための予め定めた処理である構成変更機能を実行する、
ことを含む、リクエスト処理遅延制御方法。
【請求項１０】
クライアントからのリクエストを受信し、前記リクエストに対する処理結果を前記クライアントに送信する処理と、
前記リクエストが受信されてから前記処理結果が送信されるまでの応答時間を測定する処理と、
前記応答時間が閾値を超過しているか否かを判定する処理と、
前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵ（Central Processing Unit）リソースの割り当てを所定期間停止するように、ＣＰＵスケジューラに指示する処理と、
前記所定期間に、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスの応答時間を短くするための予め定めた処理である構成変更機能を実行する処理と、
を、情報処理装置に搭載されたコンピュータに実行させるプログラムを格納する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、リクエスト処理遅延制御方法及びプログラムに関する。特に、他装置からリクエストを受け付けて処理する情報処理装置、リクエスト処理遅延制御方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１の図１において、通信サーバの負荷を分散するシステム（リクエスト処理遅延制御システム）の一例が開示されている。特許文献１の図１に示されるシステムは、通信サーバ（符号１９）とＬＡＮ（Local Area Network；符号９）と、通信回線（ホスト接続回線；符号１０）から構成されている。さらに、通信サーバは、通信サーバ計算機本体（符号１）、サーバ情報データベース（符号１６）、定義ファイル（符号１７）、ＬＡＮ制御装置（符号７）、回線制御装置（符号８）から構成される。通信サーバ計算機本体は、管理ユーティリティー（符号１４）、時間計測／負荷監視プログラム（符号１３）、クライアント制御プログラム（符号４）、サーバ制御プログラム（符号１２）、ＯＳ（Operating System；符号２）から構成されている。さらに、ＯＳは、ＬＡＮ制御プログラム（符号５）、回線制御プログラム（符号６）から構成されている。また、クライアント制御プログラム、通信制御プログラム、ＬＡＮ制御プログラム、回線制御プログラムは、時間情報採取手段（符号１５）をそれぞれ備える。【０００３】
上記構成を有するシステムは、概略以下のように動作する。上記システムでは、各プログラムに備えられた時間情報採取手段を用いて通信処理速度が計測される。その際、通信処理速度は、次のように計測される。各プログラムは、リクエストが各プログラムを通過する際、時間情報採取手段によって、通過時刻を記録する。そして、プログラムから他のプログラムへリクエストが通過する際に通過時刻の差分を通信処理速度とする。例えば、クライアント制御プログラムからＬＡＮ制御プログラムへリクエストが通過する際には、クライアント制御プログラムがリクエストをＬＡＮ制御プログラムへ渡す時刻を記録し、次にＬＡＮ制御プログラムはＬＡＮ制御装置へリクエストを送信する時刻を記録する。そして、それらの差分を計算することによって、ＬＡＮ制御プログラムが消費した時間が得られる。そして、当該通信処理速度が予め設定した負荷の上限と比較される。上限値を超えると、ＬＡＮ上の他のサーバの内から、予め定めた順序に従って、通信サーバの機能を代替する代替サーバを選択して稼動させる。このように、多数のクライアントからの処理の要求が同時に発生し通信サーバに過負荷が発生しそうになった際にそれを未然に防ぎ、システム全体のスループット、処理能力の向上を図ると共にシステム規模の拡大／縮小に柔軟に対応可能としている。【０００４】
特許文献２には、サーバの応答時間を利用した負荷分散装置が開示されている。特許文献２には、サーバからのパケットに関するキャプチャデータからモニタされる応答時間と、設定された応答時間と、を比較し、応答時間の遅延を検出することが記載されている（段落［００２４］）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−１０６３８１号公報（図１）
【特許文献２】特開２０１１−１９７７９６号公報
【特許文献３】特開２００６−１９５７０９号公報
【特許文献４】特開２０００−２９５３５３号公報
【特許文献５】特開平０５−０２８０７２号公報
【特許文献６】国際公開第２０１１／１１１２３０号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。【０００７】
特許文献１の図１に開示されたシステムには、以下の問題点が存在する。【０００８】
特許文献１のシステムでは、サーバが高負荷状態になると、構成変更に要する処理（時間計測、閾値超過判断、代替サーバ選択、代替サーバの稼働等）に必要なリソースを確保することができないという問題がある。その理由は、構成変更に必要なＣＰＵ（Central Processing Unit）リソースをリクエスト処理（クライアントからのリクエストに対応する処理）に費やしているためである。具体的には、通信サーバが、時間情報を計測し、そこから通信処理速度を計算し、さらに閾値を超過しているかどうかを判定する。閾値を超えている場合に、代替サーバを選択し稼働させるという一連の構成変更処理を実行するには、それらの処理に必要なＣＰＵ時間（プロセスへのＣＰＵリソースの割り当て）を確保する必要がある。しかしながら、サーバが高負荷な状態だと、上記構成変更に必要なＣＰＵリソースをリクエスト処理プログラム自身が消費することになる。よって、通信サーバでは、構成変更に必要なＣＰＵリソースを確保することができず、構成変更が終了しないという状態になる。【０００９】
なお、特許文献２は、負荷分散装置（ロードバランサ）に関する技術を開示するものであり、装置（例えば、通信サーバ）自身の負荷を観測し、その負荷を分散する特許文献１の技術とは異なるものである。つまり、特許文献２では負荷分散装置からみた他の装置（通信サーバ）の負荷を観測しているが、特許文献１では通信サーバ自身の負荷を観測している。従って、特許文献２の開示する技術を特許文献１に開示された技術に適用することはできない。【００１０】
以上の状況を鑑み、本発明は、自装置の負荷軽減を可能とする、情報処理装置、リクエスト処理遅延制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の視点によれば、クライアントからのリクエストを受信し、前記リクエストに対する処理結果を前記クライアントに送信する送受信部と、前記リクエストが受信されてから前記処理結果が送信されるまでの応答時間を測定する測定部と、前記応答時間が閾値を超過しているか否かを判定する判定部と、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵ（Central Processing Unit）リソースの割り当てを所定期間停止するように、ＣＰＵスケジューラに指示する、遅延挿入部と、前記所定期間に、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスの応答時間を短くするための予め定めた処理である構成変更機能を実行する、実行部と、を備える、情報処理装置が提供される。【００１２】
本発明の第２の視点によれば、クライアントからのリクエストを受信し、前記リクエストに対する処理結果を前記クライアントに送信するステップと、前記リクエストが受信されてから前記処理結果が送信されるまでの応答時間を測定するステップと、前記応答時間が閾値を超過しているか否かを判定するステップと、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵ（Central Processing Unit）リソースの割り当てを所定期間停止するように、ＣＰＵスケジューラに指示するステップと、前記所定期間に、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスの応答時間を短くするための予め定めた処理である構成変更機能を実行するステップと、を含む、リクエスト処理遅延制御方法が提供される。【００１３】
本発明の第３の視点によれば、クライアントからのリクエストを受信し、前記リクエストに対する処理結果を前記クライアントに送信する処理と、前記リクエストが受信されてから前記処理結果が送信されるまでの応答時間を測定する処理と、前記応答時間が閾値を超過しているか否かを判定する処理と、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵ（Central Processing Unit）リソースの割り当てを所定期間停止するように、ＣＰＵスケジューラに指示する処理と、前記所定期間に、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスの応答時間を短くするための予め定めた処理である構成変更機能を実行する処理と、を情報処理装置に搭載されたコンピュータに実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（non-transient）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１４】
本発明の各視点によれば、自装置の負荷軽減を可能とすることに寄与する情報処理装置、リクエスト処理遅延制御方法及びプログラムが、提供される。
【図面の簡単な説明】
【００１５】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係る情報処理装置の内部構成の一例示す図である。
【図３】第１の実施形態に係るシステム制御部の内部構成の一例を示す図である。
【図４】リクエスト応答時間測定部の内部構成の一例を示す図である。
【図５】リクエストＩＤの作成方法を説明するための図である。
【図６】処理中リストの一例を示す図である。
【図７】アプリケーション情報の一例を示す図である。
【図８】構成変更機能リストの一例を示す図である。
【図９】プロトコルタイムアウト表の一例を示す図である。
【図１０】第１の実施形態に係るシステムの全体動作の一例を示すフローチャートである。
【図１１】リクエスト記録部の動作の一例を示すフローチャートである。
【図１２】応答時間計算部と閾値超過判定部の動作の一例を示すフローチャートである。
【図１３】処理遅延制御部の動作の一例を示すフローチャートである。
【図１４】第２の実施形態に係るシステム制御部の内部構成の一例を示す図である。
【図１５】第２の実施形態に係るアプリケーション情報の一例を示す図である。
【図１６】第２の実施形態に係るプロトコル分析部の動作の一例を示すフローチャートである。
【図１７】第３の実施形態に係るシステム制御部の内部構成の一例を示す図である。
【図１８】第３の実施形態に係るリクエスト応答時間測定部の動作の一例を示すフローチャートである。
【図１９】処理遅延挿入部、フィードバック制御部及び閾値超過判定部の動作の一例を示すフローチャートである。
【図２０】構成変更機能選択部と構成変更機能実行部の動作の一例を示すフローチャートである。
【図２１】オペレーティングシステムにＬＩＮＵＸを適用した場合の一構成例を示す図である。
【発明を実施するための形態】
【００１６】
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【００１７】
一実施形態に係る情報処理装置２００は、送受信部２０１と、測定部２０２と、判定部２０３と、遅延挿入部２０４と、実行部２０５と、を備える。送受信部２０１は、クライアントからのリクエストを受信し、リクエストに対する処理結果をクライアントに送信する。測定部２０２は、リクエストが受信されてから処理結果が送信されるまでの応答時間を測定する。判定部２０３は、応答時間が閾値を超過しているか否かを判定する。遅延挿入部２０４は、応答時間が閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵ（Central Processing Unit）リソースの割り当てを所定期間停止するように、ＣＰＵスケジューラに指示する。実行部２０５は、所定期間に、応答時間が閾値を超過しているリクエストを処理しているプロセスの応答時間を短くするための予め定めた処理である構成変更機能を実行する。
【００１８】
情報処理装置２００は、例えば、通信リクエストが当該装置に多数到着し、その負荷が増大した場合に、負荷を低減するための処理である構成変更機能を実行する。その際、構成変更機能自身がＣＰＵリソースを必要とするため、情報処理装置２００は、構成変更機能の実行余地を作り出すため、負荷が増大しているプロセス（アプリケーション）へのＣＰＵリソース割り当てを停止する。このように、情報処理装置２００は、リクエスト処理を一時的に停止することで、構成変更に必要なＣＰＵリソースを確保し、自装置（情報処理装置２００）の負荷を低減する。
【００１９】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
【００２０】
［第１の実施の形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００２１】
［構成の説明］
図２は、第１の実施形態に係る情報処理装置１の内部構成の一例を示す図である。図２を参照すると、情報処理装置１には、ＣＰＵ１０と、ＨＤＤ（Hard Disk Drive）等からなる記憶装置２０と、ネットワークインターフェイス３０と、入出力インターフェイス４０と、が含まれている。なお、情報処理装置１の内部に含まれる各部は、内部バスにより接続されており、相互に通信可能に構成されている。
【００２２】
ＣＰＵ１０は、情報処理装置１の全体を制御し、アプリケーションが利用する基本機能を提供するシステム制御部１００を実現する。システム制御部１００は、オペレーティングシステム（ＯＳ；Operating System）に相当し、当該オペレーティングシステム上にてアプリケーションが実行される。なお、情報処理装置１の用途を限定する趣旨ではないが、第１の実施形態では、情報処理装置１は各種ネットワークサービスを提供する通信サーバとして運用されることを想定し、以下の説明を行う。
【００２３】
ネットワークインターフェイス３０は、情報処理装置１と接続されたネットワークに対するインターフェイスであり、ネットワークインターフェイスカード（ＮＩＣ；Network Interface Card）等に相当する。また、入出力インターフェイス４０は、入出力装置（例えば、キーボードやディスプレイ等）に対するインターフェイスである。
【００２４】
図３は、システム制御部１００の内部構成の一例を示す図である。図３を参照すると、システム制御部１００は、リクエスト送受信部１０１と、リクエスト応答時間測定部１０２と、閾値超過判定部１０３と、処理遅延制御部１０４と、ＣＰＵスケジューラ１０５と、構成変更機能実行部１０６と、構成変更機能群１０７と、を備える。さらに、処理遅延制御部１０４は、処理遅延挿入部１１１と構成変更機能選択部１１２から構成される。構成変更機能群１０７は、Ｎ個の構成変更機能１０７−１〜１０７−Ｎ（但し、Ｎは正の整数且つ構成変更機能の最大数）から構成される。また、処理遅延制御部１０４等の各部は、アプリケーション情報１２１と、構成変更機能リスト１２２と、プロトコルタイムアウト表１２３と、にアクセス可能に構成されている。なお、図３に示すアプリケーション情報１２１、構成変更機能リスト１２２及びプロトコルタイムアウト表１２３の各種情報は、記憶装置２０に格納された情報であるが、理解の容易のため図３に図示している。
【００２５】
上記の各部（システム制御部１００をなす各モジュール、処理手段）は、それぞれ概略次のように動作する。
【００２６】
リクエスト送受信部１０１は、リクエストを送受信するための手段である。即ち、リクエスト送受信部１０１は、クライアントからのリクエストに係るパケットを受信し、当該リクエストに対する処理結果を含むパケットをクライアントに送信する。より具体的には、リクエスト送受信部１０１は、受信したリクエストを、対応するアプリケーションに引き渡す。または、リクエスト送受信部１０１は、アプリケーションにより処理された結果をクライアントに向けて送信する。さらに、リクエスト送受信部１０１は、受信したリクエストをリクエスト応答時間測定部１０２に引き渡す、又は、アプリケーションにより処理された結果をクライアントに送信する前にリクエスト応答時間測定部１０２に応答時間の測定を指示する。
【００２７】
なお、リクエストには、サーバプロセスが提供するサービスを利用したいユーザがネットワークを利用して送信する要求が含まれる。より具体的には、ＷＥＢ（ウェブ）リクエストやＳＩＰ（Session Initiation Protocol）リクエスト等が該当する。ＷＥＢリクエストは、通常、インターネット上のサーバが提供するウェブページを閲覧したい場合に、ユーザがウェブページの情報を送信するようにＷＥＢサーバに対して要求することを示す。また、ＳＩＰは、主に音声通話の開始処理に用いられるプロトコルである。例えば、あるユーザ（送信側ユーザ）が他のユーザ（着信側ユーザ）と音声通話を開始したい場合、送信側ユーザは、ＳＩＰリクエストをＳＩＰサーバに送信する。送信側ユーザは受け取ったＳＩＰリクエストの内容を確認し、着信側ユーザへ送信側ユーザに通話要求があることを通知する。
【００２８】
リクエスト応答時間測定部１０２は、リクエストが受信されてから処理結果がクライアントに送信されるまでの応答時間を測定する手段である。つまり、リクエスト応答時間測定部１０２は、リクエストの応答時間として、サーバプロセス（サーバ機能を実現するアプリケーション）がリクエストを受け取った時点から、当該リクエストの処理結果がユーザに送信される（サーバからの送出が完了することを指す）までの時間を測定している。
例えば、ＷＥＢリクエストであれば、ＷＥＢサーバ（情報処理装置１により実現されるＷＥＢサーバ）がＷＥＢリクエストを受け取った時点から、ウェブページ情報をユーザへ送出完了するまでの時間がリクエストの応答時間に該当する。また、ＳＩＰリクエストであれば、ＳＩＰサーバが送信側ユーザからのＳＩＰリクエストを受け取ってから当該リクエストを着信側ユーザに送出するまでの時間がリクエストの応答時間に該当する。なお、受信リクエストと結果送出は同じ順序で実行されるとは限らない。つまり、サーバは、受信したリクエストのうち、処理が終了したものから順に結果を送出する。例えば、リクエストがＡ、Ｂ、Ｃ、Ｄ、Ｅの順で到着したとしても、それぞれの処理内容によって、Ｃ、Ｂ、Ａ、Ｅ、Ｄの順で結果が送出される可能性がある。よって、どの受信リクエストがどの送出結果と対になっているか（どの受信リクエストがどの送出結果と対応するか）を認識する必要がある。このような認識（リクエストと結果の関連付け）には、それぞれのプロトコルに用いられる情報を使って識別子を作ることによって実現することができる。
【００２９】
図４は、リクエスト応答時間測定部１０２の内部構成の一例を示す図である。図４を参照すると、リクエスト応答時間測定部１０２は、リクエスト記録部１３１と、応答時間計算部１３２と、から構成される。なお、リクエスト記録部１３１は、記憶装置２０に格納された処理中リスト１３３にアクセス可能に構成されている。
【００３０】
リクエスト記録部１３１は、到着したリクエストに関して、リクエストそれぞれに一意な識別子（以下、リクエストＩＤ（Identifier）と表記する）を作成して、当該リクエストの到着時刻と一緒に処理中リスト１３３に記録する手段である。即ち、リクエスト記録部１３１は、クライアントから受信したリクエストから、リクエストを識別するリクエストＩＤを生成し、リクエストＩＤとクライアントから受信したリクエストの到着時刻を関連付けて、処理中リストに登録する。
【００３１】
図５は、リクエストＩＤの作成方法を説明するための図である。図５（ａ）は、ＳＩＰプロトコルのヘッダ情報を表している。ＳＩＰによるリクエストには、ＳＩＰヘッダ中のＣａｌｌ−ＩＤとＣｓｅｑがそれぞれのリクエストごとに一意に設定される。また、処理結果の返信にもＳＩＰヘッダ情報の中に同じＣａｌｌ−ＩＤとＣｓｅｑが付与される。これらを利用し、Ｃａｌｌ−ＩＤとＣｓｅｑに係る情報を用いて、図５（ｂ）に示すようなリクエストＩＤを作成することにより、受信リクエストと送出結果の対（対応関係）を識別することが可能となる。なお、図５（ｂ）の例では、Ｃａｌｌ−ＩＤとＣｓｅｑを連結させ、リクエストＩＤが生成されている。
【００３２】
リクエスト記録部１３１は、受信したリクエストからリクエストＩＤを生成する。さらに、当該リクエストの処理結果が要求元ユーザに送出されるまで当該リクエストＩＤは処理中リスト１３３により保持されるので、リクエスト記録部１３１は受信時刻と送出時刻の差からリクエストの応答時間を算出する。
【００３３】
処理中リスト１３３は、到着したリクエストの一覧を記載したリストである。図６は、処理中リスト１３３の一例を示す図である。図６に示すとおり、処理中リスト１３３は、ポート番号表１４１とリクエスト表１４２（図６には、リクエスト表１４２−１、１４２−２を表記）と、からなる構成（構造）を有する。
【００３４】
ポート番号表１４１は、ポート番号１４３とリクエスト表番号１４４の組み合わせをエントリとして持つリストである。
【００３５】
リクエスト表１４２は、リクエストＩＤ１４５（図６には、リクエストＩＤ１４５−１、１４５−２を表記）と到着時刻１４６（図６には、到着時刻１４６−１、１４６−２を表記）の組み合わせをエントリとして持つリストである。処理中のリクエストは、ポート番号１４３毎に格納される。例えば、ポート番号「５０６０」に到着したリクエストに関し、最初に、リクエスト記録部１３１はリクエストＩＤ１４５を作成する。なお、リクエストＩＤ１４５の作成方法は上述の通りである。
【００３６】
また、リクエスト記録部１３１は、ポート番号表１４１を検索し、同じポート番号１４３と組になるリクエスト表番号１４４を検索する。図６の例では、ポート番号「５０６０」と組になるリクエスト表１４２は、リクエスト表１となる。その後、リクエスト記録部１３１は、リクエスト表１４２の中に既に作成したリクエストＩＤ１４５と到着時刻１４６を組にして格納する。このように、処理中リスト１３３により、ポート番号ごとにリクエストの詳細（リクエストＩＤ、到着時刻）が管理される。
【００３７】
図４に示す応答時間計算部１３２は、リクエストの応答時間を計算するための手段である。具体的には、応答時間計算部１３２は、処理中リスト１３３に登録された到着時刻と、処理結果をクライアントに送信する時刻と、に基づいて、応答時間を計算する。
【００３８】
リクエスト送受信部１０１は、到着したリクエストに対して何らかの処理が実行された後（アプリケーションにより処理された後）、その結果をリクエストの送信元に返信する。リクエスト送受信部１０１は、リクエストの処理結果を送信する前に応答時間計算部１３２を呼び出して（リクエスト応答時間測定部１０２に依頼して）、リクエストの応答時間を計算させる。応答時間の計算に際し、現在時刻がリクエスト処理結果の送信時刻として記録される。次に、応答時間計算部１３２は、当該リクエストのリクエストＩＤを生成する。その後、応答時間計算部１３２は、処理中リクエストの中に上記作成したリクエストＩＤと同じリクエストＩＤ１４５があるかどうかを検索する。同じリクエストＩＤ１４５があれば、応答時間計算部１３２は、当該リクエストＩＤ１４５と組になっている到着時刻１４６を取得し、先に送信時刻として記録された時刻から到着時刻１４６を減算して、減算結果を応答時間とする。応答時間計算部１３２は、応答時間の計算終了後に、リクエスト表１４２から当該リクエストＩＤ１４５に対応するエントリを削除する。そして、応答時間計算部１３２は、応答時間の計算結果を閾値超過判定部１０３に出力する。
【００３９】
図３に示す閾値超過判定部１０３は、リクエストの応答時間が予め設定されている閾値を超過しているか否かを判定する手段である。閾値を超過していたら、閾値超過判定部１０３は、処理遅延制御部１０４に当該リクエスト処理に利用されているアプリケーションの処理を停止するように要求する。アプリケーションの停止に際して、閾値超過判定部１０３は、該当のポート番号を入力情報として処理遅延制御部１０４に引き渡す。なお、閾値超過判定部１０３が利用する閾値は、アプリケーション情報１２１から取得する。
【００４０】
アプリケーション情報１２１は、リクエスト処理を実行するアプリケーションに関する情報を記載したリスト（テーブル情報）である。図７は、アプリケーション情報１２１の一例を示す図である。図７に示すとおり、アプリケーション情報１２１は、ポート番号１５１と、アプリケーション名１５２と、プロセスＩＤ１５３と、使用プロトコル１５４と、閾値１５５と、から構成される。
【００４１】
ポート番号１５１は、当該リクエスト処理に使用されているアプリケーションが利用するポート番号を示す。プロセスＩＤ１５３は、当該アプリケーションを構成するプロセス番号を示す。なお、プロセス番号は１つ以上から構成される。使用プロトコル１５４は、当該アプリケーションがリクエストの送受信に利用しているプロトコルを示す。なお、閾値１５５は、上述のように、閾値超過判定部１０３が参照する情報である。
【００４２】
図７のリストに示すアプリケーション情報１２１の最上段のエントリを例に取り、アプリケーション情報１２１を説明すると、当該エントリのアプリケーションは「Apache」と呼ばれるウェブサーバであり、当該アプリケーションはポート番号「８０」を使ってリクエストを送受信している。また、当該アプリケーションは、プロセス「２２１０、２０１１、２２１２」の３つのプロセスから構成され、プロトコルとして「ＨＴＴＰ（Hyper Text Transfer Protocol）／ＴＣＰ（Transmission Control Protocol）」を使用している。なお、「ＨＴＴＰ／ＴＣＰ」は、ＨＴＴＰプロトコルとＴＣＰプロトコルと呼ばれる２種類のプロトコルを示す。
【００４３】
構成変更機能リスト１２２は、構成変更機能に関する情報を記載したリストである。図８は、構成変更機能リスト１２２の一例を示す図である。図８に示すとおり、構成変更機能リスト１２２は、構成変更機能番号１６１と、構成変更機能名１６２と、構成変更実行時間１６３と、から構成される。
【００４４】
構成変更機能番号１６１は、各構成変更機能に一意に付与された数値である。構成変更機能名１６２は、構成変更機能の名称を指す。構成変更実行時間１６３は、当該構成変更に要する時間を示す。例えば、構成変更機能番号１の「CPU affinity」に係る処理の実行を完了するには２０ミリ秒要することになる。構成変更実行時間１６３は、予め測定しておいた数値を最初に利用しても良いし、その後、本実施形態の実行中に得られた実行時間情報に置き換えても良い。
【００４５】
プロトコルタイムアウト表１２３は、各プロトコルのタイムアウトのデフォルト値（初期値）を記載したリストである。図９は、プロトコルタイムアウト表の一例を示す図である。図９に示すとおり、プロトコルタイムアウト表１２３は、プロトコル名１７１と、タイムアウト値１７２（デフォルトのタイムアウト値）と、から構成されている。
【００４６】
タイムアウト値１７２は、ＲＦＣ（Request for Comments）等に記載の各プロトコル標準タイムアウト値を用いることができる。但し、プロトコルに規定されている数値が存在しない、又は、通常用いられているデフォルトタイムアウト値が存在しない場合には、当該プロトコルのデフォルトタイムアウト値１７２は「０」となる。
【００４７】
図３に示す処理遅延制御部１０４は、主として以下の２つの処理を実行する。第１の処理として、処理遅延制御部１０４は、リクエスト処理に利用されているアプリケーションへの物理ＣＰＵ割り当て（ＣＰＵリソースの割り当て）を一定時間停止する。第２の処理として、処理遅延制御部１０４は、上記アプリケーションを停止している間に実行できる構成変更機能を選択し、当該選択した構成変更機能の実行を構成変更機能実行部１０６に指示する。
【００４８】
処理遅延制御部１０４は、閾値超過判定部１０３からの要求に従って実行される（動作する）。処理遅延制御部１０４によるＣＰＵリソースの割り当て停止と構成変更機能の選択は、アプリケーション情報１２１、構成変更機能リスト１２２、プロトコルタイムアウト表１２３の各種情報を用いて実行される。
【００４９】
処理遅延制御部１０４は、処理遅延挿入部１１１と、構成変更機能選択部１１２と、から構成され、上記２つの処理のうち、処理遅延挿入部１１１は第１の処理を実行し、構成変更機能選択部１１２は第２の処理を実行する。
【００５０】
処理遅延制御部１０４に含まれる処理遅延挿入部１１１は、応答時間が閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵリソースの割り当てを所定期間停止するように、ＣＰＵスケジューラ１０５に指示する手段である。即ち、処理遅延挿入部１１１は、リクエスト処理に利用されているアプリケーション（クライアントからのリクエストを処理しているアプリケーション）へのＣＰＵリソース割り当てを一定時間停止する。
【００５１】
アプリケーションへのＣＰＵリソース割り当ての一時停止には、アプリケーション情報１２１とプロトコルタイムアウト表１２３から得られる情報が用いられる。より具体的には、処理遅延挿入部１１１は、閾値超過判定部１０３から送られてきたポート番号に基づき、アプリケーション情報１２１から当該アプリケーションを構成するプロセスＩＤ１５３を取得する。例えば、閾値超過判定部１０３からポート番号８０番が送信されると、処理遅延制御部１０４（処理遅延挿入部１１１）は、アプリケーション情報１２１からプロセスＩＤとして「２２１０、２０１１、２２１２」を取得する（図７の１行目のエントリ参照）。さらに、処理遅延挿入部１１１は、アプリケーション情報１２１から使用プロトコル１５４を取得する。上記の例では、「ＨＴＴＰ／ＴＣＰ」が取得される。次に、処理遅延挿入部１１１は、プロトコルタイムアウト表１２３から先ほど取得したプロトコルに対応するタイムアウト値１７２を取得する。上記の例では、使用プロトコル１５４は「ＨＴＴＰ」と「ＴＣＰ」から構成されているので、それぞれのタイムアウト値「１８９０００」と「３０００００」がプロトコルタイムアウト表１２３から取得される。その際、処理遅延挿入部１１１は、タイムアウト値１７２が２つ以上存在する場合は、小さい方のタイムアウト値１７２を選択する。上記の例では、タイムアウト値「１８９０００」が選択される。処理遅延挿入部１１１は、取得したタイムアウト値１７２を、構成変更機能選択部１１２に入力する。
【００５２】
また、処理遅延挿入部１１１は、ＣＰＵスケジューラ１０５に対し、閾値が超過したリクエストに関連するプロセスのスケジューリングを、上記取得したタイムアウト値１７２に相当する期間、停止するように指示する。上記の例では、関連するプロセスとして、プロセスＩＤ「２２１０、２０１１、２２１２」のプロセスが該当し、使用プロトコル「ＴＣＰ」のタイムアウト値１７２である「１８９０００ミリ秒」の間、上記プロセスへのＣＰＵリソース割り当て停止がＣＰＵスケジューラ１０５に指示される。
【００５３】
構成変更機能選択部１１２は、処理遅延挿入部１１１から取得したタイムアウト値１７２に基づき、複数の構成変更機能１０７−１〜１０７−Ｎのなかから、構成変更機能実行部１０６に実行させる構成変更機能を選択する手段である。具体的には、構成変更機能選択部１１２は、取得したタイムアウト値１７２と、構成変更機能リスト１２２に格納された情報と、に基づいて、上記タイムアウト値１７２以内に実行可能な構成変更機能を選択する。より詳細には、構成変更機能選択部１１２は、処理遅延挿入部１１１から取得したタイムアウト値１７２以内に実行できる構成変更機能を構成変更機能リスト１２２から選択する。例えば、図８の例では、構成変更機能選択部１１２に入力されたタイムアウト値１７２が「１８９０００」であるので、全ての構成変更がタイムアウト値１７２以内に実行可能であることが分かる。この場合、構成変更機能選択部１１２は、構成変更実行時間１６３が最も大きいものを選択する。つまり、図８の例では、構成変更機能番号１６１が「５」である「Migrate Task」が選択される。その後、構成変更機能選択部１１２は、選択した構成変更機能の実行を、構成変更機能実行部１０６に指示する。このように、処理遅延制御部１０４に含まれる構成変更機能選択部１１２は、当該アプリケーションを停止している間に実行できる構成変更機能を選択し実行する。
【００５４】
処理遅延制御部１０４は、処理遅延挿入部１１１と構成変更機能選択部１１２を用いて、閾値超過判定部１０３により通知された応答時間が所定の閾値を超えているアプリケーション（プロセス）に関し、当該プロセスの使用するプロトコルのタイムアウト値を導き出す。次に、処理遅延制御部１０４は、上記タイムアウト値以内に、変更処理が可能な構成変更機能を選択し、上記プロトコルのタイムアウト値に相当する期間、上記応答遅延を起こしているプロセスへのＣＰＵリソースの割り当てを停止する。
【００５５】
図３に示すＣＰＵスケジューラ１０５は、各プロセスをＣＰＵ１０上で時間を区切って実行する手段である。アプリケーション実行の際には、実行時間がプロセスに対して割り与えられる。各プロセスは、与えられた実行時間の間だけ処理を進めることができる。ＣＰＵスケジューラ１０５は、現在実行中スレッドの実行時間を管理しており、ＣＰＵスケジューラ１０５は、処理遅延挿入部１１１から送られてきた時間だけ該当プロセスにＣＰＵ時間を割り当てないように動作する。例えば、上記の例では、プロセスＩＤ１５３が「２２１０、２０１１、２２１２」のプロセスに対して「１８９０００」ミリ秒（プロトコルＴＣＰのタイムアウト値１７２）の間はＣＰＵ時間が割り当てられない。
【００５６】
構成変更機能実行部１０６は、構成変更機能選択部１１２によって選択された構成変更機能を実行するための手段である。構成変更機能選択部１１２からは、構成変更機能番号１６１、又は、構成変更機能名１６２が送られてくる。構成変更機能実行部１０６は、当該情報を使って構成変更機能群１０７から該当する構成変更機能を選択して実行する。
【００５７】
構成変更機能群１０７は、複数の構成変更機能（機能ブロック）の集合である。なお、構成変更機能とは、上述のとおり、制御対象のアプリケーション、ＣＰＵリソースを用いるプロセスの応答時間を短くするための予め定めた処理である。構成変更機能群１０７には、構成変更機能１０７−１〜構成変更機能１０７−Ｎまで存在する。Ｎは構成変更機能の最大数であり、構成変更機能リスト１２２のエントリ数と一致する。構成変更機能はそれぞれが実行可能なプログラムであることを想定する。
【００５８】
上記説明した各モジュール（処理手段）は、初めに、リクエスト処理の応答時間が閾値１５５を超過したときに動作を開始し、閾値１５５を超過したリクエストを処理しているアプリケーションの実行を、処理遅延挿入部１１１を用いて一時停止する。その上で、一時停止時間内に実行できる構成変更機能を選択／実行することによって、リクエストのタイムアウトを発生させることなく構成変更が実行される。
【００５９】
なお、上記の説明では、処理遅延挿入部１１１がプロセスへのＣＰＵリソース割り当てを停止する時間として、各プロセスのタイムアウト値を用いているが、実際には、当該タイムアウト値よりも若干短い（マージンを取った）時間、各プロセスへのＣＰＵリソースの割り当てを停止するようにＣＰＵスケジューラ１０５に指示し、制御対象のアプリケーションによるタイムアウトを回避するのが望ましい。
【００６０】
［動作の説明］
次に、図１０〜図１３を参照しつつ、第１の実施形態に係るシステムの動作について説明する。
【００６１】
図１０は、第１の実施形態に係るシステムの全体動作の一例を示すフローチャートである。
【００６２】
ステップＳ０１において、リクエストの応答時間が測定される。測定にはリクエスト応答時間測定部１０２が用いられる（リクエスト応答時間測定部１０２が動作する）。
【００６３】
ステップＳ０２において、当該リクエストの応答時間が閾値１５５を超えたか否かが判定される。当該判定には、閾値超過判定部１０３が用いられる。
【００６４】
リクエスト応答時間が閾値１５５を超過していれば（ステップＳ０３、Ｙｅｓ分岐）、処理遅延制御部１０４は、アプリケーション情報１２１とプロトコルタイムアウト表１２３から当該リクエストのタイムアウト値を取得する（ステップＳ０４）。リクエスト応答時間が閾値１５５を超過していなければ（ステップＳ０３、Ｎｏ分岐）、ステップＳ０１以降の処理が継続される（リクエストの応答時間測定に戻る）。
【００６５】
その後、タイムアウト時間以内に実行できる構成変更機能が構成変更機能リスト１２２から選択され（ステップＳ０５）、上記応答時間の遅延を起こしているプロセスへのＣＰＵリソースの割り当てが、ステップＳ０４にて取得されたタイムアウト値の期間、一時停止されると共に、ステップＳ０５にて選択された構成変更機能が構成変更機能実行部１０６により実行される（ステップＳ０６）。
【００６６】
図１１は、リクエスト応答時間測定部１０２の構成要素であるリクエスト記録部１３１の動作の一例を示すフローチャートである。なお、ここでは、リクエスト記録部１３１の動作前に、リクエスト送受信部１０１によって受け取ったリクエストはリクエスト応答時間測定部１０２に渡されているものとする。
【００６７】
ステップＳ１０１において、リクエスト記録部１３１は、受信したリクエストのポート番号を取得する。具体的には、ポート番号は、送られてきたリクエストに記載されているので、当該記載されたポート番号をリクエスト記録部１３１が取り出す。
【００６８】
次に、ステップＳ１０２において、リクエスト記録部１３１は、受信したリクエストに関するリクエストＩＤ１４５を生成する。リクエストＩＤ１４５の生成は、上述の通りである。
【００６９】
次に、ステップＳ１０３において、リクエスト記録部１３１は、処理中リスト１３３に含まれるポート番号表１４１のポート番号１４３から、対応するリクエスト表番号１４４を取得する。即ち、リクエスト記録部１３１は、処理中リスト１３３のポート番号表１４１を確認することによってリクエスト表番号１４４を取得する。
【００７０】
次に、ステップＳ１０４において、リクエスト記録部１３１は、リクエスト表１４２に当該リクエストのリクエストＩＤ１４５と到着時刻１４６を登録する。
【００７１】
図１２は、応答時間計算部１３２と閾値超過判定部１０３の動作の一例を示すフローチャートである。なお、アプリケーションがリクエスト処理を完了し、処理結果をクライアントに返信する際に応答時間計算部１３２が実行される（動作する）。つまり、応答時間計算部１３２は、これからクライアントに対して送信される処理結果を受信することで実行を開始する。
【００７２】
ステップＳ２０１において、応答時間計算部１３２は、送信する処理結果（リクエスト）のポート番号を取得する。送信するリクエストのポート番号は、当該リクエスト内に記載されているので、記載されたポート番号を用いる。
【００７３】
次に、ステップＳ２０２において、応答時間計算部１３２は、送信するリクエストのリクエストＩＤを生成する。リクエストＩＤの生成方法は上述の通りである。
【００７４】
次に、ステップＳ２０３において、応答時間計算部１３２は、先ほど取得したポート番号に一致するポート番号をリクエスト表１４２から検索する。応答時間計算部１３２は、処理中リスト１３３のポート番号表１４１から、取得したポート番号とポート番号１４３が一致するエントリを検索してリクエスト表番号１４４を検索し、当該リクエスト表番号１４４を有するリクエスト表１４２を取得する。
【００７５】
次に、ステップＳ２０４において、応答時間計算部１３２は、当該リクエスト表１４２に上記作成したリクエストＩＤ１４５と同じリクエストＩＤ１４５があるかどうか確認する。
【００７６】
送信予定のリクエストのリクエストＩＤ１４５と同じリクエストＩＤ１４５がリクエスト表１４２に存在する場合は（ステップＳ２０５、Ｙｅｓ分岐）、現在時刻から到着時刻１４６を減算して応答時間を計算する（ステップＳ２０６）。
【００７７】
送信予定のリクエストのリクエストＩＤ１４５と同じリクエストＩＤ１４５がリクエスト表１４２に存在しない場合は（ステップＳ２０５、Ｎｏ分岐）、処理が終了する。
【００７８】
次に、ステップＳ２０７において、応答時間計算部１３２は、当該リクエスト表１４２から同一リクエストＩＤ１４５のエントリを削除する。
【００７９】
次に、ステップＳ２０８において、応答時間計算部１３２は、応答時間を閾値超過判定部１０３に通知する。
【００８０】
閾値超過判定部１０３は、送られてきた応答時間が閾値１５５を超過していると判断した場合（ステップＳ２０９、Ｙｅｓ分岐）、処理遅延制御部１０４の実行を開始する（ステップＳ２１０）。その後、閾値超過判定部１０３は、閾値超過判定を停止する（ステップＳ２１１）。
【００８１】
応答時間が閾値１５５を超過していない場合には（ステップＳ２０９、Ｎｏ分岐）、閾値超過判定部１０３は処理を終了する。その後、応答時間計算部１３２と閾値超過判定部１０３は、他のアプリケーションに関する応答時間が閾値１５５を超過しているか否かを監視し続ける。
【００８２】
図１３は、処理遅延制御部１０４の動作の一例を示すフローチャートである。
【００８３】
ステップＳ３０１において、処理遅延制御部１０４は、閾値を超過したリクエストのポート番号１４３から当該リクエストのタイムアウト値（タイムアウト時間）を取得する。
【００８４】
次に、ステップＳ３０２において、処理遅延制御部１０４は、タイムアウト値内に実行でき、且つ、構成変更実行時間が最も大きい構成変更機能を選択する。なお、タイムアウト値１７２の取得方法と構成変更機能の選択方法は上述の通りである。
【００８５】
上記条件に合致する構成変更機能が存在すれば（ステップＳ３０３、Ｙｅｓ分岐）、処理遅延制御部１０４は、プロセスＩＤ１５３をアプリケーション情報１２１から取得し（ステップＳ３０４）、ステップＳ３０１にて取得したタイムアウト値に相当する期間、当該プロセスへのＣＰＵリソース割り当てを停止する（ステップＳ３０５）。なお、アプリケーション情報１２１に含まれるプロセスＩＤ１５３が複数存在する場合は、ステップＳ３０４とステップＳ３０５をプロセスＩＤ１５３の数だけ繰り返すことになる。
【００８６】
次に、処理遅延制御部１０４は、選択した構成変更機能を実行した後（構成変更機能実行部１０６に選択した構成変更機能の実行を指示した後）、一定時間待機する（ステップＳ３０６）。なお、その際の待機時間は当該アプリケーションの通常時の応答時間の２倍を基本として、構成変更機能実行部１０６がリクエスト応答時間測定部１０２から計算するものとする。
【００８７】
その後、閾値超過判定が再開される（ステップＳ３０７）。
【００８８】
以上のように、第１の実施形態に係るシステム制御部１００は、閾値１５５を超過したリクエストを処理しているアプリケーションの実行を、処理遅延挿入部１１１を用いて一時停止する構成を有する。そのため、サーバが高負荷になった場合にでも、構成変更実行に必要なリソースを確保できる。
【００８９】
なお、特許文献１のシステムでは、サーバを追加している間に、リクエストを落とす（リクエストが破棄される）可能性があるという問題がある。その理由は、リクエストの使用するプロトコルによっては、リクエストのタイムアウトが発生するためである。上記構成変更には一定の時間が必要である。一方、リクエストに使用されている通信プロトコルには、「タイムアウト」と呼ばれる数値が規定されている。上述のように、タイムアウトは通信リクエストに対する応答がない場合の動作を決定するための待ち時間のことを指す。例えば、クライアントからサーバへ通信リクエストを送信した時のタイムアウトが１０秒であるとする。この場合、クライアントはサーバからタイムアウトの１０秒以上応答がない場合、何らかのアクションを実行することになる。通常、当該アクションには２種類存在し、１つは再送であり、他の１つはリクエストのエラー終了である。即ち、構成変更に時間がかかり、当該リクエストのタイムアウトを超過すると、リクエストの再送やリクエストのエラー終了が発生する。タイムアウトによりリクエストのエラー終了が発生すると、その後、リクエストが正常に受け付けられなくなる。
【００９０】
このように、特許文献１のリクエスト処理遅延制御システムでは、リクエストのタイムアウトにかかる時間を考慮して構成変更を実行しておらず、且つ、構成変更に想定以上の時間を要することにより、リクエストのタイムアウトによるエラー終了が増えることが想定される。一方、第１の実施形態に係る情報処理装置１のシステム制御部１００は、リクエストの使用するプロトコルのタイムアウトが発生するまでに実行可能な構成変更機能を選択するというように構成されているため、リクエストのタイムアウトを発生させることなく、構成変更が実行できる。即ち、第１の実施形態に係る情報処理装置１は、リクエストを落とすことなく（エラーを生じさせることなく）、構成変更機能を実行できるリクエスト処理遅延制御システムを提供できる。
【００９１】
［第２の実施形態］
次に、第２の実施形態について図面を参照して詳細に説明する。
【００９２】
図１４は、第２の実施形態に係るシステム制御部１００ａの内部構成の一例を示す図である。
【００９３】
図１４を参照すると、第１の実施形態に係るシステム制御部１００と第２の実施形態に係るシステム制御部１００ａの相違点は、プロトコルタイムアウト表１２３が存在しない（当該情報を参照しない）点、アプリケーション情報１２１の構造が異なる点、及び、プロトコル分析部１０８を有する点である。
【００９４】
第２の実施形態に係るアプリケーション情報１２１は、図１５に示すように、使用プロトコル１５４のフィールドに代えて、タイムアウト値１５６に係るフィールドを備える構造を有する。このような構造を採用する理由は、使用プロトコル１５４の規定タイムアウト値（デフォルトタイムアウト値１７２）を使用する代わりに、現在のリクエストで使用されているタイムアウト値１５６を記録するためである。
【００９５】
プロトコルは、当該プロトコルを使用する環境に応じてタイムアウトを変化させる。通常、不安定なネットワークでは、通信遅延が大きくなることがあるので、タイムアウト値１５６を大きくとる場合がある。また、安定したネットワークでは、通信遅延がほとんど生じないので、タイムアウト値１５６を小さくすることで、通信のリアルタイム性を高めることができる。変更されたプロトコルのタイムアウト値１５６は、システム制御部１００ａ内の設定情報（ＯＳ内部の設定情報）として記載されている場合と、送られてくるリクエスト（リクエストに係るパケット）に記載されている場合の２種類があるので、プロトコルに応じて、タイムアウト値１５６の確認場所が変化する。
【００９６】
プロトコル分析部１０８は、プロトコルのタイムアウト値１５６を取得するための手段である。上述の通り、プロトコルのタイムアウト値１５６は、システム制御部１００ａ内の設定情報として記載されている場合と、送られてくるリクエストに係るパケットの所定領域に記載されている場合の２種類が存在する。例えば、ＴＣＰでは、システム制御部１００ａ内の設定情報としてタイムアウト値１５６が記載されている。そこで、プロトコル分析部１０８は、送られてきたリクエストがプロトコルとして何を使用しているかを確認する。その結果、使用されているプロトコルがＴＣＰの場合であれば、プロトコル分析部１０８は、システム制御部１００ａ内の設定情報を確認し、当該プロトコルのタイムアウト値１５６を取得する。なお、システム制御部１００ａ内の設定情報取得方法は、オペレーティングシステムによりそれぞれ異なり、各オペレーティングシステムに適した設定情報取得方法を用いる。
【００９７】
また、例えば、ＳＩＰを例に取ると、送られてくるリクエストにタイムアウト値１５６が記載されているので、当該リクエストで使用されているプロトコルがＳＩＰである場合は、プロトコル分析部１０８は、送られてきたリクエストからタイムアウト値１５６を取得する。取得したタイムアウト値１５６は、アプリケーション情報１２１に格納される。
【００９８】
図１６は、プロトコル分析部１０８の動作の一例を示すフローチャートである。
【００９９】
最初に、リクエスト送受信部１０１がリクエストを受け取ると、当該リクエストの複製（コピー）をプロトコル分析部１０８に提供する（ステップＳ４０１）。次に、プロトコル分析部１０８は、当該リクエストに使用されているプロトコルのタイムアウト値１５６を分析する（ステップＳ４０２）。具体的な分析は、例えば、当該リクエストに使用されているプロトコルを確認し、プロトコル毎に異なる場所から、現在のタイムアウト値１５６を取得することを示す。最後に、プロトコル分析部１０８は、ポート番号毎にタイムアウト値１５６をアプリケーション情報１２１に格納する（ステップＳ４０３）。
【０１００】
以上のように、第２の実施形態では、各プロトコルに標準的に定められたタイムアウト値を使用せず、プロトコル分析部１０８によって、現在使用されているプロトコルのタイムアウト値１５６を取得する。その結果、プロトコルのタイムアウト値変更に応じて、使用する構成変更機能が変更可能となる。
【０１０１】
［第３の実施形態］
次に、第３の実施形態について図面を参照して詳細に説明する。
【０１０２】
図１７は、第３の実施形態に係るシステム制御部１００ｂの内部構成の一例を示す図である。
【０１０３】
図１７を参照すると、第１の実施形態に係るシステム制御部１００と第３の実施形態に係るシステム制御部１００ｂの相違点は、フィードバック制御部１０９が追加された点と、リクエスト応答時間測定部１０２と処理遅延制御部１０４の動作が変更されている点である。
【０１０４】
フィードバック制御部１０９は、リクエストの応答時間が閾値１５５を超過している間、構成変更機能の反復実行を制御するための手段である。第１の実施形態では、リクエストの使用するプロトコルで定義されているタイムアウト値１７２の範囲内で、最も実行時間の長い構成変更機能を選択している。第３の実施形態では、リクエストの応答時間が閾値１５５を超過した場合に、最も実行時間の短い構成変更機能から実行時間の短い順に構成変更機能を実行していき、その一方で応答時間が閾値１５５を超過しているかどうかを適宜確認する。構成変更機能の実行により、リクエストの応答時間が閾値１５５を超過することがなくなった場合に、第３の実施形態に係る実行（処理）を終了する。第３の実施形態では、構成変更機能の反復実行中は、当該アプリケーションへのＣＰＵ時間の割り当ての停止と再開を繰り返すことになる。つまり、当該アプリケーションへのＣＰＵ割り当てを停止し、構成変更機能を選択・実行し、当該アプリケーションへのＣＰＵ割り当てを再開するという動作が繰り返される。
【０１０５】
次に、図１８〜図２０を参照しつつ、第３の実施形態の動作を説明する。
【０１０６】
図１８は、第３の実施形態に係るリクエスト応答時間測定部１０２の動作の一例を示すフローチャートである。図１８において、図１２にて説明した処理と同じ処理には同じ工程名称（ステップ）を付し、その説明を省略する。
【０１０７】
図１８を参照すると、第３の実施形態に係るリクエスト応答時間測定部１０２の処理には、閾値超過判定を停止するステップ（図１２のステップＳ２１１に相当するステップ）が存在しない。なお、処理遅延制御部１０４の実行をすでに開始している場合は、ステップＳ２１０は無視されるものとする。
【０１０８】
図１９は、処理遅延制御部１０４の処理遅延挿入部１１１、フィードバック制御部１０９及び閾値超過判定部１０３の動作の一例を示すフローチャートである。処理遅延制御部１０４とフィードバック制御部１０９は、あるリクエスト処理の応答時間が閾値１５５を超えた場合に実行を開始する。
【０１０９】
初めに、ステップＳ５０１において、処理遅延挿入部１１１により、当該リクエスト処理を担っているアプリケーションのプロセスＩＤ１５３と対応するタイムアウト値がアプリケーション情報１２１から取得される。
【０１１０】
その後、処理遅延挿入部１１１により、フィードバック制御部１０９にタイムアウト値が渡され、フィードバック制御部１０９は現在時刻がタイムアウト時刻に達しているか否かを判定（確認）する（ステップＳ５０２）。具体的には、フィードバック制御部１０９は、上記タイムアウト値を取得した際の時刻にタイムアウト値を加算することでタイムアウト時刻を算出し、当該算出したタイムアウト時刻と現在時刻を比較することで、上記判定処理を行う。
【０１１１】
タイムアウト時刻であれば（ステップＳ５０３、Ｙｅｓ分岐）、処理は終了する。タイムアウト時刻に達していなければ（ステップＳ５０３、Ｎｏ分岐）、処理遅延制御部１０４は、当該プロセス（プロセス群）のＣＰＵ割り当てを停止する（ステップＳ５０４）。
なお、ステップＳ５０２、Ｓ５０３に係るタイムアウト時刻確認処理は、図１９に示すフローチャートの実行開始時に既にタイムアウトを生じているアプリケーション（例えば、タイムアウトが短い機械制御アプリケーション）の存在を前提としたものである。そのため、ある程度長いタイムアウト時間を許容するアプリケーションに限り制御対象とする場合には、上記タイムアウト時刻確認処理は不要である。
【０１１２】
フィードバック制御部１０９は、処理遅延制御部１０４の構成変更機能選択部１１２に構成変更機能の選択及び実行を要求する（ステップＳ５０５）。
【０１１３】
その後、フィードバック制御部１０９は、フィードバック制御部１０９に設定されている時間の間待機する（ステップＳ５０６）。なお、その際の待機時間は、予めユーザによって設定されているものとする。
【０１１４】
その後、構成変更機能選択部１１２は、選択した構成変更機能の実行時間経過後、構成変更機能の実行が終了した旨をフィードバック制御部１０９に通知し、当該通知に従い、フィードバック制御部１０９は、処理遅延挿入部１１１に先ほどＣＰＵ割り当てをしたプロセスのＣＰＵ割り当て再開を要求する（ステップＳ５０７）。
【０１１５】
次に、フィードバック制御部１０９は、リクエストの応答時間が閾値１５５を超過しているか否かを確認する（ステップＳ５０８）。ここで、第３の実施形態では、第１の実施形態とは異なり、リクエストの応答時間が閾値１５５を超過した際に、閾値超過判定部１０３を停止するというステップ（ステップＳ２１１相当のステップ）が存在しない。よって、リクエストが到着している限り、閾値超過判定が実行されており、閾値１５５を超過している場合は、閾値超過判定部１０３に閾値超過を示す情報が存在することになる。フィードバック制御部１０９は、ステップＳ５０８を実行する際に、閾値超過判定部１０３に存在する閾値超過情報を確認する。閾値１５５を超過していなければ（ステップＳ５０９、Ｎｏ分岐）、処理は終了する。閾値１５５を超過している場合は（ステップＳ５０９、Ｙｅｓ分岐）、ステップＳ５０１以降の処理が繰り返される。
【０１１６】
図２０は、構成変更機能選択部１１２と構成変更機能実行部１０６の動作の一例を示すフローチャートである。
【０１１７】
最初に、構成変更機能選択部１１２は、閾値超過したリクエストのポート番号１４３から当該リクエストのタイムアウト値を取得する（ステップＳ６０１）。
【０１１８】
次に、構成変更機能選択部１１２は、タイムアウト値内に実行可能、且つ、構成変更実行時間が最も小さい構成変更機能を選択する（ステップＳ６０２）。
【０１１９】
その際、構成変更機能が存在すれば（ステップＳ６０３、Ｙｅｓ分岐）、構成変更機能実行部１０６により選択された構成変更機能が実行される（ステップＳ６０４）。
【０１２０】
構成変更機能が存在しなければ（ステップＳ６０３、Ｎｏ分岐）、処理は終了する。
【０１２１】
第３の実施形態では、第１の実施形態とは異なり、構成変更機能を選択する際、実行時間が最も小さいものから順に処理を実行し、リクエストの応答時間が閾値１５５を下回れば、その時点で動作を終了する。その結果、最少の構成変更実行時間で応答時間の改善が見込まれる。なお、構成変更機能選択部１１２は、図２０に示す一連の動作を実行している間は、一度選択した構成変更機能は選択しないようにする。つまり、ステップＳ６０２に係る構成変更機能の選択において、タイムアウト値内に実行可能、且つ、構成変更実行時間が最も小さい構成変更機能であっても、一連の処理の中で一度選択された構成変更機能は選択されない。
【０１２２】
以上のように、第３の実施形態では、構成変更機能を選択する際に、実行時間が最も小さいものから順に処理を実行し、構成変更実行の結果、応答時間が閾値１５５を下回った場合に、タイムアウト値を待たずにリクエスト処理を再開する構成を有する。当該構成により、最少時間で応答時間を改善できる構成変更機能が選択可能となる。
【０１２３】
［適用例］
図２１に示すように、システム制御部１００としてＬｉｎｕｘ（リナックス；登録商標、以下同じ）を用いることができる。この場合、リクエスト送受信部１０１として、Ｌｉｎｕｘのカーネル関数であるｎｅｔｉｆ＿ｒｘ関数１０１ａ、ｎｅｔｉｆ＿ｔｘ関数１０１ｂを用いることができる。また、ＣＰＵスケジューラ１０５として、Ｌｉｎｕｘカーネルのｓｃｈｅｄｕｌｅ関数１０５ａを用いることができる。さらに、構成変更機能実行部１０６として、ｂａｓｈシェルスクリプト１０６ａを用いることができる。さらにまた、構成変更機能群１０７として、Ｌｉｎｕｘコマンド群１０７ａは、構成変更に関するＬｉｎｕｘの各種コマンド（ｔａｓｋｓｅｔ、ｎｉｃｅ、ｖｉｒｓｈ  ｍｉｇｒａｔｅ等）から構成される。
【０１２４】
なお、第１〜第３の実施形態にて説明したシステムの構成及び動作は例示であって、種々の変形が可能である。例えば、上記実施形態では、負荷の低減（応答時間の改善）に利用する処理をＣＰＵの制御（構成変更機能；図８に例示する各種処理）を用いて説明したが、閾値を超えた応答時間を改善できるものであれば、ＣＰＵだけに限らず、メモリ制御、ディスク制御、ネットワーク制御なども構成変更機能に含むことができる。例えば、制御対象となるアプリケーションとは別のアプリケーションが大量のネットワーク通信を実行している影響により、制御対象となるアプリケーションの応答時間が閾値を超えた場合は、構成変更機能としてネットワークに関する制御を選択し、ネットワーク使用を制限することにより、制御対象となるアプリケーションの応答時間を改善することもできる。
【０１２５】
情報処理装置１のシステム制御部１００が行う処理は、情報処理装置１に搭載されたコンピュータに、そのハードウェアを用いて、上述した各処理を実行させるコンピュータプログラムにより実現できる。つまり、システム制御部１００が行う機能を何らかのハードウェア、及び／又は、ソフトウェアで実行する手段があればよい。
【０１２６】
さらに、コンピュータの記憶部に、上述したコンピュータプログラムをインストールすることにより、コンピュータにリクエスト処理遅延制御システムを構築することができる。さらにまた、上述したコンピュータプログラムをコンピュータに実行させることにより、コンピュータによりリクエスト処理遅延制御方法を実行することができる。また、そのプログラムは、ネットワークを介してダウンロードするか、或いは、プログラムを記憶した記憶媒体を用いて、更新することができる。
【０１２７】
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、電話サービスを仮想マシンで提供するＮＦＶ（Network Functions Virtualization）の分野において、電話サービスの品質安定化に好適に適用可能である。また、ＷＥＢサービスに関する応答性向上といった用途にも好適である。
【０１２８】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
［付記１］
上述の第１の視点に係る情報処理装置のとおりである。
［付記２］
前記ＣＰＵリソースの割り当てを停止するプロセスに対応するプロトコルのタイムアウト値に基づき、複数の前記構成変更機能のなかから、前記実行部が実行する前記構成変更機能を選択する、選択部をさらに備える付記１の情報処理装置。
［付記３］
前記遅延挿入部は、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵリソースの割り当てを、前記タイムアウト値に相当する期間、停止するように前記ＣＰＵスケジューラに指示する、付記２の情報処理装置。
［付記４］
前記選択部は、前記複数の構成変更機能のなかから前記タイムアウト値以内に実行が終了する前記構成変更機能を選択する、付記２又は３の情報処理装置。
［付記５］
前記選択部は、前記複数の構成変更機能のうち、前記タイムアウト値以内に実行が終了し、且つ、実行時間が最大の前記構成変更機能を選択する、付記２乃至４のいずれか一に記載の情報処理装置。
［付記６］
前記応答時間が前記閾値を超過している場合に、
前記遅延挿入部に対し、前記応答時間が前記閾値を超過しているリクエストを処理しているプロセスに対するＣＰＵリソースの割り当ての停止を指示することと、
前記選択部に対し、前記複数の構成変更機能のなかから実行時間が短い順に前記構成変更機能の選択及び実行を指示することと、
前記応答時間が前記閾値を超過していたリクエストを処理していたプロセスの応答時間が、前記閾値を超過しているか否かを判定することと、
を繰り返すフィードバック制御部をさらに備える、付記２乃至５のいずれか一に記載の情報処理装置。
［付記７］
前記リクエストを処理するプロトコルのタイムアウト値を、オペレーティングシステムの所定領域を参照する、又は、前記リクエストに係るパケットの所定領域を参照することで取得するプロトコル分析部をさらに備える、付記１乃至６のいずれか一に記載の情報処理装置。
［付記８］
前記測定部は、
前記クライアントから受信したリクエストから、前記リクエストを識別するリクエストＩＤを生成し、前記リクエストＩＤと前記クライアントから受信したリクエストの到着時刻を関連付け、処理中リストに登録する、リクエスト記録部と、
前記処理中リストに登録された前記到着時刻と、前記処理結果を前記クライアントに送信する時刻と、に基づいて、前記応答時間を計算する、応答時間計算部と、
を含む、付記１乃至７のいずれか一に記載の情報処理装置。
［付記９］
上述の第２の視点に係るリクエスト処理遅延制御方法のとおりである。
［付記１０］
上述の第３の視点に係るプログラムのとおりである。
［付記１１］
リクエストの応答時間を測定し、
設定した閾値をリクエストの応答時間が超過しているか確認し、
超過していれば、リクエスト処理に利用しているプロトコルのデフォルトタイムアウト時間を取得し、
当該タイムアウト時間内に実行できる最も実行時間の長い構成変更機能を選択・実行すると同時に、アプリケーションの処理を構成変更機能実行中は停止する、
ことを特徴とするリクエスト処理遅延制御方法。
［付記１２］
リクエストに利用されているプロトコルを確認し、
プロトコルに応じて、現在設定されているタイムアウト値を取得し、
アプリケーション情報として記録しておき、
リクエストの応答時間を測定し、
設定した閾値をリクエストの応答時間が超過しているか確認し、
超過していれば、アプリケーション情報に記載されたタイムアウト時間を取得し、
当該タイムアウト時間内に実行できる最も実行時間の長い構成変更機能を選択・実行すると同時に、アプリケーションの処理を構成変更機能実行中は停止する、
ことを特徴とするリクエスト処理遅延制御方法。
［付記１３］
リクエストの応答時間を測定し、
設定した閾値をリクエストの応答時間が超過しているか確認し、
超過していれば、リクエスト処理に利用しているプロトコルのデフォルトタイムアウト時間を取得し、
実行時間の小さいものから順に構成変更機能を選択・実行し、
リクエストの応答時間が閾値を下回るまで、構成変更機能の選択・実行をリクエストのタイムアウト時間に到達するまで繰り返すと同時に、アプリケーションの処理を構成変更機能実行中は停止する、
ことを特徴とするリクエスト処理遅延制御方法。
なお、付記９の形態及び付記１０の形態は、付記１の形態と同様に、付記２の形態〜付記８の形態に展開することが可能である。
【０１２９】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
この出願は２０１５年８月６日に出願された日本出願特願２０１５−１５５９８２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１３０】
１、２００  情報処理装置
１０  ＣＰＵ
２０  記憶装置
３０  ネットワークインターフェイス
４０  入出力インターフェイス
１００、１００ａ、１００ｂ  システム制御部
１０１  リクエスト送受信部
１０１ａ  ｎｅｔｉｆ＿ｒｘ
１０２  リクエスト応答時間測定部
１０２ｂ  ｎｅｔｉｆ＿ｔｘ
１０３  閾値超過判定部
１０４  処理遅延制御部
１０５  ＣＰＵスケジューラ
１０５ａ  ｓｃｈｅｄｕｌｅ関数
１０６  構成変更機能実行部
１０６ａ  ｂａｓｈシェルスクリプト
１０７  構成変更機能群
１０７ａ  Ｌｉｎｕｘコマンド群
１０７−１〜１０７−Ｎ  構成変更機能
１０８  プロトコル分析部
１０９  フィードバック制御部
１１１  処理遅延挿入部
１１２  構成変更機能選択部
１２１  アプリケーション情報
１２２  構成変更機能リスト
１２３  プロトコルタイムアウト表
１３１  リクエスト記録部
１３２  応答時間計算部
１３３  処理中リスト
１４１  ポート番号表
１４２、１４２−１、１４２−２  リクエスト表
１４３、１５１  ポート番号
１４４  リクエスト表番号
１４５、１４５−１、１４５−２  リクエストＩＤ
１４６、１４６−１、１４６−２  到着時刻
１５２  アプリケーション名
１５３  プロセスＩＤ
１５４  使用プロトコル
１５５  閾値
１５６、１７２  タイムアウト値
１６１  構成変更機能番号
１６２  構成変更機能名
１６３  構成変更実行時間
１７１  プロトコル名
２０１  送受信部
２０２  測定部
２０３  判定部
２０４  遅延挿入部
２０５  実行部
【図１】
2017022233.tif 000003
【図２】
2017022233.tif 000004
【図３】
2017022233.tif 000005
【図４】
2017022233.tif 000006
【図５】
2017022233.tif 000007
【図６】
2017022233.tif 000008
【図７】
2017022233.tif 000009
【図８】
2017022233.tif 000010
【図９】
2017022233.tif 000011
【図１０】
2017022233.tif 000012
【図１１】
2017022233.tif 000013
【図１２】
2017022233.tif 000014
【図１３】
2017022233.tif 000015
【図１４】
2017022233.tif 000016
【図１５】
2017022233.tif 000017
【図１６】
2017022233.tif 000018
【図１７】
2017022233.tif 000019
【図１８】
2017022233.tif 000020
【図１９】
2017022233.tif 000021
【図２０】
2017022233.tif 000022
【図２１】
2017022233.tif 000023
【国際調査報告】
2017022233.tif 000024
2017022233.tif 000025
2017022233.tif 000026
2017022233.tif 000027