(57)【要約】【課題】データを効率良く処理するサーバシステム等を提供する。【解決手段】サーバシステム５は、  クライアント５０からの要求に応じた処理を個別に実行する複数のワーカースレッド６０と、  複数の前記クライアント５０のうち特定のクライアントが行う接続要求に対して、該特定のクライアントに関連付けされたワーカースレッドを割り当てるコネクションリスナ部２０を有するスレッド管理部１０とを備える。【選択図】  図１
2013250921.tif 000002
【特許請求の範囲】
【請求項１】
クライアントからの要求に応じた処理を個別に実行する複数のワーカースレッドと、
複数の前記クライアントのうち特定のクライアントが行う接続要求に対して、該特定のクライアントに関連付けされたワーカースレッドを割り当てるコネクションリスナ部を有するスレッド管理部とを
備えるサーバシステム。
【請求項２】
前記コネクションリスナ部は、
所定の１つのワーカースレッドを割り当てるリスナ構成部を複数備え、
前記接続要求に対して、前記複数のクライアントに関連付けされた前記リスナ構成部が、該ワーカースレッドを割り当てる
請求項１に記載のサーバシステム。
【請求項３】
前記スレッド管理部は、
前記複数のクライアントと前記複数のワーカースレッドとを個別に関連付けて記憶する記憶部と、
前記接続要求を行った第１クライアントに、前記記憶部において前記第１クライアントと関連付けされた第１ワーカースレッドを読み取り、前記第１ワーカースレッドの識別情報を送信する情報指定部とを更に備え、
前記接続要求に対して、前記コネクションリスナ部は、前記第１ワーカースレッドを割り当てる
請求項１または請求項２に記載のサーバシステム。
【請求項４】
前記スレッド管理部は、
前記複数のクライアントと前記複数のワーカースレッドとを関連付け、該関連付けを表す情報を前記記憶部に記憶するグルーピング部を更に備える、
請求項３に記載のサーバシステム。
【請求項５】
前記グルーピング部は、
前記複数のクライアントと前記複数のクライアント間における通信との関連を、所定のデータ形式に従って表現した関連グラフを記憶するグラフ記憶部を備え、
前記グラフ記憶部が記憶する前記関連グラフを読み取り、所定のグラフ処理方法に従って算出された結果に応じて、前記複数のクライアントと前記複数のワーカースレッドとを個別に関連付ける
請求項４に記載のサーバシステム。
【請求項６】
前記関連グラフは、前記複数のクライアント間における通信量を更に表現する
請求項５に記載のサーバシステム。
【請求項７】
前記関連グラフは、前記複数のクライアント間における遅延クリティカル値を更に表現する
請求項５に記載のサーバシステム。
【請求項８】
複数のクライアントのうち特定のクライアントが行う接続要求に対して、該特定のクライアントに関連付けされたワーカースレッドを割り当て、該ワーカースレッドにおいて、該特定のクライアントからの要求を処理するサーバ制御方法。
【請求項９】
クライアントからの要求に応じた処理を個別に実行する複数のワーカースレッド機能と、
複数の前記クライアントのうち特定のクライアントが行う接続要求に対して、該特定のクライアントに関連付けされたワーカースレッド機能を割り当てるコネクションリスナ機能とを
コンピュータに実現させるコンピュータ・プログラム。
【請求項１０】
前記コネクションリスナ機能において、
所定の１つのワーカースレッド機能を割り当てるリスナ構成機能を複数備え、
前記接続要求に対して、前記複数のクライアントに関連付けされた前記リスナ構成機能が、該ワーカースレッド機能を割り当てる
請求項９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを効率良く処理するサーバシステム等に関する。
【背景技術】
【０００２】
マルチスレッドを用いたサーバシステムは、複数のクライアントが行う処理要求を処理するために、一つのリスナと複数のワーカースレッドを有する。図１２を参照しながら、関連するサーバシステムについて説明する。図１２は、関連するサーバシステムの構成を示すブロック図である。
【０００３】
図１２を参照すると、サーバシステム７０は、複数のクライアント５０が行う通信接続を確立するための要求（以降、「接続要求」と略記する）を受け付けるリスナ部８０と、複数のワーカースレッド６０とを有する。リスナ部８０は、複数のワーカースレッド６０を管理する。クライアント５０とサーバシステム７０は、通信ネットワーク（以降、「ネットワーク」と略記する）を介して接続される。クライアント５０とサーバシステム７０との間の通信は、ソケットを用いて実現する。
【０００４】
サーバシステム７０におけるリスナ部８０は、ソケットを作成し、その後、作成したソケットに対してあるポート番号を割り当て、クライアントが接続することを待ち受ける。リスナ部８０は、あるクライアント５０が実行した接続要求を受け、その接続要求に対する処理をランダムにワーカースレッド６０に割り当てる。ワーカースレッド６０は、リスナ部８０が割り当てた接続において、クライアント５０からデータを受け取り、受信したデータについて処理を実施する。
【０００５】
しかし、上述したようなサーバシステムにおいては、時として、異なるワーカースレッド６０がハンドシェイクを行うことが必要である。例えば、第１ワーカースレッド（図１２におけるワーカースレッド６０のうちの１つ）が、ある第１クライアント（図１２におけるクライアント５０のうちの１つ）との接続において受信したデータを、第２ワーカースレッド（図１２におけるワーカースレッド６０のうち、第１ワーカースレッドとは異なる１つのワーカースレッド）が、第２クライアント（図１２におけるクライアント５０のうちの、第１クライアントとは異なる１つのクライアント）との接続において送信する場合である。この場合、第１ワーカースレッドは、第２ワーカースレッドと、ハンドシェイクを行う。第１ワーカースレッドは、ハンドシェイクを行い、その後、第２ワーカースレッドにデータを受け渡す。
【０００６】
非特許文献１が開示するハンドシェイクを実現する方式は、以下に説明するような方式である。第２ワーカースレッドは、第１ワーカースレッドから書き込み可能なデータキューを保持する。さらに、第２ワーカースレッドは、定期的にデータキューをポーリングする。第２ワーカースレッドは、ポーリングすることで、第１ワーカースレッドがデータを書き込んだか否かを判断する。
【０００７】
上述したような方式を使ってハンドシェイクを実現する場合、サーバシステム７０が第１クライアントから受信したデータを、第２クライアントに送信するまでの期間が長くなるという課題がある。さらに、サーバシステム７０は、ハンドシェイクを処理する必要があるため、１つ以上のクライアントから送信されてくるデータを、高いスループットで処理することができないという問題がある。
【０００８】
特許文献１が開示するネットワークシステムは、複数のクライアントとサーバを備える。サーバは、サーバプロセスによりサービスを提供しており、それぞれのクライアントが、通信接続を介してサーバと接続することでサービスの提供を受ける。特許文献１は、更に、特定のクライアントと特定のサーバプロセスとを、ソケットを介して結合することを開示する。特許文献１が開示するクライアントサーバシステムは、通信が必要なクライアント間であっても異なるスレッドを割り当てるため、高いスループットで処理することができないという問題がある。
【０００９】
特許文献２は、複数のクライアントを、データを同期させる必要性に応じてグループ化することを開示する。特許文献２が開示するシステムは、クライアント間における通信を、上述したグループ化に応じて、直接行う場合と、サーバを経由して間接的に行う場合とに区分する。特許文献２が開示するシステムは、２種類の通信経路を併用することにより、サーバの負荷を軽減する。
【００１０】
特許文献３が開示する情報システムは、複数のクライアントとサーバを備える。特許文献３が開示する情報システムは、クライアントから受信するリクエストを識別情報に対応付けて記憶することにより、リクエストを検索する処理を効率化する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平１０−３２０２２０号公報
【特許文献２】再特ＷＯ２００１０５７６７８号公報
【特許文献３】再特ＷＯ２００８１４００５３号公報
【非特許文献】
【００１２】
【非特許文献１】Ｂ．  Ｇｒｏｎｅ  ａｎｄ  Ｐ．  Ｔａｂｅｌｉｎｇ．  ”Ａ  Ｓｙｓｔｅｍ  ｏｆ  Ｃｏｎｃｅｐｔｕａｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐａｔｔｅｒｎｓ  ｆｏｒ  Ｃｏｎｃｕｒｒｅｎｔ  Ｒｅｑｕｅｓｔ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｅｒｖｅｒｓ．”  Ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｓｅｃｏｎｄ  Ｎｏｒｄｉｃ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｐａｔｔｅｒｎ  Ｌａｎｇｕａｇｅｓ  ｏｆ  Ｐｒｏｇｒａｍｓ  （ＶｉｋｉｎｇＰＬｏＰ  ２００３），  Ｂｅｒｇｅｎ，  Ｎｏｒｗａｙ，  ２００３
【発明の概要】
【発明が解決しようとする課題】
【００１３】
コネクションリスナ部８０（以降、「リスナ部」と表す）は、第１クライアントを第１ワーカースレッドに割り当て、第２クライアントを第２ワーカースレッドに割り当てることがある。この時、第１クライアントから受信するデータを第２クライアントに送信する場合に、第１ワーカースレッドは、第２ワーカースレッドと、ハンドシェイクを行う必要がある。
【００１４】
サーバシステム７０は、ハンドシェイクを実現する処理を行う必要がある。サーバシステム７０は、ハンドシェイクを実現する処理を行うため、第１クライアントから受信するデータを、第２クライアントに送信するまでの期間が長くなるという問題が存在する。さらに、サーバシステム７０は、ハンドシェイクを処理する必要があるため、サーバシステム７０における処理負荷が増大する。サーバシステム７０は、処理負荷が増大する結果、1つ以上のクライアント５０から送信されてくるデータを、高いスループットで処理することができない。
【００１５】
そこで、本発明の主たる目的は、データを効率良く処理するサーバシステム等を提供することである。
【課題を解決するための手段】
【００１６】
前述の目的を達成するために、本発明に係るサーバシステムは、以下の構成を備えることを特徴とする。
【００１７】
即ち、本発明に係るサーバシステムは、
クライアントからの要求に応じた処理を個別に実行する複数のワーカースレッドと、
複数の前記クライアントのうち特定のクライアントが行う接続要求に対して、該特定のクライアントに関連付けされたワーカースレッドを割り当てるコネクションリスナ部を有するスレッド管理部とを
備えることを特徴とする。
【００１８】
また、本発明の他の見地として、本発明に係るサーバ制御方法は、
複数のクライアントのうち特定のクライアントが行う接続要求に対して、該特定のクライアントに関連付けされたワーカースレッドを割り当て、該ワーカースレッドにおいて、該特定のクライアントからの要求を
処理することを特徴とする。
【発明の効果】
【００１９】
本発明に係るサーバシステム等によれば、データを効率良く処理することができる。
【発明を実施するための形態】
【００２０】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２１】
＜第１の実施形態＞
本発明の第１の実施形態に係るスレッド管理部を有するサーバシステムの構成について、図１を参照しながら詳細に説明を行う。図１は、本発明の第１の実施形態に係るスレッド管理部を有するサーバシステムの構成を示すブロック図である。
【００２２】
図１を参照すると、複数のクライアント５０とサーバシステム５とが存在する。サーバシステム５は、スレッド管理部１０と複数のワーカースレッド６０とを有する。
複数のワーカースレッド６０を有するサーバシステム５において、スレッド管理部１０は、クライアント５０が行う接続要求に対して、そのクライアント５０に関連付けされたワーカースレッド６０を割り当てるコネクションリスナ部２０から構成される。
【００２３】
例えば、クライアントとワーカースレッドは、外部装置によって関連付けされていても良い。また、スレッド管理部１０が、所定の計算方法（以降、「所定のグラフ処理方法」とも表す）に従って値を算出し、算出した値に応じて、クライアント５０とワーカースレッド６０とを関連付けても良い。関連付けする方法は、上述したような方法に限定されない。
【００２４】
まず、第１クライアント（図１におけるクライアント５０の１つ）は、サーバシステム５に接続要求を行う。次に、コネクションリスナ部２０は、その接続要求を受け取り、第１クライアントと関連付けされた第１ワーカースレッド（図１におけるワーカースレッド６０の１つ）を選び、第１クライアントに、選び出した第１ワーカースレッドを割り当てる。次に、第１ワーカースレッドは、第１クライアントからデータを受け取り、その受信したデータについて処理を実施する。
【００２５】
次に、図２を参照しながら、本発明の第１の実施形態に係るスレッド管理部を有するサーバシステムが行う処理について説明を行う。図２は、本発明の第１の実施形態に係るスレッド管理部を有するサーバシステムが行う処理の流れを示すフローチャートである。
【００２６】
スレッド管理部１０は、第１クライアント（図１におけるクライアント５０の１つ）が行う接続要求を受理する（ステップＳ１０）。次に、コネクションリスナ部２０は、第１クライアントに関連付けされた第１ワーカースレッドを割り当てる（ステップＳ２０）。次に、第１ワーカースレッドは、第１クライアントからデータを受け取り、その受信したデータについて処理を実施する（ステップＳ３０）。
【００２７】
特許文献１乃至３が開示する関連技術においては、背景技術にて説明したように、リスナ部８０（図１２）は、クライアントからの接続要求に対して、ランダムにワーカースレッドを割り当てる。一方、本発明における第１の実施形態に係るスレッド管理部１０は、クライアントが行う接続要求に対して、クライアントと関連付けされたワーカースレッドを割り当てる。その結果、第１の実施形態によれば、クライアントに対して割り当てるワーカースレッドを制御することが可能になる。
【００２８】
第１クライアントと、この第１クライアントとは異なる第２クライアントとが、接続要求を行うとする。さらに、第２クライアントは、第１クライアントが有するデータを参照する必要があると仮定する。関連するサーバシステムにおいて、リスナ部８０（図１２）は、ランダムにワーカースレッドを割り当てるため、多くの場合、割り当てられた２つのワーカースレッドは異なる。そのため、割り当てられた２つのワーカースレッドは、ハンドシェイクを行い、第１クライアントにあるデータを参照する必要がある。
【００２９】
一方、第１の実施形態によれば、予め、第１クライアントと第２クライアントとに１つのワーカースレッドを関連付けすることが可能になる。予め、そのような関連付けされている場合、コネクションリスナ部２０は、第１クライアントと第２クライアントとに、１つのワーカースレッドを割り当てる。その結果、第１の実施形態においては、それらのクライアント間における通信に際して、ハンドシェイクを行う必要がなくなる。
【００３０】
即ち、本発明における第１の実施形態に係るサーバシステムによれば、データを効率良く処理することができる。
【００３１】
＜第２の実施形態＞
次に、上述した第１の実施形態を基本とする第２の実施形態について説明する。
【００３２】
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第１の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
【００３３】
図３を参照しながら、本発明における第２の実施形態に係るスレッド管理部を有するサーバシステムについて説明を行う。図３は、本発明の第２の実施形態に係るスレッド管理部を有するサーバシステムの構成を示すブロック図である。
【００３４】
図３を参照すると、複数のクライアント５０とサーバシステム６とが存在する。サーバシステム６におけるコネクションリスナ部２０は、複数のリスナ構成部２２から構成される。リスナ構成部２２は、クライアント５０からの接続要求に対して、所定の１つのワーカースレッドを割り当てる。例えば、複数のリスナ構成部２２は、お互いに異なる１つのワーカースレッドと関連付けされている。さらに、リスナ構成部２２は、クライアントと関連付けされている。
【００３５】
例えば、クライアント５０とリスナ構成部２２は、外部装置によって関連付けされていても良い。また、スレッド管理部１０が、所定の計算方法に従って値を算出し、その算出される値に応じて、クライアント５０とリスナ構成部２２とを関連付けしても良い。関連付けの方法は、上述したような方法に限定されない。
【００３６】
第１クライアント（図３におけるクライアント５０の１つ）が接続要求を行うと仮定する。その状況において、第１クライアントと関連付けされたリスナ構成部２２は、接続要求に対して、所定の１つのワーカースレッドを割り当てる。そのため、クライアントに対して割り当てるワーカースレッドを制御することは可能である。即ち、第２の実施形態に係るスレッド管理部によれば、第１の実施形態に係るスレッド管理部と同様の効果を得ることができる。
【００３７】
即ち、本発明における第２の実施形態に係るサーバシステムによれば、データを効率良く処理することができる。
【００３８】
＜第３の実施形態＞
次に、上述した第２の実施形態を基本とする第３の実施形態について説明する。
【００３９】
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第２の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
【００４０】
図４を参照しながら、本発明における第３の実施形態に係るスレッド管理部を有するサーバシステムについて説明を行う。図４は、本発明の第３の実施形態に係るスレッド管理部を有するサーバシステムの構成を示すブロック図である。
【００４１】
図４を参照すると、複数のクライアント５０とサーバシステム７とが存在する。サーバシステム７におけるスレッド管理部１２は、クライアント５０とワーカースレッド６０とを関連付けて記憶する記憶部３５と情報指定部３０とを更に備える。
【００４２】
次に、図５を参照しながら、記憶部３５が記憶するクライアントワーカーテーブルについて説明を行う。図５は、本発明の第３の実施形態における記憶部３５が記憶するクライアントワーカーテーブルの構成を示す図である。記憶部３５は、クライアント５０を識別するための識別子（以降、識別子を「ＩＤ」と表し、クライアントを識別するための識別子を、「クライアントＩＤ」と表す）と、ワーカースレッド６０を識別するための識別子（以降、「ワーカースレッドＩＤ」と表す）とを、関連付けて記憶する。例えば、図５において、クライアントＩＤが１のクライアントは、ワーカースレッドＩＤが１のワーカースレッドと関連付けされている。同様に、クライアントＩＤが３のクライアントも、ワーカースレッドＩＤが１のワーカースレッドと関連付けされている。
【００４３】
情報指定部３０は、クライアントワーカーテーブルを参照し、第１クライアント（図４における、クライアント５０の一つ）を表すクライアントＩＤから、関連付けされたワーカースレッドＩＤを読み取る。
【００４４】
次に、情報指定部３０は、例えば、図６に示すようなワーカースレッド識別情報テーブルを参照し、クライアントワーカーテーブルから読み取ったワーカースレッドＩＤに関連付けされた識別情報を読み取る。図６は、本発明の第３の実施形態におけるワーカースレッド識別情報テーブルの構成を示す図である。次に、情報指定部３０は、第１クライアントに対して、読み取った識別情報を送信する。情報指定部３０が送信する識別情報は、第１ポート番号に関する情報を有する。
【００４５】
第１クライアントは、上述のように情報指定部３０が送信した識別情報を受信し、その後、受信した識別情報に含まれる第１ポート番号に対して接続要求を行う。その後、第１ポート番号を使ってソケットを生成している第１リスナ構成部は、接続要求を受け取る。その後、該第１リスナ構成部は、関連付けされた第１ワーカースレッドに該第１クライアントを割り当てる。第１ワーカースレッドは、第１クライアントから送信されるデータに関する処理を行う。
【００４６】
コネクションリスナ部２３は、記憶部３５が記憶するクライアントワーカーテーブルを読み、ワーカースレッドＩＤに対応するワーカースレッドと関連付けされたリスナ構成部２２と、そのワーカースレッドＩＤと関連付けされたクライアントＩＤに対応するクライアント５０とを関連付けする。
【００４７】
ワーカースレッドの識別情報は、上述したようなポート番号に限定されない。例えばワーカースレッドの識別情報は、インターネットプロトコルアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ、ＩＰアドレス）とポート番号とを組み合わせていてもよい。また、クライアントとサーバシステムとの通信接続は、ソケットに限定されることはなく、他の通信方式であってもよい。
【００４８】
本発明における第３の実施形態に係るスレッド管理部１２は、クライアントワーカーテーブルを記憶する記憶部３５を更に備える構成であるため、スレッド管理部１２にて効率よく処理を行うことができるようになる。さらに、本発明における第３の実施形態に係るスレッド管理部１２は、情報指定部３０を備えるため、クライアント５０に識別情報を送信することができる。本発明における第３の実施形態は、第１の実施形態、あるいは、第２の実施形態を基本としている。そのため、第３の実施形態は、第１の実施形態、あるいは、第２の実施形態が有する効果を同様に有する。
【００４９】
即ち、本発明における第３の実施形態に係るサーバシステムによれば、データを効率良く処理することができる。
【００５０】
＜第４の実施形態＞
次に、上述した第３の実施形態を基本とする第４の実施形態について説明する。
【００５１】
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第３の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
【００５２】
図７を参照しながら、本発明における第４の実施形態に係るスレッド管理部を有するサーバシステムついて説明を行う。図７は、本発明の第４の実施形態に係るスレッド管理部を有するサーバシステムの構成を示すブロック図である。図７を参照すると、複数のクライアント５０とサーバシステム８とが存在する。
【００５３】
サーバシステム８におけるスレッド管理部１４は、前述した第３の実施形態に係るスレッド管理部を有するサーバシステムと比較して、コネクショングルーピング部４５を更に備える。コネクショングルーピング部４５は、グラフ記憶部４９を備える。
【００５４】
図８を参照しながら、グラフ記憶部４９が記憶するコネクションテーブルについて説明を行う。図８は、本発明の第４の実施形態におけるグラフ記憶部４９が記憶するコネクションテーブルの一例を示す図である。
【００５５】
例えば、クライアント５０には、クライアント１からクライアント８の８つのクライアントが存在し、ワーカースレッド６０には、２つのワーカースレッド１とワーカースレッド２が存在すると仮定する。コネクションテーブルは、データを送信するクライアントの識別子（図８における送信ＩＤ、以降、「送信ＩＤ」と表す）と、該データを受信するクライアントの識別子（図８における受信ＩＤ、以降、「受信ＩＤ」と表す）とを関連付けする。
【００５６】
コネクションテーブルにおいて、送信ＩＤと関連付けされた受信ＩＤを読み取ることにより、データを送信したクライアントとデータを受信したクライアントを特定することができる。グラフ記憶部４９は、所定のデータ形式に従って、例えば、上述したようなコネクションテーブルなどのデータ形式に従い、クライアント間における参照関係を記憶する。
【００５７】
グラフ理論によれば、上述したようなコネクションテーブルは、グラフとして解釈することができる。その場合、節点が個々のクライアントに対応し、枝がクライアント間の通信に対応すると解釈することができる。
【００５８】
コネクショングルーピング部４５は、グラフ記憶部４９が記憶するコネクションテーブルを入力として、所定のグラフ処理方法に従って処理を行い、その処理の結果を元に、コネクションテーブルに含まれるクライアントＩＤを複数のグループに分類する。次に、コネクショングルーピング部４５は、算出されたグループに、それぞれワーカースレッドを割り当てる。その結果、クライアントＩＤとワーカースレッドＩＤとが関連付けされるため、コネクショングルーピング部４５は、その結果を、記憶部３５に記憶する。
【００５９】
コネクションテーブルは、例えば、図９に示すような通信量を保持することもできる。図９は、本発明の第４の実施形態において、コネクションテーブルが通信量を関連付ける一例を示す図である。コネクションテーブルは、データを送信するクライアント（即ち、送信ＩＤ）と、該データを受信するクライアント（即ち、受信ＩＤ）と、該データに含まれるデータ量（以降、「通信量」と表す）とを関連付ける。例えば、コネクショングルーピング部４５は、コネクションテーブルを参照することにより、送信ＩＤが１であるクライアントから受信ＩＤが２であるクライアントに送信するデータにおける通信量が１０であることを読み取る。グラフ記憶部４９は、所定のデータ形式に従って、例えば上述したようなコネクションテーブルなどのデータ形式に従い、クライアント間における参照関係を記憶する。
【００６０】
上述したように、グラフ理論によれば、上述したようなコネクションテーブルは、グラフとして解釈することができる。その場合、節点が個々のクライアントに対応し、枝がクライアント間の通信に対応し、枝の重みが通信量に対応すると解釈することができる。
【００６１】
同様に、コネクショングルーピング部４５は、所定のグラフ処理方法に従って処理を行う。ただし、算出されるグループ間に存在する通信量の総計が最小になるように割り当てを決定する。コネクショングルーピング部４５は、算出されたグループに、それぞれワーカースレッドを割り当てる。そのため、異なるワーカースレッド間に存在する通信量の総計も最小になる。即ち、異なるワーカースレッドが行うハンドシェイクを最小にすることができる。
【００６２】
所定のグラフ処理方法には、グラフ分割（Ｇｒａｐｈ  Ｐａｒｔｉｔｉｏｎｉｎｇ）問題に対する解法アルゴリズムを適用することができる。例えば、グラフ分割問題に対する解法アルゴリズムとしては、遺伝アルゴリズムや、ニューラルネットなど、多くの方法が知られている。さらに、コネクショングルーピング部４５は、異なるグループ間における参照数の総数を最小にしたり、あるいは、さらに、異なるグループ間におけるクライアントの個数が均等になるようにしたりするなど条件を付加して、所定のグラフ処理方法を適用することもできる。所定のグラフ処理方法、あるいは、付加する条件は、上記の方法に限定されない。
【００６３】
同様に、コネクションテーブルは、図１０に示すような、通信遅延に対する余裕のなさを表す数値（図１０における、「遅延クリティカル値」）を保持することもできる。グラフ記憶部４９は、所定のデータ形式に従って、例えば上述したようなコネクションテーブルなどのデータ形式に従って、クライアント間における参照関係を記憶する。
【００６４】
同様に、コネクショングルーピング部４５は、算出されるグループ間に存在する遅延クリティカル値の総計が最小になるように割り当てを決定する。その結果、コネクショングルーピング部４５は、遅延クリティカル値が大きな通信を行うクライアントに対して、１つのワーカースレッドを割り当てる。
【００６５】
所定のデータ形式としては、例えば、上述したようなコネクションテーブルの他に、隣接リストと呼ばれるデータ形式や、隣接行列と呼ばれるデータ形式など、既に様々なデータ形式が知られている。コネクションテーブルにおけるデータ形式は、上述したようデータ形式に限定されるものではない。
【００６６】
即ち、本発明の第４の実施形態に係るサーバシステムによれば、データを効率良く処理することができる。
【００６７】
（ハードウェア構成例）
次に、上述した各実施形態におけるスレッド管理部を有するサーバシステムを、１つの計算処理装置（情報処理装置、コンピュータ）を用いて実現するハードウェア資源の構成例について説明する。但し、係るサーバシステムは、物理的または機能的に少なくとも２種類の計算処理装置を用いて実現してもよい。また、係るスレッド管理部を有するサーバシステムは、専用の装置として実現してもよい。
【００６８】
図１１は、第１の実施形態乃至第４の実施形態に係るスレッド管理部を有するサーバシステムを実現可能な計算処理装置のハードウェア構成を概略的に示す図である。計算処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、メモリ１２０、ディスク１３０、出力装置１４０、および入力装置１５０を有する。
【００６９】
即ち、ＣＰＵ１１０は、ディスク１３０が記憶しているソフトウェア・プログラム（コンピュータ・プログラム：以下、単にプログラムと称する）を、実行時にメモリ１２０にコピーし、演算処理を実行する。ＣＰＵ１１０は、プログラム実行に必要なデータをメモリ１２０から読み込む。表示が必要な場合には、ＣＰＵ１１０は、出力装置１４０に出力結果を表示する。外部からプログラムを入力する場合、ＣＰＵ１１０は、入力装置１５０からプログラム（図２）を読み取る。ＣＰＵ１１０は、メモリ１２０にあるサーバ制御プログラムを解釈し実行を行う。ＣＰＵ１１０は、上述した各実施形態において説明した処理を順次行う。
【図面の簡単な説明】
【００７０】
【図１】本発明の第１の実施形態に係るスレッド管理部を有するサーバシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るスレッド管理部を有するサーバシステムが行う処理の流れを示すフローチャートである。
【図３】本発明の第２の実施形態に係るスレッド管理部を有するサーバシステムの構成を示すブロック図である。
【図４】本発明の第３の実施形態に係るスレッド管理部を有するサーバシステムの構成を示すブロック図である。
【図５】本発明の第３の実施形態における記憶部が記憶するクライアントワーカーテーブルの構成を示す図である。
【図６】本発明の第３の実施形態におけるワーカースレッド識別情報テーブルの構成を示す図である。
【図７】本発明の第４の実施形態に係るスレッド管理部を有するサーバシステムの構成を示すブロック図である。
【図８】本発明の第４の実施形態におけるグラフ記憶部が記憶するコネクションテーブルの一例を示す図である。
【図９】本発明の第４の実施形態において、コネクションテーブルが通信量を関連付ける一例を示す図である。
【図１０】本発明の第４の実施形態におけて、コネクションテーブルが遅延クリティカル値を関連付ける一例を示す図である。
【図１１】実施形態に係るスレッド管理部を有するサーバシステムを実現可能な計算処理装置のハードウェア構成を、概略的に示すブロック図である
【図１２】関連するサーバシステムの構成を示すブロック図である。
【符号の説明】
【００７１】
５    サーバシステム
６    サーバシステム
７    サーバシステム
８    サーバシステム
１０    スレッド管理部
１２    スレッド管理部
１４    スレッド管理部
２０    コネクションリスナ部
２２    リスナ構成部
２３    コネクションリスナ部
３０    情報指定部
３５    記憶部
４５    コネクショングルーピング部
４９    グラフ記憶部
５０    クライアント
６０    ワーカースレッド
７０    サーバシステム
８０    リスナ部
１００    計算処理装置
１１０    ＣＰＵ
１２０    メモリ
１３０    ディスク
１４０    出力装置
１５０    入力装置
【図１】
2013250921.tif 000003
【図２】
2013250921.tif 000004
【図３】
2013250921.tif 000005
【図４】
2013250921.tif 000006
【図５】
2013250921.tif 000007
【図６】
2013250921.tif 000008
【図７】
2013250921.tif 000009
【図８】
2013250921.tif 000010
【図９】
2013250921.tif 000011
【図１０】
2013250921.tif 000012
【図１１】
2013250921.tif 000013
【図１２】
2013250921.tif 000014