(57)【要約】【課題】関連するデータをグループ化するシステムにおいて、システムの性能低下を伴わずにデータグループのサイズの増大が可能であるかを判定する技術を提供する。【解決手段】複数のグループのデータを保存する格納装置からアクセス要求に対応するデータのグループのデータをメモリにロードするデータ管理装置から、アクセスされたグループのアクセス順とデータサイズとを含むアクセス履歴から、メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、仮想容量のメモリに配置される配置グループ群を推定し、所定期間における、メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが配置グループ群に含まれない事象の発生数の変化に基づいて、いずれかのグループのサイズの増大の可否を判定することにより、上記課題の解決を図る。【選択図】図３
2017072929.tif 000002
【特許請求の範囲】
【請求項１】
データ間の関連性に応じてグループ化された複数のグループのデータを保存する格納装置からアクセス要求に対応するデータを含むグループのデータをメモリにロードし、該アクセス要求に対して応答するコンピュータに、
所定期間においてアクセスされたグループのアクセス順とデータサイズとを含む第１のアクセス履歴情報を取得し、
前記メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、前記第１のアクセス履歴情報から、該仮想容量の前記メモリに配置されるグループ群を示す第１の配置グループ群を推定し、
所定期間における、前記メモリ容量の仮想的な変化に応じた前記アクセス要求に対応するデータが前記第１の配置グループ群に含まれない事象の発生回数の変化に基づいて、いずれかのグループのデータサイズの増大の可否を判定する
処理を実行させるデータ管理プログラム。
【請求項２】
前記いずれかのグループのデータサイズの増大の可否の判定において、
所定期間における、前記メモリ容量の仮想的な変化に応じた前記アクセス要求に対応するデータが前記第１の配置グループ群に含まれない事象の発生回数の変化と、前記メモリの物理容量の範囲内における変化した該メモリの仮想容量とに基づいて、前記いずれかのグループのデータサイズの増大の可否を判定する
処理を実行させるデータ管理プログラム。
【請求項３】
前記いずれかのグループのデータサイズの増大の可否の判定において、
前記メモリの物理容量の範囲内で、前記メモリの仮想容量の変化に対する、前記事象の発生回数が閾値より小さくなったときの仮想容量に基づいて、前記いずれかのグループのデータサイズの増大の可否を判定する
ことを特徴とする請求項１に記載のデータ管理プログラム。
【請求項４】
前記いずれかのグループのデータサイズの増大の可否の判定において、
前記メモリの物理容量の範囲内で、前記メモリの仮想容量の変化に対する、前記事象の発生回数の変化についての曲線を算出し、該曲線の変曲点に対応する仮想容量に基づいて、前記いずれかのグループのデータサイズの増大の可否を判定する
ことを特徴とする請求項１に記載のデータ管理プログラム。
【請求項５】
前記いずれかのグループのデータサイズの増大の可否の判定において、
前記メモリに配置されているグループのデータサイズの合計が前記事象の発生回数が閾値より小さくなったときの仮想容量より大きい場合、前記いずれかのグループのデータサイズの増大ができないと判定する
ことを特徴とする請求項３に記載のデータ管理プログラム。
【請求項６】
前記いずれかのグループのデータサイズの増大の可否の判定において、
前記メモリに配置されているグループのデータサイズの合計が前記曲線の変曲点に対応する仮想容量より大きい場合、前記いずれかのグループのデータサイズの増大ができないと判定する
ことを特徴とする請求項４に記載のデータ管理プログラム。
【請求項７】
前記コンピュータに、さらに、
所定期間において前記アクセス要求に応じて仮想的にアクセスされたグループのアクセス順とサイズとを含む第２アクセス履歴情報であって、該第２アクセス履歴情報に含まれる該グループのデータサイズの平均が第１アクセス履歴情報に含まれるグループのデータサイズの平均と異なる該第２アクセス履歴情報を取得し、
前記メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、前記第２アクセス履歴情報から、該仮想容量の前記メモリに配置されるグループ群を示す第２の配置グループ群を推定し、
所定期間における、前記メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが前記第２の配置グループ群に含まれない事象の発生回数の変化と、前記所定期間における、前記メモリ容量の仮想的な変化に応じた前記アクセス要求に対応するデータが前記第１の配置グループ群に含まれない事象の発生回数の変化と前記第２アクセス履歴情報に含まれる前記グループのデータサイズの平均とに基づいて、グループのデータサイズの増大の許容が可能であると判定する
ことを特徴とする請求項１に記載のデータ管理プログラム。
【請求項８】
データ間の関連性に応じてグループ化された複数のグループのデータを保存する格納装置からアクセス要求に対応するデータを含むグループのデータがロードされて配置されるメモリと、
所定期間においてアクセスされたグループのアクセス順とデータサイズとを含む第１のアクセス履歴情報を取得する取得部と、
前記メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、前記第１のアクセス履歴情報から、該仮想容量の前記メモリに配置されるグループ群を示す第１の配置グループ群を推定する推定部と、
所定期間における、前記メモリ容量の仮想的な変化に応じた前記アクセス要求に対応するデータが前記第１の配置グループ群に含まれない事象の発生回数の変化に基づいて、いずれかのグループのデータサイズの増大の可否を判定する判定部と、
を備えることを特徴とするデータ管理装置。
【請求項９】
データ間の関連性に応じてグループ化された複数のグループのデータを保存する格納装置からアクセス要求に対応するデータを含むグループのデータをメモリにロードし、該アクセス要求に対して応答するコンピュータが、
所定期間においてアクセスされたグループのアクセス順とデータサイズとを含む第１のアクセス履歴情報を取得し、
前記メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、前記第１のアクセス履歴情報から、該仮想容量の前記メモリに配置されるグループ群を示す第１の配置グループ群を推定し、
所定期間における、前記メモリ容量の仮想的な変化に応じた前記アクセス要求に対応するデータが前記第１の配置グループ群に含まれない事象の発生回数の変化に基づいて、いずれかのグループのデータサイズの増大の可否を判定する
処理を行うデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理プログラム、データ管理装置、およびデータ管理方法に関する。
【背景技術】
【０００２】
ストレージ装置は、サイズの小さなデータへの不規則なアクセスにおけるスループットが低く、シーケンシャルアクセスのコストに比べて、ランダムアクセスのコストが高い。このスループットを向上させる技術として、キャッシュ技術がある。
【０００３】
キャッシュ技術は、処理速度の速い制御装置が低速の記憶装置からデータをより速く読み出す場合にメモリを使用して処理時間を短縮する技術である。制御装置が低速の記憶装置からデータを読み出した場合、その読み出したデータを一時的にメモリに保持しておくことで、次回からはハードディスクより読み書きが早いメモリからデータを読み出せる。
【０００４】
キャッシュ技術の１つとして、Least Recently Used（ＬＲＵ）キャッシュ技術がある。ＬＲＵキャッシュ技術は、小容量で高速な記憶装置（例えば、キャッシュメモリ）がいっぱいになったとき、その中にあるデータのうち、不使用の時間が最も長いデータを大容量で低速な記憶装置（例えば、主記憶装置）に保存する、というのが基本のアルゴリズムである。ＬＲＵキャッシュ技術は、アプリケーションプログラムのロジックを知らなくても効果を得られるアルゴリズムであり、短期間のうちに（キャッシュに載っているうちに）同じデータに繰り返しアクセスする場合にのみ効果を発揮する。キャッシュメモリの量によってデータのキャッシュ生存期間が決まるが、そのキャッシュ生存期間を超えるサイクルでの繰り返しアクセスには効果がない。
【０００５】
メモリの容量を超えて大量データを処理する場合、ディスクへのアクセスが多発することで、データ処理性能が大きく劣化する。
【０００６】
そこで、キャッシュ技術の１つとして、アクセス履歴に基づき、関連性のあるデータを同一のセグメントに取りまとめ、データの再配置を行う技術（以降、データ再配置技術）がある（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１３／１１４５３８号
【特許文献２】特開２００８−５９４３８号公報
【特許文献３】特開２００８−５１０２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
データ再配置技術では、アクセスパターンに基づき、関連するデータをグループ化し、グループ化したデータ単位で、ディスク装置からのグループ化したデータの読み出し、及びディスク装置への書き込みを行う。
【０００９】
このとき、グループサイズを増加させることで、プリフェッチにより、より多くの関係するデータがキャッシュに読み出されるので、次回以降のアクセスにおいてキャッシュから読み出される可能性がより高くなり、アクセス性能が向上する。このように、データ再配置技術ではグループサイズの増加により、プリフェッチの効果が得られる。
【００１０】
しかしながら、対象のシステムがキャッシュとして保持できるメモリ量には上限があるため、場合によっては、グループサイズを増加することにより、キャッシュに載るグループ数が減少し、キャッシュミスの多発による性能低下（スラッシング）が生じる。
【００１１】
データ再配置の方法によっては、グループサイズを増加させるときに、グループサイズを増加によるプリフェッチの効果と、グループサイズ増加に伴うキャッシュミス多発による性能低下のどちらが生じるものであるのかを判別することができない。
【００１２】
一側面として、本発明は、関連するデータのグループ化により性能低下が生じるかを判定することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一側面に係るデータ管理プログラムは、コンピュータに、次の処理を実行させる。コンピュータは、データ間の関連性に応じてグループ化された複数のグループのデータを保存する格納装置からアクセス要求に対応するデータを含むグループのデータをメモリにロードし、該アクセス要求に対して応答する。コンピュータは、所定期間においてアクセスされたグループのアクセス順とデータサイズとを含む第１のアクセス履歴情報を取得する。コンピュータは、メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、第１のアクセス履歴情報から、仮想容量のメモリに配置されるグループ群を示す第１の配置グループ群を推定する。コンピュータは、所定期間における、メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが第１の配置グループ群に含まれない事象の発生回数の変化に基づいて、いずれかのグループのデータサイズの増大の可否を判定する。
【発明の効果】
【００１４】
本発明の一側面によれば、関連するデータをグループ化するシステムにおいて、システムの性能低下を伴わずにデータグループのサイズの増大が可能であるかを判定することができる。
【図面の簡単な説明】
【００１５】
【図１】データ再配置技術によるメモリ容量の制限に基づくスラッシングの発生を説明するための図である。
【図２】本実施形態の適応例を説明するための図である。
【図３】本実施形態におけるデータ管理装置の一例を示す。
【図４】本実施形態におけるデータ管理装置のハードウェア構成例である。
【図５】本実施形態におけるデータ管理装置の機能構成例である。
【図６】本実施形態における仮想ＬＲＵキューの一例を示す。
【図７】本実施形態におけるアクセス履歴情報の一例を示す。
【図８】本実施形態における仮想ＬＲＵキューによる平均グループサイズに対する性能変化の推定について説明するための図である。
【図９】本実施形態におけるグループアクセス監視部のフローを示す。
【図１０】本実施形態におけるスラッシング発生判定部によるメモリ量−ランダムアクセス発生量グラフを生成するフローを示す。
【図１１】本実施形態におけるスラッシング発生判定部による判定処理フローを示す。
【図１２】本実施形態（変形例）におけるデータ管理装置の機能構成例である。
【図１３】本実施形態（変形例）におけるアクセス履歴情報の一例を示す。
【図１４】本実施形態（変形例）におけるグループアクセス監視部のフローを示す。
【図１５】本実施形態（変形例）におけるスラッシング発生判定部による判定処理フローを示す。
【発明を実施するための形態】
【００１６】
データ再配置技術では、コンピュータの制御部がアクセスパターンに基づき、関係性のあるデータを動的にグループ化して、ストレージ上の連続した領域に格納する。制御部は、データにアクセスするときは、目的のデータだけでなく、目的のデータの所属するグループ全体をストレージからプリフェッチしメモリにキャッシュする。アクセス対象のデータがキャッシュされているグループに所属している場合は、ストレージへのアクセスをスキップすることができる。メモリ量が不足した場合は、アクセスされていない期間の長いグループから順にディスクに書き戻す。つまり、グループ単位でのＬＲＵ方式でディスクへのデータの書き戻しが行われる。
【００１７】
これにより、グループサイズを増加させることでプリフェッチによりデータへのアクセス性能が向上する。その結果、プリフェッチの効果によりランダムアクセスコストが削減され、スループットが向上する。
【００１８】
また、グループ全体へのアクセスは1度のランダムアクセスで済む。グループは単一のデータよりもサイズが大きくなるのでシーケンシャルアクセスコストが増加するが、ランダムアクセスのコストと比較すると無視できる。グループがキャッシュに載っている間に、同一グループに属する複数のデータにアクセスする場合に効果を発揮する。同じデータに繰り返しアクセスする場合にキャッシュが有効であるのは、ＬＲＵと同等である。
【００１９】
データ再配置技術において、プリフェッチ効果を変動させる要因として、例えば、グループサイズと、データのグルーピングとが挙げられる。グループサイズが大きくなるとプリフェッチの効果が高まる。また、データのグルーピングについては、どのデータをグループに入れるかによってプリフェッチのヒット率が変化する。
【００２０】
データ再配置技術において、キャッシュ効果を変動させる要因としては、メモリに載るグループの個数が挙げられる。メモリに載るグループの個数が多ければ多いほど、キャッシュの効果が高まる。ただし、一般的にはある程度の個数に達するとそこから先は効果の向上は頭打ちとなる。以後、メモリに載るグループの個数を、「グループキャッシュ数」と呼ぶことにする。
【００２１】
グループサイズを大きくするとメモリを多く消費する。グループサイズと、グループキャッシュ数との間には、以下の関係がある。
【００２２】
グループキャッシュ数  ＜  メモリ総量／グループサイズ平均
上記関係式より、グループサイズとグループキャッシュ数とのうち一方を増やすと、他方を減らす必要がある。
【００２３】
データ再配置技術ではグループサイズの増加により、プリフェッチの効果が得られる。その一方、対象のシステムがキャッシュとして保持できるメモリ量には上限があるため、キャッシュに載るグループ数が減少し、場合によってはキャッシュミス多発による性能低下（スラッシング）が生じる。
【００２４】
既存のデータ再配置技術ではグループサイズを増加させるときに、グループサイズの増加によるプリフェッチの効果と、グループサイズ増加に伴うキャッシュミス多発による性能低下のどちらが強く生じるのかを判別することができない。これについて、図１を説明する。
【００２５】
図１は、データ再配置技術によるメモリ容量の制限に基づくスラッシングの発生を説明するための図である。ここで、データのサイズは全て同じであると仮定する。また、アクセススレッドのスレッド並行度（並行アクセススレッド数）は５であり、アクセススレッドはそれぞれ、グループＡ〜Ｅにアクセスしていると仮定する。
【００２６】
最大２０個のデータを保持する容量があるメモリを有するシステムにおいて、図１（Ａ）の「最適化前」に示されているように、メモリには、グループＡ〜Ｄに含まれる計２０個のデータが保持されていると仮定する。グループＡはＡ１，Ａ２，Ａ３，Ａ４のデータを含む。グループＢは、Ｂ１，Ｂ２，Ｂ３，Ｂ４のデータを含む。グループＣは、Ｃ１，Ｃ２，Ｃ３，Ｃ４のデータを含む。グループＤは、Ｄ１，Ｄ２，Ｄ３，Ｄ４のデータを含む。グループＥは、Ｅ１，Ｅ２，Ｅ３，Ｅ４のデータを含む。
【００２７】
このとき、グループＦ（Ｆ１，Ｆ２，Ｆ３，Ｆ４）、グループＧ（Ｇ１，Ｇ２，Ｇ３，Ｇ４）は、メモリ容量の制限により、メモリには保持されていない。
【００２８】
一方、最大２５個のデータを保持する容量があるメモリを有するシステムにおいて、図１（Ｂ）の「最適化前」に示されているように、メモリには、グループＡ〜Ｆに含まれる計２４個のデータが保持されていると仮定する。グループＡは、Ａ１，Ａ２，Ａ３，Ａ４のデータを含む。グループＢは、Ｂ１，Ｂ２，Ｂ３，Ｂ４のデータを含む。グループＣは、Ｃ１，Ｃ２，Ｃ３，Ｃ４のデータを含む。グループＤは、Ｄ１，Ｄ２，Ｄ３，Ｄ４のデータを含む。グループＥは、Ｅ１，Ｅ２，Ｅ３，Ｅ４のデータを含む。グループＦは、Ｆ１，Ｆ２，Ｆ３，Ｆ４のデータを含む。
【００２９】
このとき、グループＧ（Ｇ１，Ｇ２，Ｇ３，Ｇ４）は、メモリ量の制限により、メモリには保持されていない。
【００３０】
次に、データ再配置技術により各グループのサイズが成長し、各グループが５つのデータを保持するようになったとする。
【００３１】
最大２０個のデータを保持する容量があるメモリを有するシステムの場合、図１（Ａ）の「最適化後」に示すように、グループＡ〜Ｄ（データ２０個）はメモリに保持されたままであるが、データ容量の制限により、グループＥは、メモリから押し出されてディスクに格納されてしまう。
【００３２】
この場合、５つのスレッドがグループＡ〜Ｅにアクセスしているので、メモリから、グループＥのアクセスに対してグループＡ〜Ｄのいずれかが落ちる。
【００３３】
これを繰り返すことにより頻繁にスラッシングが発生し、データ再配置技術による性能向上が打ち消されてしまう。
【００３４】
一方、最大２５個のデータを保持する容量があるメモリを有するシステムの場合、メモリ容量に余裕があり、図１（Ｂ）の「最適化後」に示すように、５つのグループがメモリ（キャッシュ）に保持されている。
【００３５】
この場合、５つのスレッドがグループＡ〜Ｅにアクセスしても、スラッシングは発生せず、単純にプリフェッチ性能が向上する。
【００３６】
スラッシングの発生を防ぐためには、スラッシングが発生しないグループキャッシュ数を保てるように、グループサイズの成長を抑止することが考えられる。図１（Ａ）の例では、データ２０個分の容量を有するメモリを搭載したシステムにおいては、グループサイズを４個以下に抑えることが考えられる。
【００３７】
しかし、データ再配置技術では、メモリ量の制限について考慮されておらず、スラッシングの発生状況を把握していない。よって、そもそもグループサイズの成長を抑止すべきかどうかの区別がつかない。
【００３８】
そこで、本実施形態では、関連するデータがグループ化された、複数のデータグループが存在し、一部のデータがメモリ上にロードされ、外部からのアクセス要求に対応して応答するデータシステムにおいて、コンピュータが、以下の処理を行う。すなわち、コンピュータは、データシステムにおける各データのグループ化状態と、データシステムの個別のデータに対するアクセス履歴から、対象のデータがメモリに含まれないアクセス要求（ランダムアクセス）の発生を許容できる臨界メモリ量を求める。ここで、臨界メモリ量は、ランダムアクセス要求が急増するメモリ量でもある。コンピュータは、臨界メモリ量と、システムの利用可能メモリ量に基づいて、特定のデータグループのグループサイズの増加可否を判定する。
【００３９】
本実施形態では、メモリに保持されているグループ数の変化に対する性能の変化を、全グループをメモリに載せたと仮定して管理する仮想ＬＲＵキューを用いて、臨界メモリ量を簡易的に測定する。
【００４０】
なお、本実施形態では、グループサイズの増加において、プリフェッチによる効果と、スラッシングによる効果（現象）の大小について判定される。
【００４１】
また、本実施形態では、それまで、システム上でグループ化されたデータが、どのような規則によりグループ化されているかを問わない。例えば、データ再配置技術では、アクセス履歴に基づいてデータをグループ化しているが、特にこれに限定されず、他の情報に基づいてデータをグループ化してもよい。
【００４２】
これにより、関連するデータをグループ化するシステムにおいて、平均グループサイズの増加が、スラッシング急増による効果（現象）を生じさせるものであるかを判別することができる。
【００４３】
図２は、本実施形態の適応例を説明するための図である。図２の例では、最大２５個のデータを保持する容量があるメモリを有するシステムにおいて、５スレッドそれぞれがグループＡ〜Ｅへアクセスしていると仮定する。この場合、グループキャッシュ数が５を下回ると、スラッシングが発生し、急激に性能が劣化する限界状態にある。この状態が、仮想ＬＲＵキューを用いて検出される。つまり、メモリ上の全グループのサイズが現在のキャッシュサイズを下回る場合、すなわち、平均グループサイズがその限界状態時点よりも拡大すると、性能が急激に劣化することが、後述する仮想ＬＲＵキューを用いて判定される。
【００４４】
この性能劣化の臨界状態が検出された場合、その状態でのグループサイズ以上にならないように、平均グループサイズの成長を抑止させることにより、スラッシングの発生による性能低下を防ぐことが可能となる。
【００４５】
以下に、本実施形態の詳細について説明する。
図３は、本実施形態におけるデータ管理装置の一例を示す。データ管理装置１は、メモリ２、取得部３、推定部４、判定部５を含む。
【００４６】
メモリ２は、格納装置６からアクセス要求に対応するデータを含むグループのデータがロードされて配置される。メモリ２の一例としては、メモリ１３が挙げられる。格納装置６は、データ間の関連性に応じてグループ化された複数のグループのデータを保存する。格納装置６の一例として、ストレージ装置１４が挙げられる。
【００４７】
取得部３は、所定期間においてアクセスされたグループのアクセス順とデータサイズとを含む第１のアクセス履歴情報を取得する。取得部３の一例として、スラッシング発生判定部２８が挙げられる。
【００４８】
推定部４は、メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、第１のアクセス履歴情報から、仮想容量のメモリに配置されるグループ群を示す第１の配置グループ群を推定する。推定部４の一例としては、スラッシング発生判定部２８が挙げられる。
【００４９】
判定部５は、所定期間における、メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが第１の配置グループ群に含まれない事象の発生回数の変化に基づいて、いずれかのグループのデータサイズの増大の可否を判定する。判定部６の一例としては、スラッシング発生判定部２８が挙げられる。
【００５０】
判定部５は、所定期間における、メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが第１の配置グループ群に含まれない事象の発生回数の変化と、メモリの物理容量の範囲内における変化したメモリの仮想容量とに基づいて、次の処理を行う。すなわち、判定部５は、いずれかのグループのデータサイズの増大の可否を判定する。
【００５１】
このように構成することにより、関連するデータをグループ化するシステムにおいて、システムの性能低下を招かずにデータグループのサイズの増大が可能であるかを判定することができる。
【００５２】
判定部５は、メモリの物理容量の範囲内で、メモリの仮想容量の変化に対する、事象の発生回数が閾値より小さくなったときの仮想容量に基づいて、いずれかのグループのデータサイズの増大の可否を判定してもよい。また、判定部５は、メモリの物理容量の範囲内で、メモリの仮想容量の変化に対する、事象の発生回数の変化についての曲線を算出し、曲線の変曲点に対応する仮想容量に基づいて、いずれかのグループのデータサイズの増大の可否を判定してもよい。
【００５３】
判定部６は、メモリに配置されているグループのデータサイズの合計が事象の発生回数が閾値より小さくなったときの仮想容量より大きい場合、いずれかのグループのサイズの増大ができないと判定してもよい。また、判定部６は、メモリに配置されているグループのサイズの合計が曲線の変曲点に対応する仮想容量より大きい場合、いずれかのグループのサイズの増大ができないと判定してもよい。
このように構成することにより、グループのサイズの増大を抑止することができる。
【００５４】
取得部３は、さらに、所定期間においてアクセス要求に応じて仮想的にアクセスされたグループのアクセス順とサイズとを含む第２アクセス履歴情報を取得する。第２アクセス履歴情報に含まれるグループのデータサイズの平均が第１アクセス履歴情報に含まれるグループのデータサイズの平均よりも大きい。
【００５５】
推定部４は、メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、第２アクセス履歴情報から、その仮想容量のメモリに配置されるグループ群を示す第２の配置グループ群を推定する。
【００５６】
判定部５は、第1変化と、第２変化と、第２アクセス履歴情報に含まれるグループのデータサイズの平均とに基づいて、グループサイズの増大の許容が可能であると判定する。第1変化とは、所定期間における、メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが第２の配置グループ群に含まれない事象の発生回数の第変化のことである。第２変化とは、所定期間における、メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが第１の配置グループ群に含まれない事象の発生回数の変化のことである。
【００５７】
このように構成することにより、第１アクセス履歴情報に基づくグループと、第２アクセス履歴情報に基づくグループとの間で、プリフェッチ効果の向上度と、平均グループサイズの拡大によるランダムアクセス発生量の増加による性能低下を比較することができる。そして、第２アクセス履歴情報に基づくグループの配置の方が、システムの性能が向上する場合には平均グループサイズの増加を許容できるものと判定することができる。
【００５８】
図４は、本実施形態におけるデータ管理装置のハードウェア構成例である。データ管理装置１１は、例えば制御装置１２と、メモリ装置（以下、「メモリ」と称する。）１３と、ストレージ装置１４とを含む。また、データ管理装置１１は、通信ネットワーク（以下、「ネットワーク」と称する）１６を介して情報処理装置の一例であるクライアントコンピュータ（以下、「クライアント」と称する）１５に接続されている。
【００５９】
制御装置１２は、例えば、プログラムカウンタや命令デコーダ、各種演算器、ＬＳＵ（Load Store Unit）、汎用レジスタ等を有する演算処理装置としてのＣＰＵ（Central Processing Unit）等のプロセッサである。
【００６０】
メモリ１３は、ストレージ装置１４に比して高速にアクセス可能な記憶装置である。メモリ１３としては、例えば、ＲＡＭ（Random Access Memory）、フラッシュメモリ等である。ストレージ装置１４は、例えば、ＨＤＤ（Hard Disk Drive）等のメモリ１３に比してアクセス速度が低速なディスク装置である。
【００６１】
ストレージ装置１４には、データ管理装置１１が提供するデータがグループ単位で記憶されている。本実施形態の一例として、グループとは、データへのアクセス要求（以下、アクセス要求と称する）の履歴により関連性が認められるデータの集合であり、後述するように制御装置１２の処理によって内容が更新される。アクセス要求は、リード（READ）アクセス要求及びライト（WRITE）アクセス要求を含む。なお、本実施形態の一例として、このようにアクセス履歴に基づいてデータをグループ化しているが、これに限定されず、他の情報に基づいてデータをグループ化してもよい。
【００６２】
メモリ１３には、例えばストレージ装置１４に格納されたグループのうち高頻度にアクセスされるグループがストレージ装置１４から読み出されて格納される。これによって、データ管理装置１１は、入力されたアクセス要求に対して高速にデータを出力することができる。
【００６３】
データ管理装置１１は、上記の構成に加えて、ＢＩＯＳ（Basic Input/Output System）を格納したＲＯＭ、プログラムメモリ等を有する。制御装置１２が実行するプログラムは、ネットワーク１６を介して取得されてもよいし、可搬型メモリ装置やＣＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体がデータ管理装置１１に装着されることにより取得されてもよい。
【００６４】
図５は、本実施形態におけるデータ管理装置の機能構成例である。上述の通り、データ管理装置１１は、制御装置１２、メモリ１３、ストレージ装置１４を含む。メモリ１３は、ストレージ装置１４から読み出された複数のセグメントをキャッシングして、一時的に格納する領域（以下、「キャッシュ領域」と称する）３６を含む。キャッシュ領域３６の容量が不足した場合、ＬＲＵ方式や、ＬＦＵ（Least Frequently Used）方式等のアルゴリズムを用いて、キャッシュ領域３６からいずれかのデータグループが抽出され、ストレージ装置１４に書き戻される。
【００６５】
メモリ１３は、グループ管理テーブル３１、関連性管理テーブル３２、仮想ＬＲＵキュー、アクセス履歴情報３４、閾値情報３５を保持する。グループ管理テーブル３３は、データを特定するキーと、そのデータが属するグループとの対応関係を示す情報を格納する。関連性管理テーブル３２は、リクエストで指定されたデータ毎に、前回リクエストで指定されたデータを順次関係付けて、累積したその関係付けの情報を管理するテーブルである。
【００６６】
仮想ＬＲＵキュー３３は、アクセスされたグループを、アクセスの新しい順に、キャッシュ領域３６から追い出されたグループも含めて管理する。閾値情報３５は、本実施形態で用いる閾値を含む。
【００６７】
制御装置１２は、本実施形態にかかるプログラムを実行することにより、要求受付部２１、解析判断部２２、関係性解析部２３、配置決定部２４、再配置部２５、書戻部２６、グループアクセス監視部２７、スラッシング発生判定部２８として機能する。
【００６８】
要求受付部２１は、クライアント１５等の要求元から入力されたリクエストに応じてメモリ１３を検索し、メモリ１３にリクエストで指定されたレコードがなければさらにストレージ装置１４を検索し、リクエストで指定されたレコードを要求元に送信する。なお、リクエストは、クライアント５１が送信するだけでなく、データ管理装置１１において実行されているプロセスその他の主体がリクエストの発行元となる場合もあり得る。また、入出力装置がデータ管理装置１１に接続されている場合、ユーザが入出力装置に対してリクエストを入力することも想定される。
【００６９】
リクエストが入力されると、要求受付部２１は、まずメモリ１３からリクエストで指定されたデータを検索する。リクエストで指定されたデータがメモリ１３上に存在する場合に、要求受付部２１は、そのデータをメモリ１３から読み出して要求元に返信する。
【００７０】
また、要求受付部２１は、リクエストで指定されたデータがメモリ１３上に存在しない場合には、ストレージ装置１４からリクエストで指定されたデータを検索する。入出力管理部２２は、リクエストで指定されたデータがストレージ装置１４上に存在する場合に、グループ管理テーブル３１を用いて、リクエストで指定されたデータの属するグループに含まれる全データをストレージ装置１４から読み出す。そして、要求受付部２１は、その読み出したグループに含まれる全データのうち、リクエストで指定されたデータを要求元に返信する。このとき、要求受付部２１は、その読み出したグループに含まれる全データをメモリ１３に格納する。
【００７１】
なお、上記では、要求受付部２１は、ストレージ装置１４から読み出したグループに含まれる全データをメモリ１３へ格納する処理を、リクエストがあったタイミングで行う場合について説明したが、これに限定されない。例えば、要求受付部２１は、一定期間のアクセス頻度を取得してアクセス頻度が高いグループを優先的にストレージ装置１４から読み出してメモリ１３に格納してもよい。
【００７２】
解析判断部２２は、関係性管理テーブル３２を用いて、連続するリクエスト間で指定された各データが属するグループが同一かどうかを判定することにより、関連性解析部２３に関連性の解析を行わせるか否かを決定する。
【００７３】
関連性解析部２４は、解析要否判断部２３の判定結果に応じて、関係性管理テーブル３２から、今回のリクエストで指定されたデータの属するグループの各データと、前回のリクエストで指定されたデータの属するグループの各データとの関連性を解析する。再配置決定部２４は、その解析結果に基づいて、データの所属するグループの決定を行う。
【００７４】
再配置部２５は、関連性解析部２４の決定に従い、グループ管理テーブル３１のグループの配置を更新する。
【００７５】
書戻部２６は、キャッシュ領域３６の容量が不足すると、要求受付部２１からの指示に基づいて、キャッシュ領域３６から溢れたグループをストレージ装置１４に書き戻す書き戻し処理を実行する。
【００７６】
グループアクセス監視部２７は、メモリ１３及びストレージ装置１４に格納されたグループへのアクセスを監視し、グループへのアクセスが発生する毎に、仮想ＬＲＵキュー３３及びアクセス履歴情報３４を更新する。
【００７７】
スラッシング発生判定部２８は、仮想ＬＲＵキュー３３とアクセス履歴情報３４とから、仮想メモリ量とランダムアクセス発生量との関係を示すグラフ（仮想メモリ量−ランダムアクセス発生量グラフ）を生成する。スラッシング発生判定部２８は、生成した仮想メモリ量−ランダムアクセス発生量グラフに基づいて、ランダムアクセス発生量が閾値を下回る仮想メモリ量（臨界メモリ量）を特定する。具体的には、スラッシング発生判定部２８は、単位時間毎に、各仮想メモリ量に対するランダムアクセス発生量を算出し、記録する。この結果、スラッシング発生判定部２８は、現状が、メモリ量の不足、すなわちグループキャッシュ数の不足により性能低下している状態か否かを判定する。
【００７８】
ここで、ランダムアクセス発生量とは、仮想的にメモリ量を変化させた場合に、過去一定期間内の、キャッシュ領域３６の範囲外へのデータに対するアクセスの量を示す。
【００７９】
スラッシング発生判定部２８は、グループキャッシュ数が不足している状態であると判定した場合、再配置部２５に、それ以上のグループサイズの成長をさせないように、サイズ拡大抑止通知を発行する。
【００８０】
再配置部２５は、サイズ拡大抑止通知を受信すると、平均グループサイズが増大しない範囲で、グループ管理テーブル３１のグループの配置を更新する。
【００８１】
なお、グループサイズの成長の抑止は、全てのグループを対象にしてもよいし、一部のグループを対象にしてもよい。
【００８２】
図６は、本実施形態における仮想ＬＲＵキューの一例を示す。仮想ＬＲＵキュー３３は、アクセスされたグループを、アクセスの新しい順に、キャッシュ領域３６から追い出されたグループも含めてメモリ１３上で管理する。
【００８３】
仮想ＬＲＵキュー３３は、グループへのアクセスの履歴を保持し、グループへのアクセスがある度に仮想ＬＲＵキュー３３の保持する情報も順序を入れ替える。なお、現実のＬＲＵキューと、仮想ＬＲＵキュー３３の先頭部分は一致する。
【００８４】
図６において、左側末端が仮想ＬＲＵキュー３３の先頭である。仮想ＬＲＵキュー３３には、図６紙面の右側から左側に向かって、より直近にアクセスされたグループを特定する情報が格納される。
【００８５】
図６において、グループＡ〜Ｆは、実際にメモリ１３上に配置されているグループであるとする。また、グループＧ〜Ｊは、実際にメモリ上には配置されていないグループ（ストレージ装置１４上にのみ配置されているグループである。
【００８６】
仮想ＬＲＵキュー３３より、仮想的にメモリ量を変化させた場合に、過去一定期間内の、キャッシュ領域３６の範囲外へのデータに対するアクセスの量（ランダムアクセス発生量）を推定できる。
【００８７】
なお、グループサイズが頻繁に変更される場合には、仮想ＬＲＵキュー３３は、グループの順序だけでなく、その時のグループのサイズを保持してもよい。
【００８８】
グループサイズが頻繁に変更されない場合は、現在のグループサイズを用いて以後の演算を行う。
【００８９】
図７は、本実施形態におけるアクセス履歴情報の一例を示す。アクセス履歴情報３４は、最適なグループサイズの推定に必要な過去一定期間分のアクセス情報と、その直前の一つのアクセス情報（初期状態）を保持する。
【００９０】
アクセス履歴情報３４は、「アクセス時刻」３４−１、「アクセスされたグループ」３４−２、「仮想ＬＲＵキューの状態」３４−３のデータ項目を含む。「アクセス時刻」３４−１には、グループがアクセスされた時刻が格納される。「アクセスされたグループ」３４−２には、対応するアクセス時刻にアクセスされたグループを特定するグループ名が格納される。
【００９１】
「仮想ＬＲＵキューの状態」３４−３には、仮想ＬＲＵキュー３３の状態が格納される。具体的には、「仮想ＬＲＵキューの状態」３４−３には、グループ名と、そのグループ名で示されるグループのサイズ（またはデータ数）との組が、アクセスされた時刻が新しい順に格納される。なお、グループサイズの単位は、「ＭＢ（メガバイト）」である。
【００９２】
図８は、本実施形態における仮想ＬＲＵキューによる平均グループサイズに対する性能変化の推定について説明するための図である。仮想ＬＲＵキュー３３を用いることにより、（本来変化させられない）システムのメモリ量を変化させた場合のＬＲＵの性能変化（ランダムアクセス発生量の逆数で近似される）についての仮想メモリ量−ランダムアクセス発生量グラフを把握できる。ここで、平均グループサイズとは、仮想ＬＲＵキュー３３で管理される全グループのサイズの平均をいう。
【００９３】
平均グループサイズの変化に対するランダムアクセス発生量の変化と、メモリ量の変化に対するランダムアクセス発生量の変化とは同一ではないが、共にキャッシュの効果を示しており、近似値として扱える。
【００９４】
本来のシステムメモリ量に対するランダムアクセス発生量が閾値を下回っているのに、これより仮想メモリ量を減らすとランダムアクセス発生量が閾値を上回ってしまう場合、現状で平均グループサイズと性能が均衡していることが推定される。
【００９５】
つまり仮想メモリ量−ランダムアクセス発生量グラフから、これ以上仮想メモリ量を少なくする（すなわち、これ以上平均グループサイズを拡大する）と、ランダムアクセス発生量が急増する（スラッシングが発生する）ことが推測できる。このとき仮想メモリ量を最適メモリ量という。ただし、臨界メモリは、システムメモリ（物理メモリ）の容量の範囲内であることが必要である。
【００９６】
図８の場合、本来のシステムメモリ量は２０であり、閾値情報３５に保持されるランダムアクセス発生量の閾値は６である。この場合、メモリ量が１７．５を下回ると、ランダムアクセス発生量が閾値を上回ってしまう。したがって、最適メモリ量は、１７．５となる。
【００９７】
図９は、本実施形態におけるグループアクセス監視部のフローを示す。グループアクセス監視部２７は、図９のフローを、リクエストにより指定されたデータへのアクセスがある毎に実行する。
【００９８】
グループアクセス監視部２７は、リクエストにより指定されたデータへのアクセスがあった場合、アクセス時刻を記録し、ｔに設定する（Ｓ１）。
【００９９】
グループアクセス監視部２７は、グループ管理テーブル３１から、アクセス対象のデータが所属するグループを特定し、このアクセス対象となるグループを記録し、ｇに設定する（Ｓ２）。
【０１００】
グループアクセス監視部２７は、最新のアクセス履歴を保持するアクセス履歴情報３４に記録された仮想ＬＲＵキュー３３の状態を読み込み、その仮想ＬＲＵキュー３３の状態をｈ’に設定する（Ｓ３）。
【０１０１】
グループアクセス監視部２７は、ｈ’から、ｇとそのサイズの組を探す。ｈ’にｇとそのサイズの組がある場合、グループアクセス監視部２７は、ｈ’からその組を消去する。それから、グループアクセス監視部２７は、ｈ’における仮想ＬＲＵキューの先頭にｇと現在のグループサイズの組を挿入する。こうして更新されたｈ’を、ｈとする（Ｓ４）。
【０１０２】
グループアクセス監視部２７は、（ｔ，ｇ，ｈ）の組を、アクセス履歴情報３４に挿入する（Ｓ５）。
【０１０３】
図１０は、本実施形態におけるスラッシング発生判定部によるメモリ量−ランダムアクセス発生量グラフを生成するフローを示す。スラッシング発生判定部２８は、メモリ量−ランダムアクセス発生量グラフ上で点を作成する各仮想メモリ量それぞれに対して、図１０のフローを実行する。
【０１０４】
例えば１ＭＢ、２ＭＢ、３ＭＢ、・・・、１６ＭＢの仮想的なメモリ量に対して、ランダムアクセス発生量を推定して仮想メモリ量−ランダムアクセス発生量グラフを作成する場合は、図１０のフローがそれぞれの仮想的なメモリ量に対して１度ずつ実行される。
【０１０５】
スラッシング発生判定部２８は、直近の、一定期間のアクセス履歴情報を取得する（Ｓ１０）。
【０１０６】
スラッシング発生判定部２８は、仮想的なメモリ量（例えば１ＭＢ、２ＭＢ、３ＭＢ、・・・、１６ＭＢ）をｍに設定する。スラッシング発生判定部２８は、ランダムアクセス発生量を推測するパラメータｒａｎｄ＿ａｃｃｅｓｓを０で初期化する。（Ｓ１１）。
【０１０７】
次に、スラッシング発生判定部２８は、アクセス履歴情報３４において、取得したアクセス履歴情報に含まれる全レコード（ｎ個のレコード、ここで、ｎは任意の整数である。）に対して、Ｓ１２〜Ｓ１５の処理を行う。
【０１０８】
まず、スラッシング発生判定部２８は、アクセス履歴情報３４のｉ（ｉ：任意の整数、０＜ｉ≦ｎ）行目のレコードの項目「アクセスされたグループ」３４−２から、グループ名を取得し、ｋに設定する（Ｓ１２）。
【０１０９】
スラッシング発生判定部２８は、ｉ行目のレコードの直前のレコードの「仮想ＬＲＵキューの状態」３４−３の仮想ＬＲＵキューの先頭から末尾に向かって、グループ名、グループサイズの組を順に取り出し、グループサイズを加算する。スラッシング発生判定部２８は、加算されたグループサイズの値が仮想的なメモリ量mを超えるまで、グループサイズの加算を繰り返す。スラッシング発生判定部２８は、仮想的なメモリ量mを超えた時点の組に含まれるグループ名をｐに設定する（Ｓ１３）。ここで、仮想的なメモリ量mを超えた時点とは、あるグループＸまで加算した場合にｍがサイズの累計より小さく、かつグループＸの直前のグループＸ−１まで加算した場合にｍがサイズの累計より大きくなる場合のグループＸを含む。
【０１１０】
スラッシング発生判定部２８は、ｉ行目のレコードの直前のレコードの「仮想ＬＲＵキューの状態」３４−３の仮想ＬＲＵキューにおいて、ｐ以降の組にｋが存在するか否かを判定する（Ｓ１４）。
【０１１１】
ｉ行目のレコードの直前のレコードの仮想ＬＲＵキュー３３において、ｐより後の組にｋが存在する場合（Ｓ１４で「ＹＥＳ」）、スラッシング発生判定部２８は、ｒａｎｄ＿ａｃｃｅｓｓをインクリメントする（Ｓ１５）。
【０１１２】
直近の一定期間の履歴（ｎ個のレコード）全てについて、Ｓ１２〜Ｓ１５の処理が完了した場合、ｒａｎｄ＿ａｃｃｅｓｓの値が、その仮想的なメモリ量ｍに対するランダムアクセス発生量となる（Ｓ１６）。
【０１１３】
図１１は、本実施形態におけるスラッシング発生判定部による判定処理フローを示す。スラッシング発生判定部２８は、仮想的なメモリ量ｍに対して、その時のランダムアクセス発生量ｒａｎｄ＿ａｃｃｅｓｓを、ｆ（ｍ）と表現する（Ｓ２１）。
【０１１４】
次に、スラッシング発生判定部２８は、図１０にてランダムアクセス発生量の算出により得られた仮想的なメモリ量ｍの全てについて、小さい値から順に、ｆ（ｍ）がランダムアクセス発生量の閾値を下回るかを判定する（Ｓ２２）。ｆ（ｍ）がランダムアクセス発生量の閾値を下回らない場合（Ｓ２２で「ＮＯ」）、スラッシング発生判定部２８は、次に大きい仮想的なメモリ量ｍについて、Ｓ２２の処理を行う。
【０１１５】
ｆ（ｍ）がランダムアクセス発生量の閾値を下回る場合（Ｓ２２で「ＹＥＳ」）、スラッシング発生判定部２８は、このときの仮想的なメモリ量ｍを、ランダムアクセス発生量の閾値に対するメモリ量、すなわち臨界メモリ量Ｍ１と決定する（Ｓ２３）。
【０１１６】
スラッシング発生判定部２８は、臨界メモリ量Ｍ１がキャッシュ領域３６の容量以下であるか否かを判定する（Ｓ２４）。臨界メモリ量Ｍ１がキャッシュ領域３６の容量を超えている場合（Ｓ２４で「ＮＯ」）、本フローは終了する。
【０１１７】
臨界メモリ量Ｍ１がキャッシュ領域３６の容量以下の場合（Ｓ２４で「ＹＥＳ」）、スラッシング発生判定部２８は、現在メモリに保持されているグループのサイズの合計が臨界メモリ量以下であるか否かを判定する（Ｓ２５）。
【０１１８】
現在、メモリに保持されている全グループのサイズがキャッシュ領域３６の容量以下の場合（Ｓ２５で「ＹＥＳ」）、スラッシング発生判定部２８は、次の処理を行う。すなわち、スラッシング発生判定部２８は、平均グループサイズが増加しても、平均グループサイズの増加によるプリフェッチの効果を生じさせると判定し（Ｓ２８）、本フローは終了する。
【０１１９】
現在、メモリに保持されている全グループのサイズがキャッシュ領域３６の容量を超える場合（Ｓ２５で「ＮＯ」）、スラッシング発生判定部２８は、次の処理を行う。すなわち、スラッシング発生判定部２８は、これ以上平均グループサイズが増加すると、平均グループサイズの増加に伴うキャッシュミスの多発による性能低下を生じさせると判定する（Ｓ２６）。この場合、スラッシング発生判定部２８は、再配置部２５に対して、グループサイズ拡大抑止通知を発行する（Ｓ２７）。
【０１２０】
図１０にてランダムアクセス発生量の算出により得られた仮想的なメモリ量ｍの全てについて、ｆ（ｍ）がランダムアクセス発生量の閾値を下回らない場合、図１１のフローは終了する。
【０１２１】
本実施形態によれば、関連するデータをグループ化するシステムにおいて、平均グループサイズの増加が、スラッシング急増による効果（現象）を生じさせるものであるかを判別することができる。平均グループサイズの増加が、スラッシング急増による効果（現象）を生じさせるものであると判別した場合、平均グループサイズの増加を抑止することができる。
【０１２２】
なお、臨界メモリ量の特定において、図１１の例では、閾値に基づいて、臨界メモリ量を特定したが、これに限定されない。例えば、ランダムアクセス発生量算出処理（図１０）で用いた仮想的なメモリ量に対するランダムアクセス発生量から、その変化曲線（近似曲線を含む）（図８のグラフで示される曲線に対応する）を算出し、その変化曲線の変曲点を臨界メモリとしてもよい。
【０１２３】
次に上記実施形態の変形例について説明する。変形例では、あるグループにおいて、新たなデータをグループに入れたと仮定して、これにより平均グループサイズを拡大した場合のプリフェッチ効果の向上度を算出する。そして、そのプリフェッチ効果の向上度と、平均グループサイズの拡大によるランダムアクセス発生量の増加による性能低下とを比較し、性能が向上するならば平均グループサイズの増加を許容できるものと判定する。
【０１２４】
なお、上記実施形態で説明した構成、機能、処理と同一の構成、機能、処理については、同一の符号を付し、その説明を省略する。
【０１２５】
図１２は、本実施形態（変形例）におけるデータ管理装置の機能構成例である。図１２のデータ管理装置１１は、図５のデータ管理装置１１におけるアクセス履歴情報３４を、アクセス履歴情報３４’に置き換えたものである。
【０１２６】
図１３は、本実施形態（変形例）におけるアクセス履歴情報の一例を示す。アクセス履歴情報３４’は、「アクセス時刻」３４’−１、「アクセスされたグループ（実際）」３４’−２、「アクセスされたグループ（仮想）」３４’−３、「仮想ＬＲＵキューの状態」３４’−４、「仮想的グループについての仮想ＬＲＵキューの状態」３４’−５のデータ項目を含む。
【０１２７】
「アクセス時刻」３４’−１には、グループにアクセスした時刻が格納される。「アクセスされたグループ（実際）」３４’−２には、対応するアクセス時刻に実際にアクセスしたグループを特定するグループ名が格納される。
【０１２８】
「アクセスされたグループ（仮想）」３４’−３には、あるデータが実際に所属するグループとは異なるグループに加えられていると仮定した場合での、アクセス時刻においてアクセスされたグループが格納される。
【０１２９】
「仮想ＬＲＵキューの状態」には、仮想ＬＲＵキュー３３の状態が格納される。具体的には、「仮想ＬＲＵキューの状態」には、グループ名と、そのグループ名で示されるグループのサイズ（またはデータ数）との組が、アクセスされた時刻が新しい順に格納される。なお、グループサイズの単位は、「ＭＢ（メガバイト）」である。
【０１３０】
「仮想的グループについての仮想ＬＲＵキューの状態」３４’−５には、あるデータが所属グループを変更したと想定した場合の仮想ＬＲＵキューの状態が格納される。例えば、「仮想的グループについての仮想ＬＲＵキューの状態」３４’−５には、あるデータがグループＨからグループＩに移動されたと仮定したときの仮想ＬＲＵキューの状態が格納されている。実際の仮想ＬＲＵキューと比べて、仮想的な仮想ＬＲＵキューでは、グループＨ’のサイズが減少し、グループＩ’のサイズが増加している。
【０１３１】
図１４は、本実施形態（変形例）におけるグループアクセス監視部のフローを示す。あるグループに、新たなデータを入れたと仮定する。ここで、元のグループＡ，Ｂ，Ｃ，Ｄ，・・・をλ＝｛Ａ，Ｂ，Ｃ，Ｄ，・・・｝と表す。新たに仮想的に作成したグループを、λ’＝｛Ａ’，Ｂ’，Ｃ’，Ｄ’，・・・｝と表す。グループＡ’，Ｂ’，Ｃ’，Ｄ’はそれぞれ、元のグループＡ，Ｂ，Ｃ，Ｄに基づいて、仮想的に各グループの要素数（サイズ）を変更したものである。
【０１３２】
グループアクセス監視部２７は、図９のフローと並行して、この仮想的なグループについての仮想ＲＬＵキューに対して、図１４のフローを実行する。
【０１３３】
グループアクセス監視部２７は、リクエストにより指定されたデータへのアクセスがあった場合、アクセス時刻を記録し、ｔに設定する（Ｓ３１）。
【０１３４】
グループアクセス監視部２７は、グループ管理テーブル３１から、アクセス対象のデータが所属するグループを求め、このアクセス対象となるグループをｇに設定する（Ｓ３２）。
【０１３５】
グループアクセス監視部２７は、アクセス履歴情報３４’に記録された「仮想ＬＲＵキューの状態」３４’−４を読み込み、ｈ１’に設定する（Ｓ３３）。
【０１３６】
グループアクセス監視部２７は、ｈ１’から、ｇとそのサイズの組を探す。ｈ１’にｇとそのサイズの組がある場合、グループアクセス監視部２７は、ｈ１’からその組を消去する。そして、グループアクセス監視部２７は、ｈ１’における仮想ＬＲＵキューの先頭にｇと現在のグループサイズの組を挿入する。こうして更新されたｈ１’を、ｈ１とする（Ｓ３４）。
【０１３７】
グループアクセス監視部２７は、Ｓ３２におけるアクセス対象のデータが所属するグループを求める。このとき、グループアクセス監視部２７は、その求めるグループは、λから探索するのではなく、λ’から探索する。グループアクセス監視部２７は、λ’から探索されたグループを記録し、ｇ’に設定する（Ｓ３５）。
【０１３８】
グループアクセス監視部２７は、アクセス履歴情報３４’の最新のレコードに記録された「仮想的グループについての仮想ＬＲＵキューの状態」３４’−５を読み込み、ｈ２’にセットする（Ｓ３６）。
【０１３９】
グループアクセス監視部２７は、ｈ２’から、ｇ’とそのサイズの組を探す。ｈ２’に、ｇ’とそのサイズの組がある場合、グループアクセス監視部２７は、ｈ２’からその組を消去する。そして、グループアクセス監視部２７は、仮想ＬＲＵキュー３３の先頭にｇ’と現在のグループサイズとの組を挿入する。こうして更新されたｈ２’を、ｈ２とする（Ｓ３７）。
【０１４０】
グループアクセス監視部２７は、（ｔ，ｇ，ｇ’，ｈ１，ｈ２）の組を、アクセス履歴情報３４’に挿入する（Ｓ３８）。
【０１４１】
このようにして得られたアクセス履歴情報３４’を用いて、スラッシング発生判定部２８は、仮想メモリ量−ランダムアクセス発生量グラフ上で点を作成する各仮想メモリ量それぞれに対して、図１０のフローを実行する。
【０１４２】
ここで、上記の図１０の説明において、「アクセスされたグループ」３４−２、「仮想ＬＲＵキューの状態」３４−３を用いた。それに対して、変形例では、「アクセスされたグループ（仮想）」３４’−３、「仮想的グループについての仮想ＬＲＵキューの状態」３４’−５を用いる。その結果、スラッシング発生判定部２８は、仮想的なメモリ量ｍそれぞれに対して、その時のランダムアクセス発生量ｒａｎｄ＿ａｃｃｅｓｓ’を取得する。
【０１４３】
図１５は、本実施形態（変形例）におけるスラッシング発生判定部による判定処理フローを示す。スラッシング発生判定部２８は、仮想的なメモリ量ｍに対して、その時のランダムアクセス発生量ｒａｎｄ＿ａｃｃｅｓｓ’を、ｆ’（ｍ）と表現する（Ｓ４１）。
【０１４４】
次に、スラッシング発生判定部２８は、図１０にてランダムアクセス発生量の算出により得られた仮想的なメモリ量ｍの全てについて、小さい値から順に、ｆ’（ｍ）がランダムアクセス発生量の閾値を下回るかを判定する（Ｓ４２）。ｆ’（ｍ）がランダムアクセス発生量の閾値を下回らない場合（Ｓ４２で「ＮＯ」）、スラッシング発生判定部２８は、次に大きい仮想的なメモリ量ｍについて、Ｓ４２の処理を行う。
【０１４５】
ｆ’（ｍ）がランダムアクセス発生量の閾値を下回る場合（Ｓ４２で「ＹＥＳ」）、スラッシング発生判定部２８は、このときの仮想的なメモリ量ｍを、ランダムアクセス発生量の閾値に対するメモリ量、すなわち臨界メモリ量Ｍ２と決定する（Ｓ４３）。
【０１４６】
スラッシング発生判定部２８は、現実のグループに対する臨界メモリ量と、仮想的なグループに対する臨界メモリ量を比較する。ここでは、スラッシング発生判定部２８は、臨界メモリ量Ｍ２が図１１で算出された臨界メモリ量Ｍ１より小さいか否かを判定する（Ｓ４４）。
【０１４７】
臨界メモリ量Ｍ２が図１１で算出された臨界メモリ量Ｍ１より小さい場合（Ｓ４４で「ＹＥＳ」）、スラッシング発生判定部２８は、仮想的なグループの配置の方が、本来のグループの配置よりもメモリの利用効率がよいと判定する（Ｓ４５）。すなわち、仮想的にグループサイズを増加させた場合、より多くの関連するデータがプリフェッチによりメモリ上に保持されることなので、メモリ上にあるデータへのアクセス性能（ヒット率）の向上、すなわちプリフェッチ効果が向上する。この場合、スラッシング発生判定部２８は、仮想的なグループのサイズの平均に基づいて、グループサイズの増大の許容が可能であると判定することができる。
【０１４８】
臨界メモリ量Ｍ２が図１１で算出された臨界メモリ量Ｍ１以上場合（Ｓ４４で「ＮＯ」）、スラッシング発生判定部２８は、本来のグループの配置の方が、仮想的なグループの配置よりもメモリの利用効率がよいと判定する（Ｓ４６）。この場合、スラッシング発生判定部２８は、本来のグループのサイズの平均に基づいて、グループサイズの増大の許容が可能であると判定することができる。
【０１４９】
Ｓ４２の処理を最後まで繰り返した結果、図１０にてランダムアクセス発生量の算出により得られた仮想的なメモリ量ｍの全てについて、ｆ’（ｍ）がランダムアクセス発生量の閾値を下回らない場合、図１５のフローは終了する。
【０１５０】
なお、一例として、スラッシング発生判定部２８は、Ｓ４５，Ｓ４６の判定結果を、表示装置に出力してもよい。また、スラッシング発生判定部２８は、Ｓ４５の判定結果に基づいて、再配置部２５に、仮想的なグループの平均グループサイズになるまでグループのサイズを増大させる指示を出力してもよい。また、スラッシング発生判定部２８は、Ｓ４６の判定結果に基づいて、再配置部２５に、本来のグループの平均グループサイズに基づいて、グループのサイズを増大させる指示を出力してもよい。
【０１５１】
このように変形例では、スラッシング発生判定部２８は、グループに新たなデータを入れた場合（グループサイズを拡大させた場合）の仮想メモリ量−ランダムアクセス発生量グラフを、仮想的なグループの集合λ’を用いて生成する。
【０１５２】
スラッシング発生判定部２８は、仮想メモリ量−ランダムアクセス発生量グラフからグループサイズを拡大させた場合のプリフェッチ効果の向上度を計測することができる。
【０１５３】
また、スラッシング発生判定部２８は、仮想メモリ量−ランダムアクセス発生量グラフから、平均グループサイズの拡大によるランダムアクセス発生量の増加による性能低下を検出する。
【０１５４】
スラッシング発生判定部２８は、仮想メモリ量−ランダムアクセス発生量グラフから、グループサイズを拡大させた場合のプリフェッチ効果の向上度とランダムアクセス発生量の増加による性能低下とを比較する。臨界メモリ量が少なくランダムアクセス発生量が少ない場合には、プリフェッチ効果により性能が向上すると判定される。この場合、スラッシング発生判定部２８は、メモリ量に余裕があるため、平均グループサイズの増加を許容できると判定する。
【０１５５】
以上のように、本実施形態におけるデータ管理プログラムは、格納装置からアクセス要求に対応するデータを含むグループのデータをメモリにロードし、アクセス要求に対して応答するコンピュータに、以下の処理を実行させる。ここで格納装置は、データ間の関連性に応じてグループ化された複数のグループのデータを保存する。
【０１５６】
コンピュータは、所定期間においてアクセスされたグループのアクセス順とデータサイズとを含む第１のアクセス履歴情報を取得する。コンピュータは、メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、第１のアクセス履歴情報から、仮想容量のメモリに配置されるグループ群を示す第１の配置グループ群を推定する。コンピュータは、所定期間における、メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが第１の配置グループ群に含まれない事象の発生回数の変化に基づいて、次の処理を行う、すなわち、コンピュータは、メモリの物理容量の範囲内で、変化した該メモリの仮想容量からランダムアクセス発生量が急増する臨界容量である第１の仮想容量を推定する。コンピュータは、第１の仮想容量に基づいて、いずれかのグループのデータサイズの増大の可否を判定する。
【０１５７】
第１の仮想容量の推定において、コンピュータは、メモリの物理容量の範囲内で、メモリの仮想容量の変化に対する、事象の発生回数が閾値より小さくなったときの仮想容量を第１の仮想容量と推定する。
【０１５８】
第１の仮想容量の推定において、コンピュータは、メモリの物理容量の範囲内で、メモリの仮想容量の変化に対する、事象の発生回数の変化についての曲線を算出し、曲線の変曲点に対応する仮想容量を第１の仮想容量と推定する。
【０１５９】
上記判定において、コンピュータは、メモリに配置されているグループ群のデータサイズの合計が第１の仮想容量より大きい場合、いずれかのグループのデータサイズの増大ができないと判定する。
【０１６０】
コンピュータは、さらに、所定期間においてアクセス要求に応じて仮想的にアクセスされたグループのアクセス順とデータサイズとを含む第２アクセス履歴情報を取得する。第２アクセス履歴情報は、第２アクセス履歴情報に含まれるグループのサイズの平均が第１アクセス履歴情報に含まれるグループのデータサイズの平均と異なる第２アクセス履歴情報である。コンピュータは、メモリの容量を仮想的に複数段階で変化させた複数の仮想容量毎に、第２アクセス履歴情報から、仮想容量の前記メモリに配置されるグループ群を示す第２の配置グループ群を推定する。コンピュータは、所定期間における、メモリ容量の仮想的な変化に応じたアクセス要求に対応するデータが第２の配置グループ群に含まれない事象の発生回数の変化に基づいて、次の処理を行う。すなわち、コンピュータは、メモリの物理容量の範囲内で、変化したメモリの仮想容量からランダムアクセス発生量が急増する臨界容量である第２の仮想容量を推定する。コンピュータは、第２の仮想容量が第１の仮想容量よりも少ない場合、第２アクセス履歴情報に含まれるグループのデータサイズの平均に基づいて、グループのデータサイズの増大の許容が可能であると判定する。
【０１６１】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１６２】
上記実施形態に関し、さらに以下の付記を開示する。
【符号の説明】
【０１６３】
１      データ管理装置
２      メモリ
３      取得部
４      推定部
５      判定部
６      格納装置
１１    データ管理装置
１２    制御装置
１３    メモリ
１４    ストレージ装置
２１    要求受付部
２２    解析判断部
２３    関係性解析部
２４    配置決定部
２５    再配置部
２６    書戻部
２７    グループアクセス監視部
２８    スラッシング発生判定部
３１    グループ管理テーブル
３２    関連性管理テーブル
３３    仮想ＬＲＵキュー
３４    アクセス履歴情報
３５    閾値情報
【図１】
2017072929.tif 000003
【図２】
2017072929.tif 000004
【図３】
2017072929.tif 000005
【図４】
2017072929.tif 000006
【図５】
2017072929.tif 000007
【図６】
2017072929.tif 000008
【図７】
2017072929.tif 000009
【図９】
2017072929.tif 000010
【図１０】
2017072929.tif 000011
【図１１】
2017072929.tif 000012
【図１２】
2017072929.tif 000013
【図１３】
2017072929.tif 000014
【図１４】
2017072929.tif 000015
【図１５】
2017072929.tif 000016
【図８】
2017072929.tif 000017