以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
まず、第1の実施の形態を説明する。
図1は、第1の実施の形態のデータ配置装置を示す図である。
第1の実施の形態のデータ配置装置10は、記憶部11および制御部12を有する。
記憶部11は、ランダムアクセスが比較的低速な記憶装置である。記憶部11としては、例えば、HDD、テープ、書き換え可能なディスク媒体、不揮発性の半導体メモリなどを用いることができる。データ配置装置10は、記憶部11に対するキャッシュメモリとして、ランダムアクセスが比較的高速な記憶装置を用いるようにしてもよい。キャッシュメモリとしては、例えば、RAMやフラッシュメモリなどを用いることができる。なお、記憶部11に相当する記憶装置を、データ配置装置10の外部に接続してもよい。
制御部12は、記憶部11へのアクセス性能が向上するように、記憶部11上のデータ配置を制御する。制御部12は、例えば、プロセッサを用いて実現できる。プロセッサは、CPU(Central Processing Unit)やDSP(Digital Signal Processor)であってもよい。また、プロセッサは、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、例えば、RAMなどのメモリに記憶されたプログラムを実行する。複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼ぶこともある。
記憶部11は、単位データu1,u2,u3を含む複数の単位データを記憶する。単位データu1と単位データu3とは関連している。例えば、単位データu1,u3は過去に連続してアクセスされている。また、単位データu2と単位データu3とは関連している。例えば、単位データu2,u3は過去に連続してアクセスされている。関連する単位データは、記憶部11内の近い領域に記憶されている方がアクセス効率が高い。
制御部12は、記憶部11に記憶された単位データに対するアクセスのパターンに基づいて、再配置処理13,14を含む複数の再配置処理を、実行する再配置処理の候補として生成する。各再配置処理は、記憶部11上において一部の単位データの配置を変更することを示す。例えば、制御部12は、単位データに対するアクセス履歴を記録し、連続してアクセスされることが多い単位データの組ほど記憶部11内の近い領域に記憶されるように再配置処理を生成する。再配置処理13は、単位データu1を移動することを含む。再配置処理14は、単位データu2を移動することを含む。なお、1つの再配置処理が、2以上の単位データを移動することを含んでいてもよい。
制御部12は、生成した再配置処理それぞれに対して、所定の評価関数を用いて評価値を算出する。評価値は、1または2以上の単位データの移動によってアクセス性能が改善される程度を示す。例えば、評価値として、読み込みコストの削減量の予測値から配置変更に要する書き込みコストを差し引いた値を用いる。評価値の算出には、例えば、関連する単位データが連続してアクセスされる頻度や、記憶部11の読み出し速度および書き込み速度などのパラメータを用いる。再配置処理13に対しては、評価値13a(評価値e1)が算出される。再配置処理14に対しては、評価値14a(評価値e2)が算出される。評価値13aは評価値14aより高い(e1>e2である)とする。
制御部12は、影響範囲レベル15,16を含む複数の影響範囲レベルの中から、想定する影響範囲レベルを1つ選択する。影響範囲レベルは、再配置処理の影響を受ける単位データの範囲の大きさを示す。例えば、影響範囲レベル15は、ある再配置処理によって配置変更される単位データのみが、アクセス性能に関して当該再配置処理の影響を受けると仮定する。また、影響範囲レベル16は、配置変更される単位データに加えて、その単位データと関連する他の単位データも、再配置処理の影響を受けると仮定する。
影響範囲レベルを選択するにあたり、制御部12は、算出した各再配置処理の評価値と、各影響範囲レベルに対して予め対応付けられた係数とを使用する。影響範囲レベル15に対しては、係数15a(係数α1)が対応付けられている。影響範囲レベル16に対しては、係数16a(係数α2)が対応付けられている。係数は、想定する影響範囲が重ならない複数の再配置処理の間で生じる想定外の干渉の程度を示す。想定する影響範囲が狭い影響範囲レベルほど、実際には複数の再配置処理の間で大きい干渉が生じる。干渉が大きいほど、再配置処理の効果が小さくなるため、係数が小さく設定される。すなわち、係数15aは係数16aよりも小さい(α1<α2である)。
例えば、制御部12は、影響範囲レベル15について、影響範囲が重複しないように再配置処理を選択する。影響範囲レベル15のもとでは、再配置処理13の影響範囲は単位データu1のみ含み、再配置処理14の影響範囲は単位データu2のみ含む。そこで、制御部12は、再配置処理13,14を選択する。そして、制御部12は、選択した再配置処理13,14に対応する評価値13a,14aと影響範囲レベル15に対応付けられた係数15aを用いて、影響範囲レベル15に対する指標値#1を算出する。例えば、制御部12は、指標値#1=(e1+e2)×α1と算出する。
同様に、制御部12は、影響範囲レベル16について、影響範囲が重複しないように再配置処理を選択する。影響範囲レベル16のもとでは、再配置処理13の影響範囲は単位データu1,u3を含み、再配置処理14の影響範囲は単位データu2,u3を含む。再配置処理13,14の影響範囲は重複するため、再配置処理13,14の両方は選択されない。ここでは、制御部12は、評価値の高い再配置処理13を選択する。そして、制御部12は、選択した再配置処理13に対応する評価値13aと影響範囲レベル16に対応付けられた係数16aを用いて、影響範囲レベル16に対する指標値#2を算出する。例えば、制御部12は、指標値#2=e1×α2と算出する。
そして、制御部12は、例えば、影響範囲レベル15の指標値#1と影響範囲レベル16の指標値#2を比較し、指標値の大きい影響範囲レベルを選択する。これは、干渉が大きくても多数の再配置処理を実行した方がよいか、干渉を避けるように再配置処理を絞って実行する方がよいかを判定していることを意味する。制御部12は、選択した影響範囲レベルに基づいて、生成された再配置処理の候補のうち実行する再配置処理を決定する。例えば、指標値#1>指標値#2の場合、制御部12は、影響範囲レベル15に従って選択された再配置処理13,14を実行すると決定する。また、指標値#1<指標値#2の場合、制御部12は、影響範囲レベル16に従って選択された再配置処理13を実行すると決定する。なお、図1の例では影響範囲レベル15,16の何れか一方を選択しているが、3以上の影響範囲レベルの中から1つを選択するようにしてもよい。
制御部12は、決定した再配置処理を実行する。その後、制御部12は、単位データに対するアクセスの状況を監視し、選択した影響範囲レベルに対応付けられた係数をアクセス状況に基づいて更新する。これは、実行した再配置処理の期待する通りのアクセス改善効果が得られているか事後的に確認し、得られていない場合には干渉によるアクセス改善効果の低下の程度を係数に反映させることを意味する。制御部12は、上記で影響範囲レベル15を選択した場合は係数15aを更新し、影響範囲レベル16を選択した場合は係数16aを更新する。例えば、制御部12は、アクセスする単位データがキャッシュメモリにロードされていない回数(キャッシュミス回数)をカウントし、実行した再配置処理の評価値の合計とキャッシュミス回数との比に応じて係数を更新する。
第1の実施の形態のデータ配置装置10によれば、複数の再配置処理それぞれに対して評価値が算出され、各再配置処理の評価値と複数の影響範囲レベルそれぞれに対応付けられた係数とに基づいて一の影響範囲レベルが選択される。そして、選択した影響範囲レベルに従って実行する再配置処理が決定される。また、再配置処理を実行した後の単位データに対するアクセス状況に基づいて、選択した影響範囲レベルの係数が更新される。
これにより、複数の再配置処理を並行して評価し、その中から選択した2以上の再配置処理を任意の順序で実行することができる。よって、複数の再配置処理を逐次評価して実行可否を判断する場合と比べて、生成された全ての再配置処理を検討し終えるまでの時間を短縮することができる。また、評価値は再配置処理それぞれについて算出すればよく、2以上の再配置処理の組み合わせに対して算出しなくてもよい。よって、膨大な数の組み合わせを計算しなくてよく、データ配置装置10の計算負荷を低減できる。
また、実行する再配置案を決定するにあたり、想定する影響範囲の大きさが異なる複数の影響範囲レベルが検討される。よって、2以上の再配置処理の組み合わせを直接的に評価しなくても再配置処理の間の干渉を考慮することができると共に、実行する再配置処理の数を適切な数に調整することができる。すなわち、実行する再配置処理が少な過ぎてアクセス性能が十分に改善されない可能性や、実行する再配置処理が多すぎるために再配置処理の間の干渉によって期待する効果が得られなくなる可能性を低減できる。また、再配置処理を実行した後は、アクセス性能が監視されて、予想される干渉の程度を示す係数が更新される。よって、次に再配置処理を決定するときの精度を向上させることができる。以上により、実行する再配置処理の組み合わせを効率的に決定することができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムを示す図である。
第2の実施の形態の情報処理システムは、クライアント装置21,22およびサーバ装置100を有する。クライアント装置21,22およびサーバ装置100は、ネットワーク20に接続されている。ネットワーク20は、LAN(Local Area Network)を含んでもよく、インターネットなどの広域ネットワークを含んでもよい。
クライアント装置21,22は、ユーザが操作する端末装置としてのクライアントコンピュータである。クライアント装置21,22は、サーバ装置100によって管理されるデータを利用して情報処理を行う。このとき、クライアント装置21,22は、ネットワーク20を介してサーバ装置100にアクセス要求を送信する。アクセス要求は、データを取得するときに発行される読み出し要求(リード要求)であることもあるし、データを更新するときに発行される書き込み要求(ライト要求)であることもある。
サーバ装置100は、不揮発性の記憶装置に記憶したデータを管理するサーバコンピュータである。サーバ装置100は、例えば、DBMS(Database Management System)を実行している。サーバ装置100は、クライアント装置21,22からアクセス要求を受信すると、アクセス要求で指定されたデータに対するアクセスを実行し、実行結果をアクセス要求の送信元へ返信する。リード要求を受信した場合、サーバ装置100は、指定されたデータを読み出し、読み出したデータを送信する。ライト要求を受信した場合、サーバ装置100は、指定されたデータを更新し、更新の成否を通知する。
データへのアクセスを高速化するため、サーバ装置100は、低速・大容量の不揮発性の記憶装置に加えて、高速・小容量のキャッシュメモリを使用する。第2の実施の形態では、前者としてHDDを使用し、後者としてRAMを使用することとする。ただし、前者としてSSD(Solid State Drive)・フラッシュメモリ・光ディスク・光磁気ディスク・テープを使用することもでき、後者としてフラッシュメモリを使用することもできる。
サーバ装置100は、データを指定したアクセス要求を受信すると、指定されたデータを含むデータ集合をHDDからRAMにロードする。RAMにロードしたデータは、アクセス実行後もすぐには消去せずに残しておく。その後、RAMにロード済みのデータ(キャッシュ中のデータ)を指定したアクセス要求を受信すると、サーバ装置100は、HDDからRAMへのロードを省略してアクセスを実行することができる。なお、サーバ装置100は、第1の実施の形態のデータ配置装置10の一例である。
図3は、サーバ装置のハードウェア例を示すブロック図である。
サーバ装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。上記のユニットは、サーバ装置100内においてそれぞれバス108に接続されている。なお、CPU101は、第1の実施の形態の制御部12の一例である。HDD103は、第1の実施の形態の記憶部11の一例である。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、サーバ装置100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、サーバ装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、HDD103上のデータの配置を制御するデータ配置プログラムが含まれる。なお、サーバ装置100は、フラッシュメモリやSSDなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、サーバ装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部105は、サーバ装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク20に接続され、ネットワーク20を介してクライアント装置21,22と通信を行う。通信インタフェース107は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局またはアクセスポイントと無線リンクで接続される無線通信インタフェースでもよい。
なお、サーバ装置100は、媒体リーダ106を備えていなくてもよく、ユーザが操作する端末装置から制御可能である場合には画像信号処理部104や入力信号処理部105を備えていなくてもよい。また、ディスプレイ111や入力デバイス112が、サーバ装置100の筐体と一体に形成されていてもよい。クライアント装置21,22も、サーバ装置100と同様のハードウェアを用いて実現することができる。
次に、データのキャッシュおよびHDD103上でのデータの配置について説明する。
図4は、キャッシュメモリへのページのロード例を示す図である。
サーバ装置100は、HDD103の記憶領域を複数のページに分割し、ページ単位でHDD103からのデータの読み出しやHDD103へのデータの書き込みを行う。1つのページは、1つの連続した物理的な記憶領域を示す。ページをセグメントと呼ぶこともある。ページの大きさは、複数のページの間で同じであってもよいし異なってもよい。1つのページには、複数単位のデータを収容することができる。サーバ装置100が関係データベース管理システム(RDBMS:Relational Database Management System)を実行している場合、1単位のデータは、例えば、テーブル内の1つのタプルに相当する。各単位データは、例えば、主キーまたは主キー以外の連番によって識別できる。
一例として、HDD103は、ページ31(ページP)、ページ32(ページQ)、ページ33(ページR)およびページ34(ページS)を含む。ページ31は、単位データとしてデータa,b,cを含む。同様に、ページ32はデータd,e,fを含み、ページ33はデータg,h,iを含み、ページ34はデータj,k,lを含む。HDD103からのデータの読み出しやHDD103へのデータの書き込みは、ページ単位で行われる。よって、以下では、あるページに属する全ての単位データを読み出す/書き込むことを、単にページのデータを読み出す/書き込むと言うことがある。なお、1つのページに収容できる単位データの数には上限が設けられているものとする。
ここで、サーバ装置100は、アクセス要求を受信すると、受信したアクセス要求が指定する単位データを含むページを検索し、検索したページのデータをHDD103からRAM102にロードする。そして、サーバ装置100は、RAM102上のデータに対して、アクセス要求が示すアクセスを実行する。サーバ装置100は、リード要求に対しては、RAM102にロードされた単位データを提供し、ライト要求に対しては、RAM102にロードされた単位データを更新する。RAM102にロードされたデータは、すぐには破棄されずにHDD103のキャッシュとして利用される。後に受信したアクセス要求がキャッシュ中のページに含まれる単位データを指定している場合、サーバ装置100は、HDD103からの読み出しを省略してRAM102上のデータを利用できる。
一例として、サーバ装置100が、データa,データe,データb,データf,データgを指定したアクセス要求を順に受信したとする。まず、サーバ装置100は、データaを指定したアクセス要求に対して、データaの属するページ31のデータ(データa,b,cを含むページ31全体)をRAM102にロードする。次に、サーバ装置100は、データeを指定したアクセス要求に対して、データeの属するページ32のデータ(データd,e,fを含むページ32全体)をRAM102にロードする。
次に、サーバ装置100は、データbを指定したアクセス要求に対して、データbの属するページ31がキャッシュ中であるため、HDD103へのアクセスを省略し、RAM102に存在するデータbを利用する。次に、サーバ装置100は、データfを指定したアクセス要求に対して、データfの属するページ32がキャッシュ中であるため、HDD103からの読み出しを省略し、RAM102に存在するデータfを利用する。次に、サーバ装置100は、データgを指定したアクセス要求に対して、データgの属するページ33のデータ(データg,h,iを含むページ33全体)をRAM102にロードする。
図5は、データ更新があったページのライトバック例を示す図である。
キャッシュメモリとして利用できるRAM102の記憶領域(キャッシュ領域)は、データが格納されているHDD103の記憶領域と比べて小さい。よって、RAM102のキャッシュ領域が不足すると、RAM102から何れかのページのデータを追い出すことになる。例えば、ページ34のデータをRAM102にロードしようとしたとき、ページ31〜33がキャッシュ中であり、キャッシュ領域が不足していたとする。この場合、サーバ装置100は、ページ31〜33のうちの少なくとも1つのデータをRAM102から追い出して、キャッシュ領域に空きを作ることになる可能性がある。
このとき、サーバ装置100は、更新された単位データを含まないページについては、そのページのデータをRAM102上で破棄すればよく、HDD103に書き戻さなくてよい。一方、サーバ装置100は、更新された単位データを含むページについては、そのページのデータをHDD103に書き戻すことになる(ライトバック)。
例えば、データa,b,c,d,e,f,g,h,iのうちデータeのみが、アクセス要求に応じて更新されたとする。データeの更新は、HDD103への書き込みを減らすため、すぐにはHDD103に反映されない。この場合、ページ31のデータをRAM102から追い出すときは、単にページ31のデータを破棄すればよい。RAM102上でのデータの破棄は、明示的な消去処理を行わずに、そのデータが記憶されていた記憶領域に他のデータを上書きすることによっても実現できる。同様に、ページ33のデータをRAM102から追い出すときは、単にページ33のデータを破棄すればよい。
一方、ページ32のデータをRAM102から追い出すときは、サーバ装置100は、データeの更新をHDD103に反映させるため、ページ32のデータ(データd,e,fを含むページ32全体)をHDD103に書き戻す。ただし、RAM102上でのデータ更新をHDD103に反映させるタイミングは、キャッシュ中のデータをRAM102から追い出すときに限定しなくてもよい。例えば、サーバ装置100は、定期的に、更新された単位データを含むページを確認してライトバックを行うようにしてもよい。
ところで、あるページのデータがRAM102にキャッシュされていると、そのページに属する単位データを指定したアクセス要求に対しては、HDD103からの読み出しを省略することができる。小容量のキャッシュ領域を活用してデータアクセスの性能を向上させるためには、連続してアクセスされる可能性の高い単位データを同じページに配置することが好ましい。そこで、サーバ装置100は、単位データの間のアクセス順序の履歴を記録しておき、履歴に基づいてHDD103上のデータ配置(何れの単位データを何れのページに配置するか)を動的に変更することとする。
図6は、データ再配置があったページのライトバック例を示す図である。
一例として、サーバ装置100がクライアント装置21から、データeを指定したアクセス要求を受信し、その直後にデータgを指定したアクセス要求を受信したとする。しかし、現在はデータeはページ32に属しており、データgはページ33に属している。このため、データgを指定したアクセス要求を受信した時点で、ページ33のデータがキャッシュされておらず(キャッシュミスが発生し)、HDD103からの読み出しが発生する可能性がある。今後もデータe,データgという順番のアクセスが出現する可能性が高い場合、データeとデータgは同じページに属していることが好ましい。
そこで、サーバ装置100は、データeの属するページ32とデータgの属するページ33の間で、データe,gが同じページに属するように再配置を行うことが考えられる。例えば、サーバ装置100は、データfとデータgを入れ替える。ページ32にはデータd,e,gが含まれ、ページ33にはデータf,h,iが含まれることになる。これにより、データe,データgという順番のアクセスが今後出現した場合、データeのアクセスの時点で、データgを含むページ32のデータがRAM102にキャッシュされ、データgのアクセスの時点ではHDD103からの読み出しは原則として発生しない。
ページ間のデータ再配置は、再配置の対象となる2つのページのデータがRAM102にキャッシュされている間に行われる。RAM102上で行われたデータ再配置は、後でHDD103に反映される。例えば、ページ32,33のデータ再配置が行われると、キャッシュされたページ32,33のデータとHDD103に記憶されたページ32,33のデータとは一致しない。よって、サーバ装置100は、ページ32,33のデータをRAM102からHDD103に書き戻すことになる。再配置されたページのデータのライトバックは、前述の更新されたデータのライトバックの場合と同様に、そのページのデータをRAM102から追い出すときに行うことができる。ただし、定期的に、データ再配置が行われたページを確認してライトバックを行うようにしてもよい。
ここで、図5に示したデータ更新と図6に示したデータ再配置の両方を考慮して、RAM102にキャッシュされたデータをHDD103に書き戻すコストについて検討する。ページ31,32,33のデータがRAM102にキャッシュされ、その後、ページ31,32,33のデータが全てRAM102から追い出されるとする。キャッシュ中、ページ31,32,33に含まれる単位データのうち、データeのみが更新されたとする。
ページ32,33の間でデータ再配置を行わない場合、図5に示したように、ページ31,32,33のうち、更新されたデータeを含むページ32の全体をHDD103に書き戻すことになる。これに対し、ページ32,33の間でデータ再配置を行うと、ページ31,32,33のうちページ32,33の全体をHDD103に書き戻すことになる。ページ32のライトバックはデータ再配置の有無に関係なく発生する一方、ページ33のライトバックはデータ再配置を行う場合のみ発生する。すなわち、この例では、データ再配置を行うと、ページ1つ分だけHDD103へのデータの書き込みが増加する。増加するデータの書き込みは、データ再配置のコストとして認識することができる。
一方で、ある特定の単位データと他の特定の単位データとが連続してアクセスされる可能性が高いという性質(ローカリティ)は、永続するとは限らず変化し得る。例えば、データe,gが連続してアクセスされる可能性が高いことに応じて上記のデータ再配置を行った後、ローカリティが変化して、データd,fが連続してアクセスされる可能性が高くなったとする。すると、サーバ装置100は、現在データdとデータfが異なるページに属しているため、更にページ32,33の間でデータ再配置を行うことになる。このように、ローカリティが変化する可能性を考慮すると、データ再配置を行うことで得られるアクセス性能の向上というメリットは、有限の値として評価される。よって、1回のデータ再配置の効果は、そのメリットからそのコストを差し引いた量として評価できる。
図7は、データ再配置に応じたディスクコストの変化例を示すグラフである。
ここでは、HDD103からRAM102に読み出すデータ量と、RAM102からHDD103へ書き戻すデータ量とを合わせた、ディスクアクセス量を考える。
グラフ41に示すように、サーバ装置100がデータ再配置を全く行わない場合、ランダムにキャッシュミスが発生し、HDD103からのデータの読み出しが平均的に行われる。一方、データ再配置を行わないため、HDD103へのデータの書き込みは増加しない。よって、データ再配置なしの場合のディスクコストは一定のレベルに安定する。
これに対し、グラフ41に示すように、サーバ装置100がデータ再配置を行う場合、データ再配置によってHDD103へのデータの書き込みが一時的に増加する。一方、データ再配置がHDD103に反映されると、その後はキャッシュミスが減少し、HDD103からのデータの読み出しが抑制される。よって、データ再配置ありの場合のディスクアクセス量は、一時的に増加した後に大きく減少する。その後、ローカリティが変化すると、データ再配置の効果が徐々に消えてしまい、ディスクアクセス量は再配置なしの場合と同じレベルまで戻る。変化後のローカリティに応じてサーバ装置100がデータ再配置を行うと、再びディスクアクセス量は一時的に増加した後に大きく減少する。
適切にデータ再配置が行われると、再配置ありの場合のディスクアクセス量の積分値を、再配置なしの場合のディスクアクセス量の積分値よりも小さくすることができる。すなわち、サーバ装置100が積極的にデータ再配置を行うことで、ディスクアクセス量が低減し、データアクセスの性能が向上することが期待できる。
次に、複数のデータ再配置案の取り扱いについて説明する。サーバ装置100を運用してクライアント装置21,22からデータアクセスが行われていると、サーバ装置100は、連続してアクセスされる単位データの組を順次検出することになる。その結果、2つのページの間で単位データを移動するデータ再配置案が順次生成される。
複数のデータ再配置案が生成された場合に、サーバ装置100は、それらのデータ再配置案を逐次的に処理することも考えられる。すなわち、逐次的な方法によれば、サーバ装置100は、現在のHDD103上のデータ配置状況を前提として1つ目のデータ再配置案を評価し、その実行可否を判断する。実行可と判断した場合、サーバ装置100は、1つ目のデータ再配置案に従ってページ間で単位データを移動する。その次に、サーバ装置100は、1つ目のデータ再配置を反映した最新のデータ配置状況を前提として、2つ目のデータ再配置案を評価し、その実行可否を判断する。このように、サーバ装置100は、複数のデータ再配置案を逐次的に評価し実行することもできる。
一方で、サーバ装置100は、複数のデータ再配置案を並行して評価し実行することが考えられる。すなわち、並行的な方法によれば、サーバ装置100は、現在のHDD103上のデータ配置状況を前提として複数のデータ再配置案それぞれを評価し、生成した複数のデータ再配置案の中から実行する1または2以上のデータ再配置案を選択する。サーバ装置100は、選択したデータ再配置案を任意の順序で実行すればよい。しかし、並行的な方法では、以下に説明するように複数のデータ再配置の間で干渉が発生することがあり、干渉をどのように考慮すればよいかが問題となる。
図8は、複数のデータ再配置の間の干渉例を示す図である。
前述のように、ページ31にデータaが配置され、ページ32にデータdが配置され、ページ33にデータhが配置されている。ここでは、データaとデータdが連続してアクセスされたことを受けて、データaをページ31からページ32に移動するデータ再配置案(データ再配置案#1)が生成されたとする。また、データ再配置案#1とは別に、データdとデータhが連続してアクセスされたことを受けて、データdをページ32からページ33に移動するデータ再配置案(データ再配置案#2)が生成されたとする。
データ再配置案#1について、メリットが「20」、コストが「3」であるとする。この場合、データ再配置案#1の評価値は20−3=17であり、データ再配置案#1だけを見れば実行可と判断される。また、データ再配置案#2について、メリットが「5」、コストが「3」であるとする。この場合、データ再配置案#2の評価値は5−3=2であり、データ再配置案#2だけを見れば実行可と判断される。
しかし、上記のデータ再配置案#1,#2を両方とも実行すると、ページ32にデータaが配置され、ページ33にデータd,hが配置されることになる。データ再配置案#1を実行したにもかかわらず、データaとデータdが異なるページに分かれてしまうため、データ再配置案#1のメリット「20」が得られない。よって、データ再配置案#1,#2の組み合わせに対する実質的な評価値は、5−(3+3)=−1になってしまう。この例の場合、データ再配置案#1のみを実行したときに全体の評価が最大になる。
このように、データ再配置案の評価値には「加法性」が成立しない。データ再配置案を個別に評価して評価値の高いデータ再配置案を選択実行しても、複数のデータ再配置案の間の「干渉」によって、個々の評価値が示すようなアクセス性能改善の効果が得られないことがある。すなわち、実行するデータ再配置案の評価値の合計とアクセス性能改善の効果とが、乖離してしまうことがある。干渉の程度は、単位データの配置状況などに応じて異なるため、個々のデータ再配置案の評価値のみから予測することは難しい。
これに対し、複数のデータ再配置案を組み合わせた場合の最終的なデータ配置を特定し、その組み合わせに対する評価値を直接的に算出する方法も考えられる。しかしながら、この方法ではN個(Nは自然数)のデータ再配置案に対して最大で2のN乗通りの組み合わせを評価することになり、サーバ装置100の負荷が著しく大きくなってしまう。そこで、第2の実施の形態のサーバ装置100は、以下に説明するように、複数のデータ再配置案の間で発生し得る干渉を考慮しつつ、アクセス性能改善の効果が高いデータ再配置案の組み合わせを効率的に探索できるようにする。
図9は、データ再配置の影響範囲の例を示す図である。
サーバ装置100は、データ再配置案の組み合わせを探索するにあたり、影響範囲の大きさを仮定した影響範囲レベルを使用する。サーバ装置100は、各データ再配置案が影響を及ぼす単位データの範囲を具体的には計算せず、影響範囲レベルが示す範囲の単位データにのみ影響を及ぼしているという仮定をおく。
この仮定のもとでは、あるデータ再配置案の影響範囲と他のデータ再配置案の影響範囲が重なる場合(両方の影響範囲に含まれる単位データが存在する場合)、サーバ装置100は、干渉が生じるリスクが大きいと判断して2つのデータ再配置案の少なくとも一方を採用しない。何れのデータ再配置案を採用するかは、個々のデータ再配置案に対して算出した評価値に基づいて判断すればよい。一方、あるデータ再配置案の影響範囲と他のデータ再配置案の影響範囲が重ならない場合、サーバ装置100は、干渉が生じるリスクが小さいと判断し両方のデータ再配置案を採用することができる。
ただし、影響範囲レベルは影響範囲の大きさを仮定したものであり、実際には影響範囲が重ならないように選択したデータ再配置案の間でも干渉が生じることがある。そこで、サーバ装置100は、「干渉レート」と呼ばれる係数を使用する。サーバ装置100は、採用するデータ再配置案の評価値の合計に干渉レートをかけた値を、それらデータ再配置案の組み合わせに対する効果を示す指標値として使用する。
干渉レートは、影響範囲が重ならないデータ再配置案の間で干渉が生じる程度を示すパラメータであり、採用した影響範囲レベルやサーバ装置100の運用環境に依存する。影響範囲レベルが示す影響範囲が狭いほど、干渉が生じやすく評価値通りの効果が得られにくいため、干渉レートが小さくなる。影響範囲レベルが示す影響範囲が広いほど、干渉が生じにくく評価値通りの効果が得られやすいため、干渉レートが大きくなる。後述するように、干渉レートは、単位データのアクセス状況に応じて更新される。
ここで、サーバ装置100は、1つの影響範囲レベルのみを仮定してデータ再配置案の組み合わせを探索するのではなく、複数の影響範囲レベルそれぞれを仮定してデータ再配置案の組み合わせの探索を試みる。異なる影響範囲レベルに従って生成された2以上の組み合わせは、上記の干渉レートを適用した指標値を用いて比較することができる。これにより、サーバ装置100は、干渉が生じても多数のデータ再配置案を選択して実行した方が有利か、干渉を避けるように少数のデータ再配置案に限定して実行した方が有利かを判定することになる。多数のデータ再配置案を選択する方法と少数のデータ再配置案に限定する方法の何れが有利かは、干渉レートに依存する。
第2の実施の形態では、次の3つの影響範囲レベルを考える。(A)移動する単位データのみが影響範囲に含まれる「再配置データレベル」。(B)移動する単位データに加えて、移動する単位データと直接関連しておりかつ同じページに属する他の単位データも影響範囲に含まれる「直接関連データレベル」。(C)移動する単位データと同じページに属する全ての単位データが影響範囲に含まれる「ページレベル」。ある単位データと他の単位データの「関連」は、その2つの単位データが連続してアクセスされたことを示す。
ここでは、図9に示すようなページ35,36を用いて、3つの影響範囲レベルの具体例を説明する。ページ35(ページT)は、データa1,b1,c1,d1,e1,f1,g1,h1,i1の9個の単位データを含む。ページ36(ページU)は、データj1,k1,l1,m1,n1,o1,p1,q1,r1の9個の単位データを含む。
データa1はデータc1と関連する。データb1はデータd1と関連する。データc1はデータa1,d1,e1,g1と関連する。データd1はデータb1,c1と関連する。データe1はデータc1と関連する。データf1はデータg1,h1,i1と関連する。データh1はデータf1,l1と関連する。データi1はデータf1,k1,m1と関連する。データj1はデータm1と関連する。データk1はデータi1,n1と関連する。データl1はデータh1と関連する。データm1はデータi1,j1,o1と関連する。データn1はデータk1と関連する。データo1はデータm1,p1,q1,r1と関連する。データp1はデータo1と関連する。データq1はデータo1と関連する。データr1はデータo1と関連する。上記以外に単位データ間の関連性は存在しない。
そして、ページ35,36を対象とする1つのデータ再配置案であって、データd1,h1,i1,m1を移動するデータ再配置案が生成されたとする。影響範囲レベルとして「再配置データレベル」を採用すると、このデータ再配置案の影響範囲には、移動するデータd1,h1,i1,m1が含まれ、他の単位データは含まれない。
影響範囲レベルとして「直接関連データレベル」を採用すると、このデータ再配置案の影響範囲には、移動するデータd1,h1,i1,m1が含まれる。また、影響範囲には、データd1と関連するデータb1,c1、データh1およびデータi1と関連するデータf1、データm1と関連するデータj1,o1が含まれる。ただし、データk1はデータi1と関連し、データl1はデータh1と関連するものの、データh1,i1とページが異なるため、データk1,l1は影響範囲に含まれない。影響範囲レベルとして「ページレベル」を採用すると、このデータ再配置案の影響範囲には、ページ35に属する全ての単位データとページ36に属する全ての単位データが含まれる。
このデータ再配置案と組み合わせることができる他のデータ再配置案は、上記の影響範囲と重複しない(上記の単位データを含まない)影響範囲をもつデータ再配置案である。サーバ装置100は、グラフ上で独立集合問題を解くことで、複数のデータ再配置案の中から影響範囲が重複しない1または2以上のデータ再配置案を検出できる。
図10は、グラフを用いたデータ再配置案の選択例を示す図である。
サーバ装置100は、1つの影響範囲レベルを選択すると、選択した影響範囲レベルに従って、複数のデータ再配置案それぞれの影響範囲に含まれる単位データを特定する。サーバ装置100は、2以上のデータ再配置案の影響範囲に含まれる単位データを検索することで、影響範囲が重複するデータ再配置案を検出する。そして、サーバ装置100は、データ再配置案をノードで表し、影響範囲の重複をリンクで表した重複グラフを生成する。重複グラフでは、影響範囲が重複する2つのデータ再配置案に対応する2つのノードの間にはリンクが設定される。また、重複グラフでは、影響範囲が重複しない2つのデータ再配置案に対応する2つのノードの間にはリンクが設定されない。
一例として、サーバ装置100は、重複グラフ42を生成する。重複グラフ42は、データ再配置案X1,X2,X3,X4,X5,X6を表すノードを含む。データ再配置案X1,X2の影響範囲が重複している。データ再配置案X1,X3の影響範囲が重複している。データ再配置案X2,X3の影響範囲が重複している。データ再配置案X2,X4の影響範囲が重複している。データ再配置案X3,X4の影響範囲が重複している。データ再配置案X4,X5の影響範囲が重複している。データ再配置案X5,X6の影響範囲が重複している。上記以外のデータ再配置案の組については、影響範囲が重複していない。よって、重複グラフ42は、これらの重複を示す7つのリンクを含む。
サーバ装置100は、生成した重複グラフを用いて、影響範囲が重複しないデータ再配置案の組み合わせを探索する。影響範囲が重複しないデータ再配置案の組み合わせは、重複グラフ上では、互いに隣接しない(リンクで接続されていない)ノードの集合として表現される。最初に、サーバ装置100は、隣接しないノードの集合をランダムに選択することで、データ再配置案の組み合わせの初期解を生成する。例えば、サーバ装置100は、データ再配置案X2,X6の組み合わせを初期解として生成する。
そして、サーバ装置100は、生成した初期解から始めて、局所探索法を用いて近傍解を探索していく。近傍解は、現在の解から何れかのデータ再配置案を除外し、その代わりに、現在の解に含まれない1または2以上のデータ再配置案を採用することで生成される。ただし、近傍解は、影響範囲が重複しないという制約条件を満たすものとする。
近傍解における評価値の合計が現在の解よりも大きい場合、サーバ装置100は、その近傍解を好ましい解として採用し、採用した好ましい解を基準にして更に近傍解を探索する。例えば、サーバ装置100は、データ再配置案X2を除外し、その代わりにデータ再配置案X1,X4を採用する。これにより、データ再配置案X1,X4,X6を組み合わせた近傍解が生成される。データ再配置案X1,X4,X6の評価値の合計がデータ再配置案X2,X6の評価値の合計よりも大きい場合、サーバ装置100は、初期解に代えて上記の近傍解を好ましい解として採用する。サーバ装置100は、所定の停止条件(例えば、探索回数の条件や評価値の条件など)を満たすまで上記の処理を繰り返すことで、最適解または最適解に近い準最適解を発見することができる。
次に、サーバ装置100のデータ再配置機能について説明する。
図11は、サーバ装置の機能例を示すブロック図である。
サーバ装置100は、データ記憶部121、キャッシュ部122、制御情報記憶部123、アクセス実行部131、再配置制御部133および干渉レート更新部136を有する。データ記憶部121は、HDD103に確保した記憶領域として実現できる。キャッシュ部122および制御情報記憶部123は、RAM102に確保した記憶領域として実現できる。アクセス実行部131、再配置制御部133および干渉レート更新部136は、例えば、CPU101が実行するプログラムのモジュールとして実装することができる。
データ記憶部121は、連続した物理的な記憶領域として、それぞれ1または2以上の単位データを記憶することができる複数のページを含む。単位データは、識別情報によって識別されアクセス要求に応じてアクセスされるデータの単位であり、例えば、テーブルの1つのタプルに相当する。データ記憶部121からのデータの読み出しやデータ記憶部121へのデータの書き込みは、アクセス実行部131によってページ単位で行われる。
キャッシュ部122は、データ記憶部121に対するキャッシュメモリである。キャッシュ部122の記憶容量は、データ記憶部121より小さい一方、キャッシュ部122のアクセス速度(特に、ランダムアクセス速度)は、データ記憶部121より速い。キャッシュ部122には、データ記憶部121に含まれる複数のページのうちの一部のページのデータが、ページ単位でロードされる。アクセス要求に応じたデータ更新やデータ再配置は、キャッシュ部122にロードされたデータに対して行われ、キャッシュ部122からそのデータが追い出されるときにデータ記憶部121に反映される。
制御情報記憶部123は、データアクセス、キャッシュ管理およびデータ再配置の制御に用いられる制御情報を記憶する。制御情報には、ページと単位データの対応関係を示す検索情報や、連続してアクセスされた単位データの組を示す履歴情報が含まれる。また、制御情報には、データ再配置のメリットやコストの算出に用いるパラメータを示すパラメータ情報や、影響範囲レベル毎の干渉レートが含まれる。制御情報の詳細は後述する。
アクセス実行部131は、アクセス要求を受信し、受信したアクセス要求に応じて、キャッシュ部122にキャッシュされたデータに対するアクセスを実行する。リード要求を受信した場合、アクセス実行部131は、リード要求で指定された単位データをキャッシュ部122から取得し、取得した単位データを返信する。ライト要求を受信した場合、アクセス実行部131は、ライト要求に含まれるデータを用いてキャッシュ部122上の単位データを更新し、更新の成否を返信する。また、アクセス実行部131は、受信したアクセス要求に応じて、制御情報記憶部123に記憶された履歴情報などを更新する。
アクセス実行部131は、キャッシュ制御部132を有する。キャッシュ制御部132は、データ記憶部121からキャッシュ部122へのデータのロードを制御する。キャッシュ制御部132は、未キャッシュの単位データを指定したアクセス要求を受信すると、当該単位データを含むページのデータ全体をデータ記憶部121からキャッシュ部122にロードする。データをロードするにあたり、キャッシュ部122の空き領域が不足している場合、キャッシュ制御部132は、キャッシュ中の何れかのページのデータをキャッシュ部122から追い出す。追い出すページのデータに対してキャッシュ部122上で更新または再配置が行われていた場合、キャッシュ制御部132は、追い出すページのデータ全体をキャッシュ部122からデータ記憶部121に書き戻す。
再配置制御部133は、制御情報記憶部123に記憶された履歴情報を分析し、キャッシュ中のページのデータに対してキャッシュ部122上で再配置を実行する。再配置制御部133は、再配置案生成部134および再配置案選択部135を有する。
再配置案生成部134は、所定の開始条件が満たされると、ページと単位データの現在の対応関係、および、最近連続してアクセスされた単位データの組に基づいて、再配置案を生成する。開始条件は、例えば、データ再配置を前回検討してからの経過時間や履歴情報の蓄積量などを基準として予め決められる。データ再配置案は、例えば、再配置対象の2つのページの識別情報と、当該2つのページの間で移動する単位データの識別情報とを用いて表現される。再配置案生成部134は、連続してアクセスされた単位データができる限り同じページに属するように、ページ間での単位データの移動を検討する。
再配置案選択部135は、制御情報記憶部123に記憶されたパラメータ情報を用いて、再配置案生成部134が生成したデータ再配置案を採用するメリットとコストを定量的に評価し、データ再配置案毎の評価値を算出する。メリットは、連続してアクセスされた単位データが異なるページに分断されている状況の改善度や、ある単位データの組が今後連続してアクセスされる回数の期待値、HDD103の読み出し速度などを考慮して算出される。コストは、データ記憶部121に書き戻すページの増加量や、HDD103の書き込み速度などを考慮して算出される。メリットとコストの詳細は後述する。再配置案選択部135は、評価値に基づいて、再配置案生成部134が生成した複数のデータ再配置案の中から、実行する1または2以上のデータ再配置案を選択する。
干渉レート更新部136は、再配置制御部133がデータ再配置を実行してから一定時間、データアクセスの性能を監視する。データアクセスの性能を示す指標として、例えば、要求された単位データがキャッシュ部122にロードされていないキャッシュミスの回数を用いることができる。そして、干渉レート更新部136は、データ再配置から一定時間が経過すると、データ再配置後の性能が反映されるように、制御情報記憶部123に記憶された干渉レートを更新する。例えば、干渉レート更新部136は、実行されたデータ再配置の評価値とキャッシュミス回数の比を用いて干渉レートを更新する。次回のデータ再配置案の検討において、更新された干渉レートを用いて評価値を補正することで、データ再配置後のアクセス性能の良否をより高い精度で判定できる。
図12は、検索テーブルと逆検索テーブルの例を示す図である。
検索テーブル141は、制御情報記憶部123に記憶されている。検索テーブル141は、データIDおよびページIDの項目を有する。データIDは、単位データを識別する識別情報である。データIDとして、テーブルの主キーを用いてもよいし、DBMSによって自動的に付与される連番を用いてもよい。ページIDは、ページを識別する識別情報である。ページIDとして、HDD103のアドレスを用いてもよい。
検索テーブル141では、1つのデータIDに対して1つのページIDが対応付けられる。これは、そのデータIDをもつ単位データがそのページIDをもつページに属していることを示している。検索テーブル141を用いることで、ある単位データのデータIDから、その単位データが属するページのページIDを検索できる。
逆検索テーブル142は、制御情報記憶部123に記憶されている。逆検索テーブル142は、ページID、データID、更新フラグおよび再配置フラグの項目を有する。更新フラグは、あるページに属する単位データの中に、キャッシュ部122上で更新された単位データが存在するか否かを示す。更新フラグ=1は、更新された単位データがあり、その更新がデータ記憶部121に未反映であることを示す。更新フラグ=0は、更新された単位データがないことを示す。再配置フラグは、あるページに対してキャッシュ部122上でデータ再配置が実行されたか否かを示す。再配置フラグ=1は、データ再配置が行われており、そのデータ再配置がデータ記憶部121に未反映であることを示す。再配置フラグ=0は、データ再配置が行われていないことを示す。
逆検索テーブル142では、1つのページIDに対して、0または1以上のデータIDと1つの更新フラグと1つの再配置フラグとが対応付けられる。逆検索テーブル142を用いることで、あるページのページIDから、そのページに属する全ての単位データのデータIDを検索できる。また、逆検索テーブル142を用いることで、あるページのページIDから、そのページに対応する更新フラグと再配置フラグを検索できる。
なお、キャッシュ部122上でのデータ再配置については、RAM102上で単位データを移動してその単位データの格納位置を変更してもよい。また、キャッシュ部122上でのデータ再配置については、RAM102上の単位データの格納位置は変更せずに、検索テーブル141および逆検索テーブル142の更新のみ行うようにしてもよい。
図13は、関連性情報キューと関連性集計テーブルの例を示す図である。
関連性情報キュー143は、制御情報記憶部123上に形成されている。関連性情報キュー143は、先入れ先出し(FIFO:First In First Out)のリスト構造をもつ。関連性情報キュー143には、アクセス要求が到着する毎に関連性情報が追加される。
関連性情報は、クライアントID、データIDおよび前データIDを含む。クライアントIDは、アクセス要求を送信したクライアント装置を識別する識別情報である。クライアントIDとして、クライアント装置21,22の通信アドレス(例えば、IP(Internet Protocol)アドレス)を用いてもよい。関連性情報に含まれるデータIDは、アクセス要求で指定された単位データのデータIDである。前データIDは、同じクライアント装置が前回送信したアクセス要求で指定された単位データのデータIDである。
関連性情報は、前データIDが示す単位データの直後にデータIDが示す単位データがアクセスされたという、単位データ間の「関連性」を示している。1つ前にアクセスされた単位データは、例えば、今回のアクセスと同じクライアント装置についての直近の関連性情報を関連性情報キュー143から検索することで特定することができる。ただし、クライアント装置21,22が、1つ前にアクセスした単位データのデータIDを、前データIDとしてアクセス要求に付加するようにしてもよい。データIDが示す単位データと前データIDが示す単位データの組を「関連データ対」と言うことがある。
関連性情報キュー143に登録された関連性情報は、再配置案生成部134が再配置案を生成するときに、登録順に従って1つずつ抽出される。再配置案生成部134によって利用された関連性情報は、関連性情報キュー143から消去される。また、あるページのデータがキャッシュ部122から追い出されると、そのページに属する単位データに関する関連性情報は関連性情報キュー143から消去される。すなわち、関連性情報キュー143には、キャッシュ部122にキャッシュされているページについての関連性情報であって、データ再配置の検討にまだ利用されていないものが蓄積される。
関連性集計テーブル144は、制御情報記憶部123に記憶されている。関連性集計テーブル144は、データIDおよび重みの項目を有する。重みの項目には、データIDの項目が示す単位データの直前にアクセスされた単位データを示す識別情報と、そのアクセス順序の出現回数とが登録される。例えば、データbに対して{a:2,c:2}という重み情報が登録される。これは、データaの直後にデータbがアクセスされたことが2回あり、データcの直後にデータbがアクセスされたことが2回あることを示す。
関連性集計テーブル144は、関連性情報キュー143に関連性情報が追加される毎、すなわち、アクセス要求が到着する毎に、追加された関連性情報に従って更新される。関連性集計テーブル144を用いることで、ある単位データのデータIDから、その直前にアクセスされた単位データのデータIDと、その関連データ対の出現回数を検索できる。あるページのデータがキャッシュ部122から追い出されると、追い出されたページに属する単位データに関する重み情報は関連性集計テーブル144から消去される。すなわち、関連性集計テーブル144には、ページがキャッシュ部122にキャッシュされている一期間内に出現した、そのページに関する関連データ対の出現回数が集計される。
図14は、重複判定テーブルとパラメータテーブルの例を示す図である。
重複判定テーブル145は、制御情報記憶部123に記憶されている。重複判定テーブル145は、影響範囲の重複するデータ再配置案を検出するときに再配置案選択部135によって使用される。重複判定テーブル145は、データIDおよび影響フラグの項目を有する。影響フラグは、データIDの項目が示す単位データが、データ再配置案の影響範囲に含まれているか否かを示す。影響フラグ=1は、単位データが少なくとも1つのデータ再配置案の影響範囲に含まれていることを示す。影響フラグ=0は、単位データが何れのデータ再配置案の影響範囲にも含まれていないことを示す。
例えば、再配置案選択部135は、再配置案生成部134が生成したデータ再配置案を順に選択していく。再配置案選択部135は、選択したデータ再配置案の影響範囲に含まれる単位データを特定し、その単位データの影響フラグを「1」に書き換える。このとき、再配置案選択部135は、書き換え前の影響フラグが既に「1」であるか否か判定する。書き換え前の影響フラグが「1」であれば、影響範囲が重複していると判定できる。
パラメータテーブル146は、制御情報記憶部123に記憶されている。パラメータテーブル146には、再配置案選択部135がデータ再配置のメリットとコストを算出するときに用いるパラメータの名称と値が登録される。パラメータの値の少なくとも一部は、ユーザによって設定されてもよい。また、パラメータの値の少なくとも一部は、HDD103やRAM102のアクセスを監視することでサーバ装置100が算出してもよい。
パラメータ名には、書き込み速度、読み出し速度および再出現率が含まれる。書き込み速度は、1ページのデータをRAM102からHDD103に書き戻すのに要する時間を示す。読み出し速度は、1ページのデータをHDD103からRAM102にロードするのに要する時間を示す。書き込み速度および読み出し速度それぞれの単位は、例えば、ミリ秒毎ページである。書き込み速度および読み出し速度は、ユーザがHDD103の物理性能とページサイズの期待値から推定しておき、予めパラメータテーブル146に登録しておいてもよい。また、ユーザが書き込み速度および読み出し速度を実測し、実測値の平均を予めパラメータテーブル146に登録しておいてもよい。また、サーバ装置100がHDD103の書き込み速度および読み出し速度を監視し、パラメータテーブル146に登録された書き込み速度および読み出し速度の値を継続的に更新してもよい。
再出現率は、ある単位データの組が連続でアクセスされてから一定時間内に、同じ単位データの組が連続してアクセスされる確率である。すなわち、再出現率は、ある関連データ対が出現してから一定時間内に、同じ関連データ対が再び出現する確率である。パラメータテーブル146には、全ての単位データの組についての再出現率の平均値が登録されてもよいし、単位データの組毎に個別に再出現率が登録されてもよい。また、再出現率は、ユーザが実測して予めパラメータテーブル146に登録しておいてもよいし、サーバ装置100が関連性情報に基づいて継続的に更新してもよい。
図15は、履歴テーブルと干渉レートテーブルの例を示す図である。
履歴テーブル147は、制御情報記憶部123に記憶されている。履歴テーブル147は、データ再配置を実行するときに再配置制御部133によって更新され、その後にキャッシュ制御部132によって参照される。履歴テーブル147は、データIDおよび再配置フラグの項目を有する。再配置フラグは、直近のデータ再配置において、データIDの項目が示す単位データが移動したか否かを示す。再配置フラグ=1は単位データが移動したことを示し、再配置フラグ=0は単位データが移動しなかったことを示す。
干渉レートテーブル148は、制御情報記憶部123に記憶されている。干渉レートテーブル148は、再配置案選択部135によって参照される。また、干渉レートテーブル148は、キャッシュ制御部132、再配置案選択部135および干渉レート更新部136によって更新される。干渉レートテーブル148は、影響範囲レベル、干渉レート、合計評価値およびキャッシュミス回数の項目を有する。
影響範囲レベルの項目には、影響範囲レベルの名称が登録される。例えば、図9に示したように、「再配置データ」、「直接関連データ」および「ページ」の3つの影響範囲レベルの名称が登録される。干渉レートの項目には、各影響範囲レベルに対応付けられた干渉レートが登録される。干渉レートの初期値は「1」である。合計評価値の項目には、影響範囲レベル毎に、その影響範囲レベルに従って選択されたデータ再配置案の組み合わせに対する合計評価値が登録される。この合計評価値は、干渉レートを用いて補正する前の値である。キャッシュミス回数の項目には、データ再配置が行われてから一定時間以内に、移動した単位データに対して発生したキャッシュミスの回数が登録される。
再配置案選択部135は、実行するデータ再配置案の組み合わせを決定すると、その組み合わせの選択に用いた影響範囲レベルと対応付けて、実行するデータ再配置案の評価値の合計を干渉レートテーブル148に登録する。キャッシュ制御部132は、データ再配置が実行されてから一定時間、キャッシュミスを監視する。キャッシュミスが発生し、かつ、要求された単位データの再配置フラグが「1」である場合、キャッシュ制御部132は、干渉レートテーブル148のキャッシュミス回数をカウントアップする。更新するキャッシュミス回数は、直近に使用された影響範囲レベルに対応するものである。
干渉レート更新部136は、データ再配置が実行されてから一定時間経過すると、干渉レートテーブル148の合計評価値とキャッシュミス回数に基づいて、干渉レートを更新する。更新する干渉レートは、直近に使用された影響範囲レベルに対応するものである。例えば、干渉レート更新部136は、合計評価値とキャッシュミス回数の比(合計評価値÷キャッシュミス回数)を、新たな干渉レートとする。更新された干渉レートは、再配置案選択部135が次にデータ再配置を検討するときに参照される。
次に、サーバ装置100が実行する処理の手順について説明する。
図16は、アクセス実行の手順例を示すフローチャートである。
(S10)アクセス実行部131は、クライアント装置21,22の何れかから、ネットワーク20を介してアクセス要求を受信する。アクセス要求は、ある単位データを読み出すリード要求またはある単位データを更新するライト要求などである。
(S11)アクセス実行部131は、制御情報記憶部123に記憶された検索テーブル141を参照して、アクセス要求で指定された単位データを含むページP1を検索する。
(S12)キャッシュ制御部132は、検索されたページP1がキャッシュ中であるか、すなわち、ページP1のデータがキャッシュ部122に記憶されているか判断する。検索されたページP1がキャッシュ中である場合はステップS20に処理が進み、ページP1が未キャッシュである場合はステップS13に処理が進む。
なお、各ページがキャッシュ中であるか判断するため、キャッシュ制御部132は、キャッシュ中のページを示すリストまたは未キャッシュのページを示すリストを保持していてもよい。また、逆検索テーブル142にはキャッシュ中のページに関する情報のみ登録するようにし、キャッシュ制御部132は、所望のページの情報が逆検索テーブル142に存在するか確認することで当該ページがキャッシュ中か否かを判断してもよい。また、各ページがキャッシュ中か否かを示すフラグを逆検索テーブル142に追加してもよい。
(S13)キャッシュ制御部132は、キャッシュ部122のキャッシュ領域に、ページP1のデータを格納するだけの空きが存在するか判断する。キャッシュ領域に空きが存在するか否かは、キャッシュ中のページの数が所定の上限に達しているか否かによって判断してもよい。キャッシュ領域に空きが存在する場合はステップS18に処理が進み、キャッシュ領域が不足している場合はステップS14に処理が進む。
(S14)キャッシュ制御部132は、キャッシュ中の複数のページのうちキャッシュ部122から追い出すページP2を選択する。ページP2を選択するアルゴリズム(キャッシュアルゴリズムや置換アルゴリズムと呼ぶことがある)としては、様々なものが考えられる。例えば、LRU(Least Recently Used)、LFU(Least Frequency Used)、FIFOなどを用いることができる。キャッシュ制御部132は、使用するアルゴリズムに応じた情報(例えば、ページのアクセス回数)を保持してもよい。
(S15)キャッシュ制御部132は、逆検索テーブル142から、ステップS14で選択したページP2に対応する更新フラグと再配置フラグを取得する。そして、キャッシュ制御部132は、更新フラグ=1または再配置フラグ=1であるか、すなわち、ページP2に含まれる単位データが更新されたかまたはページP2に対してデータ再配置が行われたか判断する。更新フラグ=1または再配置フラグ=1である場合、ステップS16に処理が進む。それ以外の場合、ステップS17に処理が進む。
(S16)キャッシュ制御部132は、キャッシュ部122に記憶されたページP2のデータ全体をデータ記憶部121に書き戻す。すなわち、RAM102にキャッシュされたページP2のデータがHDD103に書き戻される。
(S17)キャッシュ制御部132は、逆検索テーブル142に登録されたページP2に対応する更新フラグおよび再配置フラグを「0」にクリアする。また、キャッシュ制御部132は、ページP2に含まれる単位データを逆検索テーブル142から検索し、検索した単位データについての関連性情報および関連性集計情報を関連性情報キュー143および関連性集計テーブル144から消去する。なお、キャッシュ制御部132は、キャッシュ部122上のページP2のデータを破棄する。そのとき、キャッシュ制御部132は、キャッシュ部122から明示的にページP2のデータを消去してもよいし、ページP2のデータを消去せずにページP2に割り当てられていた記憶領域を上書き可能に設定するようにしてもよい。
(S18)キャッシュ制御部132は、ステップS11で検索されたページP1のデータ全体を、データ記憶部121からRAM102上のキャッシュ部122に読み出す。
(S19)キャッシュ制御部132は、履歴テーブル147から、アクセス要求で指定された単位データに対応する再配置フラグを取得する。そして、キャッシュ制御部132は、再配置フラグ=1であるか、すなわち、指定された単位データが前回のデータ再配置で移動したものであるか判断する。再配置フラグ=1である場合、キャッシュ制御部132は、干渉レートテーブル148から前回のデータ再配置で採用された影響範囲レベルに対応するキャッシュミス回数をインクリメントすることで更新する。
(S20)アクセス実行部131は、キャッシュ部122に記憶されたデータに対して、受信したアクセス要求に応じたアクセスを実行し、アクセス要求を送信したクライアント装置に対して応答する。アクセス要求がリード要求である場合、アクセス実行部131は、アクセス要求で指定された単位データをキャッシュ部122から抽出して、アクセス要求を送信したクライアント装置に送信する。アクセス要求がライト要求である場合、アクセス実行部131は、アクセス要求で指定された単位データをキャッシュ部122上で更新し、アクセス要求を送信したクライアント装置に更新の成否を通知する。また、アクセス要求がライト要求である場合、アクセス実行部131は、逆検索テーブル142に登録されたページP1の更新フラグを「1」に書き換える。
(S21)アクセス実行部131は、受信したアクセス要求に応じて関連性情報を生成し、制御情報記憶部123に形成された関連性情報キュー143に保存する。関連性情報には、アクセス要求を送信したクライアント装置の識別情報と、アクセス要求で指定された単位データの識別情報が含まれる。また、関連性情報には、同じクライアント装置からの要求によって前回アクセスされた単位データの識別情報が含まれる。前回アクセスされた単位データは、例えば、そのクライアント装置についての直近の関連性情報を関連性情報キュー143から検索することで特定できる。また、前回アクセスされた単位データの識別情報がアクセス要求に付加されている場合、その識別情報を利用できる。
また、アクセス実行部131は、関連性情報を用いて関連性集計テーブル144の関連性集計情報を更新する。アクセス実行部131は、関連性集計テーブル144において、今回アクセスされた単位データに対応する前回アクセスされた単位データの重みを1だけ加算する。
図17は、データ再配置の手順例を示すフローチャートである。
(S30)再配置案生成部134は、以下のステップS32〜S40に示すデータ再配置の検討を前回行ってから所定時間以上経過したか判断する。前回のデータ再配置の検討から所定時間以上経過した場合、ステップS32に処理が進み、データ再配置の検討が開始される。所定時間経過していない場合、ステップS31に処理が進む。
(S31)再配置案生成部134は、関連性情報キュー143に蓄積された関連性情報の量(関連性情報が示す関連データ対の量と言うこともできる)が所定の閾値以上であるか判断する。条件を満たす場合、ステップS32に処理が進み、データ再配置の検討が開始される。条件を満たさない場合、データ再配置の検討は開始されない。
なお、図17では、データ再配置の検討を開始する開始条件として、ステップS30,S31の2つの条件を用いることとした。ただし、ステップS30,S31の何れか一方のみを開始条件として用いてもよい。また、ステップS30,S31に代えて、または、ステップS30,S31と合わせて、他の開始条件を用いてもよい。例えば、関連性情報が示す関連データ対のうちページをまたがる関連データ対をカウントし、ページをまたがる関連データ対の数と所定の閾値とを比較するようにしてもよい。
(S32)再配置案生成部134は、関連性情報キュー143から1つの関連データ対を抽出する。抽出する関連データ対は、例えば、関連性情報キュー143に記憶されているもののうち最も古いものとする。抽出した関連データ対は、関連性情報キュー143から削除される。以下では、関連データ対が示す今回アクセスされた単位データをm、前回アクセスされた単位データをnと表記することがある。
そして、再配置案生成部134は、単位データmが属するページMと単位データnが属するページNとの間のデータ再配置案を1つ生成する。データ再配置案は、ページM,NのページIDと、一方のページから他方のページに移動する単位データのデータIDとを用いて表現できる。データ再配置案の生成の詳細は後述する。
(S33)再配置案選択部135は、ステップS32で生成されたデータ再配置案それぞれについて、そのコストとメリットを算出する。
コストは、ライトバックするページの増加量×書き込み速度、として算出できる。ライトバックするページの増加量は、図5,6で説明したように、キャッシュ部122上でのページM,Nの更新状況に基づいて算出することができ、「0」,「1」,「2」の何れかの値をとる。再配置案選択部135は、逆検索テーブル142に登録されたページM,Nの更新フラグを確認して、ページM,Nのうち更新フラグ=1であるページの数(更新されたページの数)を算出する。データ再配置によって増加するライトバックのページ数は、「2」−更新されたページの数である。書き込み速度は、制御情報記憶部123に記憶されたパラメータテーブル146から検索できる。
メリットは、ページM,Nの間のカット数の減少量×再出現率×読み出し速度、として算出できる。ページM,Nの間のカット数は、制御情報記憶部123に記憶された関連性集計テーブル144に登録されている関連データ対のうち、ページM,Nをまたがる関連データ対の重みの合計である。すなわち、ページM,Nの間のカット数は、ページM,Nの両方が今回キャッシュされている期間内に出現した関連データ対のうち、ページM,Nをまたがる関連データ対の出現回数を示す。再配置案選択部135は、関連性集計テーブル144を参照して、現在の配置状況におけるカット数とデータ再配置の実行後の配置状況におけるカット数とを算出し、前者から後者を引いたカット数の減少量を算出する。
ページM,Nにまたがっていた関連データ対の中には、データ再配置によってページM,Nの何れか一方の中に収まり、アクセス性能が向上するものがあり得る。逆に、ページM,Nの何れか一方の中に収まっていた関連データ対の中には、データ再配置によってページM,Nにまたがるようになり、アクセス性能が低下するものがあり得る。カット数の減少量は、一部の関連データ対についてのアクセス性能の向上と一部の関連データ対についてのアクセス性能の低下とを反映したものであり、データ再配置を行うことによる単位データの配置状況の全体的な改善度を表した指標であると言うことができる。
再出現率は、ページM,Nに属する単位データの間の関連データ対が今後一定時間の間に再度出現する確率を表し、パラメータテーブル146から検索できる。読み出し速度は、パラメータテーブル146から検索できる。そして、再配置案選択部135は、データ再配置案それぞれについて、メリットからコストを引いた評価値を算出する。
(S34)再配置案選択部135は、制御情報記憶部123に記憶された干渉レートテーブル148から、影響範囲レベルを1つ選択する。影響範囲レベルとしては、再配置データレベルと直接関連データレベルとページレベルの3つがある。
(S35)再配置案選択部135は、ステップS34で選択した影響範囲レベルに従って、ステップS32で生成されたデータ再配置案それぞれの影響範囲に含まれる単位データを特定する。再配置データレベルを選択した場合、再配置案選択部135は、データ再配置案が示す移動対象の単位データのみを影響範囲に含める。直接関連データレベルを選択した場合、再配置案選択部135は、移動対象の単位データと直接関連する単位データを関連性集計テーブル144から検索し、影響範囲に含める。ページレベルを選択した場合、再配置案選択部135は、移動対象の単位データと同じページに属する単位データを逆検索テーブル142から検索し、影響範囲に含める。
各データ再配置案の影響範囲が特定されると、再配置案選択部135は、制御情報記憶部123に記憶された重複判定テーブル145を用いて、影響範囲が重複する(同じ単位データが影響範囲に含まれる)データ再配置案の組を検出する。そして、再配置案選択部135は、データ再配置案に対応するノードを含む重複グラフを生成する。重複グラフでは、影響範囲が重複するデータ再配置案の組に対応するノード組がリンクで接続される。
(S36)再配置案選択部135は、ステップS35で生成した重複グラフを用いて、ステップS32で生成されたデータ再配置案の中から影響範囲が重複しないデータ再配置案の集合を探索する。この集合には、1または2以上のデータ再配置案が含まれる。影響範囲が重複しないことは、隣接する(リンクで接続された)ノードに対応するデータ再配置案の組が選択されていないことに対応する。データ再配置案の選択の詳細は後述する。
(S37)再配置案選択部135は、ステップS33で算出した評価値のうち、ステップS36で選択したデータ再配置案の評価値を合計する。また、再配置案選択部135は、干渉レートテーブル148から、ステップS34で選択した影響範囲レベルに対応する干渉レートを検索する。そして、再配置案選択部135は、合計評価値に干渉レートをかけることで、合計評価値を補正する。合計評価値の補正は、選択したデータ再配置案の間で発生する干渉の程度を推定し、干渉を合計評価値に反映させることを示す。
(S38)再配置案選択部135は、ステップS34で全ての影響範囲レベルを選択したか判断する。全ての影響範囲レベルを選択した場合はステップS39に処理が進み、未選択の影響範囲レベルがある場合はステップS34に処理が進む。
(S39)再配置案選択部135は、干渉レートテーブル148に登録された複数の影響範囲レベルのうち、ステップS37で算出した合計評価値の補正値が最良のもの(値が大きいほど良い指標である場合は、合計評価値が補正値が最大のもの)を採用する。そして、再配置案選択部135は、採用した影響範囲レベルに従ってステップS36で選択したデータ再配置案を、実行するデータ再配置案に決定する。また、再配置案選択部135は、実行するデータ再配置案の合計評価値(補正前のもの)を、採用した影響範囲レベルと対応付けて干渉レートテーブル148に登録する。再配置制御部133は、決定されたデータ再配置案に従って、ページの間で単位データを移動する。このとき、再配置制御部133は、決定した2以上のデータ再配置案を任意の順序で実行してよい。
(S40)干渉レート更新部136は、再配置制御部133がデータ再配置を行ってから所定時間が経過するのを待つ。所定時間が経過すると、干渉レート更新部136は、干渉レートテーブル148から、ステップS39で採用された影響範囲レベルに対応する合計評価値とキャッシュミス回数を検索する。そして、干渉レート更新部136は、採用された影響範囲レベルに対応する干渉レートを、合計評価値÷キャッシュミス回数に更新する。干渉レートは、キャッシュミス回数が多いほど小さい値になる。これは、アクセス性能が結果的に向上しなかった場合には、データ再配置案の間の干渉によって期待した効果が得られなかったと判断し、以降は合計評価値を小さな値に補正することを示す。
次に、ステップS32で行われるデータ再配置案の生成について説明する。以下では、データ再配置案の生成方法の例として重心法とユニオンスプリット法を挙げる。
図18は、重心法によるデータ再配置案の生成例を示す図である。
重心法では、単位データの間の関連性の強さ(連続してアクセスされる可能性の高さ)を、N次元空間(Nは2以上の整数)上の距離として表現し、N次元空間上で単位データをグルーピングする。ここでは、一例として2次元空間を用いる。グラフ43は、関連性情報キュー143から抽出した関連データ対を適用する前の関連性を表す。グラフ44は、抽出した関連データ対を適用した後の単位データの間の関連性を表す。
重心法では、ページおよび単位データそれぞれに対して座標を付与する。ページの座標は、互いに十分に離れるように予め付与しておく。単位データの座標の初期値は、その単位データが属するページの座標の近傍になるように付与しておく。グラフ43では、ページQ,R(ページ32,33)および単位データe,f,g,hが配置されている。
初期状態では、所定のグルーピング方法を用いると、単位データe,fはページ32と同じグループに振り分けられ、単位データg,hはページ33と同じグループに振り分けられるようにしておく。グルーピング方法としては、例えば、各ページが順に、グループが決定していない単位データのうちそのページから座標が最も近い単位データを自グループに取り込むという方法が考えられる。グラフ43の場合、1巡目でページQが単位データfを選択し、ページRが単位データgを選択する。2巡目でページQが単位データeを選択し、ページRが単位データhを選択する。これにより、単位データe,fはページQに属し、単位データg,hはページRに属するというグルーピングを行うことができる。
ここで、再配置案生成部134が関連性情報キュー143から関連データ対を抽出すると、その関連データ対に応じて単位データの座標を変更する。具体的には、一方の単位データの座標を、他方の単位データが属するページの座標に近付ける。単位データfの直後に単位データgがアクセスされた場合、グラフ43では、単位データfの座標がページRの座標に近付き、単位データgの座標がページQの座標に近付く。これは、単位データfとページRの関連性が現在よりも強くなり、単位データgとページQの関連性が現在よりも強くなったことを表す。座標の移動量は、一定量としてもよい。また、座標の移動量は、単位データの座標と近付く先のページの座標との間の距離(例えば、単位データfの座標とページRの座標の距離)に対する一定割合(例えば、10%)としてもよい。
2次元空間上で単位データの座標が変更されると、上記のグルーピング方法を用いて単位データのグループが再計算される。例えば、グラフ44の場合、1巡目でページQが単位データfを選択し、ページRが単位データhを選択する。2巡目でページQが単位データgを選択し、ページRが単位データeを選択する。これにより、単位データf,gはページQのグループに振り分けられ、単位データe,hはページRのグループに振り分けられることになる。これは、単位データeがページQからページRに移動し、単位データgがページRからページQに移動するというデータ再配置案を表す。
図19は、座標テーブルの例を示す図である。
データ再配置案の生成に重心法を用いる場合、座標テーブル149が制御情報記憶部123に記憶される。座標テーブル149は、ノードIDおよび座標の項目を有する。ノードIDは、N次元空間上に配置するノードの識別情報である。ノードIDとして、ページについてはページIDを用い、単位データについてはデータIDを用いる。ノードIDに対して、N次元空間上の現在の座標が対応付けられる。単位データに対応する座標は、上記のように再配置案生成部134によって更新され得る。あるページがキャッシュ部122から追い出されても、そのページの情報を座標テーブル149から消去しなくてよい。
図20は、第1の再配置案生成の手順例を示すフローチャートである。
第1の再配置案生成は、上記のステップS32で実行される。
(S50)再配置案生成部134は、制御情報記憶部123に記憶された検索テーブル141から単位データmを含むページMと単位データnを含むページNを検索する。
(S51)再配置案生成部134は、制御情報記憶部123に記憶された座標テーブル149から、単位データm,nおよびページM,Nに対応する座標を検索する。
(S52)再配置案生成部134は、単位データmの座標をページNの座標に向かって近付ける。例えば、再配置案生成部134は、座標テーブル149で、単位データmの座標を、単位データmの座標とページNの座標の距離が10%縮まるように変更する。また、再配置案生成部134は、単位データnの座標をページMの座標に向かって近付ける。例えば、再配置案生成部134は、座標テーブル149で、単位データnの座標を、単位データnの座標とページMの座標の距離が10%縮まるように変更する。
(S53)再配置案生成部134は、制御情報記憶部123に記憶された逆検索テーブル142から、ページM,Nに含まれる全ての単位データを検索する。再配置案生成部134は、座標テーブル149から、検索した単位データそれぞれの座標を検索する。
(S54)再配置案生成部134は、ステップS53で検索された単位データを、それら単位データの座標とページM,Nの座標を用いてグルーピングする。グルーピングでは、ページM,Nの座標と単位データそれぞれの座標との間の距離が考慮される。ページMとの距離が近い単位データはページMに配置されることが好ましく、ページNとの距離が近い単位データはページNに配置されることが好ましい。例えば、ページM,Nが交互に、未選択の単位データのうち距離が最も近い単位データを1つずつ選択していく。
(S55)再配置案生成部134は、現在のページM,Nのデータ配置とステップS54で求めたページM,Nのデータ配置とを比較し、ページM,Nの間で移動する単位データを特定する。これにより、ページM,Nの間のデータ再配置案が生成される。
図21は、ユニオンスプリット法によるデータ再配置案の生成例を示す図である。
ユニオンスプリット法では、再配置案生成部134が関連性情報キュー143から関連データ対を抽出すると、関連データ対が示す2つのページが統合される。ページの統合では、一方のページに属する全ての単位データを、他方のページに移動させる。統合後の一方のページは、単位データを含まない空のページとなる。
ただし、統合後の他方のページに含まれる単位データの量が上限を超えてしまうことがある。その場合、単位データそれぞれのアクセス状況に応じて、統合後の他方のページを分割する。ページの分割では、他方のページに集められた単位データを、キャッシュ部122に今回キャッシュされている間にアクセスされたものとアクセスされなかったものとにグルーピングする。そして、何れか一方のグループの単位データを移動させる。
例えば、単位データd,e,fを含むページ32(ページQ)と、単位データg,h,iを含むページ33(ページR)がキャッシュ部122にキャッシュされているとする。また、今回のキャッシュ中、単位データeの直後に単位データfがアクセスされ、単位データfの直後に単位データgがアクセスされたとする。すると、ページQとページRが統合される。例えば、ページRに含まれる単位データg,h,iがページQに移動する。その結果、ページQは単位データd,e,f,g,h,iを含み、ページRは空となる。
しかし、このように移動するとページQに含まれる単位データの量が所定の上限を超えてしまう場合、単位データd,e,f,g,h,iが、キャッシュ中にアクセスされた単位データe,f,gとアクセスされなかった単位データd,h,iとに分けられる。そして、ページQが分割される。例えば、キャッシュ中にアクセスされなかった単位データd,h,iがページQからページRに移動する。その結果、ページQは単位データe,f,gを含み、ページRは単位データd,h,iを含むこととなる。
図22は、第2の再配置案生成の手順例を示すフローチャートである。
第2の再配置案生成は、上記のステップS32で実行される。
(S60)再配置案生成部134は、制御情報記憶部123に記憶された検索テーブル141から単位データmを含むページMと単位データnを含むページNを検索する。
(S61)再配置案生成部134は、制御情報記憶部123に記憶された逆検索テーブル142から、ページM,Nに含まれる全ての単位データを検索する。
(S62)再配置案生成部134は、ページMとページNを統合するデータ再配置案を生成する。すなわち、再配置案生成部134は、ページNの全ての単位データをページMに移動するデータ再配置案を生成する。このデータ再配置案ではページNは空となる。
(S63)再配置案生成部134は、ステップS62で生成したデータ再配置案を採用した場合に、ページMのデータ量(例えば、単位データの個数)が所定の上限を超えるか判断する。ページMのデータ量が上限を超える場合、ステップS64に処理が進む。ページMのデータ量が上限以下である場合、ステップS66に処理が進む。
(S64)再配置案生成部134は、ページMに集められた単位データそれぞれが、キャッシュ部122に今回キャッシュされている間にアクセスされたか判定する。各単位データのアクセスの有無は、例えば、制御情報記憶部123に記憶された関連性集計テーブル144に、その単位データに関する情報が登録されているか否かで判定できる。
(S65)再配置案生成部134は、ステップS64で判定したアクセスの有無に応じてページMを分割するように、ステップS62で生成したデータ再配置案を修正する。具体的には、再配置案生成部134は、ページMに集められた単位データのうち、アクセスされなかった単位データがページNに移動するようにデータ再配置案を修正する。
(S66)再配置案生成部134は、ステップS62で生成したデータ再配置案またはステップS65で修正したデータ再配置案に基づいて、移動する単位データを特定する。これにより、ページM,Nのデータ再配置案が確定される。
なお、再配置案生成部134は、重心法およびユニオンスプリット法を含む複数のデータ再配置案の生成方法のうち、何れか1つを使用すればよい。使用する生成方法は、例えば、ユーザが予め再配置案生成部134に設定しておく。重心法は、関連データ対の出現回数の増加に応じて徐々にデータ配置を変更していくことが可能な方法であり、データ配置の長期的な最適化に適している。ユニオンスプリット法は、新たな関連データ対の出現に反応して、データ配置を迅速に修正できるという利点がある。
次に、上記のステップS33で算出するカット数の減少量について補足する。
図23は、データ再配置前後のカット数の変化例を示す図である。
ここでは、ページ32(ページQ)に単位データd,e,fが含まれ、ページ33(ページR)に単位データg,h,iが含まれているとする。また、単位データdと単位データg、単位データeと単位データf、単位データeと単位データg、単位データhと単位データiが、連続してアクセスされたとする。また、単位データfをページRに移動し、単位データgをページQに移動するというデータ再配置案が生成されたとする。
データ再配置前は、単位データd,gの関連データ対および単位データe,gの関連データ対が、ページQ,Rをまたがっている。よって、データ再配置前のカット数は「2」である。一方、生成されたデータ再配置案によれば、データ再配置後は単位データd,gの関連データ対および単位データe,gの関連データ対がページQ,Rをまたがっておらず、単位データe,fの関連データ対がページQ,Rをまたがっている。よって、データ再配置後のカット数は「1」であり、カット数の減少量(ΔCut)が「1」と算出される。ΔCutは、生成されたデータ再配置案の良否を反映していると言うことができる。
次に、上記のステップS36で行われるデータ再配置案の選択について説明する。
図24は、再配置案選択の手順例を示すフローチャートである。
(S70)再配置案選択部135は、空の集合Zを定義する。
(S71)再配置案選択部135は、前述のステップS32で生成されたデータ再配置案の中から、1つのデータ再配置案(データ再配置案X1)を選択する。これは、ステップS35で生成された重複グラフの中から、1つのノードを選択することに対応する。
(S72)再配置案選択部135は、ステップS71で選択したデータ再配置案X1の影響範囲が、集合Zに属する何れかのデータ再配置案の影響範囲と重複するか判断する。重複の有無は、例えば、重複グラフ上においてデータ再配置案X1に対応するノードと集合Zに属するデータ再配置案に対応するノードとが、リンクで接続されているか否かによって判断できる。影響範囲が重複している場合はステップS74に処理が進み、影響範囲が重複していない場合はステップS73に処理が進む。
(S73)再配置案選択部135は、集合Zにデータ再配置案X1を追加する。
(S74)再配置案選択部135は、生成された全てのデータ再配置案がステップS71において選択されたか判断する。全てのデータ再配置案が選択された場合はステップS75に処理が進み、未選択のデータ再配置案がある場合はステップS71に処理が進む。
(S75)再配置案選択部135は、現時点で集合Zに属しているデータ再配置案の評価値を合計し、合計評価値(補正前のもの)を算出する。
(S76)再配置案選択部135は、集合Zに属するデータ再配置案の中から、1つのデータ再配置案(データ再配置案X2)を選択する。
(S77)再配置案選択部135は、集合Zに属さないデータ再配置案の中から、データ再配置案X2以外の集合Zに属する何れのデータ再配置案とも影響範囲が重複しない1または2以上の他のデータ再配置案を検索する。そして、再配置案選択部135は、データ再配置案X2と検索した他のデータ再配置案とを交換した近傍解を生成する。
(S78)再配置案選択部135は、ステップS75と同様にして、ステップS77で生成した近傍解の合計評価値を算出する。そして、再配置案選択部135は、近傍解の合計評価値が、現在の集合Zの合計評価値よりも改善しているか(値が大きいほど良い指標の場合は、前者が後者より大きいか)判断する。合計評価値が改善している場合はステップS79に処理が進み、それ以外の場合はステップS80に処理が進む。
(S79)再配置案選択部135は、集合ZをステップS77で生成した近傍解へと更新する。すなわち、再配置案選択部135は、集合Zからデータ再配置案X2を削除し、ステップS77で検索した他のデータ再配置案を集合Zに追加する。
(S80)再配置案選択部135は、現時点の集合Zが示すデータ再配置案の組み合わせを基準として、十分に近傍解を探索したか(探索の停止条件を満たしたか)判断する。探索の停止条件としては、例えば、集合Zを更新せずに全ての考え得る近傍解を探索したことや、集合Zを更新せずに探索した近傍解の数が所定の上限に達したことなどが考えられる。探索の停止条件を満たした場合、現時点の集合Zに属するデータ再配置案が、実行するデータ再配置案に決定される。それ以外の場合、ステップS76に処理が進む。
次に、第2の実施の形態の情報処理システムの構成の変形例について説明する。上記では、サーバ装置100が集中的にデータを管理することとした。これに対し、複数のサーバ装置が分散してデータを管理することも可能である。
図25は、他の情報処理システムの例を示す図である。
変形例に係る情報処理システムは、クライアント装置21a,22aおよびサーバ装置100a,100b,100cを有する。クライアント装置21a,22aおよびサーバ装置100a,100b,100cは、ネットワーク20に接続されている。
サーバ装置100a,100b,100cは、複数のページのデータを分散して記憶する。例えば、サーバ装置100aがページ31のデータを記憶し、サーバ装置100bがページ32のデータを記憶し、サーバ装置100cがページ33のデータを記憶する。
クライアント装置21a,22aは、アクセスしたい単位データを記憶するサーバ装置を知っている場合、当該サーバ装置に対してアクセス要求を送信する。一方、クライアント装置21a,22aは、アクセスしたい単位データを記憶するサーバ装置を知らない場合、サーバ装置100a,100b,100cの全てにアクセス要求を送信するようにしてもよいし、任意の1つのサーバ装置に対してアクセス要求を送信してもよい。前者の場合、アクセス要求で指定された単位データをもつサーバ装置のみ、アクセス要求の送信元に応答すればよい。後者の場合、アクセス要求を受信したサーバ装置は、アクセス要求で指定された単位データをもつサーバ装置にアクセス要求を転送する。サーバ装置100a,100b,100cは、ページとサーバ装置との対応関係の情報を保持している。
アクセスの連続性を検出するため、サーバ装置100a,100b,100cは、受信したアクセス要求が指定する単位データのデータIDを相互に通知し合う。または、クライアント装置21a,22aが、前回アクセスした単位データのデータIDをアクセス要求に付加する。これにより、サーバ装置100a,100b,100cそれぞれは、自装置に記憶された単位データについての関連性情報を収集できる。サーバ装置100a,100b,100cそれぞれは、収集した関連性情報を用いて、自装置が管理するページに関する再配置案を生成しデータ再配置を実行すればよい。データ再配置の相手ページが他のサーバ装置に存在する場合、サーバ装置間で単位データが移動される。
第2の実施の形態の情報処理システムによれば、複数のデータ再配置案それぞれに対して評価値が算出される。複数の影響範囲レベルそれぞれについて、各データ再配置案の影響範囲を仮定して、合計評価値が最良となるデータ再配置案の組み合わせが算出される。そして、合計評価値が干渉レートにより補正されて複数の影響範囲レベルの間で比較され、一の影響範囲レベルが選択され、実行するデータ再配置案の組み合わせが決定する。また、データ再配置後のデータアクセス状況が監視され、干渉レートが更新される。
これにより、複数のデータ再配置案を並行して評価し、採用した2以上のデータ再配置案を任意の順序で実行することができる。よって、複数のデータ再配置案を逐次評価して実行可否を判断する場合と比べて、生成された全てのデータ再配置案を検討し終えるまでの時間を短縮することができる。また、評価値はデータ再配置案それぞれについて算出すればよく、2以上のデータ再配置案の組み合わせに対して算出しなくてもよい。よって、膨大な数の組み合わせを計算しなくてよく、サーバ装置100の計算負荷を低減できる。
また、採用するデータ再配置案を決定するにあたり、想定する影響範囲の大きさが異なる複数の影響範囲レベルが検討される。よって、2以上のデータ再配置案の組み合わせを直接的に評価しなくてもデータ再配置案の間の干渉を考慮されると共に、採用するデータ再配置案の数を適切な数に調整することができる。すなわち、採用するデータ再配置案が少な過ぎてアクセス性能が十分に改善されないリスクや、採用するデータ再配置案が多すぎるために干渉が大きくなり期待する効果が得られなくなるリスクを低減できる。また、データ再配置を行った後は、アクセス性能が監視されて、予想される干渉の程度を示す干渉レートが更新される。よって、次にデータ再配置案を検討するときの精度を向上させることができる。以上により、データ再配置案の組み合わせを効率的に決定できる。
なお、前述のように、第1の実施の形態の情報処理は、コンピュータにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、クライアント装置21,22(または、クライアント装置21a,22a)やサーバ装置100(または、サーバ装置100a,100b,100c)にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体113)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムをコピーして実行してもよい。