(57)【要約】【課題】各コアに処理を適切に割り当てることを課題とする。【解決手段】負荷分散装置１０は、データベース４０に記憶されるデータを識別する各ＩＤと、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセスのＩＤとを対応付けて記憶する管理テーブルを有する。負荷分散装置１０は、管理テーブルに記憶された各プロセスのＩＤで示される各プロセスを、各コアに振り分ける。そして、負荷分散装置１０は、データベース４０に記憶されたデータを要求するリクエストを受信した場合に、該リクエストに含まれるアクセス先のＩＤを抽出し、管理テーブルを参照して、該ＩＤに対応するプロセスのＩＤで示されるプロセスを特定する。続いて、負荷分散装置１０は、特定されたプロセスを担当するコアに対して、リクエストを送信する。【選択図】        図１
2014081765.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に記憶されるデータを識別する各データ識別子と、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセス識別情報とを対応付けて記憶する記憶部と、
前記記憶部に記憶された各プロセス識別情報で示されるプロセスについて、同一のプロセスが同一のコアプロセッサに振り分けられるように、各コアプロセッサに振り分ける振分部と、
前記記憶装置に記憶されたデータを要求するリクエストを受信した場合に、該リクエストに含まれるアクセス先のデータ識別子を抽出し、前記記憶部を参照して、該データ識別子に対応するプロセス識別情報で示されるプロセスを特定する特定部と、
前記特定部によって特定されたプロセスを担当するコアプロセッサに対して、前記リクエストを送信する送信部と、
を備えることを特徴とする負荷分散装置。
【請求項２】
前記データ識別子に対応付けられたプロセス識別情報の数が、前記コアプロセッサの数と同じであることを特徴とする請求項１に記載の負荷分散装置。
【請求項３】
前記記憶部は、前記データ識別子として、前記記憶装置に記憶されるデータの範囲を識別する複数のデータ識別子を各プロセス識別情報に対応付けてそれぞれ記憶し、該複数のデータ識別子の数がそれぞれ同数であることを特徴とする請求項１または２に記載の負荷分散装置。
【請求項４】
前記振分部は、前記記憶部に記憶されたプロセス識別情報の数が前記コアプロセッサの数より多い場合には、各コアプロセッサが担当するプロセスの数が均等になるように、各プロセスを各コアプロセッサに振り分けることを特徴とする請求項１〜３のいずれか一つに記載の負荷分散装置。
【請求項５】
前記記憶部は、データベースに記憶されるデータを識別するデータ識別子と、前記データベースへのアクセスを管理するデータベース管理システムのプロセスであって、同一の処理を行うプロセスを識別するためのプロセス識別情報とを対応付けて記憶することを特徴とする請求項１〜４のいずれか一つに記載の負荷分散装置。
【請求項６】
負荷分散装置で実行される負荷分散方法であって、
前記負荷分散装置は、記憶装置に記憶されるデータを識別する各データ識別子と、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセス識別情報とを対応付けて記憶する記憶部を備え、
前記記憶部に記憶された各プロセス識別情報で示されるプロセスについて、同一のプロセスが同一のコアプロセッサに振り分けられるように、各コアプロセッサに振り分ける振分工程と、
前記記憶装置に記憶されたデータを要求するリクエストを受信した場合に、該リクエストに含まれるアクセス先のデータ識別子を抽出し、前記記憶部を参照して、該データ識別子に対応するプロセス識別情報で示されるプロセスを特定する特定工程と、
前記特定工程によって特定されたプロセスを担当するコアプロセッサに対して、前記リクエストを送信する送信工程と、
を含んだことを特徴とする負荷分散方法。
【請求項７】
記憶装置に記憶されるデータを識別する各データ識別子と、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセス識別情報とを対応付けて記憶する記憶部に記憶された各プロセス識別情報で示されるプロセスについて、同一のプロセスが同一のコアプロセッサに振り分けられるように、各コアプロセッサに振り分ける振分ステップと、
前記記憶装置に記憶されたデータを要求するリクエストを受信した場合に、該リクエストに含まれるアクセス先のデータ識別子を抽出し、前記記憶部を参照して、該データ識別子に対応するプロセス識別情報で示されるプロセスを特定する特定ステップと、
前記特定ステップによって特定されたプロセスを担当するコアプロセッサに対して、前記リクエストを送信する送信ステップと、
をコンピュータに実行させるための負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散装置、負荷分散方法および負荷分散プログラムに関する。
【背景技術】
【０００２】
従来、複数のコアを持つプロセッサを備えるマルチコアシステムが利用されている。このようなマルチコアシステムで動作するＯＳ（Operating  System）は、プロセス（またはスレッド）を各コアに割り当てて処理を進めている。この際、やみくもにプロセスを各コアに割り当てると、性能低下を招く場合がある。
【０００３】
このため、各コアに処理を割り当てる方法として、処理分割分散装置が、複数に分けられたアプリケーションについて、あらかじめ指定された処理モデルに従って、処理を各コアに割り当てる技術が知られている。依存関係のない処理同士は、複数のコアで並列に実行することで高速に処理できるものである。
【０００４】
また、マルチコアシステムにおいて、各コアに処理を割り当てる方法として、コアの負荷やメモリアクセスの負荷を監視して、負荷に偏りがあった場合にはスレッドを他のコアに割り当てる技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１９１９４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記した処理モデルに従って、処理をコアに割り当てる技術では、処理負担を軽減しつつ、各コアに処理を適切に割り当てることができない場合があるという課題があった。つまり、アプリケーション開発者が、あらかじめ処理モデルを指定するので、実際には、一部のコアに集中して処理が割り当てられてしまう場合がある。
【０００７】
また、上記したコアの負荷やメモリアクセスの負荷に応じて、処理をコアに割り当てる技術では、コアの負荷やメモリアクセスの負荷を監視する処理が必要であるため、監視する処理による処理負担が掛かるという課題があった。
【０００８】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、処理負担が掛かることなく、各コアに処理を適切に割り当てることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、負荷分散装置は、記憶装置に記憶されるデータを識別する各データ識別子と、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセス識別情報とを対応付けて記憶する記憶部と、前記記憶部に記憶された各プロセス識別情報で示されるプロセスについて、同一のプロセスが同一のコアプロセッサに振り分けられるように、各コアプロセッサに振り分ける振分部と、前記記憶装置に記憶されたデータを要求するリクエストを受信した場合に、該リクエストに含まれるアクセス先のデータ識別子を抽出し、前記記憶部を参照して、該データ識別子に対応するプロセス識別情報で示されるプロセスを特定する特定部と、前記特定部によって特定されたプロセスを担当するコアプロセッサに対して、前記リクエストを送信する送信部と、を備えることを特徴とする。
【００１０】
また、負荷分散方法は、負荷分散装置で実行される負荷分散方法であって、前記負荷分散装置は、記憶装置に記憶されるデータを識別する各データ識別子と、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセス識別情報とを対応付けて記憶する記憶部を備え、前記記憶部に記憶された各プロセス識別情報で示されるプロセスについて、同一のプロセスが同一のコアプロセッサに振り分けられるように、各コアプロセッサに振り分ける振分工程と、前記記憶装置に記憶されたデータを要求するリクエストを受信した場合に、該リクエストに含まれるアクセス先のデータ識別子を抽出し、前記記憶部を参照して、該データ識別子に対応するプロセス識別情報で示されるプロセスを特定する特定工程と、前記特定工程によって特定されたプロセスを担当するコアプロセッサに対して、前記リクエストを送信する送信工程と、を含んだことを特徴とする。
【００１１】
また、負荷分散プログラムは、記憶装置に記憶されるデータを識別する各データ識別子と、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセス識別情報とを対応付けて記憶する記憶部に記憶された各プロセス識別情報で示されるプロセスについて、同一のプロセスが同一のコアプロセッサに振り分けられるように、各コアプロセッサに振り分ける振分ステップと、前記記憶装置に記憶されたデータを要求するリクエストを受信した場合に、該リクエストに含まれるアクセス先のデータ識別子を抽出し、前記記憶部を参照して、該データ識別子に対応するプロセス識別情報で示されるプロセスを特定する特定ステップと、前記特定ステップによって特定されたプロセスを担当するコアプロセッサに対して、前記リクエストを送信する送信ステップと、をコンピュータに実行させる。
【発明の効果】
【００１２】
本願に開示する負荷分散装置、負荷分散方法および負荷分散プログラムは、処理負荷を大きくすることなく、コアプロセッサが持つデータのキャッシュヒット率が向上するように、各コアに処理を適切に割り当てることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、第一の実施の形態に係るマルチコアシステムの構成を説明するための図である。
【図２】図２は、第一の実施の形態に係るマルチコアサーバの構成を示すブロック図である。
【図３】図３は、データベースが記憶するデータのリレーションを説明する図である。
【図４】図４は、第一の実施の形態に係る負荷分散装置の構成を示すブロック図である。
【図５】図５は、管理テーブルに記憶される管理表の一例を示す図である。
【図６】図６は、負荷分散装置による各コアへの割当処理を説明する図である。
【図７】図７は、第一の実施の形態に係る負荷分散装置の処理手順を説明するためのフローチャートである。
【図８】図８は、負荷分散プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願に係る負荷分散装置、負荷分散方法および負荷分散プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係る負荷分散装置、負荷分散方法および負荷分散プログラムが限定されるものではない。
【００１５】
［第一の実施の形態］
以下の実施の形態では、第一の実施の形態に係るマルチコアシステムの構成、マルチコアサーバの構成、負荷分散装置の構成および処理の流れを順に説明し、最後に第一の実施の形態による効果を説明する。
【００１６】
［第一の実施の形態に係るマルチコアシステムの構成］
まず、図１を用いて、第一の実施の形態に係るマルチコアシステム１００について説明する。図１は、第一の実施の形態に係るマルチコアシステム１００の全体構成の一例を説明するための図である。第一の実施の形態に係るマルチコアシステム１００は、負荷分散装置１０と、マルチコアサーバ２０と、クライアント３０と、データベース４０とを有する。
【００１７】
負荷分散装置１０は、クライアント３０からマルチコアサーバ２０へのリクエストを中継し、マルチコアサーバ２０からクライアント３０への実行結果を中継する。また、負荷分散装置１０は、キャッシュヒット率を上げるように、クライアント３０からのリクエストを適するプロセスへ割り当てる。なお、負荷分散装置１０の詳しい構成と処理については、後に図４を用いて説明する。
【００１８】
マルチコアサーバ２０は、データベース４０を管理するサーバである。マルチコアサーバ２０は、負荷分散装置１０を介してクライアント３０からのリクエストを受信する。マルチコアサーバ２０は、受信したリクエストに応じて、データベース４０にアクセスしてデータを取得する処理を行い、処理結果を負荷分散装置１０を介してクライアント３０に返信する。図１の例では、マルチコアサーバ２０は、複数のコアを用いて、複数のプロセス２０Ａ〜２０Ｄを実行している。なお、マルチコアサーバの構成については、後に図２を用いて詳述する。
【００１９】
クライアント３０は、データベース４０に記憶されたデータを要求するリクエストを、負荷分散装置１０を介して、マルチコアサーバ２０に対して送信する。また、クライアント３０は、リクエストに対する実行結果を、負荷分散装置１０を介して、マルチコアサーバ２０から受信する。
【００２０】
データベース４０は、クライアント３０によって要求されるデータを記憶する。データベース４０に記憶されるデータには、各データを識別するＩＤが付与されている。なお、データベース４０が持つデータのリレーションについては、後に図３を用いて説明する。
【００２１】
次に、図２を用いて、マルチコアシステム１００のマルチコアサーバ２０の構成を説明する。図２は、第一の実施の形態に係るマルチコアサーバの構成を示すブロック図である。
【００２２】
図２に示すように、マルチコアサーバ２０は、複数のプロセッサ２００、２１０、Ｌ３キャッシュ２２０、及びメモリ２３０を有する。なお、プロセッサ２００と、プロセッサ２１０は、同様の構成であり、以下では、プロセッサ２００の構成のみを説明し、プロセッサ２１０の構成の説明は省略する。
【００２３】
プロセッサ２００は、複数のコア２０１Ａ、２０１Ｂ、複数のＬ１キャッシュ２０２Ａ、２０２Ｂ、Ｌ２キャッシュ２０３から構成される。各コア２０１Ａ、２０１Ｂは、それぞれ担当するプロセスの処理を実行する。
【００２４】
Ｌ１キャッシュ２０２Ａは、コア２０１Ａ専用のキャッシュであり、Ｌ１キャッシュ２０２Ｂは、コア２０１Ｂ専用のキャッシュである。Ｌ２キャッシュ２０３は、複数のコア２０１Ａ、２０１Ｂで共有されるキャッシュである。Ｌ３キャッシュ２２０は、プロセッサ２００、２１０のチップ外で共有されるキャッシュである。
【００２５】
上記したキャッシュは、レベルが低い、すなわちコアに近いものほど高速であるが、容量が小さい。従って、アクセス頻度の高いデータをレベルが低い（コアに近い）キャッシュに入るようにする。
【００２６】
次に、図３を用いて、データベース４０が記憶するデータのリレーションについて説明する。図３は、データベースが記憶するデータのリレーションを説明する図である。図３の例は、データベースに記憶されているデータが、学校における生徒の成績に関するデータである場合の例を示している。
【００２７】
図３に例示するように、データベース４０は、データを識別する「ＩＤ」と、生徒の名前に関するデータであるか「Ｎａｍｅ」と、生徒の成績に関するデータである「Ｇｒａｄｅ」とを記憶する。例えば、図３の例を挙げて説明すると、ＩＤ「００００１」、Ｎａｍｅ「Ｔａｒｏ」、Ｇｒａｄｅ「Ａ」のデータは、ＩＤ「００００１」のデータについて、名前が「Ｔａｒｏ」である生徒の成績が「Ａ」であることを意味している。
【００２８】
次に、図４を用いて、図１に示した負荷分散装置１０の構成を説明する。図４は、第一の実施の形態に係る負荷分散装置の構成を示すブロック図である。図４に示すように、この負荷分散装置１０は、通信制御部１１、記憶部１２、制御部１３を有する。以下にこれらの各部の処理を説明する。
【００２９】
通信制御部１１は、接続されるマルチコアサーバ２０およびクライアント３０との間でやり取りする各種情報に関する通信を制御する。具体的には、通信制御部１１は、クライアント３０受信し、マルチコアサーバ２０へリクエストを送信する。また、マルチコアサーバ２０から実行結果を受信し、クライアント３０へ実行結果を送信する。
【００３０】
記憶部１２は、制御部１３による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、管理テーブル１２ａを備える。この管理テーブル１２ａは、データベースに記憶されるデータを識別する各ＩＤと、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセスのＩＤとを対応付けた管理表を記憶する。つまり、管理テーブル１２ａには、どの範囲のデータをどのプロセスが担当するかが事前に登録されている。
【００３１】
ここで、図５を用いて、管理テーブルに記憶される管理表の例を説明する。図５は、管理テーブルに記憶される管理表の一例を示す図である。図５に示すように、管理テーブル１２ａは、データベースに記憶されるデータの範囲を識別する複数のＩＤである「ＩＤの範囲」と、データへのアクセスに関する処理を担当するプロセスのＩＤを示す「担当プロセス」とを対応付けて記憶する。
【００３２】
図５の例を挙げて説明すると、管理テーブル１２ａは、ＩＤの範囲「１〜１００００」と担当プロセス「１」とが対応付けて記憶し、ＩＤの範囲「１０００１〜２００００」と担当プロセス「２」とが対応付けて記憶し、ＩＤの範囲「２０００１〜３００００」と担当プロセス「３」とが対応付けて記憶し、ＩＤの範囲「３０００１〜４００００」と担当プロセス「４」とが対応付けて記憶する。ここで、プロセスに対応するＩＤの範囲（ＩＤの数）がそれぞれ同数であるため、各コアに対して、データの範囲のリクエストが均等に割り当てられるようにすることが可能である。
【００３３】
つまり、図５の例では、全体のデータは１〜４００００まであるので、プロセス１が１〜１００００、プロセス２が１０００１〜２００００、プロセス３が２０００１〜３００００、プロセス４が３０００１〜４００００を担当することが規定されていることを意味する。
【００３４】
図５に例示する管理テーブル１２ａでは、ＩＤに対応付けられて記憶するプロセスの数が、マルチコアサーバ２０のコア２０１Ａ、２０１Ｂ、２１１Ａ、２１１Ｂの数と同じである。つまり、管理テーブル１２ａにおいて規定されたプロセスが４つであり、マルチコアサーバ２０のコア２０１Ａ、２０１Ｂ、２１１Ａ、２１１Ｂが４つであるため、同数である。これにより、後に説明するプロセスをコアに割り当てる際に、１対１の関係で割り当てることができる。なお、プロセスとコアが同数でなくともよく、例えば、プロセスが８つになった場合には、各コアに２プロセスずつを割り当てる。
【００３５】
制御部１３は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、クライアント側送受信部１３ａ、振分部１３ｂ、特定部１３ｃ、サーバ側送受信部１３ｄを有する。
【００３６】
クライアント側送受信部１３ａは、負荷分散装置１０を介してクライアント３０からのリクエストを受信する。例えば、リクエストとして、「SELECT  Name  FROM  table  WHERE  ID=20032」を受信する。また、クライアント側送受信部１３ａは、負荷分散装置１０を介してクライアント３０へ実行結果を送信する。
【００３７】
振分部１３ｂは、管理テーブル１２ａに記憶された各プロセスのＩＤで示されるプロセスについて、同一のプロセスが同一のコアに振り分けられるように、各コア２０１Ａ、２０１Ｂ、２１１Ａ、２１１Ｂに振り分ける。例えば、振分部１３ｂは、初期化時（データベース４０へのアクセスを許す前）に、プロセッサアフィニティを使って、プロセスを特定のコアに割り当てる。
【００３８】
図６を用いて、具体的な例を挙げて説明すると、担当プロセスとして管理テーブル１２ａに記憶された識別子が「１」のプロセス２０Ａをコア２０１Ａに割り当てる。同様に、担当プロセスとして管理テーブル１２ａに記憶された識別子が「２」のプロセス２０Ｂをコア２０１Ｂに割り当てる。また同様に、担当プロセスとして管理テーブル１２ａに記憶された識別子が「３」のプロセス２０Ｃをコア２１１Ａに割り当て、担当プロセスとして管理テーブル１２ａに記憶された識別子が「４」のプロセス２０Ｄをコア２１１Ｂに割り当てる。
【００３９】
これにより、図６に示すように、プロセス１がＩＤ「１〜１００００」、プロセス２がＩＤ「１０００１〜２００００」、プロセス３がＩＤ「２０００１〜３００００」、プロセス４がＩＤ「３０００１〜４００００」を担当することとなる。このため、特定のデータのＩＤに関連する処理が特定のコアで固定的に行われるため、コアが持つデータのキャッシュヒット率を向上させることができる。
【００４０】
また、振分部１３ｂは、管理テーブル１２ａに記憶されたプロセスのＩＤの数がコアの数より多い場合には、各コアが担当するプロセスの数が均等になるように、各プロセスを各コアに振り分ける。例えば、管理テーブル１２ａに記憶されたプロセスのＩＤの数が８であり、コアの数が４である場合には、各コアが担当するプロセスの数が均等になるように、各コアに対してプロセスの数を２つずつ振り分ける。なお、振分部１３ｂは、マルチコアサーバ２０が有するコアの総数を予め把握しているものとする。
【００４１】
特定部１３ｃは、データベース４０に記憶されたデータを要求するリクエストをクライアント側送受信部１３ａが受信した場合に、該リクエストに含まれるアクセス先のＩＤを抽出し、管理テーブル１２ａの管理表を参照して、該ＩＤに対応するプロセスのＩＤで示されるプロセスを特定する。
【００４２】
例えば、特定部１３ｃは、リクエストとして、「SELECT  Name  FROM  table  WHERE  ID=20032」をクライアント側送受信部１３ａが受信した場合には、WHERE句のＩＤ「２００３２」を抽出し、ＩＤ「２００３２」であることから、管理テーブル１２ａの管理表を参照して、ＩＤ「２００３２」に対応するプロセスのＩＤ「３」のプロセスが担当であると特定する。
【００４３】
サーバ側送受信部１３ｄは、特定部１３ｃによって特定されたプロセスを担当するコアに対して、リクエストを送信する。例えば、サーバ側送受信部１３ｄは、プロセスのＩＤ「３」のプロセスが担当であると特定した場合には、プロセスのＩＤ「３」のプロセスを担当するマルチコアサーバ２０のコア２１１Ａに対して、リクエストを送信して処理を行わせる。
【００４４】
そして、コア２１１Ａによってリクエストに応じた処理が行われた後、サーバ側送受信部１３ｄは、マルチコアサーバ２０から処理の実行結果を受信し、負荷分散装置１０を介して、クライアント３０へ実行結果を送信する。このようにして、プロセスのＩＤ「３」に対応するコア２１１Ａには、ＩＤが「２０００１〜３００００」の範囲のリクエストが集まることになる。このため、コアが処理するデータのキャッシュヒット率を向上させることが可能となる。
【００４５】
そして、コア２１１Ａによってリクエストに応じた処理が行われた後、サーバ側送受信部１３ｄは、マルチコアサーバ２０から処理の実行結果を受信し、負荷分散装置１０を介して、クライアント３０へ実行結果を送信する。
【００４６】
［負荷分散装置による処理］
次に、図７を用いて、第一の実施の形態に係る負荷分散装置１０による処理を説明する。図７は、第一の実施の形態に係る負荷分散装置の処理手順を説明するためのフローチャートである。
【００４７】
図７に示すように、負荷分散装置１０のクライアント側送受信部１３ａがクライアント３０からリクエストを受信すると（ステップＳ１０１肯定）、特定部１３ｃは、リクエストに含まれるデータのＩＤを抽出する（ステップＳ１０２）。例えば、特定部１３ｃは、リクエストとして、「SELECT  Name  FROM  table  WHERE  ID=20032」をクライアント側送受信部１３ａが受信した場合には、WHERE句のＩＤ「２００３２」を抽出する。
【００４８】
そして、特定部１３ｃは、管理テーブル１２ａの管理表を参照して、抽出したＩＤに対応する担当プロセスを特定する（ステップＳ１０３）。例えば、特定部１３ｃは、抽出したＩＤ「２００３２」である場合には、管理テーブル１２ａの管理表を参照して、ＩＤ「２００３２」に対応するプロセスのＩＤ「３」のプロセスが担当プロセスであると特定する。
【００４９】
その後、サーバ側送受信部１３ｄは、特定した担当プロセスに対するコアに対してリクエストを送信する（ステップＳ１０４）。例えば、サーバ側送受信部１３ｄは、プロセスのＩＤ「３」のプロセスが担当であると特定された場合には、プロセスのＩＤ「３」のプロセスを担当するマルチコアサーバ２０のコア２１１Ａに対して、リクエストを送信して処理を行わせる。
【００５０】
[第一の実施形態の効果]
上述してきたように、負荷分散装置１０は、データベース４０に記憶されるデータを識別する各ＩＤと、該データへのアクセスに関する処理を担当する各プロセスを識別するためのプロセスのＩＤとを対応付けて記憶する管理テーブル１２ａを有する。負荷分散装置１０は、管理テーブル１２ａに記憶された各プロセスのＩＤで示される各プロセスを、各コアに振り分ける。そして、負荷分散装置１０は、データベース４０に記憶されたデータを要求するリクエストを受信した場合に、該リクエストに含まれるアクセス先のＩＤを抽出し、管理テーブル１２ａを参照して、該ＩＤに対応するプロセスのＩＤで示されるプロセスを特定する。続いて、負荷分散装置１０は、特定されたプロセスを担当するコアに対して、リクエストを送信する。
【００５１】
このため、負荷分散装置１０によれば、特定のデータのＩＤに関連する処理が特定のコアで固定的に行われるため、コアが持つデータのキャッシュヒット率を向上させることができる。この結果、各コアに処理を適切に割り当てることができるという効果を奏する。また、負荷分散装置１０は、コアの負荷を監視するなどの処理が不要であるため、処理負荷を大きくすることはない。さらに、ハードウェアでもソフトウェアでも実現可能であるが、アプリケーションやＯＳやハードウェアを改造しなくても実現可能であり、実用的である。なお、アプリケーションやＯＳやハードウェアを改造しなくても実現可能であるという効果は、上記の第一の実施形態に限らず、他の実施形態であっても、同様の効果を得られるものである。
【００５２】
また、負荷分散装置１０の管理テーブル１２ａでは、データのＩＤに対応付けられたプロセスのＩＤの数が、コアの数と同じである。このため、プロセスとコアとの関係を一対一とすることができ、プロセスをコアに割り当てることを容易にすることが可能である。
【００５３】
また、負荷分散装置１０の管理テーブル１２ａでは、データのＩＤとして、データベース４０に記憶されるデータの範囲を識別する複数のデータ識別子を各プロセスのＩＤに対応付けてそれぞれ記憶し、該複数のデータのＩＤの数がそれぞれ同数である。このため、各コアに対して、データの範囲のリクエストが均等に割り当てられるようにすることが可能である。
【００５４】
また、負荷分散装置１０は、管理テーブル１２ａに記憶されたプロセスのＩＤの数がコアの数より多い場合には、各コアが担当するプロセスの数が均等になるように、各プロセスを各コアプロセッサに振り分ける。このため、プロセスの数とコアの数が異なる場合であっても、各コアに対してプロセスを均等に割り当てることが可能である。
【００５５】
［第二の実施の形態］
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では第二の実施形態として本発明に含まれる他の実施形態を説明する。
【００５６】
（１）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、振分部１３ｂと特定部１３ｃを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５７】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００５８】
（２）プログラム
また、上記実施形態において説明した負荷分散装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係る負荷分散装置１０が実行する処理をコンピュータが実行可能な言語で記述した負荷分散プログラムを作成することもできる。この場合、コンピュータが負荷分散プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる負荷分散プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録され負荷分散プログラムをコンピュータに読み込ませて実行することにより上記第一の実施形態と同様の処理を実現してもよい。以下に、図１に示した負荷分散装置１０と同様の機能を実現する負荷分散プログラムを実行するコンピュータの一例を説明する。なお、図１に示した負荷分散装置１０が実行する処理をプログラムとしてコンピュータが行う場合に、図１のマルチコアサーバ２０上でプログラムが実行されてもよい。
【００５９】
図８は、負荷分散プログラムを実行するコンピュータ１０００を示す図である。図８に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０と、ＧＰＵ１１００とを有し、これらの各部はバス１０８０によって接続される。
【００６０】
メモリ１０１０は、図８に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図８に例示するように、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、図８に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０４１に挿入される。シリアルポートインタフェース１０５０は、図８に例示するように、例えばマウス１０５１、キーボード１０５２に接続される。ビデオアダプタ１０６０は、図８に例示するように、例えばディスプレイ１０６１に接続される。
【００６１】
ここで、図８に例示するように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の負荷分散プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０３１に記憶される。
【００６２】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０およびＧＰＵ１１００が、メモリ１０１０やハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、振分手順、特定手順、送信手順を実行する。
【００６３】
なお、負荷分散プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、負荷分散プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０またはＧＰＵ１１００によって読み出されてもよい。
【符号の説明】
【００６４】
１０  負荷分散装置
１１  通信制御部
１２  記憶部
１２ａ  管理テーブル
１３  制御部
１３ａ  クライアント側送受信部
１３ｂ  振分部
１３ｃ  特定部
１３ｄ  サーバ側送受信部
２０  マルチコアサーバ
３０  クライアント
４０  データベース
１００  マルチコアシステム
【図１】
2014081765.tif 000003
【図２】
2014081765.tif 000004
【図３】
2014081765.tif 000005
【図４】
2014081765.tif 000006
【図５】
2014081765.tif 000007
【図６】
2014081765.tif 000008
【図７】
2014081765.tif 000009
【図８】
2014081765.tif 000010