(57)【要約】【課題】クライアントと仮想サーバとの間の通信コネクションの確立を高速にするためのコネクション選択装置を提供する。【解決手段】或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、通信を行うためのコネクションを選択するためのコネクション選択装置であって、或るクライアントに含まれる何れかのアプリケーションと或る物理サーバに含まれる仮想サーバであって或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、通信を行うためのコネクションとして、第１の既存コネクションを選択する手段を備える。【選択図】図１
2012155602.tif 000002
【特許請求の範囲】
【請求項１】
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段を備えることを特徴とするコネクション選択装置。
【請求項２】
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算する手段と、
前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段と、
前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段を更に備えることを特徴とするコネクション選択装置。
【請求項３】
請求項２に記載のコネクション選択装置であって、
前記第１の既存コネクションの帯域を増やす制御、そのパスを切り替える制御又はその双方の制御を行う手段を更に備えることを特徴とするコネクション選択装置。
【請求項４】
請求項１乃至３の何れか１に記載のコネクション選択装置であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る仮想サーバとの間に第２の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第２の既存コネクションを選択する手段を更に備えることを特徴とするコネクション選択装置。
【請求項５】
請求項１乃至４の何れか１に記載のコネクション選択装置であって、
前記或るクライアントと前記或る物理サーバとの間に確立されている既存コネクションがない場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段を更に備えることを特徴とするコネクション選択装置。
【請求項６】
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択方法であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択するステップを有することを特徴とするコネクション選択方法。
【請求項７】
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択方法であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算するステップと、
前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択するステップと、
前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択するステップを更に有することを特徴とするコネクション選択方法。
【請求項８】
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置としてコンピュータを機能させるためのコネクション選択プログラムであって、
コンピュータを、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段として機能させることを特徴とするコネクション選択プログラム。
【請求項９】
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置としてコンピュータを機能させるためのコネクション選択プログラムであって、
コンピュータを、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算する手段と、
前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段と、
前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段と、
として機能させることを特徴とするコネクション選択プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアサーバ環境においてクライアントとサーバとの間のコネクションを選択するためのコネクション選択装置、コネクション選択方法及びコネクション選択プログラムに関する。
【背景技術】
【０００２】
ＣＰＵのマルチコア(multi core)化、メニコア(many core)化が進んでいる。今後、一つのサーバに８コア、１６コアが搭載されるというように、一つのサーバあたりのコア数が増えてくると予想される。これによりマルチスレッド・マルチプロセス(multi thread/multi process)のサーバの並列度が上がり、そのサーバの処理性能（単位時間当たりの処理数）が向上する。ただしこの様なマルチコアアーキテクチャでは、サーバプロセスやメモリ空間の扱い方が従来とは変わってくる。まずメモリについては、大容量のメモリをマルチコアで共有するが、コア数が増えたことにより、メモリバスがボトルネックになる可能性が高まる。少しでもボトルネックを回避するため、メモリをいくつかに分割し、それぞれの分割されたメモリにメモリバスをつけ、それぞれの分割されたメモリをコアとスイッチを介して接続する構成が考えられる。その際、物理的な制約から、いわゆるＮＵＭＡ(Non-Uniform Memory Access)になる。つまり各コアから見るとアクセスの早いメモリと遅いメモリがある。マルチコアの性能を最大に引き出すためには、このメモリ性能の違いを利用する必要がある。
【０００３】
サーバプロセスについては、マルチコアをできるだけ並列に動作させることが重要である。そのために、コア間でプロセスが移動するオーバーヘッドを避ける目的でプロセスを特定のＣＰＵに明示的に割り当てる技術が用いられることがある。これをＣＰＵアフィニティという。マルチコアのコア数が上がるほどＣＰＵアフィニティをかけることで並列度向上に効果がある。
【０００４】
なお、特許文献１には、仮想サーバの作成や起動に関する開示がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２７２２９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述のように、マルチコアで性能を最大に引き出すためにはＮＵＭＡを考慮してメモリをコアに貼り付け、さらにサーバプロセスをコアに貼り付けて、コア同士をなるべく独立して並列動作をさせることが重要である。このように各コアにメモリを貼り付けたサーバを仮想サーバと呼ぶ。クライアントから見ると、一つの物理サーバに複数（例えばコア数）の仮想サーバが見える。ただし、仮想サーバは互いに独立ではあるが、物理サーバとしては同じである。従って、同一の物理サーバにある仮想サーバ間の接続は、物理サーバ間の接続と比較して、格段に高速である。それに対して、通信コネクションを開設する処理は、同一の物理サーバにある仮想サーバ間を接続する処理と比較して、相対的に長時間要する。例えばＴＣＰ／ＩＰ(Transmission Control Protocol/Internet Protocol)の場合、新規コネクションの開設は、３−Ｗａｙハンドシェイクにより行われる。３−ｗａｙハンドシェイクでは、ＳＹＮ、ＳＹＮ−ＡＣＫ、ＡＣＫという３回のクライアントサーバ間のやりとりを経てコネクションが開設される。ＣＰＵやネットワークが高速になったとはいえ、新規コネクションを開設する処理は、同一の物理サーバにある仮想サーバ間を接続する処理に比べて桁違いに遅い。
【０００７】
従って、ここで解決しようとする課題は、或るクライアントが、新たに何れかの仮想サーバと通信をしようとする場合についてのものである。通常は、クライアントは、通信しようとする仮想サーバと新規コネクションを無条件に開設する。
【０００８】
特許文献１には、上述したように、仮想サーバの作成や起動に関する開示があるが、クライアントと仮想サーバとを接続するコネクションに関する開示はない。
【０００９】
そこで、本発明は、クライアントと仮想サーバとの間の通信コネクションの確立を高速にするためのコネクション選択装置、コネクション選択方法及びコネクション選択プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の第１の観点によれば、或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置であって、前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段を備えることを特徴とするコネクション選択装置が提供される。
【００１１】
本発明の第２の観点によれば、或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置であって、前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算する手段と、前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段と、前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段を更に備えることを特徴とするコネクション選択装置が提供される。
【００１２】
本発明の第３の観点によれば、或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択方法であって、前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択するステップを有することを特徴とするコネクション選択方法が提供される。
【００１３】
本発明の第４の観点によれば、或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択方法であって、前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算するステップと、前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択するステップと、前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択するステップを更に有することを特徴とするコネクション選択方法が提供される。
【００１４】
本発明の第５の観点によれば、或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置としてコンピュータを機能させるためのコネクション選択プログラムであって、コンピュータを、前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段として機能させることを特徴とするコネクション選択プログラムが提供される。
【００１５】
本発明の第６の観点によれば、或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置としてコンピュータを機能させるためのコネクション選択プログラムであって、コンピュータを、前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算する手段と、前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段と、前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段と、として機能させることを特徴とするコネクション選択プログラムが提供される。
【発明の効果】
【００１６】
本発明によれば、クライアントと仮想サーバとの間の通信コネクションの確立を高速にすることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態によるシステム構成を示すブロック図である。
【図２】本発明の実施形態によるクライアントの詳細な構成を示すブロック図である。
【図３】本発明の第１の実施形態によるサーバ選択部の動作を説明するためのフローチャートである。
【図４】本発明の第２の実施形態によるサーバ選択部の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【００１９】
［第１の実施形態］
図１に本発明の実施形態によるシステムの構成を示す。クライアント１と物理サーバ２があり、物理サーバ２では仮想サーバ３Ａ〜３Ｃの３つの仮想サーバが起動している。仮想サーバ３Ａ、３Ｂ、３Ｃは、それぞれ、ポート番号がＡ、Ｂ、Ｃのポートを利用してＴＣＰ／ＩＰによる通信をする準備ができている。仮想サーバ３Ａ、３Ｂ、３Ｃは、それぞれ、コア４Ａ、４Ｂ、４Ｃにアフィニティが設定されている。コア４Ａ、４Ｂ、４Ｃは、それぞれ、メモリ５Ａ、５Ｂ、５Ｃに高速でアクセスできる。図１において、コアとメモリを接続する太線を流れるデータの伝送速度は、コアとメモリを接続する細線を流れるデータの伝送速度よりも高い。
【００２０】
図１の例では、クライアント１と仮想サーバ３Ｂとの間に既存コネクションが確立されている。この例で、クライアント１が仮想サーバ３Ａと新たに通信しようとする場合を考える。通常であればクライアント１と仮想サーバ３Ａとの間に新規コネクションを開設して両者が通信をする。しかし、本実施形態では、クライアント１と仮想サーバ３Ｂとの間に既存コネクションが確立されているので、クライアント１は、仮想サーバ３Ｂ経由で仮想サーバ３Ａにアクセスしたほうが高速な可能性がある。本実施形態ではこのような場合に適切な制御を行う。
【００２１】
図２はクライアント１の構成を示すブロック図である。クライアント１は、アプリケーション１０と、サーバ選択部１１と、通信管理部１２と、通信処理部１３を含む。なお、これらの各部は、ハードウェア、ソフトウェア又はこれらの組合わせにより実現することができる。ここでソフトウェアにより実現するとは、コンピュータをその部分として機能させるためのプログラムをコンピュータが読み込んで実行することにより実現することをいう。
【００２２】
本実施形態の特徴はサーバ選択部１１にある。まずサーバと通信しようとするアプリケーション１０は、通信処理部１３にリクエストを出す。通信処理部１３はリクエストの転送先となるべき仮想サーバを選択するため、サーバ選択部１１に問い合わせを行う。通信処理部１３は、サーバ選択部１１から回答として得た仮想サーバとの間で、通信管理部１２を介して、通信を開始する。
【００２３】
一般的なサーバ選択部１１として、ＫＶＳ(Key-Value Storage)のような分散ストレージでコンシステントハッシュのような例がある。コンシステントハッシュはサーバリストをハッシュ空間にハッシュ関数によりばらまき、アクセスするデータのキー（Ｋｅｙ）も同様にハッシュ関数を通すことにより、どのサーバがデータを保持しているかをアルゴリズム的に求める手法である。本実施形態はこのようなコンシステントハッシュに加えて、そのクライアントが今どの仮想サーバ、物理サーバとの間で既存コネクションを確立しているのかを情報として用いる。
【００２４】
本実施形態のサーバ選択部１１の動作を説明するためのフローチャートを図３に示す。
【００２５】
通信処理部１３からの問い合わせを元に、例えばコンシステントハッシュにより、アプリケーション１０の接続先となる仮想サーバとして、仮想サーバＡが選択されたとする（ステップＳ１）。
【００２６】
次に、アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡを含む物理サーバとの間に少なくとも１つの既存コネクションが確立されているか否かをチェックする（ステップＳ２）。コネクションの状態は通信管理部１２が管理しているので、サーバ選択部１１は、通信管理部１２に問い合わせたり、コネクションの状態を管理するためのテーブルを通信管理部１２と共有したりすることにより、そのチェックを行う。
【００２７】
アプリケーション１０を含むクライアント１と仮想サーバＡを含む物理サーバとの間に確立されている既存コネクションがない場合には（ステップＳ２でＮＯ）、既存コネクションを使って物理サーバ内の仮想サーバ間でデータや命令を転送させる方法がとれないので、アプリケーション１０と仮想サーバＡとの間に直接コネクションを開設するのが最も有利である。よって、アプリケーション１０と仮想サーバＡとの間に新たなコネクションを開設し、アプリケーション１０に、その新たなコネクションを用いて、仮想サーバＡと通信をさせることとする（ステップＳ４）。
【００２８】
アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡを含む物理サーバとの間に既存コネクションがある場合、アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡとの間に既存コネクションがあるかをチェックする（ステップＳ３）。
【００２９】
もし、アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡとの間に既存コネクションが確立されている場合には、その既存コネクションを用いて通信をするのが最も有利である。従って、アプリケーション１０に、アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡとの間に確立されている既存コネクションを用いて、仮想サーバＡと通信をさせることとする（ステップＳ５）。
【００３０】
もし、アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡとの間に既存コネクションが確立されていない場合、すなわち、アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡを含む物理サーバに含まれる仮想サーバであって仮想サーバＡ以外の仮想サーバとの間に既存コネクションが確立されている場合には、その既存コネクションを用いて通信をするのが最も有利である。従って、アプリケーション１０に、アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡを含む物理サーバに含まれる仮想サーバであって仮想サーバＡ以外の仮想サーバとの間に確立されている既存コネクションを用いて、仮想サーバＡと通信をさせることとする（ステップＳ６）。この場合、仮想サーバＡと、仮想サーバを含む物理サーバに含まれる仮想サーバであって仮想サーバＡ以外の仮想サーバとは、仮想サーバ間通信をしたり、共有メモリを用いたりして、データや命令の転送を行う。仮想サーバが共有メモリ型のストレージサーバ、例えばＫＶＳのようなサーバであった場合、よりオーバーヘッドの少ない方法でデータや命令の転送を行うことができる。
【００３１】
［第２の実装形態］
第１の実施形態では、当該アプリケーションを含むクライアントに含まれる何れかのアプリケーションと仮想サーバＡを含む物理サーバに含まれる仮想サーバであって仮想サーバＡ以外の仮想サーバとの間に既存コネクションがある場合には、その既存コネクションを無条件に当該アプリケーションと仮想サーバＡとが通信を行うためのコネクションとして選択するようにしていた。これに対し、第２の実施形態では、当該アプリケーションを含むクライアントに含まれる何れかのアプリケーションと仮想サーバＡを含む物理サーバに含まれる仮想サーバであって仮想サーバＡ以外の仮想サーバとの間に既存コネクションがある場合には、更に、その既存コネクションを当該アプリケーションと仮想サーバＡとが通信を行うためのコネクションとして選択する場合の仮想サーバ間通信コストと、当該アプリケーションと仮想サーバとの間に新たなコネクションを開設して、当該アプリケーションと仮想サーバＡとが通信を行うためのコネクションとして新たなコネクションを選択する場合の新規コネクション開設コストを比較して、コストが低い方を選択する。
【００３２】
ここで、各コストの計算は、トータルで行う。トータルでコストの計算を行うとは、具体的には、クライアントの状態、物理サーバの状態、仮想サーバの状態及びネットワークの状態を含めて計算を行うことである。
【００３３】
より具体的には、例えば、ネットワークが非常に混雑している場合には、新規コネクション開設コストよりも、仮想サーバ間通信コストの方が低い。
【００３４】
また、例えば、コアにかかる負荷が高くなるほどコストが高くなるような評価式を用い、負荷の低いコアを使うような選択ができるようにする。当該アプリケーションを含むクライアントに含まれる何れかのアプリケーションと仮想サーバＡを含む物理サーバに含まれる仮想サーバであって仮想サーバＡ以外の仮想サーバとの間に既存コネクションがあり、仮想サーバＡ以外の仮想サーバが複数あるならば、相対的に負荷の低いコアを含む仮想サーバに係る既存コネクションを選択するようにしてもよい。そして、選択された既存コネクションを利用する場合の仮想サーバ間通信コストを、新規コネクション開設コストと比較するようにしてもよい。
【００３５】
また、既存コネクションを選択することとした場合には、よりアクティブに、既存コネクションのネットワーク帯域をネットワーク帯域制御と連携して増やす制御や、既存コネクションのパスをよりホップの少ないネットワークパスに切り替えるような制御を追加してもよい。
【００３６】
なお、コスト計算をする際には、どれだけリアルタイムな状態を用いるかによって、コスト計算のためのコストが逆にかかってしまい、遅延が生ずる可能性があるので注意が必要である。
【００３７】
図４に第２の実施形態によるサーバ選択部１１の動作を説明するためのフローチャートを示す。
【００３８】
図３と図４とを比較すると明らかなように、第２の実施形態によるサーバ選択部１１の動作は、第１の実施形態によるサーバ選択部１１の動作と比較して、ステップＳ３でＮＯとなった場合の手順が異なるだけであり、それ以外の手順は同一である。
【００３９】
ステップＳ３でＮＯとなったならば、ステップＳ７で、新規コネクション開設コストと仮想サーバ間通信コストを計算する。
【００４０】
次に、新規コネクション開設コストが仮想サーバ間通信コストより高いか否かを判断する（ステップＳ８）。
【００４１】
新規コネクション開設コストが仮想サーバ間通信コストより高い場合には（ステップＳ８でＹＥＳ）、アプリケーション１０に、アプリケーション１０を含むクライアント１に含まれる何れかのアプリケーションと仮想サーバＡを含む物理サーバに含まれる仮想サーバであって仮想サーバＡ以外の仮想サーバとの間に確立されている既存コネクションを用いて、仮想サーバＡと通信をさせることとする（ステップＳ６）。
【００４２】
新規コネクション開設コストが仮想サーバ間通信コストより高くない場合には（ステップＳ８でＮＯ）、アプリケーション１０と仮想サーバＡとの間に新たなコネクションを開設し、アプリケーション１０に、その新たなコネクションを用いて、仮想サーバＡと通信をさせることとする（ステップＳ４）。
【００４３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００４４】
（付記１）
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段を備えることを特徴とするコネクション選択装置。
【００４５】
（付記２）
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算する手段と、
前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段と、
前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段を更に備えることを特徴とするコネクション選択装置。
【００４６】
（付記３）
付記２に記載のコネクション選択装置であって、
前記第１の既存コネクションの帯域を増やす制御、そのパスを切り替える制御又はその双方の制御を行う手段を更に備えることを特徴とするコネクション選択装置。
【００４７】
（付記４）
付記１乃至３の何れか１に記載のコネクション選択装置であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る仮想サーバとの間に第２の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第２の既存コネクションを選択する手段を更に備えることを特徴とするコネクション選択装置。
【００４８】
（付記５）
付記１乃至４の何れか１に記載のコネクション選択装置であって、
前記或るクライアントと前記或る物理サーバとの間に確立されている既存コネクションがない場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段を更に備えることを特徴とするコネクション選択装置。
【００４９】
（付記６）
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択方法であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択するステップを有することを特徴とするコネクション選択方法。
【００５０】
（付記７）
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択方法であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算するステップと、
前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択するステップと、
前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択するステップを更に有することを特徴とするコネクション選択方法。
【００５１】
（付記８）
付記７に記載のコネクション選択方法であって、
前記第１の既存コネクションの帯域を増やす制御、そのパスを切り替える制御又はその双方の制御を行うステップを更に有することを特徴とするコネクション選択方法。
【００５２】
（付記９）
付記６乃至８の何れか１に記載のコネクション選択方法であって、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る仮想サーバとの間に第２の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第２の既存コネクションを選択するステップを更に有することを特徴とするコネクション選択方法。
【００５３】
（付記１０）
付記６乃至９の何れか１に記載のコネクション選択方法であって、
前記或るクライアントと前記或る物理サーバとの間に確立されている既存コネクションがない場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択するステップを更に有することを特徴とするコネクション選択方法。
【００５４】
（付記１１）
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置としてコンピュータを機能させるためのコネクション選択プログラムであって、
コンピュータを、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段として機能させることを特徴とするコネクション選択プログラム。
【００５５】
（付記１２）
或るクライアントに含まれる或るアプリケーションが或る物理サーバに含まれる或る仮想サーバとの間で通信を開始することとなった場合に、前記通信を行うためのコネクションを選択するためのコネクション選択装置としてコンピュータを機能させるためのコネクション選択プログラムであって、
コンピュータを、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る物理サーバに含まれる仮想サーバであって前記或る仮想サーバ以外の仮想サーバとの間に第１の既存コネクションが確立されている場合に、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する場合の仮想サーバ間通信コストと、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する場合の新規コネクション開設コストとを計算する手段と、
前記新規コネクション開設コストが前記仮想サーバ間通信コストよりも高い場合には、前記通信を行うためのコネクションとして、前記第１の既存コネクションを選択する手段と、
前記新規コネクション開設コストが前記仮想サーバ間通信コスト以下である場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段と、
として機能させることを特徴とするコネクション選択プログラム。
【００５６】
（付記１３）
付記１２に記載のコネクション選択プログラムであって、
コンピュータを更に、
前記第１の既存コネクションの帯域を増やす制御、そのパスを切り替える制御又はその双方の制御を行う手段として機能させることを特徴とするコネクション選択プログラム。
【００５７】
（付記１４）
付記１１乃至１３の何れか１に記載のコネクション選択プログラムであって、
コンピュータを更に、
前記或るクライアントに含まれる何れかのアプリケーションと前記或る仮想サーバとの間に第２の既存コネクションが確立されている場合には、前記通信を行うためのコネクションとして、前記第２の既存コネクションを選択する手段として機能させることを特徴とするコネクション選択プログラム。
【００５８】
（付記１５）
付記１１乃至１４の何れか１に記載のコネクション選択プログラムであって、
コンピュータを更に、
前記或るクライアントと前記或る物理サーバとの間に確立されている既存コネクションがない場合には、前記或るアプリケーションと前記或る仮想サーバとの間に新たなコネクションを開設し、前記通信をするためのコネクションとして、前記新たなコネクションを選択する手段として機能させることを特徴とするコネクション選択プログラム。
【産業上の利用可能性】
【００５９】
本発明を用いれば、これから増えるマルチコア・メニコア環境におけるクライアントサーバ処理において、従来よりも高速で大量の処理が可能となる。
【符号の説明】
【００６０】
１  クライアント
２  物理サーバ
３  仮想サーバ
４  コア
５  メモリ
１０  アプリケーション
１１  サーバ選択部
１２  通信管理部
１３  通信処理部
【図１】
2012155602.tif 000003
【図２】
2012155602.tif 000004
【図３】
2012155602.tif 000005
【図４】
2012155602.tif 000006