(57)【要約】【課題】パケットの振り分け先のＣＰＵを変更することを可能とする処理分散プログラム、処理分散装置及び処理分散方法を提供する。【解決手段】複数のアプリケーションごとに、各アプリケーションからパケットが送信されるＣＰＵを特定し、複数のＣＰＵごとに、各ＣＰＵにパケットを送信するアプリケーションに対応する通信量を合計することにより、各ＣＰＵが受信するパケットの通信量を算出し、算出した通信量が所定閾値を超える特定のＣＰＵを特定し、特定した特定のＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＣＰＵを変更する特定のアプリケーションを特定し、特定した特定のアプリケーションを移動した場合に、特定のアプリケーションがパケットを送信するＣＰＵが変更される特定の仮想マシンを特定し、特定した仮想マシンに対し、特定のアプリケーションを移動する。【選択図】図９
2019086957.tif 000002
【特許請求の範囲】
【請求項１】
所定の間隔において、複数の仮想マシンにおいて動作する複数のアプリケーションごとに、各アプリケーションが複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｃｏｍｐｕｔｉｎｇ  Ｕｎｉｔ）のうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得し、
前記複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、前記複数のＣＰＵのうち、各アプリケーションからパケットが送信されるＣＰＵを特定し、
前記複数のＣＰＵごとに、前記複数のアプリケーションのうち、各ＣＰＵにパケットを送信するアプリケーションに対応する前記通信量を合計することにより、各ＣＰＵが受信するパケットの通信量を算出し、
前記複数のＣＰＵから、算出した前記通信量が所定閾値を超える特定のＣＰＵを特定し、
前記複数のアプリケーションのうち、特定した前記特定のＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＣＰＵを変更する特定のアプリケーションを特定し、
前記複数の仮想マシンのうち、特定した前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが変更される特定の仮想マシンを特定し、
特定した前記仮想マシンに対し、前記特定のアプリケーションを移動する、
ことをコンピュータに実行させることを特徴とする処理分散プログラム。
【請求項２】
請求項１において、
前記特定のアプリケーションを特定する処理では、
前記特定のＣＰＵに対してパケットを送信するアプリケーションのうち、前記特定のＣＰＵに対して送信されるパケットの通信量が最も多いアプリケーションを、前記特定のアプリケーションとして特定する、
ことを特徴とする処理分散プログラム。
【請求項３】
請求項１において、
前記特定のアプリケーションを特定する処理では、前記特定のＣＰＵに対して送信されるパケットの通信量が前記所定閾値以下になるまで、前記特定のアプリケーションの特定を繰り返す、
ことを特徴とする処理分散プログラム。
【請求項４】
請求項１において、さらに、
前記複数のＣＰＵのうち、前記複数のアプリケーションから送信されるパケットの通信量と前記所定閾値との差が、前記特定のアプリケーションから前記特定のＣＰＵに対して送信されるパケットの特定の通信量よりも大きい他のＣＰＵを特定する、
処理をコンピュータに実行させ、
前記特定の仮想マシンを特定する処理では、前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが前記他のＣＰＵに変更される仮想マシンを、前記特定の仮想マシンとして特定する、
ことを特徴とする処理分散プログラム。
【請求項５】
請求項４において、
前記他のＣＰＵを特定する処理では、
前記差が前記特定の通信量よりも大きいＣＰＵが複数存在する場合、複数存在する前記ＣＰＵのうち、前記複数のアプリケーションから送信されるパケットの通信量が最も少ないＣＰＵを、前記他のＣＰＵとして特定する、
ことを特徴とする処理分散プログラム。
【請求項６】
請求項１において、
前記アプリケーション情報は、各アプリケーションの動作に要するリソースの使用量を含み、さらに、
所定の間隔において、前記複数の仮想マシンごとに、リソースの使用可能量を含む仮想マシン情報を取得する、
処理をコンピュータに実行させ、
前記特定の仮想マシンを特定する処理では、前記複数の仮想マシンのうち、前記使用可能量が前記特定のアプリケーションに対応する前記使用量よりも大きい仮想マシンを、前記特定の仮想マシンとして特定する、
ことを特徴とする処理分散プログラム。
【請求項７】
請求項６において、
前記特定の仮想マシンを特定する処理では、前記使用可能量が前記特定のアプリケーションの前記使用量よりも大きい仮想マシンが複数存在する場合、複数存在する前記仮想マシンのうち、前記使用可能量が最も大きい仮想マシンを、前記特定の仮想マシンとして特定する、
ことを特徴とする処理分散プログラム。
【請求項８】
請求項１において、
前記アドレス情報は、各アプリケーションから送信されるパケットの送信元ポート番号と送信先ポート番号とを含む、
ことを特徴とする処理分散プログラム。
【請求項９】
請求項１において、
前記複数のＣＰＵは、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）のゲートウエイとして機能する１以上の仮想マシンに割り当てられたＣＰＵである、
ことを特徴とする処理分散プログラム。
【請求項１０】
所定の間隔において、複数の仮想マシンにおいて動作する複数のアプリケーションごとに、各アプリケーションが複数のＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得する情報取得部と、
前記複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、前記複数のＣＰＵのうち、各アプリケーションからパケットが送信されるＣＰＵを特定する送信先特定部と、
前記複数のＣＰＵごとに、前記複数のアプリケーションのうち、各ＣＰＵにパケットを送信するアプリケーションに対応する前記通信量を合計することにより、各ＣＰＵが受信するパケットの通信量を算出する通信量特定部と、
前記複数のＣＰＵから、算出した前記通信量が所定閾値を超える特定のＣＰＵを特定するＣＰＵ特定部と、
前記複数のアプリケーションのうち、特定した前記特定のＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＣＰＵを変更する特定のアプリケーションを特定するアプリ特定部と、
前記複数の仮想マシンのうち、特定した前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが変更される特定の仮想マシンを特定する仮想マシン特定部と、
特定した前記仮想マシンに対し、前記特定のアプリケーションを移動するアプリ移動部と、を有する、
ことを特徴とする処理分散装置。
【請求項１１】
所定の間隔において、複数の仮想マシンにおいて動作する複数のアプリケーションごとに、各アプリケーションが複数のＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得し、
前記複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、前記複数のＣＰＵのうち、各アプリケーションからパケットが送信されるＣＰＵを特定し、
前記複数のＣＰＵごとに、前記複数のアプリケーションのうち、各ＣＰＵにパケットを送信するアプリケーションに対応する前記通信量を合計することにより、各ＣＰＵが受信するパケットの通信量を算出し、
前記複数のＣＰＵから、算出した前記通信量が所定閾値を超える特定のＣＰＵを特定し、
前記複数のアプリケーションのうち、特定した前記特定のＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＣＰＵを変更する特定のアプリケーションを特定し、
前記複数の仮想マシンのうち、特定した前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが変更される特定の仮想マシンを特定し、
特定した前記仮想マシンに対し、前記特定のアプリケーションを移動する、
ことを特徴とする処理分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理分散プログラム、処理分散装置及び処理分散方法に関する。
【背景技術】
【０００２】
仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を用いたクラウドサービスを提供する事業者（以下、クラウド事業者とも呼ぶ）は、目的に応じた情報処理システムの構築を行う利用者（以下、クラウド利用者とも呼ぶ）に対し、ＰａａＳ（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）やＩａａＳ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）等の各クラウドサービスを提供する。
【０００３】
上記のような各クラウドサービスは、例えば、異なるデータセンターに配備された物理マシンにおいてそれぞれ提供される。そのため、複数のクラウドサービスを利用する情報処理システムが構築された場合、各クラウドサービス間における通信は、例えば、インターネット等の外部ネットワーク（以下、単にネットワークとも呼ぶ）を経由して行われる。
【０００４】
そこで、クラウド事業者は、例えば、各クラウドサービスを提供するデータセンターのそれぞれにゲートウエイ用の仮想マシン（以下、単にＧＷとも呼ぶ）を配備し、各クラウドサービス間における通信をＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）を経由させることによって行う。これにより、クラウド事業者は、複数のクラウドサービスを利用する業務システムが構築される場合であっても、各クラウドサービス間における通信のセキュリティを確保することが可能になる（例えば、特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２２１０４９号公報
【特許文献２】特開２０１４−０５６３３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、上記のような各ＧＷでは、例えば、各クラウドサービス（各クラウドサービスを提供する仮想マシン）から送信されるパケットを、各パケットの送信元ＩＰアドレス等から算出されたハッシュ値に基づいて振り分けるソフトウエア（例えば、ＲＳＳ：Ｒｅｃｅｉｖｅ  Ｓｉｄｅ  Ｓｃａｌｉｎｇ）が動作する。これにより、各ＧＷは、例えば、各クラウドサービスから送信されたパケットに対応する処理を、各ＧＷに割り当てられた仮想的なＣＰＵ（以下、ＶＣＰＵ：Ｖｉｒｔｕａｌ  Ｃｅｎｔｒａｌ  Ｃｏｍｐｕｔｉｎｇ  Ｕｎｉｔとも呼ぶ）に分散させて行わせることが可能になる。
【０００７】
しかしながら、各クラウドサービスから送信されるパケットは、各パケットの送信元ＩＰアドレス等によって偏ったＶＣＰＵに振り分けられる場合がある。そのため、各ＧＷは、この場合、各クラウドサービスから送信されるパケットに対応する処理を効率的に行うことができない。
【０００８】
そこで、クラウド事業者は、例えば、各パケットの送信元ＩＰアドレス等を意図的に変更することにより、各パケットから算出されるハッシュ値を変更し、各パケットに対応する処理を行うＶＣＰＵの変更を行う。
【０００９】
しかしながら、各パケットの送信元ＩＰアドレス等を変更するためには、例えば、クラウド利用者（テナント）によって生成されたアプリケーションの修正等が必要になる。そのため、クラウド事業者は、各パケットの振り分け先のＶＣＰＵを容易に変更することができない場合がある。
【００１０】
そこで、一つの側面では、本発明は、パケットの振り分け先のＣＰＵを変更することを可能とする処理分散プログラム、処理分散装置及び処理分散方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
実施の形態の一態様では、所定の間隔において、複数の仮想マシンにおいて動作する複数のアプリケーションごとに、各アプリケーションが複数のＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得し、前記複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、前記複数のＣＰＵのうち、各アプリケーションからパケットが送信されるＣＰＵを特定し、前記複数のＣＰＵごとに、前記複数のアプリケーションのうち、各ＣＰＵにパケットを送信するアプリケーションに対応する前記通信量を合計することにより、各ＣＰＵが受信するパケットの通信量を算出し、前記複数のＣＰＵから、算出した前記通信量が所定閾値を超える特定のＣＰＵを特定し、前記複数のアプリケーションのうち、特定した前記特定のＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＣＰＵを変更する特定のアプリケーションを特定し、前記複数の仮想マシンのうち、特定した前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが変更される特定の仮想マシンを特定し、特定した前記仮想マシンに対し、前記特定のアプリケーションを移動する、ことをコンピュータに実行させる。
【発明の効果】
【００１２】
一つの側面によれば、パケットの振り分け先のＣＰＵを変更することを可能とする。
【図面の簡単な説明】
【００１３】
【図１】図１は、情報処理システム１０の全体構成を示す図である。
【図２】図２は、仮想マシン３における処理の具体例について説明する図である。
【図３】図３は、ＧＷ用仮想マシン３５ａにおける処理の具体例について説明する図である。
【図４】図４は、管理装置１のハードウエア構成を示す図である。
【図５】図５は、管理装置１の機能のブロック図である。
【図６】図６は、第１の実施の形態における処理分散処理の概略を説明するフローチャート図である。
【図７】図７は、第１の実施の形態における処理分散処理の概略を説明するフローチャート図である。
【図８】図８は、第１の実施の形態における処理分散処理の概略を説明する図である。
【図９】図９は、第１の実施の形態における処理分散処理の概略を説明する図である。
【図１０】図１０は、第１の実施の形態における処理分散処理の概略を説明する図である。
【図１１】図１１は、第１の実施の形態における処理分散処理の概略を説明する図である。
【図１２】図１２は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。
【図１３】図１３は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。
【図１４】図１４は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。
【図１５】図１５は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。
【図１６】図１６は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。
【図１７】図１７は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。
【図１８】図１８は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。
【図１９】図１９は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。
【図２０】図２０は、仮想マシン情報１３３の具体例について説明する図である。
【図２１】図２１は、アプリケーション情報１３１の具体例について説明する図である。
【図２２】図２２は、ＧＷ情報１３２の具体例について説明する図である。
【図２３】図２３は、ＧＷ情報１３２の具体例について説明する図である。
【図２４】図２４は、仮想マシン情報１３３の具体例について説明する図である。
【図２５】図２５は、アプリケーション情報１３１の具体例について説明する図である。
【発明を実施するための形態】
【００１４】
［情報処理システムの構成］
図１は、情報処理システム１０の全体構成を示す図である。図１に示す情報処理システム１０は、管理装置１と、物理マシン２と、操作端末５とを含む。
【００１５】
操作端末５は、例えば、クラウド事業者が各種操作を行う１台以上の端末であり、インターネットやイントラネット等のネットワークを介して管理装置１や物理マシン２にアクセスを行う端末である。
【００１６】
物理マシン２は、１台以上の物理マシンによって構成され、例えば、ＣＰＵ、メモリ（ＤＲＡＭ：Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）及びハードディスク（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等を有する。そして、物理マシン２の物理リソース（以下、単にリソースとも呼ぶ）は、各処理を実行する複数の仮想マシン３に割当てられる。
【００１７】
仮想化ソフトウエア４（以下、ハイパーバイザ４とも呼ぶ）は、物理マシン２のＣＰＵ、メモリ及びハードディスク等を割当てることにより、仮想マシン３を生成する基盤ソフトウエアである。仮想化ソフトウエア４は、図１に示すように、例えば、物理マシン２において動作する。
【００１８】
管理装置１は、各仮想マシン３において動作するアプリケーションの移動等を行う。管理装置１は、例えば、１台以上の物理マシンによって構成される。また、管理装置１は、例えば、物理マシン２において動作する仮想マシン３の一部によって構成される。
【００１９】
［仮想マシンにおける処理の具体例］
次に、仮想マシン３における処理の具体例について説明を行う。図２は、仮想マシン３における処理の具体例について説明する図である。なお、以下、図１で説明した物理マシン２には、ＰａａＳによるサービス（例えば、Ｃｌｏｕｄ  Ｆｏｕｎｄｒｙ）を提供する物理マシン２ａ及び物理マシン２ｂと、ＩａａＳによるサービスを提供する物理マシン２ｃ及び物理マシン２ｄとが含まれているものとして説明を行う。
【００２０】
図２に示す例において、物理マシン２ａには、仮想マシン３１ａが生成され、物理マシン２ｂには、仮想マシン３５ａが生成されている。また、物理マシン２ｃには、仮想マシン３５ｂが生成され、物理マシン２ｄには、仮想マシン３１ｂが生成されている。そして、仮想マシン３１ａ、３５ａ、３１ｂ及び３５ｂには、それぞれコンテナＣＯＮ１、ＣＯＮ２、ＣＯＮ３及びＣＯＮ４が生成されている。
【００２１】
さらに、仮想マシン３１ａに生成されたコンテナＣＯＮ１では、各処理を行うアプリケーション（以下、単にＡＰとも呼ぶ）が動作している。また、仮想マシン３１ｂに生成されたコンテナＣＯＮ４には、例えば、ＡＰによって参照される各種情報を格納するデータベース（以下、単にＤＢとも呼ぶ）が構築されている。
【００２２】
ここで、例えば、仮想マシン３１ａと仮想マシン３１ｄとの間の通信は、物理マシン２ａ及び物理マシン２ｄの配備位置によってインターネット等の外部ネットワークを経由する場合がある。そのため、クラウド事業者は、図２に示すように、例えば、仮想マシン３５ａに生成されたコンテナＣＯＮ２及び仮想マシン３５ｂに生成されたコンテナＣＯＮ３のそれぞれにおいて、仮想マシン３１ａ（ＡＰ）と仮想マシン３１ｂ（ＤＢ）との間をＶＰＮ接続するためのゲートウエイ（以下、単にＧＷ１及びＧＷ２とも呼ぶ）を動作させる。
【００２３】
これにより、クラウド事業者は、仮想マシン３１ａと仮想マシン３１ｂとの間の通信がインターネット等の外部ネットワークを経由する場合であっても、仮想マシン３１ａと仮想マシン３１ｂとの間の通信のセキュリティを確保することが可能になる。なお、以下、ゲートウエイとして動作する仮想マシン３をＧＷ用仮想マシン３とも呼ぶ。
【００２４】
［ＧＷ用仮想マシンにおける処理の具体例］
次に、ＧＷ用仮想マシン３５ａにおける処理の具体例について説明を行う。図３は、ＧＷ用仮想マシン３５ａにおける処理の具体例について説明する図である。なお、以下、仮想マシン３１ａには、コンテナＣＯＮ１１、ＣＯＮ１２及びＣＯＮ１３が生成されており、それぞれＡＰ１１、１２及び１３が動作しているものとして説明を行う。また、ＧＷ用仮想マシン３５ａには、物理マシン２ｂからＶＣＰＵ０とＶＣＰＵ１とが割当てられているものとして説明を行う。
【００２５】
図３に示す例において、ＧＷ用仮想マシン３５ａでは、ＡＰ１１、１２及び１３から送信された各パケットを、ＡＰ１１、１２及び１３のＩＰアドレス（送信元ＩＰアドレス）等から算出されたハッシュ値に基づいてＶＣＰＵ０及びＶＣＰＵ１に振り分けるＲＳＳ４１が動作している。具体的に、図３に示す例において、ＲＳＳ４１は、ＡＰ１１から送信されたパケット及びＡＰ１２から送信されたパケットをＶＣＰＵ０に振り分け、ＡＰ１３から送信されたパケットＶＣＰＵ１に振り分けている。
【００２６】
これにより、ＧＷ用仮想マシン３５ａは、各ＡＰから送信されたパケットに対応する処理を各ＶＣＰＵに分散させて行わせることが可能になる。
【００２７】
しかしながら、各ＡＰから送信されるパケットは、各パケットの送信元ＩＰアドレス等によって偏ったＶＣＰＵに振り分けられる場合がある。そのため、ＧＷ用仮想マシン３５ａでは、この場合、多くのパケットが振り分けられたＶＣＰＵにおいて処理遅延等が発生し、各ＡＰから送信されるパケットに対応する処理を効率的に行うことができなくなる。
【００２８】
そこで、クラウド事業者は、例えば、各ＡＰのＩＰアドレス等（各パケットの送信元ＩＰアドレス等）の変更を意図的に行うことにより、各パケットから算出されるハッシュ値を変更し、各パケットに対応する処理を行うＶＣＰＵの変更を行う。
【００２９】
しかしながら、各パケットのＩＰアドレス等を変更するためには、例えば、クラウド利用者（テナント）によって生成されたアプリケーション（例えば、ＡＰ１１、１２または１３）の修正等が必要になる。そのため、クラウド事業者は、各パケットの振り分け先のＶＣＰＵを容易に変更することができない場合がある。
【００３０】
そこで、本実施の形態における管理装置１は、所定の間隔において、複数の仮想マシン３において動作する複数のアプリケーションごとに、各アプリケーションが複数のＶＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得する。
【００３１】
そして、管理装置１は、複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含む情報（以下、アドレス情報とも呼ぶ）から算出されるハッシュ値に基づいて、複数のＶＣＰＵのうち、各アプリケーションからパケットが送信されるＶＣＰＵを特定する。さらに、管理装置１は、複数のＶＣＰＵごとに、複数のアプリケーションのうち、各ＶＣＰＵにパケットを送信するアプリケーションに対応する通信量を合計することにより、各ＶＣＰＵが受信するパケットの通信量を算出する。
【００３２】
その後、管理装置１は、複数のＶＣＰＵから、算出した通信量が所定閾値を超えるＶＣＰＵ（以下、特定のＶＣＰＵとも呼ぶ）を特定し、複数のアプリケーションのうち、特定のＶＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＶＣＰＵを変更するアプリケーション（以下、特定のアプリケーションとも呼ぶ）を特定する。
【００３３】
そして、管理装置１は、複数の仮想マシン３のうち、特定のアプリケーションを移動した場合に、特定のアプリケーションがパケットを送信するＶＣＰＵが変更される仮想マシン３（以下、特定の仮想マシン３とも呼ぶ）を特定し、特定した仮想マシン３に対して特定のアプリケーションを移動する。
【００３４】
すなわち、管理装置１は、仮想マシン３において動作するアプリケーションの修正等に代えて、仮想マシン３間におけるアプリケーションの移動を行うことにより、アプリケーションから送信される各パケットのハッシュ値を変更する。
【００３５】
これにより、管理装置１は、仮想マシン３において動作するアプリケーションの修正等を行うことなく、アプリケーションから送信された各パケットのハッシュ値を変更することが可能になり、各パケットを複数のＶＣＰＵに対して適切に振り分けることが可能になる。
【００３６】
［情報処理システムのハードウエア構成］
次に、情報処理システム１０のハードウエア構成について説明する。図４は、管理装置１のハードウエア構成を示す図である。
【００３７】
管理装置１は、図４に示すように、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（以下、Ｉ／Ｏユニットとも呼ぶ）１０３と、記憶媒体１０４と、各種情報を表示する表示装置１０５とを有する。各部は、バス１０６を介して互いに接続される。
【００３８】
記憶媒体１０４は、例えば、記憶媒体１０４内のプログラム格納領域（図示しない）に、各パケットに対応する処理の分散を行う処理（以下、処理分散処理とも呼ぶ）を行うためのプログラム１１０を記憶する。記憶媒体１０４は、例えば、ＨＤＤであってよい。
【００３９】
また、記憶媒体１０４は、例えば、処理分散処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。
【００４０】
ＣＰＵ１０１は、記憶媒体１０４からメモリ１０２にロードされたプログラム１１０を実行して処理分散処理を行う。
【００４１】
外部インターフェース１０３は、例えば、物理マシン２と通信を行う。
【００４２】
［情報処理システムの機能］
次に、情報処理システム１０の機能について説明する。図５は、管理装置１の機能のブロック図である。
【００４３】
管理装置１は、ＣＰＵ１０１やメモリ１０２等のハードウエアとプログラム１１０とが有機的に協働することにより、図５に示すように、情報取得部１１１と、送信先特定部１１２と、通信量特定部１１３と、ＣＰＵ特定部１１４と、アプリ特定部１１５と、変更先特定部１１６と、仮想マシン特定部１１７と、アプリ移動部１１８とを含む各種機能を実現する。
【００４４】
また、図４で説明した情報格納領域１３０には、例えば、アプリケーション情報１３１と、ＧＷ情報１３２と、仮想マシン情報１３３とが記憶される。
【００４５】
情報取得部１１１は、所定の間隔において、複数の仮想マシン３において動作する複数のアプリケーションごとに、各アプリケーションが複数のＶＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報１３１を取得する。そして、情報取得部１１１は、取得したアプリケーション情報１３１を情報格納領域１３０に記憶する。アプリケーション情報１３１の具体例については後述する。
【００４６】
送信先特定部１１２は、複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、複数のＶＣＰＵのうち、各アプリケーションからパケットが送信されるＶＣＰＵを特定する。アドレス情報には、各アプリケーションから送信されるパケットの送信元ＩＰアドレス及び送信先ＩＰアドレスに加え、各アプリケーションから送信されるパケットの送信元ポート番号及び送信先ポート番号が含まれるものであってもよい。
【００４７】
通信量特定部１１３は、情報格納領域１３０に記憶されたアプリケーション情報１３１を参照し、複数のＶＣＰＵごとに、複数のアプリケーションのうち、各ＶＣＰＵにパケットを送信するアプリケーションに対応する通信量を合計することにより、各ＶＣＰＵが受信するパケットの通信量を算出する。
【００４８】
ＣＰＵ特定部１１４は、複数のＶＣＰＵから、通信量特定部１１３が算出した通信量が所定閾値を超える特定のＶＣＰＵを特定する。
【００４９】
アプリ特定部１１５は、複数のアプリケーションのうち、ＣＰＵ特定部１１４が特定した特定のＶＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＶＣＰＵを変更する特定のアプリケーションを特定する。
【００５０】
変更先特定部１１６は、複数のＶＣＰＵのうち、アプリ特定部１１５が特定した特定のアプリケーションがパケットを送信するＶＣＰＵの変更先（以下、他のＶＣＰＵとも呼ぶ）を特定する。
【００５１】
仮想マシン特定部１１７は、複数の仮想マシン３のうち、アプリ特定部１１５が特定した特定のアプリケーションを移動した場合に、特定のアプリケーションがパケットを送信するＶＣＰＵが他のＶＣＰＵに変更される特定の仮想マシン３を特定する。
【００５２】
アプリ移動部１１８は、仮想マシン特定部１１７が特定した仮想マシン３に対し、アプリ特定部１１５が特定した特定のアプリケーションを移動する。
【００５３】
なお、アプリ移動部１１８は、管理装置１と異なる物理マシン（例えば、Ｃｌｏｕｄ  Ｆｏｕｎｄｒｙを管理する物理マシン）が有する機能であってもよい。また、ＧＷ情報１３２及び仮想マシン情報１３３についての説明は後述する。
【００５４】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明を行う。図６及び図７は、第１の実施の形態における処理分散処理の概略を説明するフローチャート図である。図８から図１１は、第１の実施の形態における処理分散処理の概略を説明する図である。図８から図１１を参照しながら、図６及び図７に示す処理分散処理について説明を行う。
【００５５】
管理装置１は、図６に示すように、情報取得タイミングになるまで待機する（Ｓ１のＮＯ）。情報取得タイミングは、例えば、１分間隔等の定期的なタイミングであってよい。
【００５６】
そして、情報取得タイミングになった場合（Ｓ１のＹＥＳ）、管理装置１は、複数の仮想マシン３において動作する複数のアプリケーションごとに、各アプリケーションが複数のＶＣＰＵ（物理マシン２がＧＷ用仮想マシン３に割当てた複数のＶＣＰＵ）のうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報１３１を取得する（Ｓ２）。
【００５７】
続いて、管理装置１は、複数のアプリケーションごとに、各アプリケーションから送信されるパケットのアドレス情報から算出されるハッシュ値に基づいて、複数のＶＣＰＵのうち、各アプリケーションからパケットが送信されるＶＣＰＵを特定する（Ｓ３）。以下、Ｓ３の処理の具体例について説明を行う。
【００５８】
［Ｓ３の処理の具体例］
図８は、Ｓ３の処理の具体例を説明する図である。具体的に、図８は、アプリケーションからＶＣＰＵに対して送信されるパケットの具体例を説明する図である。
【００５９】
アプリケーションからＶＣＰＵに対して送信されるパケットには、例えば、データ部（以下、ｄａｔａとも呼ぶ）の前に、送信先ＩＰアドレス（以下、ＤＡ−ＩＰとも呼ぶ）、送信元ＩＰアドレス（以下、ＳＡ−ＩＰとも呼ぶ）、送信先ポート番号（以下、ＤＡ−Ｐｏｒｔとも呼ぶ）及び送信元ポート番号（以下、ＳＡ−Ｐｏｒｔとも呼ぶ）を含むヘッダ部が付加されている。
【００６０】
具体的に、図８に示すパケットに含まれるヘッダ部には、送信先ＩＰアドレス、送信元ＩＰアドレス、送信先ポート番号及び送信元ポート番号として、「１０．０．１．１」、「１０．０．０．１」、「５０」及び「１０００」がそれぞれ設定されている。
【００６１】
そして、管理装置１は、Ｓ３の処理において、例えば、「１０．０．１．１」、「１０．０．０．１」、「５０」及び「１０００」を用いることにより、図８に示すパケットに対応するハッシュ値を算出する。その後、管理装置１は、例えば、各ハッシュ値と各ＶＣＰＵとが対応付けられた対応情報（図示しない）を参照し、算出したハッシュ値に対応するＶＣＰＵを特定する。
【００６２】
図６に戻り、管理装置１は、複数のＶＣＰＵごとに、複数のアプリケーションのうち、各ＶＣＰＵにパケットを送信するアプリケーションに対応する通信量を合計することにより、各ＶＣＰＵが受信するパケットの通信量を算出する（Ｓ４）。以下、Ｓ４の処理の具体例について説明を行う。
【００６３】
［Ｓ４の処理の具体例］
図９は、Ｓ４の処理の具体例を説明する図である。
【００６４】
図９に示す例におけるＡＰ１１、１２及び１３は、それぞれ６０（Ｍｂ／ｓ）、３０（Ｍｂ／ｓ）及び５０（Ｍｂ／ｓ）の通信量のパケットをＧＷ用仮想マシン３５ａに対して送信している。そして、図９に示す例におけるＲＳＳ４１は、ＡＰ１１、１２及び１３のそれぞれから送信されたパケットに対応する処理を全てＶＣＰＵ０に振り分けている。
【００６５】
そのため、管理装置１は、Ｓ４の処理において、ＶＣＰＵ０が受信するパケットの通信量として１４０（Ｍｂ／ｓ）を算出し、ＶＣＰＵ１が受信するパケットの通信量として０（Ｍｂ／ｓ）を算出する。
【００６６】
図７に戻り、管理装置１は、複数のＶＣＰＵから、Ｓ４の処理で算出した通信量が所定閾値を超える特定のＶＣＰＵを特定する（Ｓ１１）。
【００６７】
具体的に、図９に示す例において、例えば、所定閾値が１００（Ｍｂ／ｓ）である場合、管理装置１は、パケットの通信量が所定閾値を超えているＶＣＰＵとしてＶＣＰＵ０を特定する。
【００６８】
そして、管理装置１は、複数のアプリケーションのうち、Ｓ１１の処理で特定した特定のＶＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＶＣＰＵを変更する特定のアプリケーションを特定する（Ｓ１２）。
【００６９】
具体的に、図９に示す例において、管理装置１は、例えば、ＶＣＰＵ０に対してパケットを送信しているＡＰ１１、ＡＰ１２及びＡＰ１３のうち、ＶＣＰＵ０に対するパケットの通信量が最も多いアプリケーションであるＡＰ１１を特定する。
【００７０】
続いて、管理装置１は、複数の仮想マシン３のうち、Ｓ１２の処理で特定した特定のアプリケーションを移動した場合に、Ｓ１２の処理で特定した特定のアプリケーションがパケットを送信するＶＣＰＵが変更される特定の仮想マシン３を特定する（Ｓ１３）。
【００７１】
すなわち、ＡＰ１１が動作する仮想マシン３を変更した場合、ＡＰ１１から送信されるパケットの送信元ＩＰアドレスが変更され、ＡＰ１１から送信されるパケットのハッシュ値が変更され、さらに、ＡＰ１１から送信されるパケットの送信先のＶＣＰＵが変更される可能性がある。そのため、管理装置１は、Ｓ１３の処理において、ＡＰ１１が動作する仮想マシン３を変更した場合に、ＡＰ１１がパケットを送信するＶＣＰＵが変更される仮想マシン３の特定を行う。以下、Ｓ１３の処理の具体例について説明を行う。
【００７２】
［Ｓ１３の処理の具体例］
図１０は、Ｓ１３の処理の具体例を説明する図である。以下、図２で説明した物理マシン２ａにおいてＶＭ３２ａ及びＶＭ３３ａが生成されているものとして説明を行う。また、以下、ＶＭ３２ａにおいてコンテナＣＯＮ２１が生成され、ＶＭ３３ａにおいてコンテナＣＯＮ３１が生成されているものとして説明を行う。
【００７３】
管理装置１は、例えば、図１０の点線に示すように、ＶＣＰＵ０に対してパケットを送信するＡＰ１１をＶＭ３２ａ（コンテナＣＯＮ２１）に移動した場合に、ＡＰ１１からパケットが送信されるＶＣＰＵとしてＶＣＰＵ１を特定する。また、管理装置１は、例えば、図１０の点線に示すように、ＶＣＰＵ０に対してパケットを送信するＡＰ１１をＶＭ３３ａ（コンテナＣＯＮ３１）に移動した場合に、ＡＰ１１からパケットが送信されるＶＣＰＵとしてＶＣＰＵ０を特定する。
【００７４】
すなわち、管理装置１は、この場合、ＡＰ１１をＶＭ３２ａに移動することによって、ＡＰ１１からパケットが送信されるＶＣＰＵをＶＣＰＵ０からＶＣＰＵ１に変更することが可能であると判定する。
【００７５】
図７に戻り、管理装置１は、Ｓ１３の処理で特定した仮想マシン３に対し、Ｓ１２の処理で特定した特定のアプリケーションを移動する（Ｓ１４）。
【００７６】
具体的に、管理装置１は、図１１に示すように、Ｓ１３の処理で特定したＶＭ３２ａに対して、ＶＭ３１ａにおいて動作していたＡＰ１１の移動を行う。
【００７７】
これにより、管理装置１は、仮想マシン３において動作するアプリケーションの修正等を行うことなく、アプリケーションから送信された各パケットのハッシュ値を変更することが可能になり、各パケットを複数のＶＣＰＵに対して適切に振り分けることが可能になる。
【００７８】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図１２から図１９は、第１の実施の形態における処理分散処理の詳細を説明するフローチャート図である。また、図２０から図２５は、第１の実施の形態における処理分散処理の詳細を説明する図である。図２０から図２５を参照しながら、図１２から図１９に示す処理分散処理の詳細を説明する。
【００７９】
［情報取得処理］
初めに、処理分散処理のうち、仮想マシン情報１３３を取得する処理（以下、情報取得処理とも呼ぶ）について説明を行う。図１２は、情報取得処理を説明するフローチャート図である。
【００８０】
管理装置１の情報取得部１１１は、図１２に示すように、第１情報取得タイミングになるまで待機する（Ｓ２１のＮＯ）。第１情報取得タイミングは、例えば、１分間隔等の定期的なタイミングであってよい。
【００８１】
そして、第１情報取得タイミングになった場合（Ｓ２１のＹＥＳ）、情報取得部１１１は、仮想マシン３ごとに、リソースの使用可能量を含む仮想マシン情報１３３を取得する（Ｓ２２）。その後、情報取得部１１１は、Ｓ２２の処理で取得した仮想マシン情報１３３を情報格納領域１３０に記憶する（Ｓ２３）。以下、仮想マシン情報１３３の具体例について説明を行う。
【００８２】
［仮想マシン情報の具体例］
図２０及び図２４は、仮想マシン情報１３３の具体例について説明する図である。
【００８３】
図２０等に示す仮想マシン情報１３３は、仮想マシン情報１３３に含まれる各情報を識別する「項番」と、仮想マシン３を識別する「ＶＭＩＤ」とを項目として有する。また、図２０等に示す仮想マシン情報１３３は、使用可能なＶＣＰＵの量（数）を示す「ＶＣＰＵ使用可能量」と、使用可能なメモリの量を示す「メモリ使用可能量」とを項目として有する。
【００８４】
具体的に、図２０に示す仮想マシン情報１３３において、「項番」が「１」である情報には、「ＶＭＩＤ」として「ＶＭ３１ａ」が設定され、「ＶＣＰＵ使用可能量」として「２（個）」が設定され、「メモリ使用可能量」として「３（Ｍｂ）」が設定されている。
【００８５】
また、図２０に示す仮想マシン情報１３３において、「項番」が「２」である情報には、「ＶＭＩＤ」として「ＶＭ３２ａ」が設定され、「ＶＣＰＵ使用可能量」として「３（個）」が設定され、「メモリ使用可能量」として「４（Ｍｂ）」が設定されている。図２０に含まれる他の情報についての説明は省略する。
【００８６】
［処理分散処理の詳細］
次に、処理分散処理の詳細について説明を行う。図１３から図１９は、処理分散処理の詳細を説明するフローチャート図である。
【００８７】
情報取得部１１１は、図１３に示すように、第２情報取得タイミングになるまで待機する（Ｓ３１のＮＯ）。第２情報取得タイミングは、例えば、１分間隔等の定期的なタイミングであってよい。また、第２情報取得タイミングは、第１情報取得タイミングと同じタイミングであってもよい。
【００８８】
そして、第２情報取得タイミングになった場合（Ｓ３１のＹＥＳ）、情報取得部１１１は、仮想マシン３で動作するアプリケーションごとに、各アプリケーションが複数のＶＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報１３１を取得する（Ｓ３２）。その後、情報取得部１１１は、Ｓ３２の処理で取得したアプリケーション情報１３１を情報格納領域１３０に記憶する（Ｓ３３）。以下、アプリケーション情報１３１の具体例について説明を行う。
【００８９】
［アプリケーション情報の具体例］
図２１及び図２５は、アプリケーション情報１３１の具体例について説明する図である。
【００９０】
図２１等に示すアプリケーション情報１３１は、アプリケーション情報１３１に含まれる各情報を識別する「項番」と、ＶＣＰＵを識別する「ＶＣＰＵＩＤ」と、アプリケーションを識別する「アプリＩＤ」と、アプリケーションからＶＣＰＵに対して送信されるパケットの通信量が設定される「通信量」とを項目として有する。また、図２１等に示すアプリケーション情報１３１は、アプリケーションの動作に要するＶＣＰＵの量（数）を示す「ＶＣＰＵ使用量」と、アプリケーションの動作に要するメモリの量を示す「メモリ使用量」と、アプリケーションが動作している仮想マシン３を識別する「ＶＭＩＤ」とを項目として有する。
【００９１】
具体的に、図２１に示すアプリケーション情報１３１において、「項番」が「１」である情報には、「ＶＣＰＵＩＤ」として「ＶＣＰＵ０」が設定され、「アプリＩＤ」として「ＡＰ１１」が設定され、「通信量」として「６０（Ｍｂ／ｓ）」が設定されている。そして、図２１に示すアプリケーション情報１３１において、「項番」が「１」である情報には、「ＶＣＰＵ使用量」として「１（個）」が設定され、「メモリ使用量」として「０．５（Ｍｂ）」が設定され、「ＶＭＩＤ」として「ＶＭ３１ａ」が設定されている。
【００９２】
また、図２１に示すアプリケーション情報１３１において、「項番」が「２」である情報には、「ＶＣＰＵＩＤ」として「ＶＣＰＵ０」が設定され、「アプリＩＤ」として「ＡＰ１２」が設定され、「通信量」として「３０（Ｍｂ／ｓ）」が設定されている。そして、図２１に示すアプリケーション情報１３１において、「項番」が「２」である情報には、「ＶＣＰＵ使用量」として「１（個）」が設定され、「メモリ使用量」として「０．５（Ｍｂ）」が設定され、「ＶＭＩＤ」として「ＶＭ３１ａ」が設定されている。図２１に含まれる他の情報についての説明は省略する。
【００９３】
図１３に戻り、管理装置１の送信先特定部１１２は、仮想マシン３において動作するアプリケーションが追加されているか否かを判定する（Ｓ３４）。具体的に、送信先特定部１１２は、Ｓ３２の処理で取得したアプリケーション情報１３１に新たな情報（新たなアプリケーションの情報）が追加されているか否かを判定する。
【００９４】
その結果、新たなアプリケーションが追加されていると判定した場合（Ｓ３４のＹＥＳ）、送信先特定部１１２は、Ｓ３４の処理で追加されていると判定したアプリケーションから送信されるパケットのアドレス情報から算出されるハッシュ値に基づいて、Ｓ３４の処理で追加されていると判定したアプリケーションが送信するＶＣＰＵを特定する（Ｓ３５）。
【００９５】
そして、送信先特定部１１２は、Ｓ３４の処理で追加されていると判定したＶＣＰＵを示す情報に基づいて、情報格納領域１３０に記憶されたアプリケーション情報１３１を更新する（Ｓ３６）。
【００９６】
すなわち、Ｓ３２の処理で取得される情報には、例えば、新たなアプリケーションから送信されたパケットに対応する処理が行われるＶＣＰＵを識別する情報（図２０に示すアプリケーション情報１３１において「ＶＣＰＵＩＤ」に設定される情報）が含まれていない場合がある。そのため、送信先特定部１１２は、例えば、Ｓ３５の処理において、新たなアプリケーションから送信されるパケットの送信元ＩＰアドレス等（アドレス情報）からハッシュ値を算出する。そして、送信先特定部１１２は、対応情報（図示しない）を参照し、算出したハッシュ値に対応するＶＣＰＵを特定する。その後、送信先特定部１１２は、Ｓ３６の処理において、Ｓ３３の処理において情報格納領域１３０に記憶したアプリケーション情報１３１のうち、新たなアプリケーションに対応する「ＶＣＰＵＩＤ」に、特定したＶＣＰＵに対応する情報を設定する。
【００９７】
一方、Ｓ３４の処理において、新たなアプリケーションが追加されていないと判定した場合（Ｓ３４のＮＯ）、送信先特定部１１２は、Ｓ３５及びＳ３６の処理を行わない。
【００９８】
そして、情報取得部１１１は、図１４に示すように、情報格納領域１３０に記憶されたアプリケーション情報１３１を参照し、ＶＣＰＵごとに、各アプリケーションのうち、各ＶＣＰＵにパケットを送信するアプリケーションに対応する通信量を合計することにより、各ＶＣＰＵが受信するパケットの通信量を算出する（Ｓ４１）。
【００９９】
具体的に、図２１で説明したアプリケーション情報１３１において、「ＶＣＰＵＩＤ」に「ＶＣＰＵ０」が設定された情報（「項番」が「１」から「３」である情報）の「通信量」には、それぞれ「６０（Ｍｂ／ｓ）」、「３０（Ｍｂ／ｓ）」及び「５０（Ｍｂ／ｓ）」が設定されている。そのため、情報取得部１１１は、ＶＣＰＵ０が受信するパケットの通信量として１４０（Ｍｂ／ｓ）を算出する。
【０１００】
一方、図２１で説明したアプリケーション情報１３１において、「ＶＣＰＵＩＤ」に「ＶＣＰＵ１」が設定された情報は存在しない。そのため、情報取得部１１１は、ＶＣＰＵ１が受信するパケットの通信量として０（Ｍｂ／ｓ）を算出する。
【０１０１】
さらに、情報取得部１１１は、情報格納領域１３０に記憶されたアプリケーション情報１３１とＳ４１の処理で算出した通信量とを参照し、ＧＷ情報１３２を生成する（Ｓ４２）。その後、情報取得部１１１は、生成したＧＷ情報１３２を情報格納領域１３０に記憶する（Ｓ４３）。以下、ＧＷ情報１３２の具体例について説明を行う。
【０１０２】
［ＧＷ情報の具体例］
図２２及び図２３は、ＧＷ情報１３２の具体例について説明する図である。
【０１０３】
図２２等に示すＧＷ情報１３２は、ＧＷ情報１３２に含まれる各情報を識別する「項番」と、ＶＣＰＵを識別する「ＶＣＰＵＩＤ」と、アプリケーションからＶＣＰＵに対して送信されるパケットの通信量の合計が設定される「通信量」と、ＶＣＰＵごとに予め定められた所定閾値が設定される「閾値」とを項目として有する。なお、以下、ＶＣＰＵ０及びＶＣＰＵ１の所定閾値として予め１００（Ｍｂ／ｓ）が設定されているものとして説明を行う。
【０１０４】
具体的に、情報取得部１１１は、Ｓ４１の処理において、ＶＣＰＵ０が受信するパケットの通信量として１４０（Ｍｂ／ｓ）を算出している。そのため、情報取得部１１１は、図２２に示すように、「項番」が「１」である情報の「ＶＣＰＵＩＤ」として「ＶＣＰＵ０」を設定し、「通信量」として「１４０（Ｍｂ／ｓ）」を設定し、「閾値」として「１００（Ｍｂ／ｓ）」を設定する。
【０１０５】
また、情報取得部１１１は、Ｓ４１の処理において、ＶＣＰＵ１が受信するパケットの通信量として０（Ｍｂ／ｓ）を算出している。そのため、情報取得部１１１は、図２２に示すように、「項番」が「２」である情報の「ＶＣＰＵＩＤ」として「ＶＣＰＵ１」を設定し、「通信量」として「０（Ｍｂ／ｓ）」を設定し、「閾値」として「１００（Ｍｂ／ｓ）」を設定する。
【０１０６】
図１４に戻り、管理装置１の通信量特定部１１３は、ＶＣＰＵを１つ特定する（Ｓ４４）。具体的に、通信量特定部１１３は、各アプリケーションから送信されたパケットを受信するＶＣＰＵを１つ特定する。
【０１０７】
そして、通信量特定部１１３は、Ｓ４４の処理で特定したＶＣＰＵの通信量が所定閾値を超えているか否かを判定する（Ｓ４５）。すなわち、通信量特定部１１３は、仮想マシン３において動作するアプリケーションの移動を行う必要があるか否かの判定を行う。
【０１０８】
その結果、Ｓ４４の処理で特定したＶＣＰＵの通信量が所定閾値を超えていないと判定した場合（Ｓ４５のＮＯ）、変更先特定部１１６は、図１７に示すように、Ｓ４４の処理において全てのＶＣＰＵが特定済であるか否かを判定する（Ｓ７３）。
【０１０９】
そして、全てのＶＣＰＵが特定済であると判定した場合（Ｓ７３のＹＥＳ）、管理装置１は、処理分散処理を終了する。
【０１１０】
一方、全てのＶＣＰＵが特定済でないと判定した場合（Ｓ７３のＹＥＳ）、通信量特定部１１３は、Ｓ４４以降の処理を再度行う。
【０１１１】
また、Ｓ４５の処理において、Ｓ４４の処理で特定したＶＣＰＵの通信量が所定閾値を超えていると判定した場合（Ｓ４５のＹＥＳ）、管理装置１のアプリ特定部１１５は、図１５に示すように、Ｓ４４の処理で特定したＶＣＰＵにパケットを送信するアプリケーションのうち、後述するＳ６４で特定した対象外アプリケーション以外のアプリケーションを特定する（Ｓ５１）。
【０１１２】
具体的に、例えば、Ｓ４４の処理で特定したＶＣＰＵがＶＣＰＵ０である場合、通信量特定部１１３は、図２２で説明したＧＷ情報１３２を参照し、「ＶＣＰＵＩＤ」に「ＶＣＰＵ０」が設定された情報の「通信量」に設定された値である「１４０（Ｍｂ／ｓ）」が「閾値」に設定された値である「１００（Ｍｂ／ｓ）」を超えていると判定する。そのため、アプリ特定部１１５は、図２１で説明したアプリケーション情報１３１を参照し、「ＶＣＰＵＩＤ」に「ＶＣＰＵ０」が設定された情報の「アプリＩＤ」に設定された情報である「ＡＰ１１」、「ＡＰ１２」及び「ＡＰ１３」を特定する。
【０１１３】
そして、アプリ特定部１１５は、Ｓ５１の処理で特定したプリケーションのうち、Ｓ４４の処理で特定したＶＣＰＵに対して送信するパケットの通信量が最も多いアプリケーションを特定する（Ｓ５２）。すなわち、アプリ特定部１１５は、Ｓ４４の処理で特定したＶＣＰＵに対して送信するパケットの通信量が最も多いアプリケーションを、他の仮想マシン３に移動するアプリケーションの候補として特定する。
【０１１４】
具体的に、アプリ特定部１１５は、図２１で説明したアプリケーション情報１３１を参照し、Ｓ５１の処理で特定したアプリケーションが「アプリＩＤ」に設定された情報（「項番」が「１」、「２」及び「３」である情報）のうち、「通信量」に最大の値が設定された情報の「アプリＩＤ」に設定された情報である「ＡＰ１１」を特定する。
【０１１５】
続いて、管理装置１の変更先特定部１１６は、情報格納領域１３０に記憶されたＧＷ情報１３２を参照し、各アプリケーションから送信されるパケットの通信量が最も少ないＶＣＰＵを特定する（Ｓ５３）。すなわち、変更先特定部１１６は、各アプリケーションから送信されるパケットの通信量が最も少ないＶＣＰＵを、Ｓ５２の処理において特定したアプリケーションから送信されるパケットを受信させるＶＣＰＵの変更先の候補として特定する。
【０１１６】
具体的に、変更先特定部１１６は、図２２で説明したＧＷ情報１３２を参照し、「通信量」に設定された値が最も少ない情報の「ＶＣＰＵＩＤ」に設定された「ＶＣＰＵ１」を特定する。
【０１１７】
その後、変更先特定部１１６は、Ｓ５３の処理で特定したＶＣＰＵに対して送信される通信量と、Ｓ５２の処理で特定したアプリケーションからＳ４４の処理で特定したＶＣＰＵに対して送信される通信量との合計値を算出する（Ｓ５４）。
【０１１８】
具体的に、例えば、Ｓ５３の処理で特定されたＶＣＰＵがＶＣＰＵ１である場合、変更先特定部１１６は、図２２で説明したＧＷ情報１３２を参照し、「ＶＣＰＵＩＤ」に「ＶＣＰＵ１」が設定された情報の「通信量」に設定された値である「０（Ｍｂ／ｓ）」を特定する。また、例えば、Ｓ４４の処理で特定されたＶＣＰＵがＶＣＰＵ０であって、Ｓ５２の処理で特定したアプリケーションがＡＰ１１である場合、変更先特定部１１６は、図２１で説明したアプリケーション情報１３１を参照し、「ＶＣＰＵＩＤ」に「ＶＣＰＵ０」が設定され、「アプリＩＤ」に「ＡＰ１１」が設定された情報の「通信量」に設定された値である「６０（Ｍｂ／ｓ）」を特定する。そして、変更先特定部１１６は、それぞれ特定した値である０（Ｍｂ／ｓ）と６０（Ｍｂ／ｓ）との合計値である６０（Ｍｂ／ｓ）を算出する。
【０１１９】
続いて、変更先特定部１１６は、Ｓ５４の処理で算出した通信量が所定閾値を超えているか否かを判定する（Ｓ６１）。
【０１２０】
すなわち、変更先特定部１１６は、Ｓ５２の処理で特定したアプリケーションからＳ４４の処理で特定したＶＣＰＵに対して送信されているパケットの送信先を、Ｓ５３の処理で特定したＶＣＰＵに変更した場合、Ｓ５３の処理で特定したＶＣＰＵに対して送信される通信量の合計が所定閾値を超えるか否かの判定を行う。
【０１２１】
その結果、Ｓ５４の処理で算出した通信量が所定閾値を超えていないと判定した場合、（Ｓ６１のＮＯ）、変更先特定部１１６は、Ｓ４４の処理で特定したＶＣＰＵに対して送信される通信量から、Ｓ５２の処理で特定したアプリケーションからＳ４４の処理で特定したＶＣＰＵに対して送信される通信量を減算した値を算出する（Ｓ６２）。
【０１２２】
すなわち、Ｓ５４の処理で算出した通信量が所定閾値を超えていないと判定した場合、変更先特定部１１６は、Ｓ５２の処理で特定したアプリケーションからＳ４４の処理で特定したＶＣＰＵに対して送信されているパケットの送信先を、Ｓ５３の処理で特定したＶＣＰＵに変更することの決定を行う。ここで、Ｓ４４の処理で特定したＶＣＰＵに対して送信されているパケットの通信量は、Ｓ５２の処理で特定したアプリケーションをＳ５３の処理で特定したＶＣＰＵに対して移動した後であっても、以前として所定閾値を超えている可能性がある。そのため、変更先特定部１１６は、Ｓ４４の処理で特定したＶＣＰＵに対してパケットの送信を行うアプリケーションの移動をさらに行う必要があるか否かの判定を行うために、Ｓ６２の処理を行う。
【０１２３】
具体的に、Ｓ５３の処理で特定されたＶＣＰＵがＶＣＰＵ１であって、Ｓ５４の処理で算出した通信量の合計値が６０（Ｍｂ／ｓ）である場合、変更先特定部１１６は、図２２で説明したＧＷ情報１３２を参照し、「ＶＣＰＵＩＤ」に「ＶＣＰＵ１」が設定された情報の「閾値」に設定された値である「１００（Ｍｂ／ｓ）」が「６０（Ｍｂ／ｓ）」を超えていないと判定する。そのため、変更先特定部１１６は、この場合、図２２で説明したＧＷ情報１３２をさらに参照し、「ＶＣＰＵＩＤ」に「ＶＣＰＵ１」が設定された情報の「通信量」に設定された値である「１４０（Ｍｂ／ｓ）」から「６０（Ｍｂ／ｓ）」を減算した値である「８０（Ｍｂ／ｓ）」を算出する。
【０１２４】
なお、変更先特定部１１６は、この場合、図２３の下線部分に示すように、ＧＷ情報１３２に含まれる情報のうち、「ＶＣＰＵＩＤ」に「ＶＣＰＵ０」が設定された情報の「通信量」に設定された値を、Ｓ５４の処理で算出した通信量である「６０（Ｍｂ／ｓ）」に更新する。また、変更先特定部１１６は、この場合、図２３の下線部分に示すように、ＧＷ情報１３２に含まれる情報のうち、「ＶＣＰＵＩＤ」に「ＶＣＰＵ１」が設定された情報の「通信量」に設定された値を、Ｓ６２の処理で算出した通信量である「８０（Ｍｂ／ｓ）」に更新する。
【０１２５】
そして、変更先特定部１１６は、Ｓ６２の処理で算出した通信量が所定閾値を超えているか否かを判定する（Ｓ６３）。
【０１２６】
その結果、Ｓ６２の処理で算出した通信量が所定閾値を超えていないと判定した場合（Ｓ６３のＮＯ）、変更先特定部１１６は、図１７に示すように、Ｓ４４の処理において全てのＶＣＰＵが特定済であるか否かを判定する（Ｓ７３）。すなわち、変更先特定部１１６は、この場合、Ｓ４４の処理で特定したＶＣＰＵに対してパケットを送信するアプリケーションの移動を終了する。
【０１２７】
具体的に、図２３で説明したＧＷ情報１３２において、「ＶＣＰＵＩＤ」が「ＶＣＰＵ０」である情報（「項番」が「１」である情報）の「通信量」及び「閾値」には、それぞれ「８０（Ｍｂ／ｓ）」及び「１００（Ｍｂ／ｓ）」が設定されている。そのため、変更先特定部１１６は、この場合、「通信量」に設定された値が「閾値」に設定された値を超えていないと判定し、Ｓ７３以降の処理を行う。
【０１２８】
そして、全てのＶＣＰＵが特定済であると判定した場合（Ｓ７３のＹＥＳ）、管理装置１は、処理分散処理を終了する。
【０１２９】
一方、全てのＶＣＰＵが特定済でないと判定した場合（Ｓ７３のＮＯ）、通信量特定部１１３は、Ｓ４４以降の処理を再度行う。
【０１３０】
また、Ｓ６３の処理において、Ｓ６２の処理で算出した通信量が所定閾値を超えていると判定した場合（Ｓ６３のＹＥＳ）、変更先特定部１１６は、Ｓ５２の処理で特定したアプリケーションを対象外アプリケーションとして特定する（Ｓ６４）。すなわち、変更先特定部１１６は、この場合、Ｓ５２の処理で特定したアプリケーションを、Ｓ４４の処理で特定したＶＣＰＵから他のＶＣＰＵに移動させることができないアプリケーションとして特定する。
【０１３１】
なお、変更先特定部１１６は、Ｓ６１の処理において、Ｓ５４の処理で算出した通信量が所定閾値を超えていると判定した場合についても同様に（Ｓ６１のＹＥＳ）、Ｓ６４の処理を行う。
【０１３２】
そして、変更先特定部１１６は、図１７に示すように、Ｓ４４の処理で特定したＶＣＰＵにパケットを送信する全アプリケーションが特定済であるか否かを判定する（Ｓ７１）。すなわち、変更先特定部１１６は、Ｓ５２の処理において、Ｓ４４の処理で特定したＶＣＰＵにパケットを送信するアプリケーションの全ての特定が完了しているか否かの判定を行う。
【０１３３】
その結果、Ｓ５２の処理において、Ｓ４４の処理で特定したＶＣＰＵにパケットを送信するアプリケーションの全ての特定が完了していないと判定した場合（Ｓ７２のＮＯ）、アプリ特定部１１５は、Ｓ５１以降の処理を再度行う。
【０１３４】
一方、Ｓ５２の処理において、Ｓ４４の処理で特定したＶＣＰＵにパケットを送信するアプリケーションの全ての特定が完了していると判定した場合（Ｓ７２のＹＥＳ）、変更先特定部１１６は、Ｓ４４の処理において全てのＶＣＰＵが特定済であるか否かを判定する（Ｓ７３）。
【０１３５】
すなわち、変更先特定部１１６は、この場合、Ｓ４４の処理で特定したＶＣＰＵに対して送信されるパケットの通信量を所定閾値以下にすることができないと判定し、Ｓ４４の処理で特定したＶＣＰＵに対してパケットを送信するアプリケーションの移動を終了する。
【０１３６】
なお、変更先特定部１１６は、この場合、Ｓ４４の処理で特定したＶＣＰＵに対して送信されるパケットの通信量を所定閾値以下にすることができないと判定した旨の情報を、操作端末５等に出力するものであってもよい。
【０１３７】
そして、全てのＶＣＰＵが特定済であると判定した場合（Ｓ７３のＹＥＳ）、管理装置１は、処理分散処理を終了する。
【０１３８】
一方、全てのＶＣＰＵが特定済でないと判定した場合（Ｓ７３のＮＯ）、通信量特定部１１３は、Ｓ４４以降の処理を再度行う。
【０１３９】
また、Ｓ６１の処理において、Ｓ５４で算出した通信量が所定閾値を超えていないと判定した場合、（Ｓ６１のＮＯ）、管理装置１の仮想マシン特定部１１７は、図１８に示すように、Ｓ５２で特定したアプリケーションが動作する仮想マシン３及び後述するＳ９１の処理で特定した対象外仮想マシン３以外の仮想マシン３を１つ特定する（Ｓ８１）。
【０１４０】
すなわち、Ｓ５４の処理で算出した通信量が所定閾値を超えていないと判定した場合、仮想マシン特定部１１７は、Ｓ５２の処理で特定したアプリケーションの移動先の仮想マシン３の特定を開始する。
【０１４１】
具体的に、例えば、Ｓ５２の処理で特定したアプリケーションがＡＰ１１である場合、各アプリケーションが動作する仮想マシン３のうち、ＡＰ１１が動作しているＶＭ３１ａ以外の仮想マシン３を特定する。以下、ＡＰ１１が動作しているＶＭ３１ａ以外の仮想マシン３がＶＭ３２ａ及びＶＭ３３ａであるものとして説明を行う。
【０１４２】
そして、仮想マシン特定部１１７は、Ｓ５２の処理で特定したプリケーションをＳ８１の処理で特定した仮想マシン３に移動した場合に、Ｓ５２の処理で特定したアプリケーションが送信するＶＣＰＵを、Ｓ５２の処理で特定したアプリケーションから送信されるパケットのアドレス情報から算出されるハッシュ値に基づいて特定する（Ｓ８２）。
【０１４３】
その後、仮想マシン特定部１１７は、Ｓ８２の処理で特定したＶＣＰＵとＳ５３の処理で特定したＶＣＰＵとが一致するか否かを判定する（Ｓ８３）。
【０１４４】
その結果、Ｓ８２の処理で特定したＶＣＰＵとＳ５３の処理で特定したＶＣＰＵとが一致すると判定した場合（Ｓ８４のＹＥＳ）、仮想マシン特定部１１７は、Ｓ８１の処理で特定した仮想マシン３を移動先の候補として特定する（Ｓ８５）。
【０１４５】
すなわち、仮想マシン特定部１１７は、Ｓ５２の処理で特定したアプリケーションを移動させた場合に、Ｓ５２の処理で特定したアプリケーションから送信されるパケットの送信先をＳ５３の処理で特定したＶＣＰＵにすることできる仮想マシン３を特定する。
【０１４６】
一方、Ｓ８２の処理で特定したＶＣＰＵとＳ５３の処理で特定したＶＣＰＵとが一致しないと判定した場合（Ｓ８４のＮＯ）、仮想マシン特定部１１７は、Ｓ８５の処理を行わない。
【０１４７】
続いて、仮想マシン特定部１１７は、図１９に示すように、Ｓ８１の処理で特定した仮想マシン３を対象外仮想マシン３として特定する（Ｓ９１）。
【０１４８】
その後、仮想マシン特定部１１７は、Ｓ８１の処理において、Ｓ５２の処理で特定したアプリケーションが動作する仮想マシン３以外の仮想マシン３の全てが特定済であるか否かを判定する（Ｓ９２）。
【０１４９】
その結果、Ｓ５２の処理で特定したアプリケーションが動作する仮想マシン３以外の仮想マシン３の全てが特定済でないと判定した場合（Ｓ９２のＮＯ）、仮想マシン特定部１１７は、Ｓ８１以降の処理を再度行う。
【０１５０】
一方、Ｓ５２の処理で特定したアプリケーションが動作する仮想マシン３以外の仮想マシン３の全てが特定済であると判定した場合（Ｓ９２のＹＥＳ）、仮想マシン特定部１１７は、Ｓ８５の処理で特定した移動先の候補が存在するか否かを判定する（Ｓ９３）。
【０１５１】
その結果、Ｓ８５の処理で特定した移動先の候補が存在しないと判定した場合（Ｓ９３のＮＯ）、変更先特定部１１６は、Ｓ６４以降の処理を再度行う。
【０１５２】
すなわち、仮想マシン特定部１１７は、この場合、Ｓ５２の処理で特定したアプリケーションを他の仮想マシン３に移動することによって、Ｓ４４の処理で特定したＶＣＰＵに対して送信されるパケットの通信量を所定閾値以下にすることができないと判定する。
【０１５３】
一方、Ｓ８５の処理で特定した移動先の候補が存在すると判定した場合（Ｓ９３のＹＥＳ）、仮想マシン特定部１１７は、情報格納領域１３０に記憶された仮想マシン情報１３３を参照し、リソースの使用可能量が最も多い仮想マシン３を特定する（Ｓ９４）。
【０１５４】
すなわち、Ｓ８５の処理で特定した移動先の候補が複数存在する場合、仮想マシン特定部１１７は、リソースの使用可能量が最も多い仮想マシン３を、Ｓ５２の処理で特定したアプリケーションの移動先として特定する。
【０１５５】
そして、管理装置１のアプリ移動部１１８は、Ｓ９４の処理で特定した仮想マシン３に対し、Ｓ５２の処理で特定したアプリケーションを移動する（Ｓ９５）。その後、管理装置１は、処理分散処理を終了する。
【０１５６】
なお、アプリ移動部１１８は、Ｓ９５の処理を行う場合、他の仮想マシン３に移動したアプリケーションに関する情報に基づいて、アプリケーション情報１３１及びＧＷ情報１３２の更新を行う。
【０１５７】
具体的に、図２１に示すアプリケーション情報１３１における「アプリＩＤ」に「ＡＰ１１」が設定された情報には、「ＶＣＰＵ使用量」として「１（個）」が設定されており、「メモリ使用量」として「０．５（Ｍｂ）」が設定されている。そのため、ＡＰ１１の移動が行われる場合、移動先の仮想マシン３におけるＶＣＰＵの使用可能量及びメモリの使用可能量は、それぞれ１（個）及び０．５（Ｍｂ）増加する。一方、移動元の仮想マシン３におけるＶＣＰＵの使用可能量及びメモリの使用可能量は、それぞれ１（個）及び０．５（Ｍｂ）減少する。
【０１５８】
したがって、アプリ移動部１１８は、この場合、図２４の下線部分に示すように、図２０で説明した仮想マシン情報１３３に含まれる情報のうち、ＡＰ１１の移動元の仮想マシン３である「ＶＭ３１ａ」が「ＶＭＩＤ」に設定された情報（「項番」が「１」である情報）の「ＶＣＰＵ使用可能量」を「３（個）」に更新し、「メモリ使用可能量」を「３．５（Ｍｂ）」に更新する。また、アプリ移動部１１８は、図２４の下線部分に示すように、図２０で説明した仮想マシン情報１３３に含まれる情報のうち、ＡＰ１１の移動先の仮想マシン３である「ＶＭ３２ａ」が「ＶＭＩＤ」に設定された情報（「項番」が「２」である情報）の「ＶＣＰＵ使用可能量」を「２（個）」に更新し、「メモリ使用可能量」を「３．５（Ｍｂ）」に更新する。
【０１５９】
さらに、アプリ移動部１１８は、この場合、図２５の下線部分に示すように、図２１で説明したアプリケーション情報１３１に含まれる情報のうち、「ＡＰ１１」が「アプリＩＤ」に設定された情報（「項番」が「１」である情報）の「ＶＭＩＤ」を「ＶＭ３２ａ」に更新する。
【０１６０】
このように、本実施の形態における管理装置１は、所定の間隔において、複数の仮想マシン３において動作する複数のアプリケーションごとに、各アプリケーションが複数のＶＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得する。
【０１６１】
そして、管理装置１は、複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、複数のＶＣＰＵのうち、各アプリケーションからパケットが送信されるＶＣＰＵを特定する。さらに、管理装置１は、複数のＶＣＰＵごとに、複数のアプリケーションのうち、各ＶＣＰＵにパケットを送信するアプリケーションに対応する通信量を合計することにより、各ＶＣＰＵが受信するパケットの通信量を算出する。
【０１６２】
その後、管理装置１は、複数のＶＣＰＵから、算出した通信量が所定閾値を超える特定のＶＣＰＵを特定し、複数のアプリケーションのうち、特定のＶＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＶＣＰＵを変更する特定のアプリケーションを特定する。
【０１６３】
そして、管理装置１は、複数の仮想マシン３のうち、特定のアプリケーションを移動した場合に、特定のアプリケーションがパケットを送信するＶＣＰＵが変更される特定の仮想マシン３を特定し、特定した仮想マシン３に対して特定のアプリケーションを移動する。
【０１６４】
すなわち、管理装置１は、仮想マシン３において動作するアプリケーションの修正等に代えて、仮想マシン３間におけるアプリケーションの移動を行うことにより、アプリケーションから送信される各パケットのハッシュ値を変更する。
【０１６５】
これにより、管理装置１は、仮想マシン３において動作するアプリケーションの修正等を行うことなく、アプリケーションから送信された各パケットのハッシュ値を変更することが可能になり、各パケットを複数のＶＣＰＵに対して適切に振り分けることが可能になる。
【０１６６】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１６７】
（付記１）
所定の間隔において、複数の仮想マシンにおいて動作する複数のアプリケーションごとに、各アプリケーションが複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｃｏｍｐｕｔｉｎｇ  Ｕｎｉｔ）のうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得し、
前記複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、前記複数のＣＰＵのうち、各アプリケーションからパケットが送信されるＣＰＵを特定し、
前記複数のＣＰＵごとに、前記複数のアプリケーションのうち、各ＣＰＵにパケットを送信するアプリケーションに対応する前記通信量を合計することにより、各ＣＰＵが受信するパケットの通信量を算出し、
前記複数のＣＰＵから、算出した前記通信量が所定閾値を超える特定のＣＰＵを特定し、
前記複数のアプリケーションのうち、特定した前記特定のＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＣＰＵを変更する特定のアプリケーションを特定し、
前記複数の仮想マシンのうち、特定した前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが変更される特定の仮想マシンを特定し、
特定した前記仮想マシンに対し、前記特定のアプリケーションを移動する、
ことをコンピュータに実行させることを特徴とする処理分散プログラム。
【０１６８】
（付記２）
付記１において、
前記特定のアプリケーションを特定する処理では、
前記特定のＣＰＵに対してパケットを送信するアプリケーションのうち、前記特定のＣＰＵに対して送信されるパケットの通信量が最も多いアプリケーションを、前記特定のアプリケーションとして特定する、
ことを特徴とする処理分散プログラム。
【０１６９】
（付記３）
付記１において、
前記特定のアプリケーションを特定する処理では、前記特定のＣＰＵに対して送信されるパケットの通信量が前記所定閾値以下になるまで、前記特定のアプリケーションの特定を繰り返す、
ことを特徴とする処理分散プログラム。
【０１７０】
（付記４）
付記１において、さらに、
前記複数のＣＰＵのうち、前記複数のアプリケーションから送信されるパケットの通信量と前記所定閾値との差が、前記特定のアプリケーションから前記特定のＣＰＵに対して送信されるパケットの特定の通信量よりも大きい他のＣＰＵを特定する、
処理をコンピュータに実行させ、
前記特定の仮想マシンを特定する処理では、前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが前記他のＣＰＵに変更される仮想マシンを、前記特定の仮想マシンとして特定する、
ことを特徴とする処理分散プログラム。
【０１７１】
（付記５）
付記４において、
前記他のＣＰＵを特定する処理では、
前記差が前記特定の通信量よりも大きいＣＰＵが複数存在する場合、複数存在する前記ＣＰＵのうち、前記複数のアプリケーションから送信されるパケットの通信量が最も少ないＣＰＵを、前記他のＣＰＵとして特定する、
ことを特徴とする処理分散プログラム。
【０１７２】
（付記６）
付記１において、
前記アプリケーション情報は、各アプリケーションの動作に要するリソースの使用量を含み、さらに、
所定の間隔において、前記複数の仮想マシンごとに、リソースの使用可能量を含む仮想マシン情報を取得する、
処理をコンピュータに実行させ、
前記特定の仮想マシンを特定する処理では、前記複数の仮想マシンのうち、前記使用可能量が前記特定のアプリケーションに対応する前記使用量よりも大きい仮想マシンを、前記特定の仮想マシンとして特定する、
ことを特徴とする処理分散プログラム。
【０１７３】
（付記７）
付記６において、
前記特定の仮想マシンを特定する処理では、前記使用可能量が前記特定のアプリケーションの前記使用量よりも大きい仮想マシンが複数存在する場合、複数存在する前記仮想マシンのうち、前記使用可能量が最も大きい仮想マシンを、前記特定の仮想マシンとして特定する、
ことを特徴とする処理分散プログラム。
【０１７４】
（付記８）
付記１において、
前記アドレス情報は、各アプリケーションから送信されるパケットの送信元ポート番号と送信先ポート番号とを含む、
ことを特徴とする処理分散プログラム。
【０１７５】
（付記９）
付記１において、
前記複数のＣＰＵは、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）のゲートウエイとして機能する１以上の仮想マシンに割り当てられたＣＰＵである、
ことを特徴とする処理分散プログラム。
【０１７６】
（付記１０）
所定の間隔において、複数の仮想マシンにおいて動作する複数のアプリケーションごとに、各アプリケーションが複数のＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得する情報取得部と、
前記複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、前記複数のＣＰＵのうち、各アプリケーションからパケットが送信されるＣＰＵを特定する送信先特定部と、
前記複数のＣＰＵごとに、前記複数のアプリケーションのうち、各ＣＰＵにパケットを送信するアプリケーションに対応する前記通信量を合計することにより、各ＣＰＵが受信するパケットの通信量を算出する通信量特定部と、
前記複数のＣＰＵから、算出した前記通信量が所定閾値を超える特定のＣＰＵを特定するＣＰＵ特定部と、
前記複数のアプリケーションのうち、特定した前記特定のＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＣＰＵを変更する特定のアプリケーションを特定するアプリ特定部と、
前記複数の仮想マシンのうち、特定した前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが変更される特定の仮想マシンを特定する仮想マシン特定部と、
特定した前記仮想マシンに対し、前記特定のアプリケーションを移動するアプリ移動部と、を有する、
ことを特徴とする処理分散装置。
【０１７７】
（付記１１）
付記１０において、さらに、
前記複数のＣＰＵのうち、前記複数のアプリケーションから送信されるパケットの通信量と前記所定閾値との差が、前記特定のアプリケーションから前記特定のＣＰＵに対して送信されるパケットの特定の通信量よりも大きい他のＣＰＵを特定する変更先特定部を有し、
前記仮想マシン特定部は、前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが前記他のＣＰＵに変更される仮想マシンを、前記特定の仮想マシンとして特定する、
ことを特徴とする処理分散装置。
【０１７８】
（付記１２）
所定の間隔において、複数の仮想マシンにおいて動作する複数のアプリケーションごとに、各アプリケーションが複数のＣＰＵのうちのいずれかに対して送信するパケットの通信量を含むアプリケーション情報を取得し、
前記複数のアプリケーションごとに、各アプリケーションから送信されるパケットの送信元ＩＰアドレスと送信先ＩＰアドレスとを含むアドレス情報から算出されるハッシュ値に基づいて、前記複数のＣＰＵのうち、各アプリケーションからパケットが送信されるＣＰＵを特定し、
前記複数のＣＰＵごとに、前記複数のアプリケーションのうち、各ＣＰＵにパケットを送信するアプリケーションに対応する前記通信量を合計することにより、各ＣＰＵが受信するパケットの通信量を算出し、
前記複数のＣＰＵから、算出した前記通信量が所定閾値を超える特定のＣＰＵを特定し、
前記複数のアプリケーションのうち、特定した前記特定のＣＰＵに対してパケットを送信するアプリケーションから、パケットを送信するＣＰＵを変更する特定のアプリケーションを特定し、
前記複数の仮想マシンのうち、特定した前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが変更される特定の仮想マシンを特定し、
特定した前記仮想マシンに対し、前記特定のアプリケーションを移動する、
ことを特徴とする処理分散方法。
【０１７９】
（付記１３）
付記１２において、さらに、
前記複数のＣＰＵのうち、前記複数のアプリケーションから送信されるパケットの通信量と前記所定閾値との差が、前記特定のアプリケーションから前記特定のＣＰＵに対して送信されるパケットの特定の通信量よりも大きい他のＣＰＵを特定する、
処理をコンピュータに実行させ、
前記特定の仮想マシンを特定する処理では、前記特定のアプリケーションを移動した場合に、前記特定のアプリケーションがパケットを送信するＣＰＵが前記他のＣＰＵに変更される仮想マシンを、前記特定の仮想マシンとして特定する、
ことを特徴とする処理分散方法。
【符号の説明】
【０１８０】
１：管理装置              ２：物理マシン
３：仮想マシン            ４：仮想化ソフトウエア
５：操作端末
【図１】
2019086957.tif 000003
【図２】
2019086957.tif 000004
【図３】
2019086957.tif 000005
【図４】
2019086957.tif 000006
【図５】
2019086957.tif 000007
【図６】
2019086957.tif 000008
【図７】
2019086957.tif 000009
【図８】
2019086957.tif 000010
【図９】
2019086957.tif 000011
【図１０】
2019086957.tif 000012
【図１１】
2019086957.tif 000013
【図１２】
2019086957.tif 000014
【図１３】
2019086957.tif 000015
【図１４】
2019086957.tif 000016
【図１５】
2019086957.tif 000017
【図１６】
2019086957.tif 000018
【図１７】
2019086957.tif 000019
【図１８】
2019086957.tif 000020
【図１９】
2019086957.tif 000021
【図２０】
2019086957.tif 000022
【図２１】
2019086957.tif 000023
【図２２】
2019086957.tif 000024
【図２３】
2019086957.tif 000025
【図２４】
2019086957.tif 000026
【図２５】
2019086957.tif 000027