(57)【特許請求の範囲】
【請求項１】
仮想マシンを仮想的に生成する仮想マシン環境
を備え、
前記仮想マシン環境は、
ネットワークを介して第１の通信リクエストを受信し、前記第１の通信リクエストを前記仮想マシンに送信し、前記仮想マシンが前記第１の通信リクエストを処理することによって生成された第２の通信リクエストを前記ネットワークを介して送信する送受信部と、
前記送受信部が前記第１の通信リクエストを受信した受信時刻と前記送受信部が前記第２の通信リクエストを送信した送信時刻とに基づいて通信処理時間を計算する計算部と、
前記通信処理時間に基づいて通信リクエストをまとめる数を決定する決定部と、を有し、
前記送受信部は、前記決定された数の通信リクエストが到着してから通信リクエストの到着通知を前記仮想マシンに送信する
安定化システム。
【請求項２】
前記仮想マシン環境は、第１の格納部をさらに備え、
前記第１の格納部は、
前記仮想マシンにおける監視対象となっているアプリケーションを示す情報と、
前記第１の通信リクエストと前記第２の通信リクエストとに共通に用いられる識別子と、
前記第１の通信リクエストの受信時刻と、
前記第２の通信リクエストの送信時刻と、
前記受信時刻と前記送信時刻の差分を示す前記通信処理時間と
を格納する請求項１に記載の安定化システム。
【請求項３】
前記仮想マシン環境は、第２の格納部をさらに備え、
前記第２の格納部は、
前記通信処理時間の目標値と、
前記仮想マシンにおける監視対象となっているアプリケーションが処理する通信リクエストの全体に対する、前記通信処理時間が前記目標値を超える通信リクエストの割合を示す劣化率と、
前記劣化率と比較され、前記数を変更するか否かの判断に用いられる閾値と、
前記数と
を格納する請求項１又は２に記載の安定化システム。
【請求項４】
仮想マシンを仮想的に生成するコンピュータ装置が、
ネットワークを介して第１の通信リクエストを受信し、
前記第１の通信リクエストを前記仮想マシンに送信し、
前記仮想マシンが前記第１の通信リクエストを処理することによって生成された第２の通信リクエストを前記ネットワークを介して送信し、
前記仮想マシン環境が前記第１の通信リクエストを受信した受信時刻と前記仮想マシン環境が前記第２の通信リクエストを送信した送信時刻とに基づいて通信処理時間を計算し、
前記通信処理時間に基づいて通信リクエストをまとめる数を決定し、
前記決定された数の通信リクエストが到着してから通信リクエストの到着通知を前記仮想マシンに送信する
ことを含む安定化方法。
【請求項５】
仮想マシンを仮想的に生成するコンピュータ装置であって、
ネットワークを介して第１の通信リクエストを受信し、前記第１の通信リクエストを前記仮想マシンに送信し、前記仮想マシンが前記第１の通信リクエストを処理することによって生成された第２の通信リクエストを前記ネットワークを介して送信する送受信部と、
前記送受信部が前記第１の通信リクエストを受信した受信時刻と前記送受信部が前記第２の通信リクエストを送信した送信時刻とに基づいて通信処理時間を計算する計算部と、
前記通信処理時間に基づいて通信リクエストをまとめる数を決定する決定部と、を有し、
前記送受信部は、前記決定された数の通信リクエストが到着してから通信リクエストの到着通知を前記仮想マシンに送信する
コンピュータ装置。
【請求項６】
仮想マシンを仮想的に生成するコンピュータに、
ネットワークを介して第１の通信リクエストを受信し、
前記第１の通信リクエストを前記仮想マシンに送信し、
前記仮想マシンが前記第１の通信リクエストを処理することによって生成された第２の通信リクエストを前記ネットワークを介して送信し、
前記仮想マシン環境が前記第１の通信リクエストを受信した受信時刻と前記仮想マシン環境が前記第２の通信リクエストを送信した送信時刻とに基づいて通信処理時間を計算し、
前記通信処理時間に基づいて通信リクエストをまとめる数を決定し、
前記決定された数の通信リクエストが到着してから通信リクエストの到着通知を前記仮想マシンに送信する
ことを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リクエスト処理時間を安定化するためのシステム、リクエスト処理時間を安定化するための方法、仮想マシン環境及びプログラムに関する。
【背景技術】
【０００２】
特許文献１は、仮想マシンにおける割り込み処理合成システムの一例を開示している。図１２に示すように、割り込み処理合成システムは、仮想マシン６００、仮想マシン環境７００、仮想ディスク８００、ハードウェア９００、およびディスク９４０を有する。仮想マシン６００は、アプリケーションソフト６１０、ゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）６２０、および仮想ハードウェア６３０を有する。仮想マシン環境７００は、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）７１０、およびＶＭｋｅｒｎｅｌ７２０を有する。ハードウェア９００は、ＣＰＵ９１０、Ｓｔｏｒａｇｅ  Ａｄａｐｔｅｒ９２０、およびメモリ９３０を有する。仮想ディスク８００は仮想マシン環境７００で作成されるソフトウェアエミュレーションされたディスク装置を指す。【０００３】
コンピュータが仮想マシン環境を持たない場合、つまり、アプリケーションと、ＯＳ、ハードウェア９００との組み合わせにおいて、アプリケーションがハードウェア９００に対して入出力を行いたい場合、アプリケーションがＯＳに入出力を要求する。ＯＳはアプリケーションから発行された入出力要求を処理し、ディスク、ネットワークその他の周辺装置に対して入出力を行う。入出力処理のために、一般的にＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）と呼ばれる方法を使用する。ＤＭＡは、あらかじめ決められたメモリ領域と周辺装置との間でＣＰＵ９１０を使わず専用ハードウェア（以下、ＤＭＡハードウェアと呼ぶ）を使ってデータを送受信することを指す。ＯＳは周辺装置への入出力命令をＤＭＡハードウェアに通知する。周辺装置への入出力処理が完了するとＤＭＡハードウェアは、ＣＰＵ９１０に割り込み信号を発行する。ＯＳはＣＰＵ９１０に送られてきた割り込み信号を受け取ると、その周辺装置への入出力が完了したことを認識して結果をアプリケーションに通知する。【０００４】
コンピュータが仮想マシン環境７００を持つ場合、上記仮想マシン環境を持たない場合の入出力処理が、まず仮想マシン６００内で発生し、そして同じ処理が仮想マシン環境７００でも行われる。具体的には、仮想マシン環境７００が作り出す仮想ハードウェア６３０へ仮想マシン上のゲストＯＳ６２０から入出力要求が発行される。そして、この入出力要求は仮想ハードウェア環境から物理マシン上のＯＳ（ＶＭｋｅｒｎｅｌ７２０）に送られて実際の物理装置に対して入出力処理が行われる。【０００５】
複数の仮想マシン６００が、一つの仮想マシン環境７００で実行される。よって、仮想マシン環境７００で実行される入出力処理は、仮想マシン６００の数だけ増える。つまり、１秒間に一台の仮想マシン６００から発行される入出力処理要求の数が１０個だと仮定すると、１０台の仮想マシン７００を実行する仮想マシン環境６００は、１秒間に１００個の入出力要求を処理しなければならない。【０００６】
入出力要求を削減する方法としては、仮想マシン環境７００が、受け取った入出力要求をまとめて処理する方法が有効である。すなわち、仮想マシン環境７００は、仮想マシン６００から発行される入出力要求をそのつど実行するのではなく、決まった数の入出力要求が仮想マシン６００から発行された時点で処理を実行する。具体例として、１秒間に一台の仮想マシン６００から発行される入出力処理要求の数が１０個の場合、仮想マシン環境７００が、１０個の入出力要求を一度に実行する。このような処理を行うことにより、入出力要求を一つずつ実行する場合と比較して、仮想マシン環境７００上のＯＳ（ＶＭｋｅｒｎｅｌ７２０）が周辺装置に対して命令する回数や周辺装置から仮想マシン環境７００上のＯＳ（ＶＭｋｅｒｎｅｌ７２０）に割り込み信号が上がってくる回数を１／１０に減らすことができる。入出力要求をまとめて処理する上記手法のうち、周辺装置から上げられる割り込み信号を一定数まとめて仮想マシン上のＯＳへ通知することを割り込み処理の合成（Ｉｎｔｅｒｒｕｐｔ  Ｃｏａｌｅｓｃｉｎｇ）と呼ぶ。【０００７】
特許文献１に開示の構成を有する仮想マシンにおける割り込み処理合成システムはつぎのように動作する。図１３は、割り込み処理合成システムのフローチャートを示す。まず入出力が完了する（Ｓ１０１）。次に割り込み処理合成の再計算時刻を経過しているかどうか確認する（Ｓ１０２）。再計算時刻を経過していれば（Ｓ１０２においてＹＥＳ）、割り込み処理の合成数を再計算する（Ｓ１０３）。単位時間当たりの入出力処理数（ＩＯＰＳ）の目標値が設定されている。ＩＯＰＳが目標値を下回っていれば、割り込み処理の合成数を減らす。一方、ＩＯＰＳが目標値を上回っていれば割り込み処理の合成数を増やす。次に、実行中のＩ／Ｏ要求数が閾値以内かどうかを確認する（Ｓ１０４）。Ｉ／Ｏ要求数が閾値以内であれば（Ｓ１０４においてＹＥＳ）、割り込み要求の合成数に応じて、要求を配信するか決定する（Ｓ１０５）。Ｉ／Ｏ要求数が閾値以内でなければ（Ｓ１０４においてＮＯ）直ちに割り込み要求を配信する（Ｓ１０７）。次に、割り込みの合成数以上の割り込み信号がある場合（Ｓ１０６においてＹＥＳ）、割り込み要求を配信する（Ｓ１０７）。一方、割り込みの合成数以上の割り込み信号が無いなら（Ｓ１０６においてＮＯ）そのまま処理を終了する。最後に配信時刻を記憶する（Ｓ１０８）。配信時刻は、次の合成数を決定する際に使用される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第２０１０／０２７４９４０号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
このようなシステムの問題点は、優先すべき入出力処理が遅延してしまうということである。その理由は、特許文献１が割り込み処理合成数の判断基準としてＣＩＦ（Ｃｏｍｍａｎｄｓ  ｉｎ  Ｆｌｉｇｈｔ）、ＩＯＰＳ（ＩＯ  Ｐｅｒ  Ｓｅｃｏｎｄ）を使用しているため、割り込み処理を合成する際に、優先すべき入出力処理を除外することができないためである。ＣＩＦは、現在実行中の入出力処理数を表す。ＩＯＰＳは、一秒間当たりの入出力処理回数を指す。ＣＩＦおよびＩＯＰＳはいずれも入出力の総数にたいしての指標である。つまり、個々の入出力処理状況を判断基準にして割り込み処理の合成数を変更することができない。例えば通信処理Ａを実行する仮想マシンＡと通信処理Ｂを実行する仮想マシンＢが同じ仮想マシン環境上で実行されている場合について説明する。通信処理Ａのレイテンシ（処理を要求してから処理結果が返ってくるまでの時間）を短くするため割り込み処理合成数を０個にしたい一方で、通信処理Ｂが大量の入出力処理を仮想マシン環境に要求している場合を想定する。この場合、特許文献１によると、通信処理Ｂによって仮想マシン環境上のＩＯＰＳは上昇し、割り込み処理の合成数は上昇する。この結果から、通信処理Ａの要求（割り込み処理合成数０）を満たすことはできずレイテンシを下げることができなくなる。【００１０】
本発明の目的の一例は、上述した課題を解決する安定化システム、安定化方法、仮想マシン環境及びプログラムを提供することである。
【課題を解決するための手段】
【００１１】
本発明の第１の実施態様にかかる安定化システムは、仮想マシンを仮想的に生成する仮想マシン環境を備える。前記仮想マシン環境は、ネットワークを介して第１の通信リクエストを受信し、前記第１の通信リクエストを前記仮想マシンに送信し、前記仮想マシンが前記第１の通信リクエストを処理することによって生成された第２の通信リクエストを前記ネットワークを介して送信する送受信部と、前記送受信部が前記第１の通信リクエストを受信した受信時刻と前記送受信部が前記第２の通信リクエストを送信した送信時刻とに基づいて通信処理時間を計算する計算部と、前記通信処理時間に基づいて通信リクエストをまとめる数を決定する決定部と、を有し、前記送受信部は、前記決定された数の通信リクエストが到着してから通信リクエストの到着通知を前記仮想マシンに送信する。
【００１２】
本発明の第２の実施態様にかかる安定化方法は、仮想マシンを仮想的に生成するコンピュータ装置が、ネットワークを介して第１の通信リクエストを受信し、前記第１の通信リクエストを前記仮想マシンに送信し、前記仮想マシンが前記第１の通信リクエストを処理することによって生成された第２の通信リクエストを前記ネットワークを介して送信し、前記仮想マシン環境が前記第１の通信リクエストを受信した受信時刻と前記仮想マシン環境が前記第２の通信リクエストを送信した送信時刻とに基づいて通信処理時間を計算し、前記通信処理時間に基づいて通信リクエストをまとめる数を決定し、前記決定された数の通信リクエストが到着してから通信リクエストの到着通知を前記仮想マシンに送信する。
【００１３】
本発明の第３の実施態様にかかるコンピュータ装置は、仮想マシンを仮想的に生成する。このコンピュータ装置は、ネットワークを介して第１の通信リクエストを受信し、前記第１の通信リクエストを前記仮想マシンに送信し、前記仮想マシンが前記第１の通信リクエストを処理することによって生成された第２の通信リクエストを前記ネットワークを介して送信する送受信部と、前記送受信部が前記第１の通信リクエストを受信した受信時刻と前記送受信部が前記第２の通信リクエストを送信した送信時刻とに基づいて通信処理時間を計算する計算部と、前記通信処理時間に基づいて通信リクエストをまとめる数を決定する決定部と、を有し、前記送受信部は、前記決定された数の通信リクエストが到着してから通信リクエストの到着通知を前記仮想マシンに送信する。
【００１４】
本発明の第４の実施態様にかかるプログラムは、仮想マシンを仮想的に生成するコンピュータに、ネットワークを介して第１の通信リクエストを受信し、前記第１の通信リクエストを前記仮想マシンに送信し、前記仮想マシンが前記第１の通信リクエストを処理することによって生成された第２の通信リクエストを前記ネットワークを介して送信し、前記仮想マシン環境が前記第１の通信リクエストを受信した受信時刻と前記仮想マシン環境が前記第２の通信リクエストを送信した送信時刻とに基づいて通信処理時間を計算し、前記通信処理時間に基づいて通信リクエストをまとめる数を決定し、前記決定された数の通信リクエストが到着してから通信リクエストの到着通知を前記仮想マシンに送信することを実行させる。
【００１５】
上記の記載は、本発明の実施態様に必要な特徴の全てを列挙したものではない。これらの特徴群のサブコンビネーションもまた、本発明の実施態様となり得る。
【発明の効果】
【００１６】
本発明の実施形態によれば、すべての入出力処理のうち、特定の通信リクエスト処理の遅延をなくすことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態にかかる安定化システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態における通信処理時間格納部の内容を示すデータ構造を示す。
【図３】本発明の第１の実施形態における通信リクエスト合成数格納部の内容を示すデータ構造を示す。
【図４】図１に示す安定化システムの動作全体を示す流れ図である。
【図５】第１の実施形態におけるＴＣＰ／ＩＰによる通信リクエスト識別子作成例を示す図である。
【図６】第１の実施形態における、通信リクエスト受信時の通信処理時間監視部と通信処理時間計算部の動作を表すフローチャートである。
【図７】第１の実施形態における、通信リクエスト送信時の通信処理時間監視部と通信処理時間計算部の動作を表すフローチャートである。
【図８】第１の実施形態における、通信リクエスト合成数決定部の動作を表すフローチャートである。
【図９】本発明の第２の実施形態にかかる安定化システムの構成を示すブロック図である。
【図１０】第１の実施形態の具体例を示すブロック図である。
【図１１】図１０に示す具体例におけるＳＩＰ／ＩＰによる通信リクエスト識別子作成例である。
【図１２】関連技術を実施するための形態の構成を示すブロック図である。
【図１３】関連技術を実施するための動作を表すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を説明する。以下の実施形態は請求の範囲にかかる発明を限定しない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１９】
図１に示すように、本発明の第１の実施の形態にかかる安定化システムは、複数の仮想マシン１００および仮想マシン環境２００を有する。
仮想マシン１００は、通信サービス（アプリケーション）１１０、ゲストＯＳ１２０、および通信リクエスト受信部１３０を有する。送受信部１３０は、単に送受信部１３０と称する場合がある。
仮想マシン環境２００は、通信リクエスト送受信部２１０、ネットワークカードドライバ２２０、通信処理時間監視部２５０、通信リクエスト合成部２３０、通信リクエスト合成数格納部２８０、通信リクエスト合成数決定部２４０、通信処理時間計算部２６０、および通信処理時間格納部２７０を有する。通信リクエスト送受信部２１０は、単に送受信部２１０と称する場合がある。ネットワークカードドライバ２２０は、単にドライバ２２０と称する場合がある。通信処理時間監視部２５０は、単に監視部２５０と称する場合がある。通信リクエスト合成部２３０は、単に合成部２３０と称する場合がある。通信リクエスト合成数決定部２４０は、単に決定部２４０と称する場合がある。通信処理時間計算部２６０は、単に計算部２６０と称する場合がある。通信処理時間格納部２７０は、単に時間格納部２７０と称する場合がある。通信リクエスト合成数格納部２８０は、単に合成数格納部２８０と称する場合がある。
【００２０】
仮想マシン１００は、仮想マシン環境２００上で物理マシンをエミュレーションするソフトウェアである。
【００２１】
通信サービス１１０は、通信リクエストを処理するアプリケーションである。通信サービス１１０は、ネットワークＮから送られてくる通信リクエストを処理し、送信元に対して処理結果を返す。通信サービス１１０は、ネットワークＮから送られてくる通信リクエストを処理するようなアプリケーションであれば特に限定されない。通信サービス１１０の具体例は、ＴＥＬＮＥＴやＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）のようなインターネットサーバや、ＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）などの通話サービスを含んでもよい。
【００２２】
ゲストＯＳ１２０は、仮想マシン１００で実行されるＯＳである。
【００２３】
送受信部１３０は、ネットワークＮから受信した通信リクエストを通信サービス１１０に転送する。送受信部１３０は、通信サービス１１０で処理された通信リクエストをネットワークＮ上の通信リクエスト送信元に返送する。
仮想マシン環境２００の送受信部２１０は、ネットワークＮから受信した通信リクエストを仮想マシン１００の各通信サービス１１０に振り分ける機能を持つ。
【００２４】
仮想マシン環境２００は、複数の仮想マシン１００を実行するためのソフトウェアである。
【００２５】
ドライバ２２０は、物理装置としてのネットワークカードにアクセスするためのソフトウェアである。ドライバ２２０は、ネットワークＮを介してネットワークカードに到着した通信リクエストを送受信部２１０に転送する。ドライバ２２０は、ネットワークカードを使って、通信サービス１１０で処理された通信リクエストをネットワークＮ上の通信リクエストの送信元に返送する。
【００２６】
監視部２５０は、通信リクエストの処理時間を監視する。ここでの処理時間とは、通信リクエストが仮想マシン環境２００の外部から到着してから、仮想マシン環境２００上で実行されている仮想マシン１００上で処理され、処理された通信リクエストをリクエスト送信元に対して仮想マシン環境２００が送信するまでの時間を指す。受信した通信リクエストとこれから送信する通信リクエストが対であることあることを示すために通信リクエスト識別子２７２を用いる。これから送信する通信リクエストとは、受信した通信リクエストが通信サービス１１０で処理された処理結果である。通信リクエスト識別子２７２は時間格納部２７０に格納されている。識別子２７２の作成方法は後述する。
【００２７】
図２に示すように、時間格納部２７０は、通信処理時間に関連するデータを格納する領域を有する。時間格納部２７０は、監視対象アプリケーション２７１、通信リクエスト識別子２７２、通信リクエスト受信時刻２７３、通信リクエスト送信時刻２７４、および通信処理時間２７５を格納する。監視対象アプリケーション２７１とは、本発明の実施形態において監視対象となっている通信サービス１１０を指す。通信リクエスト識別子２７２は、受信した通信リクエストとこれから送信する通信リクエストが対であることを示す値である。
図５を参照して、ＴＣＰ／ＩＰを使った通信リクエスト識別子２７２の作成方法の具体例を説明する。本例における通信リクエスト識別子２７２は、ＩＰヘッダの送信元ＩＰアドレスと送信先ＩＰアドレス、ＴＣＰヘッダの発信元ポート番号、宛先ポート番号を用いて算出される。ＩＰアドレスは４つの数字に分解される。ＩＰアドレスの４つの数字と、発信元ポート番号と、あて先ポート番号との合計値が通信リクエスト識別子２７２に設定される。
以下に具体的な演算例を示す。
送信元ＩＰアドレス：１９２．１６８．０．１．
送信先ＩＰアドレス：１９２．１６８．０．２．
発信元ポート番号：１２３４５
宛先ポート番号：２３
通信リクエスト識別子＝送信元ＩＰアドレス＋送信先ＩＰアドレス
＋発信元ポート番号＋宛先ポート番号
＝１９２＋１６８＋０＋１＋１９２＋１６８＋０＋２＋１２３４５＋２３
＝１３０９１
通信リクエスト識別子２７２は、通信リクエストを一意に識別できればどのような指標を用いられても良い。通信リクエスト受信時刻２７３は、通信リクエストが仮想マシン環境２００（送受信部２１０）に到着した時刻を指す。通信リクエスト送信時刻２７４は、通信リクエストが仮想マシン環境２００（送受信部２１０）から通信リクエスト送信元への送信された時刻を指す。通信処理時間２７５は、通信リクエストの受信時刻２７３と送信時刻２７４との差分として計算される時間を指す。時間格納部２７０は、共通の識別子２７２を有する受信時刻２７３と送信時刻２７４とを対にして格納する。
【００２８】
計算部２６０は、通信リクエスト受信時刻２７３と通信リクエスト送信時刻２７４とから通信リクエストの処理時間を計算する。すなわち、計算部２６０は、各通信リクエストに関して、通信リクエスト受信時刻２７３と通信リクエスト送信時刻２７４との差分から通信処理時間２７５を計算する。
【００２９】
図３に示すように、合成数格納部２８０は、通信リクエストの合成に関連するデータを格納する領域を有する。合成数格納部２８０は、合成数変更閾値（閾値）２８１、通信処理時間劣化率（劣化率）２８２、通信処理時間目標値（目標値）２８３、および通信リクエスト合成数（合成数）２８４を格納する。閾値２８１は、通信リクエストの合成数変更を決定するために用いられる閾値である。劣化率２８２が閾値２８１を上回った場合、合成数格納部２８０の合成数２８４が変更される。劣化率２８２は、監視対象アプリケーション２７１が処理する通信リクエスト全体に対する、通信処理時間２７５が目標値２８３を超える通信リクエストの割合を指す。図２に示す例においては、監視対象アプリケーション２７１が「Ａｐｐｌｉｃａｔｉｏｎ＃１」の場合、通信処理時間２７５は「１．１２３」と「１．４５２」である。一方で、図２に示す例においては、目標値２８３は、「０．１００」である。よって、この例の場合、通信処理時間２７５が目標値２８３を上回っている。すなわち、２つの通信リクエストが、目標値２８３を上回っている。Ａｐｐｌｉｃａｔｉｏｎ＃１の監視された通信リクエスト数が全体で１７である仮定する。この場合、劣化率２８２は、約１２％（≒２／１７＊１００）となる。
【００３０】
決定部２４０は、通信リクエストの合成数２８４を決定する。
具体的には、決定部２４０は、合成数２８４を、劣化率２８２に基づいて決定する。決定部２４０は、劣化率２８２が閾値２８１を上回っていると判断した場合、合成数２８４を減らす。例えば、決定部２４０は、劣化率２８２が閾値２８１を上回っている毎に、合成数２８４を１つだけ減らしてもよいがこれに限られない。合成数２８４を減らす数は自由に決めてよい。
【００３１】
合成部２３０は、通信リクエストを合成する。通信リクエストの合成とは、通信リクエスト到着時であれば、通信リクエストの到着通知を一定数のリクエストが到着してから通知することを指している。図３に示す合成数格納部２８０に格納されている合成数２８４を基づいて通信リクエストの合成数を決定している。図３の例では、合成数２８４が３０個である。このため、送受信部２１０は、３０個のリクエストが到着してから仮想マシン１００に対して通信リクエストが到着したことを通知する。
【００３２】
上記のように、本実施形態においては、通信リクエスト処理の処理時間の監視と、処理時間の監視結果に基づく通信リクエスト通知の合成数を変更が行われる。その結果、通信リクエスト処理時間を安定することができる。
【００３３】
次に、図４、図６、図７、図８のフローチャートを参照して本実施の形態の動作について詳細に説明する。
【００３４】
図４は本実施の形態の全体の動作を表す。監視部２５０は、通信リクエスト受信時刻２７３と通信リクエスト送信時刻２７４とを監視する。計算部２６０は、通信処理時間２７５を計測する（Ｓ１）。決定部２４０は、通信処理時間２７５が目標値２８３を上回る通信リクエストを抽出し、劣化率２８２を計算する（Ｓ２）。決定部２４０は、劣化率２８２が閾値２８１を上回るか判断する（Ｓ３）。決定部２４０は、劣化率２８２が閾値２８１を上回れば（Ｓ４においてＹＥＳ）、合成数２８４を変更する（Ｓ５）。決定部２４０は、劣化率２８２が閾値２８１を上回らなければ（Ｓ４においてＮＯ）、合成数２８４を変更せずに処理を終了する。
【００３５】
図６は、通信リクエストが到着した際における監視部２５０および計算部２６０の動作を表す。監視部２５０は、受信したパケット（通信リクエスト）からＴＣＰ／ＩＰヘッダを取り出す（Ｓ６）。計算部２６０は、ＴＣＰ／ＩＰヘッダに基づいて通信リクエスト識別子２７２を算出する（Ｓ７）。識別子２７２の計算方法は上述のとおりである。監視部２５０および計算部２６０は、通信リクエスト識別子２７２とパケット受信時間（通信リクエスト受信時刻２７３）を時間格納部２７０へ格納する（Ｓ８）。
【００３６】
図７は、通信リクエストを返信する際における監視部２５０および計算部２６０の動作を表す。監視部２５０は、送信するパケットからＴＣＰ／ＩＰヘッダを取り出す（Ｓ９）。計算部２６０は、ＴＣＰ／ＩＰヘッダに基づいて通信リクエスト識別子２７２を計算する（Ｓ１０）。計算部２６０は、算出された識別子２７２と一致する識別子２７０が時間格納部２７０内に格納されているか確認する（Ｓ１１）。一致する識別子２７０があれば（Ｓ１１−１においてＹＥＳ）、計算部２６０は、が時間格納部２７０におけるその識別子２７２のエントリに送信時刻（通信リクエスト送信時刻２７４）を格納する（Ｓ１２）。さらに、計算部２６０は、通信処理時間２７５を計算し、通信処理時間２７５をそのエントリに格納する（Ｓ１３）。一致する識別子が無ければ（Ｓ１１−１においてＮＯ）、計算部２６０は処理を終了する。
【００３７】
図８は、決定部２４０の動作を表す。決定部２４０は、監視対象アプリケーション２７１に該当する通信処理時間２７５を取り出す（Ｓ１４）。決定部２４０は、取り出した通信処理時間２７５から、目標値２８３を上回る通信処理時間２７５を抽出する。決定部２４０は、取り出した通信処理時間２７５の数と抽出した通信処理時間２７５の数とに基づいて劣化率２８２を計算する（Ｓ１５）。決定部２４０は、劣化率２８２が閾値２８１を上回るかどうか判断する（Ｓ１６）。劣化率２８２が閾値２８１を上回る場合（Ｓ１７においてＹＥＳ）、決定部２４０は合成数２８４を変更する（Ｓ１８）。劣化率２８２が閾値２８１を上回らない場合（Ｓ１７においてＮＯ）、決定部２４０は合成数２８４を変更しない（Ｓ１８の処理を実行しない）。最後に、決定部２４０は時間格納部２７０から監視対象アプリケーション２７１のエントリを削除する（Ｓ１９）。
【００３８】
次に、本実施の形態の効果について説明する。本実施の形態においては、監視対象となる通信アプリケーションにおける通信リクエスト処理時間を監視し、処理時間の劣化に応じて合成数２８４を変更する。このため、特定のアプリケーションにおける通信リクエスト処理時間を安定化することができる。
【００３９】
次に、本発明の第２の実施形態について図面を参照して説明する。図９に示すように、第２の実施形態に係る安定化システムは、第１の実施形態の構成に加えて、仮想マシン１００内に通信リクエスト合成部１４０が設けられている。通信リクエスト合成部１４０は、単に合成部１４０と称する場合がある。合成部１４０の機能は、合成部２３０と同様である。
【００４０】
次に、第２の実施形態の効果について説明する。第２の実施形態では、合成部１４０が仮想マシン１００内にも配置されている。このため、仮想マシン１００が仮想マシン環境２００に対して通信リクエストを転送する際に、その転送回数を減らすことができる。転送回数が削減されるため、転送処理のオーバーヘッドを削減することができる。
【００４１】
次に、本発明の第１の実施形態の具体例を説明する。図１０に示すように、本実施例に係る仮想マシン３００は、通信サービスとしてのＡｓｔｅｒｉｓｋ３１０と、ゲストＯＳとしてのＬｉｎｕｘ（登録商標）３２０と、通信リクエスト要求送受信部としてのｖｉｒｔｉｏ３３０とを有する。さらに、本実施例においては、仮想マシン環境としてＫＶＭ（Ｋｅｒｎｅｌ−ｂａｓｅｄ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）４００を用いる。ＫＶＭ４００は、通信リクエスト要求送受信部としてのｖｈｏｓｔ＿ｎｅｔ４１０と、ネットワークカードドライバとしてのＥ１０００  Ｄｒｉｖｅｒ４２０とを有する。
【００４２】
Ａｓｔｅｒｉｓｋ３１０は、携帯電話等で使用される音声呼を処理するためのＳＩＰサーバである。
【００４３】
Ｖｉｒｔｉｏ３３０は、ｖｈｏｓｔ＿ｎｅｔ４１０に対して通信リクエストの送受信を行うためのＬｉｎｕｘカーネルドライバである。
【００４４】
Ｖｈｏｓｔ＿ｎｅｔ４１０は、Ｌｉｎｕｘカーネルドライバである。Ｖｈｏｓｔ＿ｎｅｔ４１０は、ＫＶＭ４００に到着した通信リクエストを各仮想マシン３００に配信する。また、Ｖｈｏｓｔ＿ｎｅｔ４１０は、各仮想マシン３００からの通信リクエストをネットワークＮ上に存在する他のコンピュータに送信する。
【００４５】
Ｅ１０００  Ｄｒｉｖｅｒ４２０は、ネットワークＮを介して通信リクエストを受信し、その通信リクエストをｖｈｏｓｔ＿ｎｅｔ４１０に転送する。Ｖｈｏｓｔ＿ｎｅｔ４１０は、転送されてきた通信リクエストの宛先が、ＫＶＭ４００上で動作する仮想マシン３００のいずれであるかを判別する。Ｖｈｏｓｔ＿ｎｅｔ４１０は、その通信リクエストを宛先の仮想マシン３００に転送する。宛先の判別方法について説明する。Ｖｈｏｓｔ＿ｎｅｔ４１０は、通信リクエストのＴＣＰ／ＩＰヘッダから宛先ＩＰアドレスを取得し、その取得した宛先ＩＰアドレスと同じＩＰアドレスが割り当てられている仮想マシン３００が宛先であると判別する。監視部２５０は、ｖｈｏｓｔ＿ｎｅｔ４１０上に到着した通信リクエストを監視する。計算部２６０は、通信処理時間２７５を計算する。
図１１を参照して、通信リクエスト識別子２７２の得るために、ＳＩＰ／ＩＰヘッダを用いる方法を説明する。通信リクエスト識別子２７２は、送信元ＩＰアドレスとＣａｌｌ−ＩＤとを用いて算出される。計算部２６０は、送信元ＩＰアドレスをＩＰヘッダから取得する。計算部２６０は、Ｃａｌｌ−ＩＤをＳＩＰヘッダから取得する。図１１の例では、Ｃａｌｌ−ＩＤは、「１２３４５６＠ｓｉｐｓｅｒｖｅｒ．ｃｏｍ」である。このＣａｌｌ−ＩＤからアットマークより左側の数値を通信リクエスト識別子２７２の算出に利用する。
以下に具体的な通信リクエスト識別子２７２の演算例を示す。
送信元ＩＰアドレス：１９２．１６８．０．１．
Ｃａｌｌ−ＩＤ：１２３４５６
通信リクエスト識別子＝送信元ＩＰアドレス＋Ｃａｌｌ−ＩＤ
＝１９２＋１６８＋０＋１＋１２３４５６
＝１２３８０７
【００４６】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は、上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、請求の範囲の記載から明らかである。
【００４７】
上述の仮想マシン環境２００は内部に、コンピュータシステムを有していてもよい。上述した各処理部の動作は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われてもよい。コンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリを含んでもよい。このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータがそのプログラムを実行するようにしても良い。
【００４８】
上記プログラムは、前述した機能の一部を実現するためのものであっても良い。
上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
以上、実施形態を参照して本願発明を示し説明したが、本願発明は上記実施形態に限定されない。当業者であれば、請求項によって画定される本願発明の範囲を逸脱しないで、構成や詳細に様々な変更をすることができることが理解されるであろう。
【００４９】
この出願は、２０１３年３月１２日に出願された日本国特願２０１３−０４９０４８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００５０】
本発明の実施形態は、携帯電話サービスを構成する電話交換機サーバ（ＳＩＰサーバ）のサービスのうち、特定の電話回線（Ｃａｌｌ−ＩＤ）の通信処理を安定化させるといった用途に適用できる。また、本発明の実施形態は、音声通話ソフトや他のネットワークサービスの通信品質安定化といった用途にも適用可能である。【００５１】
請求の範囲、明細書及び図面中において示したシステム、方法、装置、プログラム及び記録媒体における動作、手順、ステップ及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現し得る。請求の範囲、明細書及び図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味しない。
【符号の説明】
【００５２】
１００  仮想マシン
１１０  通信サービス
１２０  ゲストＯＳ
１３０  通信リクエスト送受信部（送受信部）
２００  仮想マシン環境
２１０  通信リクエスト送受信部（送受信部）
２２０  ネットワークカードドライバ（ドライバ）
２３０  通信リクエスト合成部（合成部）
２４０  通信リクエスト合成数決定部（決定部）
２５０  通信処理時間監視部（監視部）
２６０  通信処理時間計算部（計算部）
２７０  通信処理時間格納部（時間格納部）
２７１  監視対象アプリケーション
２７２  通信リクエスト識別子
２７３  通信リクエスト受信時刻
２７４  通信リクエスト送信時刻
２７５  通信処理時間
２８０  通信リクエスト合成数格納部（合成数格納部）
２８１  合成数変更閾値（閾値）
２８２  通信処理時間劣化率（劣化率）
２８３  通信処理時間目標値（目標値）
２８４  通信リクエスト合成数（合成数）
【図１】
0005796693.tif 000002
【図２】
0005796693.tif 000003
【図３】
0005796693.tif 000004
【図４】
0005796693.tif 000005
【図５】
0005796693.tif 000006
【図６】
0005796693.tif 000007
【図７】
0005796693.tif 000008
【図８】
0005796693.tif 000009
【図９】
0005796693.tif 000010
【図１０】
0005796693.tif 000011
【図１１】
0005796693.tif 000012
【図１２】
0005796693.tif 000013
【図１３】
0005796693.tif 000014