(57)【要約】【課題】物理計算機上の仮想計算機を管理する仮想計算機モニタにおいて、計算機システムを構成するハードウェア資源の性能差を考慮して、仮想計算機上のサービスを正常に稼働させる。【解決手段】仮想計算機を管理する仮想マシンモニタと、アプリケーションを実行するオペレーティングシステムとを備えた仮想環境を提供するサーバであって、仮想マシンモニタは、仮想計算期毎に割り当てられた物理資源に関する情報を管理する物理資源情報管理部と、アプリケーションの稼働状態に関する情報を管理するアプリケーション情報管理部と、サーバの第１の物理資源が性能の高い第２の物理資源に変更された場合に、第１の物理資源の性能と第２の物理資源の性能との差を表す性能差分情報を取得して、アプリケーションが正常に動作するように第２の物理資源の性能を調整するための制御情報を生成する性能差分情報管理部と、を備えることを特徴とする。【選択図】図１
2011203810.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、前記プロセッサに接続されるメモリとを備え、前記プロセッサによって実行され、サーバの物理資源を仮想的に分割して生成される複数の仮想計算機を管理する仮想マシンモニタと、前記各仮想計算機上で実行され、アプリケーションを実行するオペレーティングシステムと、を備えた仮想環境を提供するサーバであって、
前記仮想マシンモニタは、
前記各仮想計算期毎に割り当てられた前記物理資源に関する情報を管理する物理資源情報管理部と、
前記各仮想計算機毎に、前記オペレーティングシステム上で実行される前記アプリケーションの稼働状態に関する情報を管理するアプリケーション情報管理部と、
前記サーバの物理資源の性能情報を管理し、前記サーバの第１の物理資源が性能の高い第２の物理資源に変更された場合に、前記第１の物理資源の性能と前記第２の物理資源の性能との差を表す性能差分情報を取得して、前記性能差分情報に基づいて、前記アプリケーションが正常に動作するように前記第２の物理資源の性能を調整するための制御情報を生成する性能差分情報管理部と、を備えることを特徴とするサーバ。
【請求項２】
前記物理資源は、前記サーバが他の装置と通信するためのネットワークインタフェースであることを特徴とする請求項１に記載のサーバ。
【請求項３】
前記仮想マシンモニタは、前記ネットワークインタフェースを仮想的に分割して、前記各仮想計算機に仮想ネットワークインタフェースを割り当て、
前記仮想ネットワークインタフェースは、前記アプリケーションが受信するデータを一時的に蓄積する受信バッファと、前記アプリケーションが送信するデータを一時的に蓄積する送信バッファとを備え、
前記性能差分情報管理部は、
前記サーバが備える第１のネットワークインタフェースの性能情報を保持し、
前記第１のネットワークインタフェースから性能の高い第２のネットワークインタフェースに変更された場合に、前記第２のネットワークインタフェースの性能情報を取得し、
前記性能差分情報管理部が保持する前記第１のネットワークインタフェースの性能情報と、前記取得された第２のネットワークインタフェースの性能情報とに基づいて、前記第１のネットワークインタフェースの性能と前記第２のネットワークインタフェースの性能との差を算出し、
前記算出された前記第１のネットワークインタフェースの性能と前記第２のネットワークインタフェースの性能との差に基づいて、前記受信バッファが蓄積可能な容量を越えないようにするための制御情報を生成することを特徴とする請求項２に記載のサーバ。
【請求項４】
前記性能差分情報管理部によって生成された制御情報は、前記アプリケーションが実行される仮想計算機に割り当てられた仮想ネットワークインタフェースに輻輳状態が発生したことを通知するための輻輳通知設定情報であって、
前記仮想マシンモニタは、さらに、前記輻輳通知設定情報に基づいて、前記仮想ネットワークインタフェースに輻輳状態が発生したことを通知する輻輳処理部を備えることを特徴とする請求項３に記載のサーバ。
【請求項５】
前記サーバは、複数のネットワークスイッチを含むネットワークと接続され、
前記仮想マシンモニタは、前記アプリケーションにおけるデータ受信状況を測定し、
前記アプリケーション情報管理部は、前記アプリケーションにおけるデータ受信状況測定結果に基づいて取得される、前記受信バッファのバッファサイズと、前記アプリケーションがデータを受信するアプリケーション受信間隔とを管理し、
前記性能差分情報管理部は、
前記性能差分情報、前記受信バッファのバッファサイズ、及び前記アプリケーション受信間隔に基づいて、前記輻輳通知設定情報を生成し、
前記輻輳処理部は、
周期的に前記仮想ネットワークインタフェースに、前記輻輳状態が発生したことを通知し、
前記仮想ネットワークインタフェースは、前記ネットワークスイッチに、前記アプリケーション宛のデータの送信を停止させる命令を送信することを特徴とする請求項４に記載のサーバ。
【請求項６】
前記サーバは、複数のネットワークスイッチを含むネットワークと接続され、
前記仮想マシンモニタは、前記アプリケーションにおけるデータ受信状況を測定し、
前記アプリケーション情報管理部は、前記アプリケーションにおけるデータ受信状況測定結果に基づいて取得される、前記受信バッファのバッファサイズと、前記アプリケーションがデータを受信するアプリケーション受信間隔とを管理し、
前記性能差分情報管理部は、
前記性能差分情報、前記受信バッファのバッファサイズ、及び前記アプリケーション受信間隔に基づいて、前記受信バッファのバッファサイズの上限値を示す閾値情報を生成し、
前記輻輳処理部は、
前記受信バッファのバッファサイズが前記生成された閾値情報に示される上限値以上であるか否かを判定し、
前記受信バッファのバッファサイズが前記生成された閾値情報に示される上限値以上である場合に、前記仮想ネットワークインタフェースに、前記輻輳状態が発生したことを通知し、
前記仮想ネットワークインタフェースは、前記ネットワークスイッチに、前記アプリケーション宛のデータの送信を停止させる命令を送信することを特徴とする請求項４に記載のサーバ。
【請求項７】
前記性能差分情報管理部によって生成された制御情報は、前記アプリケーションが実行される仮想計算機に割り当てられた仮想ネットワークインタフェースに輻輳状態が発生したことを通知するための輻輳通知設定情報であって、
前記サーバは、複数のネットワークスイッチを含むネットワークと接続され、
前記仮想マシンモニタは、前記アプリケーションにおけるデータ受信状況を測定し、
前記アプリケーション情報管理部は、前記アプリケーションにおけるデータ受信状況測定結果に基づいて取得される、前記受信バッファのバッファサイズと、前記アプリケーションがデータを受信するアプリケーション受信間隔とを管理し、
前記性能差分情報管理部は、
前記性能差分情報、前記受信バッファのバッファサイズ、及び前記アプリケーション受信間隔に基づいて、前記輻輳通知設定情報を生成し、
前記生成された輻輳通知設定情報を前記ネットワークスイッチに送信することによって、前記アプリケーション宛のデータの送信を停止させることを特徴とする請求項３に記載のサーバ。
【請求項８】
前記第１のネットワークインタフェースの性能情報及び前記第２のネットワークインタフェースの性能情報は、前記第１のネットワークインタフェースの処理速度及び前記第２のネットワークインタフェースの処理速度であり、
前記性能差分情報管理部は、
前記第２のネットワークインタフェースの処理速度を前記第１のネットワークインタフェースの処理速度で除算することによって、前記性能差分情報を算出することを特徴とする請求項３に記載のサーバ。
【請求項９】
複数の計算機が、複数のネットワークスイッチを含むネットワークを介して接続される計算機システムであって、
前記計算機は、プロセッサと、前記プロセッサに接続されるメモリとを備え、前記プロセッサによって実行され、前記計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する仮想マシンモニタと、前記各仮想計算機上で実行され、アプリケーションを実行するオペレーティングシステムと、を備え、
前記仮想マシンモニタは、
前記各仮想計算期毎に割り当てられた前記物理資源に関する情報である物理資源情報を管理し、
前記各仮想計算機毎に、前記オペレーティングシステム上で実行される前記アプリケーションの稼働状態に関する情報であるアプリケーション稼働情報を管理し、
前記計算機の第１の物理資源が性能の高い第２の物理資源に変更された場合に、前記第１の物理資源の性能と前記第２の物理資源の性能との差を表す性能差分情報を取得し、
前記物理資源情報、前記アプリケーション稼働情報、及び前記性能差分情報を、前記ネットワークスイッチに送信し、
前記ネットワークスイッチは、
受信した前記物理資源情報、前記アプリケーション稼働情報、及び前記性能差分情報に基づいて、前記アプリケーションが正常に動作するように前記第２の物理資源の性能を調整するための制御情報を生成することを特徴とする計算機システム。
【請求項１０】
前記物理資源は、前記計算機が他の装置と通信するためのネットワークインタフェースであることを特徴とする請求項９に記載の計算機システム。
【請求項１１】
前記仮想マシンモニタは、前記ネットワークインタフェースを仮想的に分割して、前記各仮想計算機に仮想ネットワークインタフェースを割り当て、
前記仮想ネットワークインタフェースは、前記アプリケーションが受信するデータを一時的に蓄積する受信バッファと、前記アプリケーションが送信するデータを一時的に蓄積する送信バッファとを備え、
前記仮想マシンモニタは、
第１のネットワークインタフェースから性能の高い第２のネットワークインタフェースに変更された場合に、前記第２のネットワークインタフェースの性能情報を取得し、
性能差分情報管理部が保持する前記第１のネットワークインタフェースの性能情報と、前記取得された第２のネットワークインタフェースの性能情報とに基づいて、前記第１のネットワークインタフェースの性能と前記第２のネットワークインタフェースの性能との差を算出し、
前記算出された第１のネットワークインタフェースの性能と第２のネットワークインタフェースの性能との差を前記ネットワークスイッチに送信し、
前記ネットワークスイッチは、
前記算出された前記第１のネットワークインタフェースの性能と前記第２のネットワークインタフェースの性能との差に基づいて、前記受信バッファが蓄積可能な容量を越えないようにするための制御情報を生成することを特徴とする請求項１０に記載の計算機システム。
【請求項１２】
前記制御情報は、前記ネットワークスイッチが前記アプリケーション宛のデータの送信を停止させる命令を通知するための輻輳通知設定情報であって、
前記ネットワークスイッチは、前記輻輳通知設定情報に基づいて、前記仮想ネットワークインタフェースに輻輳状態が発生したことを通知することを特徴とする請求項１１に記載の計算機システム。
【請求項１３】
前記仮想マシンモニタは、前記アプリケーションの稼働状態に関する情報として、前記受信バッファのバッファサイズと、前記アプリケーションがデータを受信するアプリケーション受信間隔とを管理し、
前記ネットワークスイッチは、
前記性能差分情報、前記受信バッファのバッファサイズ、及び前記アプリケーション受信間隔に基づいて、前記輻輳通知設定情報を生成し、
周期的に、前記輻輳状態を発生させるか否かを判定し、
前記輻輳状態を発生させると判定された場合に、前記アプリケーション宛のデータの送信を停止させる命令を当該データの送信元に送信することを特徴とする請求項１１に記載の計算機システム。
【請求項１４】
前記第１のネットワークインタフェースの性能情報及び前記第２のネットワークインタフェースの性能情報は、前記第１のネットワークインタフェースの処理速度及び前記第２のネットワークインタフェースの処理速度であり、
前記仮想マシンモニタは、
前記第２のネットワークインタフェースの処理速度を前記第１のネットワークインタフェースの処理速度で除算することによって、前記性能差分情報を算出することを特徴とする請求項１１に記載の計算機システム。
【請求項１５】
プロセッサと、前記プロセッサに接続されるメモリとを備え、前記プロセッサによって実行され、前記サーバの物理資源を仮想的に分割して生成される複数の仮想計算機を管理する仮想マシンモニタと、前記各仮想計算機上で実行され、アプリケーションを実行するオペレーティングシステムと、を備えるサーバにおける仮想計算機管理方法であって、
前記仮想マシンモニタは、前記各仮想計算期毎に割り当てられた前記物理資源に関する情報を管理し、前記各仮想計算機毎に、前記オペレーティングシステム上で実行される前記アプリケーションの稼働状態に関する情報を管理し、
前記方法は、
前記仮想マシンモニタが、
前記サーバの第１の物理資源が性能の高い第２の物理資源に変更された場合に、前記第１の物理資源の性能と前記第２の物理資源の性能との差を表す性能差分情報を取得するステップと、
前記取得された性能差分情報に基づいて、前記アプリケーションが正常に動作するように前記第２の物理資源の性能とを下げるための制御情報を生成するステップと、含むことを特徴とする仮想計算機管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機に関し、更に詳しくは、仮想計算機と他の装置とを接続する仮想ネットワークインタフェースを用いてデータ転送するサーバ、計算機システム及び仮想計算機管理方法に関する。
【背景技術】
【０００２】
近年の物理計算機はマルチコアプロセッサを複数搭載するようになってきており、プロセッサ資源を有効利用するために、複数の仮想計算機を同時に稼働させるサーバ仮想化技術が注目されている。
【０００３】
サーバ仮想化技術を用いることによって、１台の物理計算機上に複数の仮想計算機を稼働できるため、１台の物理計算機に１つのＯＳを実行させる従来システムと比べ、コスト削減を望める。
【０００４】
ＰＣのようなオープン系システムは、性能向上の進度が速く、次々と後継機種が登場し、製品の保証期間は約５年程度と短い。
【０００５】
これに対し、基幹系（企業の会計、生産管理、人事、給与等の業務アプリケーション、及び銀行や鉄道等社会インフラに関わるサービス等）のようなサービスは、基本的なサービスであるためにサービス内容が変わらないものが多い。また、基幹系のサービスでは稼働実績のあるサービスを更改することによる障害を起こしてはならない。前述したような理由から、サービスをできるかぎり長期に稼働させたいというニーズがある。
【０００６】
仮想化技術は前述したニーズに答えるものであり、物理計算機に新しいハードウェアを導入した場合であっても、現在稼働しているサービスの環境をそのまま移行することが可能であり、また、オープン系システムに対して費用対効果が認められるサービスへの適用が始まっている。
【０００７】
長期に運用させたいサービスを仮想計算機上で動作させる場合、サービスの性能を保持することが重要である。ハードウェアは数年で変更する必要があり、変更の度に性能差が広がる。従って、サービスが構築された時の環境を維持するためには、仮想計算機を制御する仮想計算機モニタがその性能差を解消し、サービスが実行される環境にハードウェアの変更による影響を与えないことが必要である。
【０００８】
ハードウェア資源の一つとして、ネットワークがある。ネットワークに関しては、高速化と、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）系ネットワーク及びストレージ系ネットワークの統合化と、が進んでいる。
【０００９】
イーサネット（登録商標、以降同じ）は、１０Ｇｂｐｓ以上の性能を持つようになっており、特にデータセンタ（以降、ＤＣと記載する）は大量のデータをリアルタイムに扱うサービスが多いため、ＤＣ向けの規格がＩＥＥＥ  ８０２．１  ＷＧにて策定されている。
【００１０】
ネットワーク側では大量のデータを高速に扱えるようになっているが、当該サービスの動作環境（仮想計算機）より先がサービスの受信能力以上のシステム構成となることによって、サービス側では仮想計算機側の受信側処理を越える可能性がある。すなわち、受信バッファのオーバーフローが発生し、これによってデータが損失、サービスの異常終了や異常動作の原因となる。
【００１１】
この問題を解消する方法としては、ある物理計算機上に生成される複数の仮想計算機間を接続する仮想ネットワークシステムにおいて、送信先の仮想計算機の受信バッファが溢れることを防止する方法がある（例えば、特許文献１参照）。
【００１２】
具体的には、仮想計算機モニタは仮想計算機の送受信状況を管理する仮想ネットワーク制御部を備え、各仮想計算機は仮想ネットワークインタフェースカード（以下、仮想ＮＩＣと記載する）を備える。仮想ネットワーク制御部は、各仮想ＮＩＣの受信バッファサイズを監視し、ある仮想ＮＩＣが送信する送信データサイズと受信バッファサイズとから、送信可否を判定する。受信バッファ残量が受信データサイズ以下である場合、送信を停止させる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００９−２９６１３３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
特許文献１では、同一の物理計算機上に仮想計算機が配置されるため、仮想計算機モニタが各仮想計算機のデータ送受信状況を把握できる。従って、受信側の仮想計算機の受信バッファと送信側の仮想計算機の送信データとを比較することができる。しかし、物理ＮＩＣを介さないため、物理ＮＩＣの性能と仮想計算機の稼働環境との関係を考慮したものではなく、物理ＮＩＣを介した別の物理計算機との通信する計算機システムに適用することは困難である。
【００１５】
すなわち、仮想計算機モニタは、同一の物理計算機上の仮想計算機の管理はできるが、他の計算機の管理はできないため、複数の計算機を備える計算機システムには適用できない。
【００１６】
本発明の目的は、複数の物理計算機を備える計算機システムにおいて、物理計算機上に生成された仮想計算機を制御する仮想計算機モニタが、変更される物理計算機のハードウェア資源の性能を適正に考慮して、仮想計算機上のアプリケーションを正常に動作させることである。
【課題を解決するための手段】
【００１７】
本発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサと、前記プロセッサに接続されるメモリとを備え、前記プロセッサによって実行され、サーバの物理資源を仮想的に分割して生成される複数の仮想計算機を管理する仮想マシンモニタと、前記各仮想計算機上で実行され、アプリケーションを実行するオペレーティングシステムと、を備えた仮想環境を提供するサーバであって、前記仮想マシンモニタは、前記各仮想計算期毎に割り当てられた前記物理資源に関する情報を管理する物理資源情報管理部と、前記各仮想計算機毎に、前記オペレーティングシステム上で実行される前記アプリケーションの稼働状態に関する情報を管理するアプリケーション情報管理部と、前記サーバの物理資源の性能情報を管理し、前記サーバの第１の物理資源が性能の高い第２の物理資源に変更された場合に、前記第１の物理資源の性能と前記第２の物理資源の性能との差を表す性能差分情報を取得して、前記性能差分情報に基づいて、前記アプリケーションが正常に動作するように前記第２の物理資源の性能を調整するための制御情報を生成する性能差分情報管理部と、を備えることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、計算機システムを構成するハードウェア資源の変更時、仮想計算機上で実行されるアプリケーションの稼働状態を変更することなく正常に稼働させることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態の概要を説明するブロック図である。
【図２】本発明の第１の実施形態のネットワークシステムの構成例を説明するブロック図である。
【図３】本発明の第１の実施形態のサーバシステムの内部構成の一例を説明するブロック図である。
【図４】本発明の第１の実施形態の物理計算機のハードウェア構成の一例を説明するブロック図である。
【図５】本発明の第１の実施形態のＡＰ情報管理テーブルのフォーマットの一例を示す説明図である。
【図６】本発明の第１の実施形態の構成履歴管理テーブルのフォーマットの一例を示す説明図である。
【図７】本発明の第１の実施形態のネットワークシステムにおけるサーバシステムが実行する処理の流れを説明するシーケンス図である。
【図８Ａ】本発明の第１の実施形態の仮想計算機モニタが実行する処理を説明するフローチャートである。
【図８Ｂ】本発明の第１の実施形態の仮想計算機モニタが実行する処理を説明するフローチャートである。
【図９】本発明の第１の実施形態の仮想計算機モニタが実行するＡＰ動作情報のロギング処理を説明するフローチャートである。
【図１０】本発明の第２の実施形態のネットワークスイッチの内部構成の一例を説明するブロック図である。
【図１１】本発明の第２の実施形態のネットワークシステムにおけるサーバシステム及びネットワークスイッチが実行する処理の流れを説明するシーケンス図である。
【図１２】本発明の第２の実施形態の仮想計算機モニタが実行する性能差を解消するための処理を説明するフローチャートである。
【図１３】本発明の第２の実施形態のネットワークスイッチが実行する処理を説明するフローチャートである。
【図１４】本発明の第２の実施形態のネットワークスイッチによって実行されるスイッチング処理を説明するフローチャートである。
【図１５】ネットワークスイッチが管理するＡＰ−ネットワーク環境情報テーブルのフォーマットの一例を示す説明図である。
【発明を実施するための形態】
【００２０】
本発明の実施形態について、以下に、図を参照して説明する。まず、本発明の概要を、図１を用いて説明する。
【００２１】
図１は、本発明の実施形態の概要を説明するブロック図である。
【００２２】
図１に示す例では、物理サーバは、ハードウェア１０７とソフトウェア１００とから構成される。ソフトウェア１００は、仮想計算機モニタ１０１及び仮想計算機１０２を含む。
【００２３】
以下、ハードウェア１０７がハードウェア１０８に更新された場合を例に説明する。なお、以降ではハードウェア１０７を旧ハードウェア１０７と記載し、ハードウェア１０８を新ハードウェア１０８と記載する。
【００２４】
仮想計算機モニタ１０１は、アプリケーション動作情報１０６、ハードウェア性能差分情報１０９及び性能差解消処理部１１０とを含む。
【００２５】
アプリケーション動作情報１０６は、仮想計算機１０２上で動作するアプリケーションの動作環境に関する情報を格納する。ハードウェア性能差分情報１０９は、旧ハードウェア１０７と新ハードウェア１０８との性能に関する情報を格納する。性能差解消処理部１１０は、ハードウェア変更時に、ハードウェアの性能の差分を適正化する処理を実行する。
【００２６】
具体的には、性能差解消処理部１１０は、新ハードウェア１０８の性能情報を取得し（Ｓ１２０）、旧ハードウェア１０７との性能差を算出し（Ｓ１２１）、変更されるハードウェアに基づいて、どのハードウェアの性能差を適正化するかを設定する（Ｓ１２２）。
【００２７】
［第１の実施形態］
次に、本発明の第１の実施形態について、図２〜図１０を参照して説明する。
【００２８】
第１の実施形態では、物理計算機に物理ＮＩＣが高速な物理ＮＩＣに変更された場合に、仮想計算機を制御する仮想計算機モニタが、アプリケーション動作情報１０６とハードウェア性能差分情報１０９とに基づいて、受信バッファがオーバーフローしないように、疑似的に輻輳状況を発生させる。
【００２９】
図２は、本発明の第１の実施形態のネットワークシステムの構成例を説明するブロック図である。
【００３０】
ＤＣ２００は、ルータ２０２、ネットワークスイッチ２０３−１〜２０３−ｎ、サーバシステム２０４−１〜２０４−ｎ、ストレージ装置２０５−１、２０５−２とから構成される。以下、ネットワークスイッチ２０３−１〜２０３−ｎを区別しない場合、ネットワークスイッチ２０３と記載し、サーバシステム２０４−１〜２０４−ｎを区別しない場合、サーバシステム２０４と記載し、また、ストレージ装置２０５−１、２０５−２を区別しない場合、ストレージ装置２０５と記載する。
【００３１】
ルータ２０２、ネットワークスイッチ２０３、サーバシステム２０４、及びストレージ装置２０５は、それぞれネットワーク２０６を介して接続される。
【００３２】
ＤＣ２００は、例えばインターネットのような外部ネットワーク２０１を介して、他のＤＣ、システム又は端末等と接続される。
【００３３】
図３は、本発明の第１の実施形態のサーバシステム２０４の内部構成の一例を説明するブロック図である。
【００３４】
図３に示す例では、サーバシステム２０４は、物理計算機３００と物理ＮＩＣ３１２とから構成される。物理計算機３００と物理ＮＩＣ３１２とは、例えば、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  ＩｎｔｅｒＣｏｎｎｅｃｔ）バスのような内部バス３２０を介して互いに接続される。
【００３５】
物理計算機３００は、１つ以上の仮想計算機１（３０１−１）〜仮想計算機ｎ（３０１−ｎ）と、仮想計算機モニタ３０２とを含む。なお、物理計算機３００のハードウェア構成については、図４を用いて後述する。
【００３６】
仮想計算機モニタ３０２は、仮想計算機１（３０１−１）〜仮想計算機ｎ（３０１−ｎ）を生成し、生成された仮想計算機１（３０１−１）〜仮想計算機ｎ（３０１−ｎ）を管理する。
【００３７】
仮想計算機モニタ３０２は、物理計算機３００が備える物理的な計算機資源を仮想的な計算機資源に変換し、仮想計算機１（３０１−１）〜仮想計算機ｎ（３０１−ｎ）に、それぞれ、仮想的な計算機資源を割り当てる。なお、物理計算機３００が備える計算機資源を割り当てる方法については、周知又は公知の技術を適宜用いればよいので、ここでは詳述しない。
【００３８】
以降、仮想計算機１（３０１−１）〜仮想計算機ｎ（３０１−ｎ）を区別しない場合、仮想計算機３０１と記載する。
【００３９】
物理計算機３００が備える物理的な計算機資源としては、図４に示すようなものが考えられる。
【００４０】
図４は、本発明の第１の実施形態の物理計算機３００のハードウェア構成の一例を説明するブロック図である。
【００４１】
図４に示すように、物理計算機３００は、ＣＰＵ３３０とメモリ３３１と不揮発性記憶媒体３３２とを備え、内部バス等を介して互いに接続される。
【００４２】
ＣＰＵ３３０は、メモリ３３１上に展開されたプログラムを実行する。メモリ３３１は、ＣＰＵ３３０によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。また、メモリ３３１はＣＰＵ３３０が処理を実行するためのワークエリアとしても使用される。不揮発性記憶媒体３３２は、各種情報を格納し、例えば、ＨＤＤ等が考えられる。
【００４３】
仮想計算機モニタ３０２は、ＣＰＵ３３０、メモリ３３１及び不揮発性記憶媒体３３２を各仮想計算機３０１に割り当てる。なお、物理計算機３００は、図示しない構成を備えてもよい。例えば、Ｉ／Ｏインタフェース、ネットワークインタフェース等を備えてもよい。
【００４４】
なお、図４では、ＣＰＵ３３０、メモリ３３１及び不揮発性記憶媒体３３２がそれぞれ１つの場合を示したが、複数備えていてもよい。また、ＣＰＵ３３０は、複数のコアを含むものであってもよい。
【００４５】
図３の説明に戻る。
【００４６】
仮想計算機１（３０１−１）〜仮想計算機ｎ（３０１−ｎ）は、アプリケーション（以降、ＡＰと記載する）３２１−１〜３２１−ｎ、ゲストＯＳ３２２−１〜３２２−ｎ、仮想ドライバ３２３−１〜３２３−ｎを備える。
【００４７】
ゲストＯＳ３２２−１〜３２２−ｎは、各仮想計算機３０１上で実行されるＯＳである。ＡＰ３２１−１〜３２１−ｎは、各ゲストＯＳ３２２−１〜３２２−ｎ上で実行されるプログラムである。ＡＰ３２１−１〜３２１−ｎが実行されることによって、すなわち、ＡＰ３２１−１〜３２２−ｎが動作することによって、各ＡＰ３２１−１〜３２２−ｎに対応するサービスが提供される。
【００４８】
以降、ゲストＯＳ３２２−１〜３２２−ｎを区別しない場合、ゲストＯＳ３２２と記載し、ＡＰ３２１−１〜３２１−ｎを区別しない場合、ＡＰ３２１と記載する。
【００４９】
仮想ドライバ３２３−１〜３２３−ｎは、ゲストＯＳ３２２−１〜３２２−ｎが処理を実行するときに用いられるデバイスドライバである。
【００５０】
以降、仮想ドライバ３２３−１〜３２３−ｎを区別しない場合、仮想ドライバ３２３と記載する。
【００５１】
なお、本実施形態では、各仮想計算機３０１におけるネットワークのエミュレーション処理は、物理ＮＩＣ３１２によって実行される。
【００５２】
仮想計算機モニタ３０２は、送信モニタ３０３、受信モニタ３０４、性能差解消処理部３０５、疑似輻輳処理部３０６、ＡＰ情報管理部３０７、ＡＰ情報管理テーブル３０８、構成履歴管理部３０９、及び構成履歴管理テーブル３１０を備える。
【００５３】
送信モニタ３０３は、各仮想計算機３０１上で実行されるＡＰ３２１が送信するデータを解析し、当該解析結果を物理ＮＩＣ３１２に送信する。
【００５４】
受信モニタ３０４は、物理ＮＩＣ３１２を介して受信した、仮想計算機３０１上で実行される各ＡＰ３２１宛のデータをロギングする。例えば、受信データの受信間隔、及び仮想ＮＩＣの受信バッファにバッファリングされる受信データ数等が監視される。
【００５５】
ＡＰ情報管理部３０７は、ＡＰ３２１の動作環境に関する情報を管理する。以降、ＡＰ３２１の動作環境に関する情報をＡＰ動作情報と記載する。
【００５６】
ＡＰ動作情報は、例えば、ＡＰ３２１を特定する識別子、ネットワーク設定情報、受信モニタ３０４によって測定された受信データの受信間隔等が考えられる。
【００５７】
ＡＰ情報管理部３０７は、前述したようなＡＰ動作情報を取得し、取得されたＡＰ動作情報をＡＰ情報管理テーブル３０８に格納する。ＡＰ情報管理テーブル３０８の詳細については、図５を用いて後述する。
【００５８】
構成履歴管理部３０９は、サーバシステム２０４のハードウェアの構成情報及び仮想計算機３０１に割り当てるハードウェアの構成情報を管理する。
【００５９】
構成履歴管理部３０９は、例えば、仮想計算機３０１の生成時に、サーバシステム２０４のハードウェアの構成情報及び仮想計算機３０１に割り当てるハードウェアの構成情報を取得し、取得された各構成情報を構成履歴管理テーブル３１０に格納する。なお、サーバシステム２０４のハードウェアの構成情報は、サーバシステム２０４の初期設定時に取得されてもよい。
【００６０】
構成履歴管理部３０９は、サーバシステム２０４のハードウェア構成が変更された場合に、変更されたハードウェアの構成情報を取得し、構成履歴管理テーブル３１０に取得されたハードウェアの構成情報を格納する。
【００６１】
構成履歴管理テーブル３１０の詳細については、図６を用いて後述する。
【００６２】
性能差解消処理部３０５は、サーバシステム２０４のハードウェア構成が変更される場合、ＡＰ３２１を正常に動作させるための制御情報を決定する。
【００６３】
具体的には、性能差解消処理部３０５は、サーバシステム２０４のハードウェア構成が変更される場合、ＡＰ３２１がインストールされた時点のハードウェアの構成情報とハードウェアの構成が変更された後のハードウェアの構成情報とを構成履歴管理テーブル３１０から取得する。さらに、性能差解消処理部３０５は、ＡＰ３２１がインストールされた時点のハードウェアの構成情報とハードウェアの構成が変更された後のハードウェアの構成情報との差分を算出し、算出された差分に基づいて、ＡＰ３２１を正常に動作させるための制御内容を決定する。本実施形態では、監視するハードウェアを物理ＮＩＣ３１２として説明するが、ＣＰＵ３３０、又はメモリ３３１等のハードウェアであっても本発明は実施可能である。
【００６４】
疑似輻輳処理部３０６は、性能差解消処理部３０５によって決定された制御内容に基づいて、疑似的に輻輳状態を発生させる処理を実行する。
【００６５】
物理ＮＩＣ３１２は、サーバシステム２０４が他の装置（例えば、ネットワークスイッチ２０３及びストレージ装置２０５等）と通信するためのネットワークインタフェースである。物理ＮＩＣ３１２は、仮想ＮＩＣ３２７−１〜３２７−ｎ、ルーティング部３２８及び処理部３２９を備える。
【００６６】
仮想ＮＩＣ３２７−１〜３２７−ｎは、それぞれ、仮想計算機１（３０１−１）〜仮想計算機ｎ（３０１−ｎ）に対応する仮想ＮＩＣネットワーク機能を備える。すなわち、仮想ＮＩＣ３２７−１〜３２７−ｎは、各仮想計算機３０１におけるネットワークのエミュレーション処理を実行するための機能を備える。物理ＮＩＣ３１２がネットワークのエミュレーション処理を実行することによって、サーバシステム２０４の処理性能を向上することが可能となる。
【００６７】
仮想ＮＩＣ３２７−１〜３２７−ｎは、それぞれ、送信バッファ３２４−１〜３２４−ｎ及び受信バッファ３２５−１〜３２５−ｎを備える。送信バッファ３２４−１〜３２４−ｎは、各仮想計算機３０１から送信されるデータを一時的に格納するバッファである。受信バッファ３２５−１〜３２５−ｎは、各仮想計算機３０１が受信するデータを一時的に格納するバッファである。
【００６８】
仮想計算機モニタ３０２は、仮想計算機３０１における仮想ドライバ３２３と物理ＮＩＣ３１２の仮想ＮＩＣ３２７とを対応づけて管理する。図３に示す例では、仮想ドライバ３２３−１と仮想ＮＩＣ３２７−１とが対応づけられ、仮想ドライバ３２３−２と仮想ＮＩＣ３２７−２とが対応づけられ、仮想ドライバ３２３−ｎと仮想ＮＩＣ３２７−ｎとが対応づけられる。
【００６９】
以降、仮想ＮＩＣ３２７−１〜３２７−ｎを区別しない場合、仮想ＮＩＣ３２７と記載する。また、送信バッファ３２４−１〜３２４−ｎを区別しない場合、送信バッファ３２４と記載し、また、受信バッファ３２５−１〜３２５−ｎを区別しない場合、受信バッファ３２５と記載する。
【００７０】
ルーティング部３２８は、各仮想計算機３０１から送信された送信データを処理部３２９へ出力し、処理部３２９から入力されたデータを各仮想ＮＩＣ３２７へ振分ける処理を行う。
【００７１】
処理部３２９は、ネットワークからデータを受信し、また、ネットワークへデータを送信する。
【００７２】
なお、サーバシステム２０４は、サーバシステム２０４とストレージ装置２０５との間の接続に用いられるインタフェースであるＨＢＡ（図示省略）を備える。また、仮想計算機３０１は、仮想ＨＢＡ（図示省略）を備えていてもよい。
【００７３】
本実施形態では、物理ＮＩＣがネットワークのエミュレーションを実行するため、仮想ＮＩＣ３２７及びルーティング部３２８を備えているが、仮想計算機モニタ３０２が仮想ＮＩＣ３２７を構えていてもよい。この場合、仮想計算機モニタ３０２が、ネットワークのエミュレーション処理を実行する。
【００７４】
なお、各部が備える機能を一つの部にまとめてもよい。
【００７５】
図５は、本発明の第１の実施形態のＡＰ情報管理テーブル３０８のフォーマットの一例を示す説明図である。
【００７６】
ＡＰ情報管理テーブル３０８は、ＡＰ情報アドレス管理表８００を含む。ＡＰ情報アドレス管理表８００は、各仮想計算機３０１上で動作するＡＰ３２１のＡＰ動作情報が格納されるエリアのアドレスを管理する。
【００７７】
ここで、エリアとはメモリ３３１上のアドレス空間の一部分を示し、ＡＰ情報アドレス管理表８００に格納されるアドレスは当該エリアの先頭のアドレスが格納される。仮想計算機モニタ３０２は、メモリ３３１上に各仮想計算機３０１上で動作するＡＰ３２１のＡＰ動作情報を格納するエリアを確保し、当該エリアに以下で説明する情報を格納する。
【００７８】
ＡＰ情報アドレス管理表８００のアドレスに示されたエリアには、ＡＰ名８０１、ＡＰ−ＩＤ８０２、ＮＷ設定情報、インストール日時８０８、送信ログアドレス８０９、受信ログアドレス８１０、ＡＰ受信処理間隔８１１及び疑似輻輳処理ログアドレス８１２等が格納される。
【００７９】
ＡＰ名８０１は、仮想計算機３０１上で実行されるＡＰ３２１の名称である。ＡＰ−ＩＤ８０２は、仮想計算機３０１上で実行されるＡＰ３２１を特定する識別子である。
【００８０】
ＮＷ設定情報は、仮想計算機３０１上で実行されるＡＰ３２１が使用する仮想ＮＩＣ３２７におけるネットワークの設定情報である。ＮＷ設定情報は、例えば、ＭＡＣアドレス８０３、ＩＰアドレス８０４、ポート８０５、受信バッファサイズ８０６及びＶＬＡＮ−ＩＤ８０７等を含む。
【００８１】
ＭＡＣアドレス８０３はＡＰ３２１が利用する仮想ＮＩＣ３２７に割り当てられたＭＡＣアドレスである。ＩＰアドレス８０４は、仮想ＮＩＣ３２７に割り当てられたＩＰアドレスである。ポート８０５は、仮想ＮＩＣ３２７におけるポートのポート番号である。受信バッファサイズ８０６は、仮想ＮＩＣ３２７に割り当てられた受信バッファ３２５のサイズである。ＶＬＡＮ−ＩＤ８０７は、仮想ＮＩＣ３２７に対して設定されたＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の識別子等である。
【００８２】
インストール日時８０８は、仮想計算機３０１にＡＰ３２１がインストールされた日時等の時間情報である。
【００８３】
送信ログアドレス８０９は、仮想計算機３０１上で実行されるＡＰ３２１が送信するデータのロギング情報が格納されるエリアの先頭のアドレスである。
【００８４】
受信ログアドレス８１０は、仮想計算機３０１上で実行されるＡＰ３２１が受信するデータのロギング情報が格納されるエリアの先頭のアドレスである。受信ログアドレス８１０によって示されるエリアには、通信相手アドレス８２０、シーケンス番号８２１、ＮＩＣ受信タイムスタンプ８２２、ＡＰ受信処理タイムスタンプ８２３及び受信データ８２４等が格納される。
【００８５】
通信相手アドレス８２０は、仮想計算機３０１上で実行されるＡＰが通信する相手のアドレスである。シーケンス番号８２１は、仮想計算機モニタ３０２によって、各ＡＰ３２１毎にカウントされる受信データパケットのシーケンス番号である。ＮＩＣ受信タイムスタンプ８２２は、物理ＮＩＣ３１２が受信データパケットを受信した時刻情報である。ＡＰ受信処理タイムスタンプ８２３は、ＡＰ３２１が受信データパケットを受信した時刻情報である。受信データ８２４は、受信データパケットそのものである。
【００８６】
ＡＰ受信処理間隔８１１は、仮想計算機３０１上で実行されるＡＰ３２１がデータを受信する間隔である。
【００８７】
疑似輻輳処理ログアドレス８１２は、疑似輻輳処理部３０６によって実行された処理のロギング情報を格納するエリアのアドレスである。
【００８８】
疑似輻輳処理ログアドレス８１２に示されたエリアには、判定日時８３０、ＣＰＵ８３１、メモリ８３２、物理ＮＩＣ帯域８３３、仮想ＮＩＣ帯域８３４及び疑似輻輳発生間隔８３５等が格納される。
【００８９】
判定日時８３０は、疑似輻輳が必要であると判定された日時等の時間情報である。ＣＰＵ８３１は、疑似輻輳が必要であると判定された時の、仮想計算機３０１に割り当てられたＣＰＵの情報である。例えば、ＣＰＵの情報は、ＡＰ３２１によって使用される仮想計算機３０１に割り当てられたＣＰＵの稼働率である。
【００９０】
メモリ８３２は、疑似輻輳が必要であると判定された時の、仮想計算機３０１に割り当てられたメモリの情報である。例えば、メモリの情報は、ＡＰ３２１によって使用される仮想計算機３０１に割り当てられたメモリのメモリサイズである。
【００９１】
物理ＮＩＣ帯域８３３は、物理ＮＩＣ３１２に割り当てられた帯域である。仮想ＮＩＣ帯域８３４は、仮想ＮＩＣ３２７に割り当てられた帯域である。疑似輻輳発生間隔８３５は、疑似輻輳を発生する間隔である。
【００９２】
図６は、本発明の第１の実施形態の構成履歴管理テーブル３１０のフォーマットの一例を示す説明図である。
【００９３】
構成履歴管理テーブル３１０は、構成情報アドレス管理表９００を含む。構成情報アドレス管理表９００は、サーバシステム２０４のハードウェアの構成情報が格納されるワークエリアのアドレスを管理する。なお、構成情報アドレス管理表９００に格納されるアドレスは、当該ワークエリアの先頭のアドレスが格納される。
【００９４】
構成履歴管理テーブル３１０は、サーバシステム２０４上で仮想計算機モニタ３０２が稼働を開始した後、ハードウェアの変更が発生する毎に更新される。すなわち、ハードウェアが変更された場合、構成情報アドレス管理表９００にアドレスが追加され、当該アドレスに対応するエリアにハードウェアの構成情報が格納される。
【００９５】
構成情報アドレス管理表９００に示されたエリアには、設定日時９０１、ＣＰＵ９０２、メモリ９０３、ＮＩＣ９０４、ＨＢＡ９０５、仮想計算機総数９０６及び仮想計算機の設定情報アドレス等が格納される。
【００９６】
設定日時９０１は、ハードウェアが変更された日時等の時間情報である。ＣＰＵ９０２は、ハードウェアが変更された後の物理計算機３００におけるＣＰＵ３３０の情報である。メモリ９０３はハードウェアが変更された後の物理計算機３００におけるメモリ３３１の情報である。
【００９７】
ＮＩＣ９０４は、ハードウェアが変更された後の物理ＮＩＣ３１２の情報である。例えば、物理ＮＩＣ３１２の帯域等が格納される。ＨＢＡ９０５は、ハードウェアが変更された後の物理計算機３００におけるＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）の情報である。
【００９８】
仮想計算機総数９０６は、物理計算機３００上に生成された仮想計算機３０１の数である。
【００９９】
仮想計算機の設定情報アドレスは、物理計算機３００上に生成された各仮想計算機３０１の設定情報が格納されるエリアのアドレスである。
【０１００】
図６に示す例では、仮想計算機１の設定情報アドレス９０７と、仮想計算機２の設定情報アドレス９０８とが格納される。仮想計算機１の設定情報アドレス９０７は、仮想計算機１（３０１−１）の設定情報が格納されるエリアのアドレスである。仮想計算機２の設定情報アドレス９０８は、仮想計算機２（３０１−２）の設定情報が格納されるエリアのアドレスである。
【０１０１】
以下、仮想計算機１の設定情報アドレス９０７に示されたエリアに格納される情報を例として説明する。
【０１０２】
仮想計算機１の設定情報アドレス９０７に示されたエリアには、設定日時９１０、ＯＳ９１１、ＣＰＵ９１２、メモリ９１３、仮想ＮＩＣ帯域９１４及び仮想ＨＢＡ帯域９１５等が含まれる。
【０１０３】
設定日時９１０は、仮想計算機１（３０１−１）が生成された日時等の時間情報である。ＯＳ９１１は、仮想計算機１（３０１−１）のゲストＯＳ３２２−１の情報である。ＣＰＵ９１２は、仮想計算機１（３０１−１）に割り当てられたＣＰＵの情報である。メモリ９１３は、仮想計算機１（３０１−１）に割り当てられたメモリの情報である。仮想ＮＩＣ帯域９１４は、仮想計算機１（３０１−１）の仮想ＮＩＣ３２７−１に割り当てられた帯域である。仮想ＨＢＡ帯域９１５は、仮想計算機１（３０１−１）の仮想ＨＢＡに割り当てられた帯域である。
【０１０４】
図７は、本発明の第１の実施形態のネットワークシステムにおけるサーバシステム２０４が実行する処理の流れを説明するシーケンス図である。
【０１０５】
仮想計算機３０１−１上にＡＰ３２１−１がインストールされ、ＡＰ３２１−１が起動される（４００）。
【０１０６】
仮想計算機モニタ３０２は、ＡＰ３２１−１の起動を検知すると以下の処理を実行する。
【０１０７】
仮想計算機モニタ３０２は、構成履歴管理テーブル３１０からＡＰ３２１−１がインストールされた時のハードウェアの構成情報を取得し、ＡＰ３２１−１についてのロギング（図９参照）を開始する（４０１）。具体的には、仮想計算機モニタ３０２は、ＡＰ３２１−１から送受信されるパケットの測定し、ＡＰ情報管理テーブル３０８に測定結果を格納する。なお、送信パケットの測定は送信モニタ３０３によって実行され、受信パケットの測定は受信モニタ３０４によって実行される。
【０１０８】
ＡＰ３２１−１は、パケットを送受信する（４０２、４０３）。ＡＰ３２１−１が送信されたパケットは、仮想ＮＩＣ３２７−１からネットワークスイッチ２０３へと送信され、ネットワークスイッチ２０３から受信したパケットは、仮想ＮＩＣ３２７−１を介してＡＰ３２１−１が受信する。
【０１０９】
仮想計算機モニタ３０２は、送受信されるパケットの測定結果に基づいて、仮想計算機３０１−１が使用する仮想ＮＩＣ３２７−１の受信バッファ３２５−１のサイズ、及び、ＡＰ受信処理間隔等を取得する（４０４）。取得された情報は、ＡＰ情報管理テーブル３０８の仮想計算機３０１−１に対応するエリアに格納される。
【０１１０】
ここで、物理ＮＩＣ３１２が変更されると（４０５）、仮想計算機モニタ３０２は、物理ＮＩＣ３１２の変更を検知し、変更後の物理ＮＩＣ３１２の情報を取得し、疑似輻輳の発生間隔を算出する（４０６）。
【０１１１】
以下、性能が高い物理ＮＩＣ３１２に変更された場合を例に疑似輻輳の発生間隔の算出方法を説明する。なお、ＡＰ３２１−１がインストールされた時の物理ＮＩＣを旧物理ＮＩＣ３１２と記載し、また、性能が高い物理ＮＩＣ３１２を新物理ＮＩＣ３１２と記載する。
【０１１２】
物理ＮＩＣ３１２の変更を検知した仮想計算機モニタ３０２は、新物理ＮＩＣ３１２の情報を取得し、他のハードウェア情報とともに取得された新物理ＮＩＣの情報を、世代の異なるハードウェア構成情報として構成履歴管理テーブル３１０に格納する。
【０１１３】
次に、仮想計算機モニタ３０２は、構成履歴管理テーブル３１０から変更前のハードウェアの構成情報を取得し、旧物理ＮＩＣ３１２と新物理ＮＩＣ３１２との性能の差分を算出する。
【０１１４】
例えば、１００Ｍｂｐｓの速度である旧物理ＮＩＣ３１２から１Ｇｂｐｓの速度である新物理ＮＩＣ３１２に変更された場合、性能の差分は、１Ｇｂｐｓ／１００Ｍｂｐｓ＝１０と算出される。すなわち、旧物理ＮＩＣ３１２と新物理ＮＩＣ３１２との性能の差分は１０倍と算出される。
【０１１５】
この場合、ＡＰ３２１−１は、物理ＮＩＣ３１２が変更された後、変更前と比較して１０倍のデータ量を受信する可能性があり、オーバーフローが発生する可能性がある。
【０１１６】
そこで、仮想計算機モニタ３０２は、ＡＰ情報管理テーブル３０８を参照して、ＡＰ受信処理間隔８１１と受信バッファサイズ８０６とを取得し、受信バッファがオーバーフローする前に、輻輳状態を疑似的に発生させる間隔（疑似輻輳発生間隔４１４）を算出する。疑似輻輳発生間隔４１４は、疑似輻輳処理を実行するタイミングとなる時間である。
【０１１７】
なお、疑似輻輳発生間隔の算出方法については、図８Ａ及び図８Ｂを用いて後述する。
【０１１８】
仮想計算機モニタ３０２は、疑似輻輳発生処理を開始する（４０７）。具体的には、仮想計算機モニタ３０２は、算出された疑似輻輳発生間隔４１４に基づいて、送受信されるパケット（４０８、４０９）の計測を開始する。また、仮想計算機モニタ３０２は、疑似輻輳発生間隔４１４のカウントを開始する。
【０１１９】
仮想計算機モニタ３０２は、疑似輻輳発生間隔４１４分の時間が経過した後、疑似輻輳の発生を仮想ＮＩＣ３２７−１へ通知する（４１０）。具体的には、パケットの送信の停止を要求するＰＡＵＳＥコマンドの発生を通知する。
【０１２０】
イーサネット等の物理ＮＩＣ３１２は輻輳状態を検知した場合に、データ送信の停止を要求する機能を備える。例えば、ネットワークスイッチ２０３が、ＰＡＵＳＥコマンドを専用のマルチキャストアドレスに送信することによってデータ受信者（この場合、ＡＰ３２１−１）へのデータ送信を中断させる方法、又はデータ送信元に対して衝突検知を通知することによってデータ送信を中断させる方法等が考えられる。
【０１２１】
図７に示す例では、疑似輻輳の発生の通知を受けた仮想ＮＩＣ３２７−１がＰＡＵＳＥコマンドをネットワークスイッチ２０３に送信する（４１１）。これによって、ＰＡＵＳＥコマンドを受信したＳＷ２０３がパケットの送信元に対して当該ＰＡＵＳＥコマンドを送信することによって、受信データのフロー制御を行うことができる。
【０１２２】
ネットワークスイッチ２０３は、仮想ＮＩＣ３２７−１から送信されたＰＡＵＳＥコマンドを受信し、受信したＰＡＵＳＥコマンドをデータ送信元のアドレスへ送信して、データ送信元からのデータ送信を一時停止させる（４１２）。これによって、ＡＰ３２１−１が受信するパケットの受信量が一定に保たれる。すなわち、オーバーフローの発生を回避することができる。
【０１２３】
疑似輻輳を発生させることによって、ＡＰ３２１−１は、新物理ＮＩＣ３１２に変更される前と同一のデータ量のパケットを受信することができる（４１３）。
【０１２４】
なお、ＡＰ３２１−１が利用する仮想ＮＩＣ３２７−１に対して疑似輻輳を通知するため、他の仮想ＮＩＣ３２７を利用するＡＰ３２１には影響を与えない。
【０１２５】
図８Ａ及び図８Ｂは、本発明の第１の実施形態の仮想計算機モニタ３０２が実行する処理を説明するフローチャートである。
【０１２６】
仮想計算機モニタ３０２は、処理を開始すると、仮想計算機３０１を新たに生成するか否かを判定する（ステップ５００）。例えば、サーバシステム２０４の管理者から仮想計算機３０１の生成要求を受けたか否かによって判定される。
【０１２７】
仮想計算機３０１を新たに生成すると判定された場合、仮想計算機モニタ３０２は、仮想計算機３０１に割り当てるＣＰＵ、メモリ等のハードウェアの構成情報を決定し、決定されたハードウェアの構成情報を構成履歴管理テーブル３１０に格納する（ステップ５０１）。
【０１２８】
次に、仮想計算機モニタ３０２は、生成された仮想計算機３０１にＡＰ３２１がインストールされるか否かを判定する（ステップ５０２）。例えば、生成された仮想計算機３０１を利用するユーザが、当該仮想計算機にＡＰ３２１をインストールしたか否かを検知することによって判定される。
【０１２９】
生成された仮想計算機３０１にＡＰ３２１がインストールされると判定された場合、仮想計算機モニタ３０２は、インストールされるＡＰ３２１を実行するために必要な設定情報（例えば、ＡＰ３２１の名称、及びＩＰアドレスなどのネットワーク設定情報等）を取得し、ＡＰ情報管理テーブル３０８に格納する（ステップ５０３）。
【０１３０】
具体的には、仮想計算機モニタ３０２は、メモリ３３１上に生成された仮想計算機３０１上で実行されるＡＰ３２１の情報を格納するためのエリアを確保し、さらに、送信ログエリア及び受信ログエリアの確保し、確保された各エリアに、取得された情報を格納する。
【０１３１】
仮想計算機モニタ３０２は、インストールされたＡＰ３２１が起動されたか否かを判定する（ステップ５０４）。
【０１３２】
インストールされたＡＰ３２１が起動されていないと判定された場合、仮想計算機モニタ３０２は、ステップ５０２に戻り、同様の処理を実行する。
【０１３３】
インストールされたＡＰ３２１が起動されたと判定された場合、仮想計算機モニタ３０２は、ＡＰ動作情報を取得するためのロギングを開始する（ステップ５０５）。ロギングの詳細については、図９を用いて後述する。
【０１３４】
仮想計算機モニタ３０２は、疑似輻輳を発生させるか否かを判定する（ステップ５０６）。
【０１３５】
具体的には、仮想計算機モニタ３０２が、疑似輻輳発生処理を開始してから、疑似輻輳発生間隔８３５に示された時間間隔に達したか否かを判定する。さらに、疑似輻輳発生間隔８３５に示された時間間隔が経過した場合、仮想計算機モニタ３０２は、受信バッファ３２５にバッファリングされているデータパケット数を検出し、ＡＰ情報管理テーブル３０８の受信ログアドレスに示されるエリアの情報を参照し、次の疑似輻輳発生間隔８３５に示された時間間隔が経過するまでに、バッファリングされたデータパケット数がバッファオーバーを起こさないか否かを判定する。
【０１３６】
次の疑似輻輳発生間隔８３５に示された時間間隔が経過するまでに、バッファリングされたデータパケット数がバッファオーバーを起こさないと判定された場合には、仮想計算機モニタ３０２は、次の疑似輻輳発生間隔８３５に示された時間間隔が経過するまで、疑似輻輳処理を実行しない。
【０１３７】
疑似輻輳を発生させると判定された場合、仮想計算機モニタ３０２は、ＡＰ情報管理テーブル３０８に仮想計算機３０１の情報を更新し（ステップ５０７）、疑似輻輳の発生を仮想ＮＩＣ３２７へ通知する（ステップ５０８）。
【０１３８】
具体的には、疑似輻輳処理部３０６が、現在の時間を取得し、取得された現在の時間をＡＰ情報管理テーブル３０８の疑似輻輳発生ロギングエリアに格納する。
【０１３９】
また、ＰＡＵＳＥコマンドの送信要求を受信した仮想ＮＩＣ３２７は、当該仮想ＮＩＣ３２７が設定される物理ＮＩＣ３１２と接続されるネットワークスイッチ２０３に対してＰＡＵＳＥコマンドを送信する。なお、イーサネットにおけるＰＡＵＳＥコマンドには送信を停止させる時間が含まれるため、送信停止時間を設定することによって、自動的にデータ送信を再開させることが可能である。
【０１４０】
仮想計算機モニタ３０２は、ＡＰ３２１が終了したか否かを判定する（ステップ５０９）。なお、ＡＰ３２１は、ユーザ又はサーバシステム２０４の管理者によって終了される。
【０１４１】
ＡＰ３２１が終了していないと判定された場合、仮想計算機モニタ３０２は、ステップ５０５からステップ５０８の処理を実行する。
【０１４２】
ＡＰ３２１が終了したと判定された場合、仮想計算機モニタ３０２は、処理を終了する。
【０１４３】
ステップ５００において仮想計算機３０１を新たに生成しないと判定された場合、又は、ステップ５０２において生成された仮想計算機３０１にＡＰ３２１がインストールされないと判定された場合、仮想計算機モニタ３０２は、サーバシステム２０４のハードウェアが変更されたか否かを判定する（ステップ５１０）。
【０１４４】
サーバシステム２０４のハードウェアが変更されていないと判定された場合、仮想計算機モニタ３０２は、ステップ５００に戻り同様の処理を実行する。
【０１４５】
サーバシステム２０４のハードウェアが変更されたと判定された場合、仮想計算機モニタ３０２は、ハードウェアが変更された後のサーバシステム２０４のハードウェアの構成情報を取得して構成履歴管理テーブル３１０を更新する（ステップ５１１）。
【０１４６】
具体的には、仮想計算機モニタ３０２は、変更後のサーバシステム２０４のハードウェア構成情報を格納するためのエリアをメモリ３３１上に確保し、構成情報アドレス管理表９００に当該確保されたエリアの先頭アドレスを追加する。
【０１４７】
さらに、仮想計算機モニタ３０２は、変更後のサーバシステム２０４のハードウェア構成情報を格納するためのエリアに、取得された情報（例えば、設定日時、ＣＰＵ、メモリ、ＮＩＣの処理速度及びプロトコルのバージョン等）を格納する。なお、変更されないハードウェアについては、変更後のサーバシステム２０４のハードウェア構成情報を格納するためのエリアには、変更前のサーバシステム２０４のハードウェアの構成情報と同一のものが格納される。
【０１４８】
次に、仮想計算機モニタ３０２は、ハードウェアの変更に伴う移行処理を実行する（ステップ５１２）。
【０１４９】
例えば、変更されるハードウェアが物理ＮＩＣ３１２の場合、仮想計算機モニタ３０２は、当該物理ＮＩＣ３１２を利用するＡＰ３２１を停止させ、新たな物理ＮＩＣ３１２に変更された後にネットワークの設定情報を移行する方式や、ＡＰ３２１は稼働させたまま、別のサーバシステム２０４又は別の物理計算機３００上に構築された仮想環境に仮想計算機３０１を移行するライブマイグレーション方式等を利用する方法が考えられる。
【０１５０】
仮想計算機モニタ３０２は、変更されたハードウェアが物理ＮＩＣ３１２であるか否かを判定する（ステップ５１３）。
【０１５１】
変更されたハードウェアが物理ＮＩＣ３１２でないと判定された場合、仮想計算機モニタ３０２は、ステップ５００に戻り同様の処理を実行する。なお、変更されたハードウェアに基づいた処理を実行してもよい。
【０１５２】
変更されたハードウェアが物理ＮＩＣ３１２であると判定された場合、仮想計算機モニタ３０２は、ステップ５１４からステップ５１８に示す、性能差を解消するための処理を実行する。すなわち、疑似輻輳を発生させるための処理が実行される。
【０１５３】
まず、仮想計算機モニタ３０２は、構成履歴管理テーブル３１０から変更後の物理ＮＩＣ３１２の性能情報（例えば、処理速度やプロトコル情報等）を取得する（ステップ５１４）。
【０１５４】
仮想計算機モニタ３０２は、ＡＰ情報管理テーブル３０８及び構成履歴管理テーブル３１０から、ＡＰ３２１がインストールされた時点のサーバシステム２０４のハードウェアの構成情報を取得する（ステップ５１５）。すなわち、変更前の物理ＮＩＣ３１２の性能情報が取得される。当該処理は、性能差解消処理部３０５によって実行される。
【０１５５】
具体的には、仮想計算機モニタ３０２は、構成履歴管理テーブル３１０から、ＡＰ３２１がインストールされた時点のサーバシステム２０４のハードウェアの構成情報を取得する。
【０１５６】
次に、仮想計算機モニタ３０２は、取得されたハードウェアの構成情報の設定日時９０１に基づいて、変更前の物理ＮＩＣ３１２が割り当てられていた仮想計算機上で実行されるＡＰ３２１を特定する。さらに、仮想計算機モニタ３０２は、ＡＰ情報管理テーブル３０８から特定されたＡＰ３２１の情報を取得する。特定されたＡＰ３２１の情報は、仮想ＮＩＣ３２７の受信バッファ３２５のバッファサイズ及びＡＰ３２１の受信処理間隔を含む。
【０１５７】
なお、以下では、変更前の物理ＮＩＣ３１２を第１世代の物理ＮＩＣ３１２と記載し、変更後の物理ＮＩＣ３１２を第２世代の物理ＮＩＣ３１２と記載する。
【０１５８】
仮想計算機モニタ３０２は、取得された第１世代の物理ＮＩＣ３１２の性能情報と第２世代の物理ＮＩＣ３１２の性能情報とに基づいて、第１世代の物理ＮＩＣ３１２と第２世代の物理ＮＩＣ３１２との性能差を算出する（ステップ５１６）。当該処理は、性能差解消処理部３０５によって実行される。
【０１５９】
例えば、第１世代の物理ＮＩＣ３１２の速度が１００Ｍｂｐｓ、第２世代の物理ＮＩＣ３１２の速度が１Ｇｂｐｓの速度である場合、１Ｇｂｐｓ／１００Ｍｂｐｓを計算することによって、第２世代の物理ＮＩＣ３１２は、第１世代の物理ＮＩＣ３１２の１０倍のデータ送受信能力を持つことが分かる。
【０１６０】
第２世代の物理ＮＩＣ３１２の性能が第１世代の物理ＮＩＣ３１２の性能より高いと判定された場合には、仮想計算機モニタ３０２は、疑似輻輳を発生させることを決定し、以下の処理を実行する。
【０１６１】
なお、第２世代の物理ＮＩＣ３１２の性能が第１世代の物理ＮＩＣ３１２の性能より低い場合、疑似輻輳を発生させる必要がないためステップ５０９に進んでもよい。
【０１６２】
仮想計算機モニタ３０２は、第１世代の物理ＮＩＣ３１２上の仮想ＮＩＣ３２７を利用していたＡＰ３２１の情報、及び算出された第１世代の物理ＮＩＣ３１２と第２世代の物理ＮＩＣ３１２との性能差に基づいて、疑似輻輳発生間隔を決定する（ステップ５１７）。当該処理は、性能差解消処理部３０５によって実行される。
【０１６３】
例えば、第１世代の物理ＮＩＣ３１２と第２世代の物理ＮＩＣ３１２との性能差が１０倍であり、ＡＰ３２１の受信処理間隔が１００ｍｓであり、仮想ＮＩＣ３２７の受信バッファ３２５のバッファサイズが１０データパケット分である場合、データを受信してから１０ｍｓ経過後に仮想ＮＩＣ３２７の受信バッファ３２５にオーバーフローが起こる可能性がある。従って、この場合、仮想計算機モニタ３０２は、疑似輻輳発生間隔を「１０ｍｓ」と決定し、決定された疑似輻輳発生間隔をＡＰ情報管理テーブル３０８の疑似輻輳発生間隔８３５に格納する。
【０１６４】
仮想計算機モニタ３０２は、決定された疑似輻輳発生間隔を用いて、疑似輻輳発生処理を開始する（ステップ５１８）。
【０１６５】
その後、仮想計算機モニタ３０２は、ステップ５０５に進み、ステップ５０５からステップ５０９の処理を実行する。
【０１６６】
なお、ステップ５１８は、仮想計算機モニタ３０２が仮想ＮＩＣ３２７の受信バッファ３２５にバッファリングされるデータ量の上限値を設定し、仮想ＮＩＣ３２７の受信バッファ３２５にバッファリングされるデータ量が疑似輻輳発生間隔以内であっても、設定された上限値を超える場合には、ＰＡＵＳＥコマンドの送信要求を通知する処理であってもよい。
【０１６７】
なお、仮想計算機モニタ３０２は、仮想ＮＩＣ３２７の受信バッファ３２５に設定される上限値を決定し、当該上限値を用いて処理を実行してもよい。すなわち、仮想計算機モニタ３０２は、疑似輻輳発生間隔の代わりに、仮想ＮＩＣ３２７の受信バッファ３２５のバッファサイズの上限値に基づいて、疑似輻輳の発生の有無を判定してもよい。
【０１６８】
また、仮想ＮＩＣ３２７の受信バッファ３２５へのバッファリング量が多く、疑似輻輳発生間隔毎に毎回ＰＡＵＳＥコマンドが送信されているような場合においては、例えば、仮想ＮＩＣ３２７に更に当該ＡＰ３２１の仮想ＮＩＣ３２７の受信バッファ３２５を持たせて受信可能なデータ量を増やす処理を実行してもよい。
【０１６９】
なお、ステップ５０９からステップ５０５に戻るときに、仮想計算機モニタ３０２は、ハードウェアが変更されたか否かを判定し、ハードウェアが変更された場合には、ステップ５１１からステップ５１８の処理を実行するようにしてもよい。
【０１７０】
図９は、本発明の第１の実施形態の仮想計算機モニタ３０２が実行するＡＰ動作情報のロギング処理を説明するフローチャートである。
【０１７１】
図９に示す処理は、ステップ５０５において実行される処理である。なお、以下で説明する処理は、送信モニタ３０３及び受信モニタ３０４によって実行される。
【０１７２】
仮想計算機モニタ３０２は、ステップ５０４においてＡＰ３２１が起動した後、計測用エリアを初期化する（ステップ６００）。
【０１７３】
仮想計算機モニタ３０２は、ＡＰ情報管理テーブル３０８から起動しているＡＰ３２１の設定情報を取得する（ステップ６０１）。取得される設定情報は、例えば、通信相手のアドレス情報、仮想ＮＩＣ３２７の受信バッファ３２５のバッファサイズ（受信バッファサイズ８０６）等が含まれる。
【０１７４】
仮想計算機モニタ３０２は、物理ＮＩＣ３１２からの割り込みがあったか否かを判定する（ステップ６０２）。
【０１７５】
物理ＮＩＣ３１２からの割り込みがないと判定された場合、仮想計算機モニタ３０２は、ステップ６０２に戻り、物理ＮＩＣ３１２からの割り込みを検出するまで同様の処理を実行する。
【０１７６】
物理ＮＩＣ３１２からの割り込みがあったと判定された場合、すなわち、物理ＮＩＣ３１２からの割り込みを検出した場合、仮想計算機モニタ３０２は、当該割り込みがデータ受信についての割り込みか否かを判定する（ステップ６０３）。
【０１７７】
物理ＮＩＣ３１２からの割り込みがデータ受信についての割り込みであると判定された場合、仮想計算機モニタ３０２は、仮想ＮＩＣ３２７の受信バッファ３２５に受信データをバッファリングし、受信データにタイムスタンプを付与する（ステップ６０４）。付与されるタイムスタンプは、物理ＮＩＣが受信データを受け取った時刻を示し、当該タイムスタンプの情報は、ＮＩＣ受信タイムスタンプ８２２に格納される。
【０１７８】
次に、仮想計算機モニタ３０２は、受信データを受け取った間隔を算出する（ステップ６０５）。
【０１７９】
具体的には、仮想計算機モニタ３０２は、現在の時刻を取得し、取得された現在の時刻と前回のデータ受信割り込みが発生した時刻との時間間隔を算出し、算出結果をＡＰ情報管理テーブル３０８に格納する。
【０１８０】
仮想計算機モニタ３０２は、ＡＰ３２１が受信処理を実行したか否かを判定する（ステップ６０６）。すなわち、ＡＰ３２１が受信データを受け取ったか否かが判定される。
【０１８１】
ＡＰ３２１が受信処理を実行していないと判定された場合、仮想計算機モニタ３０２は、ステップ６０８に進む。
【０１８２】
ＡＰ３２１が受信処理を実行していると判定された場合、仮想計算機モニタ３０２は、受信データにタイムスタンプを付与する（ステップ６０７）。付与されるタイムスタンプは、ＡＰ３２１が受信データを受け取った時刻を示し、当該タイムスタンプの情報は、ＡＰ受信処理タイムスタンプ８２３に格納される。
【０１８３】
次に、仮想計算機モニタ３０２は、現在の時刻を取得して、取得された現在の時刻と、前回のＡＰ３２１が受信処理を実行した時刻との時間間隔（ＡＰ受信処理間隔）を算出し、算出結果をＡＰ情報管理テーブル３０８に格納し（ステップ６０８）、処理を終了する。
【０１８４】
なお、本実施形態では世代毎に管理されるハードウェアとして物理ＮＩＣ３１２を対象としているが、その他ＣＰＵ３３０やメモリ３３１等のハードウェアであってもよい。例えば、変更されるハードウェアがＣＰＵ３３０である場合、変更前のＣＰＵの１００％の処理能力に近似させるように使用率を制限する等の処理によって、ハードウェアの変更に伴う性能差の解消を実現できる。
【０１８５】
第１の実施形態によれば、仮想計算機モニタ３０２は仮想計算機３０１上にアプリケーションがインストールされた時点におけるサーバシステム２０４のハードウェアの構成情報を記録する。物理ＮＩＣが変更された場合、仮想計算機モニタ３０２は、変更前の物理ＮＩＣ３１２と変更後の物理ＮＩＣ３１２との性能差を考慮して疑似輻輳を発生させることによって、受信データのフロー制御を行うことができる。これによって、ネットワークの高速化によって発生するアプリケーションの異常稼働や異常終了を防止することができる。
【０１８６】
［第２の実施形態］
本発明の第２の実施形態について、図１０〜図１５を参照して説明する。
【０１８７】
第２の実施形態は、ネットワークスイッチ２０３が、疑似輻輳を発生させる処理を実行する点が第１の実施形態と異なる。
【０１８８】
すなわち、物理計算機３００の物理ＮＩＣ３１２を変更する場合、仮想計算機モニタ３０２が、受信バッファがオーバーフローしないようにするための疑似輻輳発生間隔を、物理計算機３００に接続されるネットワークスイッチ２０３に通知し、ネットワークスイッチ２０３が当該通知に従って疑似輻輳を発生させる。
【０１８９】
以下、第１の実施形態との差異を中心に説明する。
【０１９０】
第２の実施形態のネットワークシステムの構成は第１の実施形態と同一であるため説明を省略する。また、サーバシステム２０４及び物理計算機３００の構成も第１の実施形態と同一であるため説明を省略する。
【０１９１】
図１０は、本発明の第２の実施形態のネットワークスイッチ２０３の内部構成の一例を説明するブロック図である。
【０１９２】
ネットワークスイッチ２０３は、ＣＰＵ１１００、アドレス用メモリ１１０１、パケット用メモリ１１０２、スイッチチップ１１０３、ＬＡＮ（ＬＯＣＡＬ  ＡＲＥＡ  ＮＥＴＷＯＲＫ）ポート１１０４及びメモリ１１２０を備える。
【０１９３】
ＣＰＵ１１００は、メモリ１１２０に格納されたプログラムを実行する。
【０１９４】
アドレス用メモリ１１０１は、ネットワークアドレスに関する情報を格納する。具体的には、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレステーブル（図示省略）及びルーティングテーブル（図示省略）等が格納される。
【０１９５】
パケット用メモリ１１０２は、ネットワークスイッチが受信したデータパケットを一時的に格納するメモリである。
【０１９６】
スイッチチップ１１０３は、各種ネットワークの処理を実行する。具体的には、スイッチチップ１１０３は、ＬＡＮポート１１０４にて受信したデータパケットを一旦パケット用メモリ１１０２への格納する処理、アドレス用メモリ１１０１から宛先アドレスのＬＡＮポート１１０４を検索する処理、ＬＡＮポート１１０４へのデータパケットの引き渡し処理等を実行する。ネットワークスイッチ２０３自身宛の受信データを受信した場合には、ＣＰＵ１１００に引き渡し、受信データに従った処理が実行される。
【０１９７】
メモリ１１２０は、ＣＰＵ１１００によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。
【０１９８】
メモリ１１２０は、経路情報送信処理部１１０５、経路情報受信処理部１１０６、ルーティングテーブル管理部１１０７、ＡＰ動作保証処理部１１０８、ＡＰ−ネットワーク環境情報テーブル１１０９、疑似輻輳情報送信処理部１１１０及び疑似輻輳情報受信処理部１１１１を含む。
【０１９９】
経路情報送信処理部１１０５は、ルーティングテーブル管理部１１０７によって実行された処理結果、及び他のネットワークスイッチ２０３へ通知する必要があるデータの送信処理を実行する。
【０２００】
経路情報受信処理部１１０６は、受信したデータパケットが自分宛であり、経路情報に関わるデータである場合に、ルーティングテーブル管理部１１０７に出力する。
【０２０１】
ルーティングテーブル管理部１１０７は、経路情報に従って、受信したデータパケットの転送処理を実行する。
【０２０２】
ＡＰ動作保証処理部１１０８は、サーバシステム２０４から受信したデータパケットがＡＰ動作情報を含むデータである場合、当該データパケットに含まれるＡＰ動作情報をＡＰ−ネットワーク環境情報テーブル１１０９に格納し、受信するデータパケットの受信間隔の監視等の疑似輻輳処理を実行する。
【０２０３】
疑似輻輳情報受信処理部１１１１は、疑似輻輳に関する情報をサーバシステム２０４から受信する。さらに、疑似輻輳に関する情報を他のネットワークスイッチ２０３等から受信する。
【０２０４】
疑似輻輳情報送信処理部１１１０は、サーバシステム２０４から受信した疑似輻輳に関する情報を他のネットワークスイッチ２０３等に送信する。
【０２０５】
なお、ネットワークスイッチ２０３は、ＣＰＵ１１００及びメモリ１１２０の代わりに、ＣＰＵ、ＲＯＭ及びＲＡＭ等を備えるワンチップ・マイコンを備えてもよい。
【０２０６】
図１１は、本発明の第２の実施形態のネットワークシステムにおけるサーバシステム２０４及びネットワークスイッチ２０３が実行する処理の流れを説明するシーケンス図である。
【０２０７】
仮想計算機３０１−１にインストールされたＡＰ３２１−１の起動後の処理（ステップ４００、ステップ４０１）、物理ＮＩＣ３１２が変更される処理（ステップ４０５）は、図７と同一であるため説明を省略する。
【０２０８】
物理ＮＩＣ３１２が変更されたことを検知した仮想計算機モニタ３０２は、ＡＰ３２１−１がインストールされた時点の物理ＮＩＣ３１２の情報を構成履歴管理テーブル３１０から取得する（１２００）。具体的には、構成履歴管理テーブル３１０のＮＩＣ９０４から、ＡＰ３２１−１がインストールされた時点の物理ＮＩＣ３１２の帯域情報を取得する。
【０２０９】
仮想計算機モニタ３０２は、仮想ＮＩＣ３２７−１に、取得された物理ＮＩＣ３１２の帯域情報を送信する（１２０１）。さらに、仮想ＮＩＣ３２７−１を介してネットワークスイッチ２０３へ取得された物理ＮＩＣ３１２の帯域情報が送信される（１２０２）。
【０２１０】
仮想計算機モニタ３０２は、ＡＰ３２１−１の受信処理間隔をＡＰ情報管理テーブル３０８から取得し、ＡＰ３２１−１の受信可能な帯域であるＡＰ受信可能帯域を算出する（１２０３）。ＡＰ受信可能帯域は、例えば、ＡＰ３２１の受信処理間隔と受信データサイズとを乗算することによって算出される。
【０２１１】
算出されたＡＰ受信可能帯域、取得されたＡＰ３２１−１の受信処理間隔、及び仮想ＮＩＣ３２７−１に割り当てられたネットワークアドレス等を含むＡＰ動作情報を仮想ＮＩＣ３２７−１に送信する（１２０４）。さらに、仮想ＮＩＣ３２７−１を介してネットワークスイッチ２０３にＡＰ動作情報が送信される（１２０５）。
【０２１２】
なお、仮想計算機モニタ３０２からネットワークスイッチ２０３に送信される物理ＮＩＣの帯域情報及びＡＰ動作情報は、同じデータパケットに含め、一度に送信してもよい。
【０２１３】
ＡＰ動作情報を受信したネットワークスイッチ２０３は、受信したＡＰ動作情報に含まれる受信処理間隔、ＡＰ受信可能帯域及びネットワークアドレスを取得する（１２０６）。
【０２１４】
ネットワークスイッチ２０３は、取得されたネットワークアドレス（データ送信元１２２０）向けのデータパケットの受信間隔の計測を実行する（１２０７）。
【０２１５】
ネットワークスイッチ２０３は、計測結果に基づいて、疑似輻輳処理が必要であるか否かを判定する（１２０８）。なお、当該判定は、図７の４０６と同一の方法を用いる方法が考えられる。
【０２１６】
疑似輻輳処理が必要であると判定された場合、ネットワークスイッチ２０３は、取得されたネットワークアドレス向けのデータパケットの送信を一旦中断させるため、ＰＡＵＳＥコマンドをデータ送信元１２２０へ送信する（１２０９）。
【０２１７】
図１２は、本発明の第２の実施形態の仮想計算機モニタ３０２が実行する性能差を解消するための処理を説明するフローチャートである。
【０２１８】
なお、仮想計算機モニタ３０２が実行する処理のうち、ステップ５００〜ステップ５１３の処理は同一であるため説明を省略する。
【０２１９】
仮想計算機モニタ３０２は、構成履歴管理テーブル３１０から変更後の物理ＮＩＣ３１２の性能情報（例えば、処理速度やプロトコル情報等）を取得する（ステップ５１４）。
【０２２０】
仮想計算機モニタ３０２は、ＡＰ情報管理テーブル３０８及び構成履歴管理テーブル３１０から、ＡＰ３２１がインストールされた時点のサーバシステム２０４のハードウェアの構成情報を取得する（ステップ５１５）。具体的には、ＡＰ３２１−１がインストールされた時点の物理ＮＩＣの帯域情報が取得される。
【０２２１】
仮想計算機モニタ３０２は、取得された物理ＮＩＣ３１２の帯域情報をネットワークスイッチ２０３へ送信する（ステップ１３００）。なお、ＡＰ３２１がインストールされた時点のサーバシステム２０４における物理ＮＩＣ３１２の情報として、仮想ＮＩＣ３２７の帯域が送信されてもよい。
【０２２２】
仮想計算機モニタ３０２は、ＡＰ情報管理テーブル３０８からＡＰ３２１−１の受信処理間隔及び受信バッファサイズ等を取得する（ステップ１３０１）。
【０２２３】
仮想計算機モニタ３０２は、取得されたＡＰ３２１−１の受信処理間隔に基づいて、ＡＰ受信可能帯域を算出する（ステップ１３０２）。
【０２２４】
仮想計算機モニタ３０２は、ネットワークスイッチ２０３に、算出されたＡＰ受信可能帯域、取得されたＡＰ３２１−１の受信処理間隔、及び仮想ＮＩＣ３２７−１に割り当てられたネットワークアドレス等を含むＡＰ動作情報を送信する（ステップ１３０３）。
【０２２５】
その後、ステップ５０６からステップ５０８の処理を実行せずに、ＡＰ３２１−１が終了されるまで、ステップ５０５のＡＰ動作情報のロギング処理を実行する。
【０２２６】
図１３は、本発明の第２の実施形態のネットワークスイッチ２０３が実行する処理を説明するフローチャートである。
【０２２７】
ネットワークスイッチ２０３は、ＬＡＮポート１１０４を介してデータパケットを受信したか否かを判定する（ステップ１４００）。
【０２２８】
データパケットを受信していないと判定された場合、ネットワークスイッチ２０３は、ステップ１４００に戻り、データパケットを受信するまで待ち続ける。
【０２２９】
データパケットを受信したと判定された場合、ネットワークスイッチ２０３は、受信したデータパケットをパケット用メモリ１１０２に格納し、受信したデータパケットが自分（ネットワークスイッチ２０３）宛であるか否かを判定する（ステップ１４０１）。
【０２３０】
受信したデータパケットが自分宛でないと判定された場合、ネットワークスイッチ２０３は、スイッチング処理を実行し（ステップ１４０４）、ステップ１４００に戻る。なお、スイッチング処理の詳細は、図１４を用いて後述する。
【０２３１】
受信したデータパケットが自分宛であると判定された場合、ネットワークスイッチ２０３は、受信したデータパケットが経路情報に関するデータであるか否かを判定する（ステップ１４０２）。
【０２３２】
受信したデータパケットが経路情報に関するデータであると判定された場合、ネットワークスイッチ２０３は、ルーティング情報処理を実行する（ステップ１４０３）。当該処理は、ルーティングテーブル管理部１１０７によって実行される。
【０２３３】
受信したデータパケットが経路情報に関するデータではないと判定された場合、ネットワークスイッチ２０３は、受信したデータパケットがＡＰ動作情報であるか否かを判定する（ステップ１４０５）。
【０２３４】
受信したデータパケットがＡＰ動作情報でないと判定された場合、ネットワークスイッチ２０３は、ステップ１４００に戻る。
【０２３５】
受信したデータパケットがＡＰ動作情報であると判定された場合、ネットワークスイッチ２０３は、受信したデータパケットから、ＡＰ受信可能帯域、ＡＰ３２１−１における変更前の物理ＮＩＣ３１２の帯域情報、ＡＰ３２１−１の受信処理間隔等を取得する（ステップ１４０６）。
【０２３６】
ネットワークスイッチ２０３は、ＡＰ動作情報から取得された情報に基づいて、データパケット送信元である仮想計算機３０１−１へのデータパケットの監視処理を開始する（ステップ１４０７）。
【０２３７】
図１４は、本発明の第２の実施形態のネットワークスイッチ２０３によって実行されるスイッチング処理を説明するフローチャートである。
【０２３８】
ネットワークスイッチ２０３のスイッチチップ１１０３は、受信したデータパケットに含まれる通信先アドレス情報を取得し、アドレス用メモリ１１０１に格納されるルーティングテーブル（図示省略）を検索する（ステップ１５００）。
【０２３９】
ネットワークスイッチ２０３は、前述の検索結果に基づいて、受信したデータパケットが監視対象の仮想計算機３０１−１宛に送信されるデータパケットであるか否かの判定処理を実行する（ステップ１５０１）。
【０２４０】
ネットワークスイッチ２０３は、判定処理の結果が受信したデータパケットが監視対象の仮想計算機３０１−１宛に送信されるデータパケットであるか否かを判定する（ステップ１５０２）。
【０２４１】
受信したデータパケットが監視対象の仮想計算機３０１−１宛に送信されるデータパケットでないと判定された場合、ネットワークスイッチ２０３は、ステップ１５０２に戻る。
【０２４２】
受信したデータパケットが監視対象の仮想計算機３０１−１宛に送信されるデータパケットであると判定された場合、ネットワークスイッチ２０３は、現在の時刻を取得し、受信したデータパケットにタイムスタンプを付与し、また、受信データパケット数をカウントアップする（ステップ１５０３）。
【０２４３】
ネットワークスイッチ２０３は、データパケットを受け取った間隔である受信間隔を算出し、また、受信したデータパケットの仮想計算機３０１−１宛てのデータパケット数を確認する（ステップ１５０４）。
【０２４４】
具体的には、ネットワークスイッチ２０３は、前回データパケットを受信した時刻とステップ１５０３において取得された時刻に基づいて受信間隔を算出する。また、データパケット数は、データパケットを送信先に出力したときにカウントダウンされ、パケット用メモリ１１０２にバッファリングされるデータパケット数が送信先毎に管理される。
【０２４５】
ネットワークスイッチ２０３は、算出されたデータパケット受信間隔及びデータパケット数に基づいて、ＡＰ３２１−１が受信処理可能な範囲であるか否かを判定する（ステップ１５０５）。
【０２４６】
例えば、変更前の物理ＮＩＣ３１２（又は仮想ＮＩＣ３２７−１）の帯域が１００Ｍｂｐｓであり、受信処理間隔が１００ｍｓであり、変更後の物理ＮＩＣ３１２の帯域が１Ｇｂｐｓである場合、ネットワークスイッチ２０３が受信するデータパケットの受信間隔は１０ｍｓと算出される。このとき、データパケット数が１０データパケットである場合、仮想計算機３０１−１の仮想ＮＩＣ３２７−１の受信バッファ３２５−１にオーバーフローが起こる可能性があるため、ＡＰ３２１−１が受信処理可能な範囲でないと判定される。つまり、疑似輻輳を発生させる必要があると判定される。
【０２４７】
ＡＰ３２１−１が受信処理可能な範囲であると判定された場合、ネットワークスイッチ２０３は、処理を終了する。
【０２４８】
ＡＰ３２１−１が受信処理可能な範囲でないと判定された場合、ネットワークスイッチ２０３は、ＡＰ３２１−１宛にデータパケットを送信する通信相手に対して疑似輻輳発生を通知し（ステップ１５０６）、処理を終了する。
【０２４９】
具体的には、ネットワークスイッチ２０３は、ＡＰ３２１−１宛にデータパケットを送信する通信相手にＰＡＵＳＥコマンドを送信する。
【０２５０】
これによって、ＡＰ３２１−１宛にデータパケットを送信する通信相手からのデータパケットの送信を一時停止させることができる。
【０２５１】
図１５は、ネットワークスイッチ２０３が管理するＡＰ−ネットワーク環境情報テーブル１１０９のフォーマットの一例を示す説明図である。
【０２５２】
ＡＰ−ネットワーク環境情報テーブル１１０９は、ポート１６０１、ＭＡＣアドレス１６０２、ＩＰアドレス１６０３、速度１６０４、ＡＰ受信間隔１６０５、ＡＰ受信データ数１６０６、受信時刻１６０７及び受信間隔１６０８を含む。
【０２５３】
ポート１６０１は、ＬＡＮポート１１０４のポート番号である。ＭＡＣアドレス１６０２は、監視対象の仮想計算機３０１に割り当てられるＭＡＣアドレスである。なお、当該ＭＡＣアドレスは仮想計算機モニタ３０２によって割り当てられる。
【０２５４】
ＩＰアドレス１６０３は、監視対象の仮想計算機３０１に割り当てられているＩＰアドレスである。なお、当該ＩＰアドレスは、仮想計算機モニタ３０２によって割り当てられる。
【０２５５】
速度１６０４は、ＡＰ３２１が使用する物理ＮＩＣ３１２（又は仮想ＮＩＣ３２７）の帯域である。ＡＰ受信間隔１６０５は、ＡＰ３２１の受信処理可能間隔である。ＡＰ受信データ数１６０６は、ネットワークスイッチ２０３にバッファリングされる各仮想計算機３０１宛のデータパケット数である。
【０２５６】
受信時刻１６０７は、ネットワークスイッチ２０３が各仮想計算機３０１宛のデータパケットを受信した時刻である。受信間隔１６０８は各仮想計算機３０１宛のデータパケットの受信間隔である。
【０２５７】
なお、第２の実施形態では、仮想計算機モニタ３０２によってＡＰ受信可能帯域が算出されたが、ネットワークスイッチ２０３がＡＰ動作情報に含まれるＡＰ３２１−１の受信処理間隔に基づいて、ＡＰ受信可能帯域を算出してもよい。これによって、仮想計算機モニタ３０２の処理負担を低減することができる。
【０２５８】
第２の実施形態によれば、ネットワークスイッチ２０３が、物理ＮＩＣ３１２が変更された場合に、仮想計算機モニタ３０２から送信される情報に基づいて、変更前の物理ＮＩＣ３１２と変更後の物理ＮＩＣ３１２との性能差を考慮して疑似輻輳を発生させることによって、受信データのフロー制御を行うことができる。これによって、ネットワークの高速化によって発生するアプリケーションの異常稼働や異常終了を防止することができる。
【符号の説明】
【０２５９】
１００  ソフトウェア
１０１  仮想計算機モニタ
１０２  仮想計算機
１０６  アプリケーション動作情報
１０７、１０８  ハードウェア
１０９  ハードウェア性能差分情報
１１０  性能差解消処理部
１１１  疑似輻輳情報受信処理部
２００  ＤＣ
２０１  外部ネットワーク
２０２  ルータ
２０３  ネットワークスイッチ
２０４  サーバシステム
２０５  ストレージ装置
２０６  ネットワーク
３００  物理計算機
３０１  仮想計算機
３０２  仮想計算機モニタ
３０３  送信モニタ
３０４  受信モニタ
３０５  性能差解消処理部
３０６  疑似輻輳処理部
３０７  ＡＰ情報管理部
３０８  ＡＰ情報管理テーブル
３０９  構成履歴管理部
３１０  構成履歴管理テーブル
３１２  物理ＮＩＣ
３２０  内部バス
３２１  ＡＰ
３２２  ゲストＯＳ
３２３  仮想ドライバ
３２４  送信バッファ
３２５  受信バッファ
３２７  仮想ＮＩＣ
３２８  ルーティング部
３２９  処理部
３３０  ＣＰＵ
３３１  メモリ
３３２  不揮発性記憶媒体
１１００  ＣＰＵ
１１０１  アドレス用メモリ
１１０２  パケット用メモリ
１１０３  スイッチチップ
１１０４  ＬＡＮポート
１１０５  経路情報送信処理部
１１０６  経路情報受信処理部
１１０７  ルーティングテーブル管理部
１１０８  ＡＰ動作保証処理部
１１０９  ＡＰ−ネットワーク環境情報テーブル
１１１０  疑似輻輳情報送信処理部
１１１１  疑似輻輳情報受信処理部
１１２０  メモリ
【図１】
2011203810.tif 000003
【図２】
2011203810.tif 000004
【図３】
2011203810.tif 000005
【図４】
2011203810.tif 000006
【図５】
2011203810.tif 000007
【図６】
2011203810.tif 000008
【図７】
2011203810.tif 000009
【図８Ａ】
2011203810.tif 000010
【図８Ｂ】
2011203810.tif 000011
【図９】
2011203810.tif 000012
【図１０】
2011203810.tif 000013
【図１１】
2011203810.tif 000014
【図１２】
2011203810.tif 000015
【図１３】
2011203810.tif 000016
【図１４】
2011203810.tif 000017
【図１５】
2011203810.tif 000018