JP6269048B2 - データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置 - Google Patents

データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置 Download PDF

Info

Publication number
JP6269048B2
JP6269048B2 JP2013269648A JP2013269648A JP6269048B2 JP 6269048 B2 JP6269048 B2 JP 6269048B2 JP 2013269648 A JP2013269648 A JP 2013269648A JP 2013269648 A JP2013269648 A JP 2013269648A JP 6269048 B2 JP6269048 B2 JP 6269048B2
Authority
JP
Japan
Prior art keywords
data
access
group
segment
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013269648A
Other languages
English (en)
Other versions
JP2015125597A (ja
Inventor
博道 小橋
博道 小橋
清水 俊宏
俊宏 清水
裕一 槌本
裕一 槌本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013269648A priority Critical patent/JP6269048B2/ja
Priority to US14/575,531 priority patent/US9619150B2/en
Priority to EP14199635.5A priority patent/EP2889776B1/en
Publication of JP2015125597A publication Critical patent/JP2015125597A/ja
Application granted granted Critical
Publication of JP6269048B2 publication Critical patent/JP6269048B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明はデータ配置制御プログラム、データ配置制御方法およびデータ配置制御装置に関する。
現在、データを記憶可能な種々の装置が用いられている。データを記憶する装置に求められる要件の1つとして、データに対するアクセスの高速化がある。
例えば、記憶装置に対し、キャッシュと呼ばれる比較的高速にアクセス可能なメモリを設け、未だ要求されていないデータを記憶装置から先読みしてキャッシュに格納する。先読みされたデータに対して要求がされると要求されたデータをキャッシュから読み出して要求元へ送ることで、データ応答の高速化を図る。
例えば、ディスク記憶装置において、ホストからの要求がシーケンシャルリードのとき、要求データをホストへ転送後、ディスク記憶装置上の要求データに続くデータをキャッシュバッファに先読みしておく提案がある。この提案では、リード要求された目的のデータが全てキャッシュバッファに存在した回数(フルヒット回数)と、目的のデータの一部がキャッシュバッファに存在した回数(ハーフヒット回数)とを記録し、比較する。ハーフヒット回数の方が多い場合には、1度の先読みに用いられるキャッシュバッファ内の先読みスペースのサイズが不十分であるとして、先読みスペースのサイズを大きくする。フルヒット回数の方が多い場合には、先読みスペースのサイズが大き過ぎるとして、先読みスペースのサイズを小さくする。
また、キャッシュメモリを複数のキャッシュセグメントに分割し、キャッシュセグメント単位でデータ転送を行うディスク制御装置の提案もある。この提案では、転送データ量の履歴から、キャッシュセグメントの容量を超えるデータ量のデータ転送が所定回数以上要求されている場合、キャッシュメモリの分割数を変更して、キャッシュセグメントの容量を拡張する。
更に、キャッシュメモリから補助記憶装置へデステージングするためにデータをグループ化し、補助記憶装置の読出/書込ヘッドの物理的位置に最も近い未割当のデータ蓄積区域に、グループ化したデータを書き込む提案もある。
特開平8−272689号公報 特開平7−319771号公報 特開平6−44137号公報
関係性(例えば、連続してアクセスされる可能性が高いなど)をもつデータ同士をグループ化し、記憶装置(例えば、ディスク装置など)上の連続する領域に配置することが考えられる。不連続な領域に配置するよりもデータの先読みを効率的に行えるからである。そこで、関係性に関する情報(例えば、複数のデータに対するアクセス履歴)を利用して、記憶装置上で連続して配置されていないが、関連してアクセスされるデータに対してグループ化を行うことが考えられる。
この場合、関係性に関する情報を多く利用するほどグループ化の精度を向上し得る。しかし、利用する関係性に関する情報の量に応じて計算量が増えることから、記憶装置上でのデータ配置のオーバーヘッドとならないために、ある程度の情報量に抑える必要がある。一方、利用する関係性に関する情報量が少ないと、データ配置のグループ化の精度が低下し、グループ化によるデータアクセスの効率化の度合いが制限される。
1つの側面では、本発明は、データ配置に関する蓄積情報量および計算量を抑制できるデータ配置制御プログラム、データ配置制御方法およびデータ配置制御装置を提供することを目的とする。
1つの態様では、データ配置制御プログラムが提供される。このデータ配置制御プログラムは、コンピュータに、記憶装置に記憶されたデータのグループ化に関するグループ化情報を、記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、グループ化情報の更新に応じて、記憶装置のデータ配置を更新し、グループ化情報の更新では、メモリに保持されており、属するグループが異なる第1のデータと第2のデータとに関連が検出されると、第1のデータが属する第1のグループと第2のデータが属する第2のグループとを統合する、処理を実行させる。
また、1つの態様では、データ配置制御方法が提供される。このデータ配置制御方法では、コンピュータが、記憶装置に記憶されたデータのグループ化に関するグループ化情報を、記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、グループ化情報の更新に応じて、記憶装置のデータ配置を更新し、グループ化情報の更新では、メモリに保持されており、属するグループが異なる第1のデータと第2のデータとに関連が検出されると、第1のデータが属する第1のグループと第2のデータが属する第2のグループとを統合する
また、1つの態様では、データ配置制御装置が提供される。このデータ配置制御装置は、メモリと演算部とを有する。メモリはデータを保持可能である。演算部は、記憶装置に記憶されたデータのグループ化に関するグループ化情報を、記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新する。演算部は、グループ化情報の更新に応じて、記憶装置のデータ配置を更新する。演算部は、グループ化情報の更新では、メモリに保持されており、属するグループが異なる第1のデータと第2のデータとに関連が検出されると、第1のデータが属する第1のグループと第2のデータが属する第2のグループとを統合する
1つの側面では、データ配置に関する蓄積情報量および計算量を抑制できる。
第1の実施の形態のデータ配置制御装置を示す図である。 第2の実施の形態の情報処理システムを示す図である。 第2の実施の形態のサーバのハードウェア例を示す図である。 第2の実施の形態のサーバの機能例を示す図である。 第2の実施の形態のセグメントの例を示す図である。 第2の実施の形態の所属テーブルの例を示す図である。 第2の実施の形態のアクセス管理テーブルの例を示す図である。 第2の実施の形態のアクセス処理の例を示すフローチャートである。 第2の実施の形態の統合処理の例を示すフローチャートである。 第2の実施の形態のグループ統合の具体例を示す図である。 第2の実施の形態の分割処理の例を示すフローチャートである。 第2の実施の形態のグループ分割の具体例を示す図である。 第2の実施の形態の処理の具体例を示す図である。 第2の実施の形態の処理の具体例(続き)を示す図である。 セグメントサイズとヒット効率/読出効率との関係の例を示す図である。 第3の実施の形態の閾値テーブルの例を示す図である。 第3の実施の形態の統合処理の例を示すフローチャートである。 第4の実施の形態の検出回数テーブルの例を示す図である。 第4の実施の形態の統合処理の例を示すフローチャートである。 第5の実施の形態のアクセス回数テーブルの例を示す図である。 第5の実施の形態の分割処理の例を示すフローチャートである。 第6の実施の形態の統合処理の例を示すフローチャートである。 第7の実施の形態の情報処理システムの例を示す図である。 第7の実施の形態のセグメント担当テーブルの例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のデータ配置制御装置を示す図である。データ配置制御装置1は、種々のデータを記憶する。データ配置制御装置1は、ネットワークを介して接続された他の装置(図示を省略)からデータに対するアクセス要求を受け付ける。アクセス要求は、データを指定した読み出しの要求である。データ配置制御装置1は、アクセス要求に応じたデータを、要求元の装置に送信する。また、データ配置制御装置1上で動作するソフトウェアがアクセス要求を生成することもある。データ配置制御装置1上で動作するソフトウェアがアクセス要求を生成した場合、データ配置制御装置1は、要求に応じてデータをアクセス要求元のソフトウェアに提供する。
データ配置制御装置1は、メモリ1a、記憶装置1bおよび演算部1cを有する。データ配置制御装置1は、複数のデータに対するアクセスに応じてメモリ1aに保持された複数のデータをグループ化し、記憶装置1bに配置する。メモリ1aは、RAM(Random Access Memory)などの揮発性の記憶装置である。メモリ1aは、記憶装置1bに記憶されたデータを一時的に保持するキャッシュとして用いられる。
記憶装置1bは、HDD(Hard Disk Drive)などの不揮発性の記憶装置である。記憶装置1bは、データ配置制御装置1の外部に設けられていてもよい。例えば、記憶装置1bは、データ配置制御装置1とネットワークを介して接続されてもよい。記憶装置1bは、他の装置またはデータ配置制御装置1で動作するソフトウェアなどの処理に用いられる複数のデータを記憶する。
演算部1cは、例えば、プロセッサを含む。プロセッサは、CPU(Central Processing Unit)やDSP(Digital Signal Processor)でもよいし、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路でもよい。また、複数のプロセッサの集合(マルチプロセッサ)をプロセッサと呼ぶこともできる。プロセッサは、例えば、メモリ1aに記憶されたプログラムを実行するものでもよい。
演算部1cは、記憶装置1bに記憶されたデータをグループ化して管理する。具体的には、演算部1cは、記憶装置1b上の連続した記憶領域(セグメントと呼ぶ)をグループ毎に設け、グループに属するデータを配置する。演算部1cは、グループに属する何れかのデータに対するアクセス要求を受け付けると、セグメントからグループ単位にデータを読み出してメモリ1aに格納する。例えば、連続してアクセスされ得るデータ同士を同一のセグメントに格納することで、次に読み出すデータのキャッシュヒット率(メモリ1aから読み出せる確率)を向上し得る。
ここで、記憶装置1bに記憶されたデータのグループ化に関するグループ化情報は、メモリ1aまたは記憶装置1bに記憶される。一例として、記憶装置1bは、データX1,X2,X3,Y1,Y2,Y3を記憶している。グループ化情報は、例えばグループに対するデータの次の所属関係を示している。データX1,X2はグループG1に属する。データX3はグループG2に属する。データY1,Y2,Y3はグループG3に属する。また、データX1,X2はセグメントSG1に配置されている。データX3はセグメントSG2に配置されている。データY1,Y2,Y3はセグメントSG3に配置されている。
例えば、演算部1cはデータX1に対するアクセス要求を受け付けると、データX1,X2をセグメントSG1から読み出してメモリ1aに格納し、データX1を要求元に応答する(データX2を先読み)。演算部1cは、データX3に対するアクセスを受け付けると、セグメントSG2からデータX3を読み出してメモリ1aに格納し、データX3を要求元に応答する(先読みされたデータなし)。演算部1cは、データY2に対するアクセスを受け付けると、データY1,Y2,Y3をセグメントSG3から読み出してメモリ1aに格納し、データY2を要求元に応答する(データY1,Y3を先読み)。演算部1cは、メモリ1aに保持されたメモリ保持データをメモリ保持情報により管理する。メモリ保持情報は、メモリ1aまたは記憶部1bに記憶される。
演算部1cは、記憶装置1bに記憶されたデータのグループ化に関するグループ化情報を、記憶装置1bに記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置1bに記憶されたデータに対するアクセスに応じてメモリ1aに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新する。このとき、演算部1cは、アクセス情報によるデータ間の関連情報に基づき、グループ化情報の更新を行う。
例えば、演算部1cは、アクセス情報によりデータX1,X3間の関連情報を取得する。関連情報は、データX1,X3の関連に関する情報である。例えば、演算部1cは、関連情報によりデータX1,X3が連続してアクセスされるという関連を検出する。すると、演算部1cはグループG1,G2に関するグループ化情報の更新を行う。
具体的には、演算部1cはグループG1,G2をグループG4に更新する(グループを統合する)ことが考えられる。グループG1,G2に属するデータは互いに関連があり短期間の間にアクセスされる可能性が高いからである。なお、グループのサイズが無制限に大きくならないようグループのサイズ(データ数の和やデータサイズの和など)に閾値を設けることが考えられる。具体的には、統合対象のグループのサイズの和が閾値を超えない場合にグループを統合し、閾値を超える場合にグループを統合しないようにする。
一方、グループを統合した当初は関連があっても、時間の経過により関連が弱まることもある。そこで、演算部1cは、グループ内の他のデータとの関連が弱まったと推定されるデータをアクセス情報から検出し、検出したデータをグループから除外してもよい。
例えば、所定の方法(LRU(Least Recently Used)など)でグループG3に対するメモリ1aの記憶領域の割当てが解除されるタイミングで、メモリ1aによる保持中にアクセスされなかったデータをグループG3から除外することが考えられる。アクセスがなかったデータは、グループG3の他のデータとの関連が弱まったと考えられるからである。例えば、データY3にアクセスがなかった場合、演算部1cは、グループ化情報において、グループG3からデータY3を除外する更新を行う。具体的には、データY1,Y2が属するグループとデータY3が属するグループとを作成する(グループを分割する)。
演算部1cは、グループ化情報の更新に応じて、記憶装置1bのデータ配置を更新する。例えば、データX1,X2,X3を1つのグループG4に統合したとき、セグメントSG1,SG2に代えて、データX1,X2,X3をセグメントSG4に配置する。セグメントSG4は、セグメントSG1,SG2とは異なる記憶領域でもよい(セグメントSG1,SG2の領域を再利用可能とする)。
また、演算部1cは、データY1,Y2を1つのグループ、データY3を別のグループとしたとき、セグメントSG3に代えて、データY1,Y2をセグメントSG5に配置し、データY3をセグメントSG6に配置する。セグメントSG5,SG6は、セグメントSG3とは異なる記憶領域でもよい(セグメントSG3の領域を再利用可能とする)。
データ配置制御装置1によれば、記憶装置1bに記憶されたデータのグループ化に関するグループ化情報が、記憶装置1bに記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置1bに記憶されたデータに対するアクセスに応じてメモリ1aに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新される。グループ化情報の更新に応じて、記憶装置1bのデータ配置が更新される。グループ化情報の更新では、アクセス情報によるデータ間の関連情報に基づき、グループ化情報の更新が行われる。
これにより、データ配置に関する蓄積情報量および計算量を抑制できる。具体的には、グループ化情報の更新(グループ更新)に用いる情報は、データX1,X2,X3,Y1,Y2,Y3がメモリ1aに保持されている間の情報で済む。したがって、データX1,X2,X3,Y1,Y2,Y3に対する過去のアクセス履歴を全て保持しておかなくてよい。よって、蓄積情報量を抑制できる。また、グループ更新のために処理する情報量を軽減できるので、データ配置に関する計算量を抑制できる。また、上記のようにグループの統合や分割を行うことで、より関連の強いデータ同士を同じグループに所属させることができ、グループ化の精度を高めることができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、サーバ100およびクライアント200を含む。サーバ100およびクライアント200は、ネットワーク10に接続されている。ネットワーク10は、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどの広域ネットワークでもよい。
サーバ100は、種々のデータを記憶するサーバコンピュータである。サーバ100は、クライアント200からデータに対するアクセス要求を受け付ける。アクセス要求は、データの読み出し要求である。例えば、サーバ100は、要求されたデータをクライアント200に応答する。サーバ100は、サーバ100上で動作するソフトウェアからデータに対するアクセス要求を受け付けることもある。サーバ100上で動作するソフトウェアからアクセス要求を受け付けた場合も、サーバ100は、要求されたデータをアクセス要求元のソフトウェアへ応答することができる。
サーバ100は、連続してアクセスされる可能性の高いデータを、1つのグループにまとめて管理する。サーバ100は、あるデータに対するアクセス要求を受け付けたとき、アクセス要求を受けたデータが属するグループ単位に(すなわち、アクセス要求を受けたデータが属するグループに属する全てのデータを)、キャッシュに格納する。これにより、未だアクセス要求を受けていないデータに対するアクセス要求を受け付けたときのキャッシュヒット率の向上を図れる。ここで、サーバ100は、第1の実施の形態のデータ配置制御装置1の一例である。
クライアント200は、ユーザによって利用されるクライアントコンピュータである。例えば、クライアント200は、自身が実行する処理に応じて、所定のデータに対するアクセス要求をサーバ100に送信する。また、ユーザは、クライアント200を操作して、データに対するアクセス要求をクライアント200からサーバ100へ送信させることもできる。ユーザは、サーバ100を直接操作して、データに対するアクセス要求をサーバ100に入力することもできる。
図3は、第2の実施の形態のサーバのハードウェア例を示す図である。サーバ100は、プロセッサ101、RAM102、HDD103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットはサーバ100のバスに接続されている。なお、クライアント200も、サーバ100と同様のハードウェアを用いて実現できる。
プロセッサ101は、サーバ100の情報処理を制御する。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組合せであってもよい。
RAM102は、サーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、サーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
通信部104は、ネットワーク10を介して他のコンピュータと通信を行える通信インタフェースである。通信部104は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
画像信号処理部105は、プロセッサ101からの命令に従って、サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部106は、サーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ107は、レーザ光などを利用して、光ディスク13に記録されたプログラムやデータを読み取る駆動装置である。光ディスク13として、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などを使用できる。ディスクドライブ107は、例えば、プロセッサ101からの命令に従って、光ディスク13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
機器接続部108は、サーバ100に周辺機器を接続するための通信インタフェースである。例えば、機器接続部108にはメモリ装置14やリーダライタ装置15を接続できる。メモリ装置14は、機器接続部108との通信機能を搭載した記録媒体である。リーダライタ装置15は、メモリカード16へのデータの書き込み、またはメモリカード16からのデータの読み出しを行う装置である。メモリカード16は、カード型の記録媒体である。機器接続部108は、例えば、プロセッサ101からの命令に従って、メモリ装置14またはメモリカード16から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
図4は、第2の実施の形態のサーバの機能例を示す図である。サーバ100は、キャッシュ110、データ記憶部120、管理情報記憶部130、アクセス部140および制御部150を有する。アクセス部140および制御部150は、プロセッサ101によって実行されるプログラムのモジュールであってもよい。
キャッシュ110は、RAM102に確保された記憶領域を用いて実現できる。データ記憶部120は、HDD103に確保された記憶領域を用いて実現できる。管理情報記憶部130は、RAM102またはHDD103に確保された記憶領域を用いて実現できる。ただし、データ記憶部120は、サーバ100とネットワーク10を介して接続された記憶装置の記憶領域でもよい。データ記憶部120はサーバ100に外付けされた記憶装置の記憶領域でもよい。
キャッシュ110は、データ記憶部120よりも高速なランダムアクセスが可能である。キャッシュ110は、データ記憶部120に対するキャッシュとして用いられ、データ記憶部120から読み出されたデータを一時的に記憶する。
データ記憶部120は、サーバ100で管理される各種のデータを記憶する。データ記憶部120では、1つのグループを連続した記憶領域に格納する。1つのグループに対してシーケンシャルにアクセスできれば、グループ単位の読み出しを高速化できるからである。以下の説明では、データ記憶部120における、グループを格納するための1つの連続した記憶領域を「セグメント」と呼ぶことがある。
管理情報記憶部130は、アクセス部140や制御部150の処理に用いられる管理情報を記憶する。具体的には、管理情報記憶部130は、各データが何れのグループに所属するかを示す情報や1つのグループに所属させるデータ数の上限を示す閾値(データ数の閾値ということがある)を記憶する。グループのデータ数は、後述するセグメントに格納されるデータ数に相当するので、データ数の閾値をセグメントサイズの閾値ということもできる。また、管理情報記憶部130は、キャッシュ110に保持されているデータ(メモリ保持データ)を管理するメモリ保持情報を記憶する。更に、管理情報記憶部130は、各データに関するアクセス情報を記憶する。アクセス情報は、キャッシュ110に保持されているデータのアクセス有無の情報やデータ間の関連を検出するための情報(関連情報)を含む。
アクセス部140は、クライアント200やサーバ100上のソフトウェア(図示を省略)からデータへのアクセス要求を受け付ける。アクセス部140は、アクセス要求されたデータを、要求元(クライアント200やサーバ100上のソフトウェア)に応答する。アクセス部140は、連続してアクセスされた2つのデータを関連のあるデータとして検出し、制御部150に通知する。また、アクセス部140は未だアクセス要求されていないデータの先読みを行う。なお、「連続してアクセスされる」とは、同一のアクセス要求元から所定のタイムアウト時間内に2つのデータが連続してアクセスされることを示す。アクセス要求元を区別する単位は、ソフトウェア単位、ソフトウェアのプロセス単位またはクライアントコンピュータ単位など、種々の単位が考えられる。
例えば、アクセス部140は、アクセス要求元毎に、直前にアクセス要求のあったデータを、管理情報記憶部130に記憶されたアクセス情報に関連情報として記録しておき、連続してアクセスされたデータを検出し得る。なお、クライアント200が、直前にアクセス要求を行ったデータの識別情報を、今回のアクセス要求に含めてもよい。直前にアクセス要求を行ったデータの識別情報が今回のアクセス要求に含まれる場合、アクセス部140は、今回のアクセス要求を参照すれば、クライアント200により直前にアクセスされたデータを把握し、データ間の関連を検出し得る。すなわち、アクセス部140は、クライアント200などのアクセス要求元からデータ間の関連情報を取得してもよい。
アクセス部140は、あるデータに対するアクセス要求を受け付けたとき、アクセス要求されたデータがキャッシュ110になければ(キャッシュミス)、アクセス要求されたデータのグループに所属する全データをデータ記憶部120から読み出して、キャッシュ110に格納する。更に、アクセス部140は要求されたデータを要求元に提供する。アクセス部140は、あるデータに対するアクセス要求を受け付けたとき、アクセス要求されたデータがキャッシュ110にあれば(キャッシュヒット)、アクセス要求されたデータをキャッシュ110から読み出して、アクセス要求元に提供する。
また、アクセス部140は、キャッシュ110に保持されたデータに対するアクセスの有無をデータ毎に管理し、管理情報記憶部130に格納する。更に、アクセス部140は、データに対するキャッシュ110の記憶領域の割当てを、所定の方法(例えば、LRU)によりグループ毎に解除する。
制御部150は、アクセス部140から連続してアクセスされたデータの通知を受け付けると、通知の内容に応じて、管理情報記憶部130に記憶された管理情報を更新する。具体的には、制御部150は、キャッシュ110に格納されたデータのうち、異なるグループに属する2つのデータが連続してアクセスされた旨の通知を、アクセス部140から受け付ける。すると、制御部150は、両グループに含まれるデータ数の和が、データ数の閾値を超えるか否かを判定する。両グループに含まれるデータ数の和がデータ数の閾値以下の場合、制御部150は、両グループに含まれる各データを1つのグループに所属させるようグループ化内容を更新する(グループの統合)。両グループに含まれるデータ数の和がデータ数の閾値よりも大きい場合、グループの統合を行わない。
また、制御部150は、何れかのグループに属するデータについて、キャッシュ110の記憶領域の割当てが解除されると、解除されたデータのグループ化内容を更新する。具体的には、制御部150は、キャッシュ110に保持されていた間の、解除されたデータに対するアクセスの有無を判定する。そして、制御部150は、キャッシュ110に保持されていた間にアクセスのなかったデータを、アクセスのなかったデータが属するグループから除外し、新たに作成したグループに所属させる(グループの分割)。
制御部150は、上記のようにグループ化内容を更新すると、データ記憶部120に更新結果を反映させる。具体的には、グループの統合を行ったのであれば、統合後のグループに対応するセグメントをデータ記憶部120上に作成し、統合前の両グループに属していた各データを、新たなセグメントに格納する(セグメントの統合)。また、グループの分割を行ったのであれば、分割後の各グループに対応するセグメントをデータ記憶部120上に作成し、分割前のグループに属していた各データを、分割後の各グループに対応するセグメントに格納する(セグメントの分割)。各データが格納されていた元のセグメントは、再利用可能な領域として管理される。
図5は、第2の実施の形態のセグメントの例を示す図である。データ記憶部120はデータX,Y,Aを記憶する。データ記憶部120はそれ以外にも複数のデータを記憶している。データX,Yは、グループGに属しており、データ記憶部120のセグメントSGに格納されている。データAは、グループG11に属しており、データ記憶部120のセグメントSG11に格納されている。
例えば、アクセス部140は、データXに対するアクセス要求をクライアント200から受け付ける。アクセス要求を受け付けたとき、キャッシュ110にデータXが格納されていなければ、アクセス部140は、データ記憶部120に存在するセグメントSG上のデータX,Yを複製して、キャッシュ110に格納する。また、アクセス部140は、データXを要求元に応答する。アクセス部140は、クライアント200から今回データXへのアクセスがあった旨を管理情報記憶部130に記録する(関連情報の記録)。
この場合、データXに対してデータYが先読みされたことになる。アクセス部140は、キャッシュ110の連続した記憶領域にデータX,Yを配置してもよい。キャッシュ110上でもデータX,Yに対してシーケンシャルにアクセスできれば、データX,Yへの連続したアクセスを高速に行えるからである。
ここで、グループはセグメントと1対1に対応する。例えば、グループGはセグメントSGに対応付けられる(グループGに属するデータはセグメントSGに配置される)。また、グループG11はセグメントSG11に対応付けられる(グループG11に属するデータはセグメントSG11に配置される)。
図6は、第2の実施の形態の所属テーブルの例を示す図である。所属テーブル131は、データが格納されたセグメントを示す情報である。セグメントはグループと1対1に対応するので、所属テーブル131は、グループに対するデータの所属を示す。所属テーブル131は、第1の実施の形態のグループ化情報の一例である。所属テーブル131は、管理情報記憶部130に格納される。所属テーブル131は、データおよびセグメントの項目を含む。
データの項目には、データの識別情報が登録される。セグメントの項目には、データが格納されたセグメントの識別情報が登録される。例えば、所属テーブル131には、データが“A”、セグメントの識別情報が“SG11”という情報が登録される。これは、データAがセグメントSG11に格納されていることを示す。また、セグメントSG11は、グループG11に対応しているので、データAがグループG11に所属していることを示す。
なお、所属テーブル131には、データBがセグメントSG12に格納されていること、データC,DがセグメントSG13に格納されていること、データE,F,GがセグメントSG14に格納されていることも登録されている。所属テーブル131には、他のデータとセグメントとの対応も登録される。
図7は、第2の実施の形態のアクセス管理テーブルの例を示す図である。アクセス管理テーブル132は、キャッシュ110に保持されたデータにアクセス要求があったか否かを管理するための情報である。アクセス管理テーブル132は、管理情報記憶部130に格納される。アクセス管理テーブル132は、データおよびアクセスフラグの項目を含む。
データの項目には、データの識別情報が登録される。アクセスフラグの項目には、アクセス要求があったことを示す“true”、または、アクセス要求がなかったことを示す“false”が登録される。例えば、アクセス管理テーブル132には、データが“A”、アクセスフラグが“true”という情報が登録される。これは、データAがキャッシュ110に保持されている間に、データAに対してアクセス要求があったことを示す。
なお、アクセス管理テーブル132は、後述するように、グループの分割に用いられる。アクセス管理テーブル132には、キャッシュ110に保持されているデータの情報が登録されていればよい。したがって、制御部150は、あるグループについてグループの分割を行った後は、分割対象となったグループに属する各データのエントリをアクセス管理テーブル132から削除する。
図8は、第2の実施の形態のアクセス処理の例を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
(S11)アクセス部140は、何れかのデータに対するアクセス要求をクライアント200から受け付ける。
(S12)アクセス部140は、要求されたデータがキャッシュ110に存在するか否かを判定する。存在する場合、アクセス部140は、要求されたデータをキャッシュ110から取得して、処理をステップS14に進める。存在しない場合、処理をステップS13に進める。なお、アクセス部140は、何れのデータがキャッシュ110の何れの記憶領域に存在するかを、キャッシュ110にデータを格納するたびに、管理情報記憶部130のメモリ保持情報に記録する。アクセス部140は、メモリ保持情報を参照することでステップS12の判定を行える。
(S13)アクセス部140は、所属テーブル131を参照して、要求されたデータが属するセグメントを特定する。アクセス部140は、データ記憶部120上の特定したセグメントに含まれる各データを取得する。アクセス部140は、取得した各データを複製して、キャッシュ110に格納する。アクセス部140は、キャッシュ110に格納したデータのエントリをアクセス管理テーブル132に登録する(アクセスフラグの設定値を“false”とする)。
(S14)アクセス部140は、要求されたデータをクライアント200に応答する。アクセス部140は、アクセス管理テーブル132を参照して、応答したデータのアクセスフラグに“true”を設定する。ただし、既に“true”が設定されている場合は、何もしなくてよい。
(S15)アクセス部140は、データ間の関連を検出したか否かを判定する。検出した場合、アクセス部140は、関連が検出されたデータを制御部150に通知し、処理をステップS16に進める。検出しなかった場合、処理を終了する。具体的には、アクセス部140は、所定のタイムアウト時間内に2つのデータが連続してアクセスされた場合、これらのデータについて、「連続してアクセスされた」という関連を検出する。
(S16)制御部150は、セグメントの統合処理を行う。具体的には、制御部150は、データが属するグループの更新および更新後のグループに基づきデータ記憶部120上のセグメントの更新を行う。そして、処理を終了する。
図9は、第2の実施の形態の統合処理の例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。図9に示す処理はステップS16の処理に対応する。
(S21)制御部150は、今回アクセスされたデータに対して関連が検出されたデータ(関連データという)がキャッシュ110に保持されているか否かを判定する。保持されている場合、処理をステップS22に進める。保持されていない場合、処理を終了する。関連データは、今回アクセスされたデータよりも過去にアクセスされたデータである。例えば、関連データに対するアクセス要求と今回のアクセス要求との間に、サーバ100が多数のアクセス要求を受け付けた場合、関連データに対するキャッシュ110の記憶領域の割当てが解除され得る。したがって、本ステップS21の判定を行い、関連データに対するキャッシュ領域の割当てが解除されていないことを確認する。
(S22)制御部150は、今回アクセスされたデータと関連データとが同じグループに属するか判定する。同じグループに属する場合、処理を終了する。同じグループに属さない場合、処理をステップS23に進める。
(S23)制御部150は、所属テーブル131に基づいて、今回アクセスされたデータが属するグループのデータ数と、関連データが属するグループのデータ数との和が、データ数の閾値以下であるか否かを判定する。閾値以下である場合、処理をステップS24に進める。閾値よりも大きい場合、処理を終了する。
(S24)制御部150は、所属テーブル131を更新する。具体的には、制御部150は、今回アクセスされたデータのグループ(セグメント)に属する全てのデータと、関連データのグループ(セグメント)に属する全てのデータとを新たなグループに所属させる(グループの統合)。ステップS24では、制御部150は、所属テーブル131の更新を行うのみであり、更新結果のセグメントへの反映を行わない。
(S25)制御部150は、ステップS24の更新結果をセグメントに反映させる。例えば、セグメントSG11,SG12を1つのセグメントにまとめる場合、データA,Bが属する新たなセグメントをデータ記憶部120に作成する(セグメントの統合)。制御部150は、新たなセグメントを作成すると、作成したセグメントに識別情報を付与する。また、制御部150は、元のセグメントSG11,SG12の領域を解放し、上書き可能として管理する。
なお、制御部150は、ステップS24における所属テーブル131の更新を複数回行った後にステップS25の処理を実行してもよい。あるいは、ステップS25の処理を所定の時間間隔で定期的に実行することも考えられる。また、ステップS25では、新たに作成したセグメントに対して、統合前のセグメントSG11,SG12の何れかの識別情報を付与してもよい。
図10は、第2の実施の形態のグループ統合の具体例を示す図である。以下、図10に示す処理をステップ番号に沿って説明する。ここで、データ数の閾値を“3”とする。更に、以下のステップST101の直前において、データAはキャッシュ110に格納されている。また、それ以外のデータはキャッシュ110に格納されていないものとする。ただし、ステップST101の直前で、以下に示すデータB,Q,P,Qがキャッシュ110に格納されていた場合も同様の手順となる。
(ST101)サーバ100は、データBに対するアクセス要求をクライアント200から受け付ける。すると、サーバ100は、キャッシュ110にデータBを格納する。また、サーバ100は、クライアント200にデータBを応答する。データA,Bは、この時点で異なるグループに属している。データBに対するアクセス要求は、データAに対するアクセス要求の時点から所定のタイムアウト時間内に発生したものである。よって、サーバ100は、データA,Bが関連していることを検出する。
(ST102)サーバ100は、データA,Bが属する両グループのデータ数の和“1+1=2”がデータ数の閾値“3”以下なので、両グループを統合する。すなわち、データA,Bそれぞれが属する2つのグループを、データA,Bが属する1つのグループに更新する。
(ST103)サーバ100は、データOに対するアクセス要求をクライアント200から受け付ける。すると、サーバ100は、キャッシュ110にデータOを格納する。また、サーバ100は、クライアント200にデータOを応答する。データA,Bが属するグループとデータOが属するグループとは異なっている。ただし、データOへのアクセス要求は、データBに対するアクセス要求よりも所定のタイムアウト時間が経過した後に発生したものである。よって、サーバ100は、データBとデータOとの関連を検出せずに、別個のグループのままとする。
(ST104)サーバ100は、データPに対するアクセス要求をクライアント200から受け付ける。ここで、データP,Qはこの時点で同じグループに属しており、同じセグメントに格納されている。すると、サーバ100は、キャッシュ110にデータP,Qを格納する。データQが先読みされたことになる。また、データPに対するアクセス要求は、データOに対するアクセス要求の時点から所定のタイムアウト時間内に発生したものである。よって、サーバ100は、データO,Pが関連していることを検出する。
(ST105)サーバ100は、データOが属するグループのデータ数とデータP,Qが属するグループのデータ数との和“1+2=3”がデータ数の閾値“3”以下なので、両グループを統合する。すなわち、データOが属するグループとデータP,Qが属するグループとを、データO,P,Qが属する1つのグループに更新する。これにより、関連するデータ同士が同一のグループにまとめられる。
図11は、第2の実施の形態の分割処理の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
(S31)制御部150は、何れかのグループに対してキャッシュ110の記憶領域(キャッシュ領域)の割当てが解除されたか否かを判定する。何れかのグループに対してキャッシュ領域の割当てが解除された場合、処理をステップS32に進める。何れのグループに対してもキャッシュ領域の割当てが解除されていない場合、処理を終了する。
(S32)制御部150は、アクセス管理テーブル132を参照し、キャッシュ領域の割当てが解除されたグループに属する全データのアクセスフラグを取得する。
(S33)制御部150は、アクセスフラグが“false”のデータがあるか否かを判定する。アクセスフラグ“false”のデータがある場合、処理をステップS34に進める。アクセスフラグ“false”のデータがない場合、処理を終了する。
(S34)制御部150は、所属テーブル131を更新する。具体的には、制御部150は、アクセスフラグ“true”(キャッシュ110に格納されていた期間にアクセスあり)のデータと、アクセスフラグ“false”(同期間にアクセスなし)のデータとを別個のグループ(セグメント)とする(グループの分割)。ステップS34では、制御部150は、所属テーブル131の更新を行うのみであり、更新結果のセグメントへの反映を行わない。
(S35)制御部150は、所属テーブル131の更新結果をセグメントに反映させる。例えば、データE,F,Gを含むセグメントSG14を、データE,Fを格納するセグメントと、データGを格納するセグメントとに分ける場合、これらの新たなセグメントをデータ記憶部120に作成する(セグメントの分割)。制御部150は、新たにセグメントを作成した場合、新たなセグメントに識別情報を付与する。また、制御部150は、元のセグメントSG14の領域を解放し、上書き可能として管理する。更に、制御部150は、データE,F,Gのエントリをアクセス管理テーブル132から削除する。
なお、制御部150は、ステップS34における所属テーブル131の更新を複数回行った後にステップS35の処理を実行してもよい。あるいは、ステップS35の処理を所定の時間間隔で定期的に実行することも考えられる。
また、ステップS35におけるセグメントの分割は、例えば、セグメントSG14からデータGを除外する処理であるといえる。分割後、データE,Fが属するセグメントの識別情報を“SG14”とし、データGが属するセグメントの識別情報を新たに付与してもよい。
図12は、第2の実施の形態のグループ分割の具体例を示す図である。以下、図12に示す処理をステップ番号に沿って説明する。ここで、ステップST111の直前において、データO,P,Qはキャッシュ110に格納されており、同じグループに属している。
(ST111)サーバ100は、データO,P,Qがキャッシュ110に格納されている間に、データO,Pに対するアクセスを受け付けている(データO,Pにはアクセスフラグ“true”が設定されている)。一方、サーバ100は、データO,P,Qがキャッシュ110に格納されている間に、データQに対するアクセスを受け付けていない(データQにはアクセスフラグ“false”が設定されている)。サーバ100は、データO,P,Qのグループに対するキャッシュ領域の割当てを解除する。
(ST112)サーバ100は、アクセス管理テーブル132を参照して、データO,P,Qのうち、アクセスフラグが“true”であるデータO,Pを1つのグループとし、アクセスフラグが“false”であるデータQを1つのグループとする。
このように、サーバ100は他のデータとともに先読みされたものの、キャッシュ110に格納されている間にアクセスされなかったデータについては、グループから除外する。次に、セグメントの統合および分割の一連の流れを説明する。
図13は、第2の実施の形態の処理の具体例を示す図である。以下、図13に示す処理をステップ番号に沿って説明する。以下に示すステップST121の直前において、データA,Bが、データ記憶部120の1つのセグメントに格納されている。また、データOがデータA,Bとは別個のセグメントに格納されている。データPがデータA,B,Oとは別個のセグメントに格納されている。ステップST121の直前において、キャッシュ110には何れのデータも格納されていないものとする。更に、ここでは一例として、データ数の閾値を“2”、キャッシュ110に格納できるデータ数を“3”とする。
(ST121)サーバ100は、データAに対するアクセス要求をクライアント200から受信する。サーバ100は、データ記憶部120からデータA,Bを読み出してキャッシュ110に格納する。サーバ100は、クライアント200にデータAを送信する。
(ST122)サーバ100は、データBに対するアクセス要求をクライアント200から受信する。サーバ100は、キャッシュ110からデータBを読み出してクライアント200に送信する。データA,Bは同じグループに既に属しているので、データA,Bの関連を検出しても、サーバ100はグループの統合を行わない。
(ST123)サーバ100は、データOに対するアクセス要求をクライアント200から受信する。サーバ100は、データ記憶部120からデータOを読み出してキャッシュ110に格納する。サーバ100は、クライアント200にデータOを送信する。ここで、サーバ100は、データB,Oの関連を検出する。しかし、データA,Bが属するグループのデータ数とデータOが属するグループのデータ数との和“2+1=3”がグループ当たりのデータ数の閾値“2”を超過するため、サーバ100はグループの統合を行わない。
図14は、第2の実施の形態の処理の具体例(続き)を示す図である。以下、図14に示す処理をステップ番号に沿って説明する。
(ST124)サーバ100は、データPに対するアクセス要求をクライアント200から受信する。サーバ100は、データ記憶部120からデータPを読み出してキャッシュ110に格納する。サーバ100は、クライアント200にデータPを送信する。データA,B,O,Pがキャッシュ110に格納されると、キャッシュ110に格納できるデータ数の上限“3”を超過する。したがって、サーバ100は、データA,Bに対するキャッシュ領域の割当てを解除する。データA,Bは、ステップST121,ST122でアクセスされている。よって、サーバ100は、データA,Bのグループの分割を行わない。また、サーバ100は、データO,Pが連続してアクセスされたことを検出し、データO,Pのグループを統合する。サーバ100は、データ記憶部120のセグメントにもグループの統合を反映させる。
(ST125)サーバ100は、データAに対するアクセス要求をクライアント200から受信する。サーバ100は、データ記憶部120からデータA,Bを読み出してキャッシュ110に格納する。サーバ100は、クライアント200にデータAを送信する。ステップST124と同様の理由(キャッシュ110に格納できるデータ数上限の超過)により、サーバ100は、データO,Pに対するキャッシュ領域の割当てを解除する。データO,Pは、ステップST123,ST124でアクセスされている。したがって、サーバ100は、データO,Pのグループの分割を行わない。
(ST126)サーバ100は、データOに対するアクセス要求をクライアント200から受信する。サーバ100は、データ記憶部120からデータO,Pを読み出してキャッシュ110に格納する。サーバ100は、クライアント200にデータOを送信する。ステップST124と同様の理由(キャッシュ110に格納できるデータ数上限の超過)により、サーバ100は、データA,Bに対するキャッシュ領域の割当てを解除する。データAは、ステップST125でアクセスされている。一方、データBはステップST125でキャッシュ110に先読みされたものの、先読み後に、アクセスされていない。したがって、サーバ100は、データA,Bを異なるグループに所属させるようグループの分割を行う。サーバ100は、データ記憶部120のセグメントにもグループの分割を反映させる。
このように、サーバ100は、関連の検出されたデータ同士を同じグループとし、セグメントに対するデータ配置を更新する。また、他のデータとともに先読みしたものの、キャッシュ110に格納されている間にアクセスされなかったデータをグループから除外し、セグメントに対するデータ配置を更新する。サーバ100は、上記のようにして、セグメントの統合と分割とを繰り返し実行する。なお、上記の説明では、セグメントサイズに対してデータ数の閾値を設けるものとしたが、データ数の閾値に代えて、データサイズ(例えば、ビット数やバイト数で表される量)の閾値を用いてもよい。
図15は、セグメントサイズとヒット効率/読出効率との関係の例を示す図である。横方向の座標軸はセグメントサイズを示す。縦方向の座標軸はヒット効率および読出効率を示す。セグメントサイズは、1セグメントに格納されるデータ数である。ヒット効率は、アクセス要求のあったデータがキャッシュ110に格納されている可能性(キャッシュヒット率)である。ヒット効率が高い程、データに対して高速にアクセスできることになる。読出効率は、データ記憶部120からセグメント単位にデータを読み出してキャッシュ110に格納する際の読出効率である。データ読出の際のデータ記憶部120へのアクセス頻度が小さいほど、読出効率は高くなり、データに対して高速にアクセスできることになる。
ただし、キャッシュ110の記憶容量は限られており、ヒット効率と読出効率とはトレードオフの関係にある。例えば、連続してアクセスされる可能性のより高いデータ同士を、より小さなサイズのセグメントに格納しておくことで、セグメント単位にデータを読み出してキャッシュ110に格納したときのヒット効率を向上し得る(ヒット効率の系列D1)。しかし、セグメントサイズが小さいと、データ記憶部120に対するアクセス頻度が向上し、読出効率は低下する傾向となる(読出効率の系列D2)。
一方、より大きなサイズのセグメントを設けることで、一度に多くのデータを先読みできるため、読出効率を向上し得る。しかし、セグメントサイズが大きいと、関連性の低いデータ同士が同一のセグメントに配置される可能性が高まり、ヒット効率が低下する傾向にある。
図15の関係において、系列D1,D2が交差する点に対応するセグメントサイズZaがヒット効率および読出効率のバランスがとれた最適なセグメントサイズと考えられる。しかし、最適なセグメントサイズは、データに対するアクセスの特性に応じて変化し得る。例えば、ある処理を実行するために比較的少数のデータが頻繁にアクセスされるのであれば、データに対するキャッシュ領域の割当て/割当て解除が行われる頻度が低下するので、読出効率の系列D2は、図15の場合よりも上側にシフトすると考えられる。あるいは、ある処理を実行するために比較的多くのデータにアクセスするのであれば、データに対するキャッシュ領域の割当て/割当て解除が行われる頻度も上がり、読出効率の系列D2は、図15の場合よりも下側にシフトすると考えられる。
ここで、例えば、セグメントサイズをあるサイズ(例えば、セグメントサイズZb)に固定することも考えられる。しかし、セグメントサイズが固定されると、上記のようにデータに対するアクセスの特性に応じた最適なセグメントサイズに近づくことが困難になる。そこで、サーバ100は、セグメントサイズの閾値に達するまで、セグメント毎のセグメントサイズを大きくする。また、他のデータとともに先読みされたものの、キャッシュ110に格納された間にアクセスされなかったデータについては、セグメントから除外してセグメントサイズを小さくする。これにより、現在のアクセス状況に応じて各セグメントのセグメントサイズを調整できる。
更に、グループに属するデータ数(すなわち、セグメントサイズ)に閾値を設けることで、セグメントサイズが無制限に大きくなることを抑えられ、ヒット効率が著しく低下することを抑えられる。
また、例えば、データ間の関係性を管理するために、各データに対する過去のアクセス履歴を全て保持しておくことも考えられる。グループ化に利用するアクセス履歴の情報量が多い程、統計的に高信頼のグループ化を行えるからである。ところが、全てのアクセス履歴を保存していると、時間経過と共にアクセス履歴の情報量が増大し、メモリの使用量が増大するおそれがある。また、アクセス履歴の情報量が増大するに伴い、データ間の関係性を解析する処理コストが増える。一方、メモリの使用量を節約するために、ある期間のみのアクセス履歴を保存することも考えられる。しかし、この場合、他の期間のアクセス履歴の情報が失われるので、グループ化の精度が低下し得る。
これに対し、サーバ100は、セグメントの更新のために、キャッシュ110に格納されているデータについて、アクセス状況を管理していればよい。したがって、サーバ100は、全てのデータについてアクセス履歴を保持しておかなくてよく、蓄積する情報量を抑制できる。また、データ間の関係性が検出されたタイミングで、データ間の関係を更新していくので、全てのアクセス履歴を解析する場合のように一度に大量の情報を処理せずに済む。したがって、データ記憶部120におけるデータ配置の変更に伴うサーバ100の計算量を抑制できる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
第2の実施の形態では、セグメントに対するデータ数(または、データサイズ)の閾値として所定の値を与えるものとした。これに対し、第3の実施の形態では、閾値をグループ毎に可変にする機能を提供する。セグメントサイズの調整をより柔軟化できるからである。
ここで、第3の実施の形態の情報処理システムは、図2で示した第2の実施の形態の情報処理システムと同様である。また、第3の実施の形態の情報処理システムに含まれる装置や機能は、図3,4で示した第2の実施の形態の装置や機能と同様である。そこで、第3の実施の形態では、第2の実施の形態と同じ符号、名称を用いる。但し、サーバ100は、閾値テーブルを更に記憶する。
図16は、第3の実施の形態の閾値テーブルの例を示す図である。閾値テーブル133は、管理情報記憶部130に格納される。閾値テーブル133は、セグメントおよび閾値の項目を含む。
セグメントの項目には、セグメントの識別情報が登録される。閾値の項目には、セグメントのデータ数の閾値が登録される。
例えば、閾値テーブル133には、セグメントが“SG11”、閾値が“3”という情報が登録される。これは、セグメントSG11に格納できるデータ数の上限が“3”であることを示す。
次に、第3の実施の形態のサーバ100の処理手順を説明する。ここで、第3の実施の形態のアクセス処理の手順は、図8で説明した手順と同様である。
図17は、第3の実施の形態の統合処理の例を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。ここで、図17の処理は図9の処理の代わりに実行される。図17の処理では、図9のステップS23に代えて、ステップS23a,S23b,S23c,S23dを実行する点が異なる。そこで、これらのステップを主に説明し、他のステップの説明を省略する。
(S23a)制御部150は、所属テーブル131および閾値テーブル133に基づいて、今回アクセスされたデータが属するグループのデータ数と、関連データが属するグループのデータ数との和が、データ数の閾値以下であるか否かを判定する。閾値以下である場合、処理をステップS24に進める。閾値よりも大きい場合、処理をステップS23bに進める。ここで、参照するデータ数の閾値は、閾値テーブル133における、今回アクセスされたデータが属するグループに対応する閾値である。
(S23b)制御部150は、アクセス管理テーブル132を参照し、今回アクセスされたデータのグループに属する各データのアクセスフラグを取得する。
(S23c)制御部150は、アクセスフラグが“false”のデータが存在するか否かを判定する。存在する場合、処理を終了する。存在しない場合、処理をステップS23dに進める。
(S23d)制御部150は、閾値テーブル133を参照して、今回アクセスされたグループの閾値を増加させる。具体的には、関連データが属するグループにおけるデータ数を、今回アクセスされたグループの閾値に加算する。そして、処理をステップS24に進める。なお、制御部150は、ステップS24の処理により新たなセグメントの識別情報を作成する場合には、作成したセグメントの識別情報と、ステップS23dで新たに決めた閾値との対応を閾値テーブル133に登録する。
このように、グループの統合によりデータ数の閾値を超えてしまう場合にも、データ数の閾値を増やすことで、関連があると考えられるデータ同士を同一のグループに所属させることができる。例えば、図15の例において、セグメントサイズの閾値が、セグメントサイズZaよりも小さいと、セグメントサイズZaに近づくのが困難になる。そこで、上記のように閾値を更新可能にすることで、セグメントサイズZaを実現可能とする。
また、ステップS23cで示したように、今回アクセスされたデータのグループに含まれる全てのデータに対するアクセスフラグが“true”であることを条件とする。これにより、相互に関連性が強いと推定されるデータのみを含むグループに対して閾値を増大させるよう制御できる。他のデータとの関連性が弱いと考えられるデータを含むグループに対しても無制限に閾値の増大を行っていると、ヒット効率の低下を招くおそれがあるからである。
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
第2の実施の形態では、データ間の関連を検出する度にグループの統合を行うか否かを判断するものとした。これに対し、第4の実施の形態では、各データについて複数回の関連が検出されたタイミングで統合を行うことで、グループ化の精度向上を図る。
ここで、第4の実施の形態の情報処理システムは、図2で示した第2の実施の形態の情報処理システムと同様である。また、第4の実施の形態の情報処理システムに含まれる装置や機能は、図3,4で示した第の実施の形態の装置や機能と同様である。そこで、第4の実施の形態では、第2の実施の形態と同じ符号、名称を用いる。ただし、サーバ100は、更に、検出回数テーブルを記憶する。
図18は、第4の実施の形態の検出回数テーブルの例を示す図である。検出回数テーブル134は、管理情報記憶部130に格納される。検出回数テーブル134は、データおよび検出回数の項目を含む。データの項目には、データ名が登録される。検出回数の項目には、関連データに対して関連が検出された回数が登録される。
例えば、検出回数テーブル134には、データ“A”、検出回数“B:1、F:2”という情報が登録される。これは、データAがデータBに対して関連があると検出された(データB,Aの順に連続してアクセスされた)回数が1回であることを示す。また、データAがデータFに対して関連があると検出された(データF,Aの順に連続してアクセスされた)回数が2回であることを示す。
検出回数テーブル134は、関連の検出された回数を記録した情報であり、関連情報の一例であるといえる。次に、第4の実施の形態のサーバ100の処理手順を説明する。ここで、第4の実施の形態のアクセス処理の手順は、図8で説明した手順と同様である。
図19は、第4の実施の形態の統合処理の例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。ここで、図19の処理は図9の処理の代わりに実行される。図19の処理では、図9のステップS23に代えて、ステップS23e,S23f,S23g,S23hを実行する点が異なる。そこで、これらのステップを主に説明し、他のステップの説明を省略する。
(S23e)制御部150は、所属テーブル131に基づいて、今回アクセスされたデータが属するグループのデータ数と、関連データが属するグループのデータ数との和が、データ数の閾値以下であるか否かを判定する。閾値以下である場合、処理をステップS23fに進める。閾値よりも大きい場合、処理を終了する。
(S23f)制御部150は、検出回数テーブル134を参照し、今回アクセスされたデータに対する関連データの検出回数を取得する。
(S23g)制御部150は、検出回数が所定回数以上であるか否かを判定する。所定回数以上である場合、今回アクセスされたデータに対し、検出回数が所定回数以上であった関連データの検出回数のエントリを削除して、処理をステップS24に進める。所定回数よりも小さい場合、処理をステップS23hに進める。判定に用いる回数は、運用環境に応じて任意に設定可能である。例えば、3回、5回、10回などの値を、管理情報記憶部130に予め設定できる。
(S23h)制御部150は、検出回数テーブル134を参照して、今回アクセスされたデータに対して検出された関連データの検出回数に“1”を加算する。制御部150は、検出回数テーブル134に、今回アクセスされたデータに対し、検出された関連データのエントリがない場合は、検出された関連データのエントリを追加する(検出回数の初期値“1”を設定する)。そして、処理を終了する。
このように、所定の回数以上の関連ありと検出されたデータの属するグループ同士を統合することで、より関係性が強いと推定されるデータ同士を同一のグループに所属させることができる。これにより、グループ化の精度を向上させることができる。
[第5の実施の形態]
次に、第5の実施の形態を説明する。前述の第2の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
第2の実施の形態では、グループの分割を行うか否かの判断を、グループに属する各データに対するアクセスの有無に基づいて行うものとした。これに対し、第5の実施の形態では、各データに対するアクセス数に応じてグループの分割を行うことで、グループ化の精度向上を図る。
ここで、第5の実施の形態の情報処理システムは、図2で示した第2の実施の形態の情報処理システムと同様である。また、第5の実施の形態の情報処理システムに含まれる装置や機能は、図3,4で示した第の実施の形態の装置や機能と同様である。そこで、第5の実施の形態では、第2の実施の形態と同じ符号、名称を用いる。ただし、サーバ100は、更に、アクセス回数テーブルを記憶する。
図20は、第5の実施の形態のアクセス回数テーブルの例を示す図である。アクセス回数テーブル135は、各データに対してアクセス要求を受け付けた回数を登録した情報である。アクセス回数テーブル135は、アクセス管理テーブル132の代わりに用いられる。アクセス回数テーブル135は、管理情報記憶部130に格納される。アクセス回数テーブル135は、データおよびアクセス回数の項目を含む。
データの項目には、データの識別情報が登録される。アクセス回数の項目には、アクセスされた回数が登録される。アクセス回数テーブル135には、データ記憶部120に格納されたデータのエントリが予め用意される。例えば、アクセス回数テーブル135には、データが“A”、アクセス回数が“3”という情報が登録される。これは、データAに対するアクセス要求の回数が、前回のアクセス回数のリセット時から現在までに3回あったことを示す。
次に、第5の実施の形態のサーバ100の処理手順を説明する。ここで、第5の実施の形態のアクセス処理の手順は、図8で説明した手順と同様である。ただし、ステップS13において、アクセス部140は、アクセス管理テーブル132に対する処理を行わなくてよい。また、ステップS14において、アクセス部140は、アクセスフラグの設定を行う代わりに、アクセス回数テーブル135を参照して、応答したデータのアクセス回数に“1”を加算する。
図21は、第5の実施の形態の分割処理の例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。ここで、図21の処理は図11の処理の代わりに実行される。図21の処理では、図11のステップS32,S33,S34に代えて、ステップS32a,S33a,S34aを実行する点が異なる。そこで、これらのステップを主に説明し、他のステップの説明を省略する。
(S32a)制御部150は、アクセス回数テーブル135を参照し、キャッシュ領域の割当てが解除されたグループに属する各データのアクセス回数を取得する。
(S33a)制御部150は、アクセス回数が所定回数以上のデータがあるか否かを判定する。アクセス回数が所定回数以上のデータがある場合、処理をステップS34aに進める。アクセス回数が所定回数以上のデータがない場合、処理を終了する。判定に用いる回数は、運用環境に応じて任意に設定可能である。例えば、3回、5回、10回などの値を管理情報記憶部130に予め設定できる。
(S34a)制御部150は、所属テーブル131を更新する。具体的には、制御部150は、アクセス回数“0”以外(キャッシュ110に格納されていた複数の期間に亘りアクセスあり)のデータと、アクセス回数“0”(同期間にアクセスなし)のデータとを別個のグループ(セグメント)とする(グループの分割)。制御部150は、グループ分割の対象となったデータについて、アクセス回数テーブル135のアクセス回数を“0”にリセットする。
このように、アクセス回数が所定回数以上のデータがあるか否かに基づいて、グループを分割するかの判断を行う。例えば、所定回数以上アクセスされたデータがあるにも関わらず、同一のグループにアクセス回数が“0”のデータが存在する場合、両データの関連性は特に弱まっていると考えられるからである。グループから除外対象とするデータを絞り込むことで、より関係性が強いと推定されるデータ同士を同一のグループに所属させることができる。これにより、グループ化の精度を向上させることができる。
[第6の実施の形態]
次に、第6の実施の形態を説明する。前述の第2〜第4の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。第2〜第4の実施の形態で示した機能を組み合わせて、グループの統合を行ってもよい。そこで、第6の実施の形態では、第2〜第4の実施の形態の機能を組み合わせる場合を例示する。
ここで、第6の実施の形態の情報処理システムは、図2で示した第2の実施の形態の情報処理システムと同様である。また、第6の実施の形態の情報処理システムに含まれる装置や機能は、図3,4で示した第2の実施の形態の装置や機能と同様である。そこで、第6の実施の形態では、第2の実施の形態と同じ符号、名称を用いる。ただし、サーバ100は、図16で説明した閾値テーブル133と、図18で説明した検出回数テーブル134とを記憶する。第6の実施の形態のアクセス処理の手順は、図8の手順と同様である。
図22は、第6の実施の形態の統合処理の例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。ここで、図22の処理は図9の処理の代わりに実行される。
(S41)制御部150は、関連データがキャッシュ110に保持されているか否かを判定する。保持されている場合、処理をステップS42に進める。保持されていない場合、処理を終了する。
(S42)制御部150は、今回アクセスされたデータと関連データとが同じグループに属するか判定する。同じグループに属する場合、処理を終了する。同じグループに属さない場合、処理をステップS43に進める。
(S43)制御部150は、所属テーブル131に基づいて、今回アクセスされたデータが属するグループのデータ数と、関連データが属するグループのデータ数との和が、データ数の閾値以下であるか否かを判定する。閾値以下である場合、処理をステップS44に進める。閾値よりも大きい場合、処理をステップS47に進める。
(S44)制御部150は、検出回数テーブル134を参照し、今回アクセスされたデータに対する関連データの検出回数を取得する。
(S45)制御部150は、検出回数が所定回数以上であるか否かを判定する。所定回数以上である場合、処理をステップS50に進める。所定回数よりも小さい場合、処理をステップS46に進める。ステップS45の判定に用いる回数は、運用環境に応じて任意に設定可能である。例えば、3回、5回、10回などの値を管理情報記憶部130に予め設定できる。
(S46)制御部150は、検出回数テーブル134を参照して、今回アクセスされたデータに対して検出された関連データの検出回数に“1”を加算する。制御部150は、検出回数テーブル134に、今回アクセスされたデータに、検出された関連データのエントリがない場合は、検出された関連データのエントリを追加する(検出回数の初期値“1”を設定する)。そして、処理を終了する。
(S47)制御部150は、アクセス管理テーブル132を参照し、今回アクセスされたデータのグループに属する各データのアクセスフラグを取得する。
(S48)制御部150は、アクセスフラグが“false”のデータが存在するか否かを判定する。存在する場合、処理を終了する。存在しない場合、処理をステップS49に進める。
(S49)制御部150は、閾値テーブル133を参照して、グループの閾値を増やす。具体的には、関連データが属するグループにおけるデータ数を、今回アクセスされたグループの閾値に加算する。そして、処理をステップS50に進める。
(S50)制御部150は、所属テーブル131を更新する。具体的には、制御部150は、今回アクセスされたデータのグループ(セグメント)に属する全てのデータと、関連データのグループ(セグメント)に属する全てのデータとを新たなグループに所属させる(グループの統合)。ステップS50では、制御部150は、所属テーブル131の更新を行うのみであり、更新結果のセグメントへの反映を行わない。
(S51)制御部150は、ステップS50の更新結果をセグメントに反映させる。例えば、セグメントSG11,SG12を1つのセグメントにまとめる場合、データA,Bが属する新たなセグメントをデータ記憶部120に作成する(セグメントの統合)。制御部150は、元のセグメントSG11,SG12の領域を解放し、上書き可能として管理する。
このように、第2〜第4の実施の形態の機能を組み合わせることもできる。これにより、第2〜第4の実施の形態と同様の効果を得ることができる。なお、更に、第5の実施の形態の機能を追加することも考えられる。第5の実施の形態の機能を追加した場合、制御部150は、アクセス管理テーブル132に代えて、アクセス回数テーブル135を用いることになる。このため、ステップS47では、制御部150は、着目するグループに属するデータについて、アクセス回数テーブル135からアクセス回数を取得する。ステップS48では、取得したアクセス回数のうち、アクセス回数が“0”のデータがあるか否かを判定する。そしてアクセス回数が“0”のデータがなければ処理をステップS49に進め、アクセス回数が“0”のデータがあれば処理を終了する。このように、第5の実施の形態の機能を追加してもよい。
[第7の実施の形態]
次に、第7の実施の形態を説明する。第2〜第6の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
第2〜第6の実施の形態では、データを管理するノードとしてサーバ100を想定した。一方、複数のノードを設けて、各セグメントを複数のノードで分散して管理することも考えられる。各ノードのデータアクセスに伴う負荷を軽減でき、また、データアクセスの高速化を図れるからである。
図23は、第7の実施の形態の情報処理システムの例を示す図である。第7の実施の形態の情報処理システムでは、第7の実施の形態で説明したサーバ100に加えて、サーバ100a,100bを含む。サーバ100a,100bは、ネットワーク10に接続されている。サーバ100a,100bは、サーバ100と同様の機能を備えたサーバコンピュータである。
サーバ100,100a,100bは、複数のセグメントを分散管理する。例えば、セグメントSG1をサーバ100が担当し、セグメントSG2をサーバ100aが担当し、セグメントSG3をサーバ100bが担当する。何れかのセグメントのデータに対するアクセス要求を受け付けた場合は、アクセス要求されたセグメントを担当するサーバがアクセス要求に応答する。例えば、サーバ100bがセグメントSG1のデータに対するアクセス要求を受け付けた場合、サーバ100bはサーバ100にアクセス要求を転送する。サーバ100は、転送されたアクセス要求を受け付けると、要求されたデータを要求元に送信する。
ここで、サーバ100a,100bは、サーバ100と同様のハードウェアを用いて実現できる。また、サーバ100a,100bの機能は、図4で説明したサーバ100の機能と同様である。ただし、各サーバの制御部は相互に通信して、各サーバで保持される所属テーブルを最新の状態に同期する。また、サーバ100,100a,100bは、セグメントと担当サーバとの対応関係を保持している。
図24は、第7の実施の形態のセグメント担当テーブルの例を示す図である。セグメント担当テーブル136は、管理情報記憶部130に格納される。サーバ100a,100bもセグメント担当テーブル136と同様のテーブルを保持する。セグメント担当テーブル136は、セグメントおよび担当サーバの項目を含む。
セグメントの項目には、セグメントの識別情報が登録される。担当サーバの項目には、セグメントを担当するサーバの識別情報が登録される。例えば、セグメント担当テーブル136には、セグメントが“SG1”、担当サーバが“サーバ100”という情報が登録される。これは、セグメントSG1をサーバ100が担当することを示している。
各サーバは、所属テーブルおよびセグメント担当テーブルを保持し、何れのセグメントを何れのサーバが担当するかを把握できる。例えば、サーバ100は、所属テーブル131およびセグメント担当テーブル136に基づいて、何れかのセグメントに属するデータを何れのサーバから取得すればよいかを把握できる。
例えば、何れのセグメントを何れのサーバが担当するかは、セグメントの識別情報などに基づいて決定することが考えられる。このため、各サーバは、グループの統合や分割に伴って新たなセグメントを作成する場合にも、新たなセグメントに識別情報を付与し、新たなセグメントに格納するデータを何れのサーバに送信すればよいかを把握できる。例えば、各サーバは、新たなセグメントに格納するデータを他のサーバに送信するとともに、新たなセグメントの作成を他のサーバに指示することもできる。また、新たなセグメントの作成に伴い、作成したセグメントと担当サーバとの対応関係が何れかのサーバによりセグメント担当テーブル136に登録された場合、各サーバ間でセグメント担当テーブル136が同期される。
ここで、第7の実施の形態でも第2〜第6の実施の形態と同様に、データ間の関連の検出およびセグメントに対するデータの所属の決定を行える。例えば、クライアント200は、前回アクセスしたデータの識別情報をアクセス要求に含める。各サーバは、アクセス要求から連続してアクセスされたデータを把握し、データ間の関連を検出できる。あるいは、各サーバは、何れのアクセス要求元から何れのデータに対するアクセスを受けたかを互いに通知し合ってもよい。各サーバは、データ間の関連の検出結果に応じて、自身が担当するセグメントと他のサーバが担当するセグメントとを統合する。また、各サーバは、自身が管理するグループへのキャッシュ領域の割当てを解除したときも、第2〜第6の実施の形態と同様にグループおよびセグメントの分割を行える。
例えば、サーバ100は、自身が担当するセグメントからサーバ100aが担当するセグメントに対してデータの配置を変更する場合は、変更対象のデータをサーバ100aに送信する。サーバ100aは、サーバ100から受信したデータをサーバ100aが担当するセグメントに格納する。このようにして、サーバ間での各セグメントに対するデータの配置変更を行える。
なお、第2〜第7の実施の形態の説明では、グループに所属させるデータ数の閾値を設けるものとしたが、データ数の閾値に代えて、データサイズ(例えば、ビット数やバイト数で表される量)の閾値を用いてもよい。
なお、以上の説明では、主に、キャッシュ110としてRAM102を、データ記憶部120としてHDD103を想定したが、これら以外の組み合わせも考えられる。例えば、キャッシュ110としてRAM102を、データ記憶部120としてSSD、光ディスク13およびテープ媒体などを用いてもよい。また、キャッシュ110としてSSDを、データ記憶部120としてHDD103、光ディスク13およびテープ媒体などを用いてもよい。
また、第2〜第7の実施の形態では、主にサーバコンピュータを例示したが、データアクセスを制御するプロセッサ、ディスク装置およびキャッシュメモリを備えるストレージ装置に第2〜第7の実施の形態を適用することもできる。
また、第1の実施の形態の情報処理は、演算部1cにプログラムを実行させることで実現できる。また、第2〜第7の実施の形態の情報処理は、各サーバが備えるプロセッサにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、光ディスク13、メモリ装置14およびメモリカード16など)に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、記憶装置からプログラムを読み込んで実行してもよい。
1 データ配置制御装置
1a メモリ
1b 記憶装置
1c 演算部
G1,G2,G3,G4 グループ
SG1,SG2,SG3,SG4,SG5,SG6 セグメント

Claims (8)

  1. コンピュータに、
    記憶装置に記憶されたデータのグループ化に関するグループ化情報を、前記記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、前記記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、
    前記グループ化情報の更新に応じて、前記記憶装置のデータ配置を更新し、
    前記グループ化情報の更新では、前記メモリに保持されており、属するグループが異なる第1のデータと第2のデータとに関連が検出されると、前記第1のデータが属する第1のグループと前記第2のデータが属する第2のグループとを統合する、
    処理を実行させることを特徴とするデータ配置制御プログラム。
  2. 前記第1および前記第2のグループの統合では、前記第1のデータが属する前記第1のグループのサイズと前記第2のデータが属する前記第2のグループのサイズとの和が閾値を超えない場合に、前記第1および前記第2のグループを、前記第1および前記第2のグループに属するデータを含む第3のグループに更新する、
    ことを特徴とする請求項1記載のデータ配置制御プログラム。
  3. 前記和が前記閾値を超え、前記メモリに保持された前記第1または前記第2のグループに属する全てのデータに対するアクセスがある場合、前記閾値を増加させる、
    ことを特徴とする請求項2記載のデータ配置制御プログラム。
  4. 前記グループ化情報の更新では、第3のデータに対する前記メモリの記憶領域の割当てが解除された際に、前記第3のデータが前記メモリに保持されていた間の前記第3のデータに対するアクセスに応じて、前記第3のデータが属するグループから前記第3のデータを除外する、
    ことを特徴とする請求項1乃至3の何れか1項に記載のデータ配置制御プログラム。
  5. 前記第3のデータが、前記メモリに保持されていた間にアクセスされたか否かを判定し、アクセスされていない場合に前記第3のデータが属するグループから前記第3のデータを除外する、
    ことを特徴とする請求項4記載のデータ配置制御プログラム。
  6. 前記第3のデータが属するグループにおける他のデータに対するアクセス回数に応じて、前記第3のデータをグループから除外するか否かを決定する、
    ことを特徴とする請求項4または5記載のデータ配置制御プログラム。
  7. コンピュータが、
    記憶装置に記憶されたデータのグループ化に関するグループ化情報を、前記記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、前記記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、
    前記グループ化情報の更新に応じて、前記記憶装置のデータ配置を更新し、
    前記グループ化情報の更新では、前記メモリに保持されており、属するグループが異なる第1のデータと第2のデータとに関連が検出されると、前記第1のデータが属する第1のグループと前記第2のデータが属する第2のグループとを統合する、
    ことを特徴とするデータ配置制御方法。
  8. データを保持可能なメモリと、
    記憶装置に記憶されたデータのグループ化に関するグループ化情報を、前記記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、前記記憶装置に記憶されたデータに対するアクセスに応じて前記メモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、
    前記グループ化情報の更新に応じて、前記記憶装置のデータ配置を更新し、
    前記グループ化情報の更新では、前記メモリに保持されており、属するグループが異なる第1のデータと第2のデータとに関連が検出されると、前記第1のデータが属する第1のグループと前記第2のデータが属する第2のグループとを統合する、演算部と、
    を有することを特徴とするデータ配置制御装置。
JP2013269648A 2013-12-26 2013-12-26 データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置 Active JP6269048B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013269648A JP6269048B2 (ja) 2013-12-26 2013-12-26 データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置
US14/575,531 US9619150B2 (en) 2013-12-26 2014-12-18 Data arrangement control method and data arrangement control apparatus
EP14199635.5A EP2889776B1 (en) 2013-12-26 2014-12-22 Data arrangement control program, data arrangement control method and data arrangment control apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013269648A JP6269048B2 (ja) 2013-12-26 2013-12-26 データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置

Publications (2)

Publication Number Publication Date
JP2015125597A JP2015125597A (ja) 2015-07-06
JP6269048B2 true JP6269048B2 (ja) 2018-01-31

Family

ID=52272894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013269648A Active JP6269048B2 (ja) 2013-12-26 2013-12-26 データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置

Country Status (3)

Country Link
US (1) US9619150B2 (ja)
EP (1) EP2889776B1 (ja)
JP (1) JP6269048B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6394231B2 (ja) 2014-09-25 2018-09-26 富士通株式会社 データ配置制御プログラム、データ配置制御装置およびデータ配置制御方法
US10120811B2 (en) * 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US10095628B2 (en) 2015-09-29 2018-10-09 International Business Machines Corporation Considering a density of tracks to destage in groups of tracks to select groups of tracks to destage
US10241918B2 (en) 2015-09-29 2019-03-26 International Business Machines Corporation Considering a frequency of access to groups of tracks to select groups of tracks to destage
JP6760916B2 (ja) * 2017-12-20 2020-09-23 Necプラットフォームズ株式会社 ストレージコントローラ、ストレージアレイ装置、データ格納方法、およびプログラム
JP7100253B2 (ja) * 2018-08-03 2022-07-13 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム
JP7207960B2 (ja) * 2018-11-09 2023-01-18 ファナック株式会社 監視装置及び監視方法
JP7302178B2 (ja) 2019-01-22 2023-07-04 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及び、ストレージシステム
JP7269780B2 (ja) * 2019-04-08 2023-05-09 株式会社日立製作所 情報処理装置および情報処理装置のデータ管理方法
CN114521249A (zh) * 2019-09-20 2022-05-20 富士胶片株式会社 记录装置、记录方法、记录程序及磁带
US11971824B2 (en) * 2019-10-28 2024-04-30 Aetherai Ip Holding Llc Enhancing memory utilization and throughput in executing a computational graph

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
JPH07319771A (ja) 1994-05-27 1995-12-08 Fujitsu Ltd ディスク制御装置
JPH08263335A (ja) * 1995-03-20 1996-10-11 Toshiba Corp データ記憶装置
JPH08272689A (ja) 1995-03-29 1996-10-18 Hitachi Ltd ディスクキャッシュを内蔵するディスク記憶装置
US6381677B1 (en) * 1998-08-19 2002-04-30 International Business Machines Corporation Method and system for staging data into cache
JP4042359B2 (ja) * 2001-07-10 2008-02-06 日本電気株式会社 キャッシュ制御方法及びキャッシュ装置
JP4859595B2 (ja) * 2006-09-01 2012-01-25 株式会社日立製作所 記憶システム、そのデータ再配置方法、データ再配置プログラム
US7937541B2 (en) 2006-10-12 2011-05-03 International Business Machines Corporation Speed selective table scan operation
US7783839B2 (en) 2007-01-08 2010-08-24 International Business Machines Corporation Using different algorithms to destage different types of data from cache
US7996445B2 (en) 2007-04-27 2011-08-09 Network Appliance, Inc. Block reallocation planning during read-ahead processing
US8868853B2 (en) * 2009-08-12 2014-10-21 Nec Corporation Data processing device, data recording method and data recording program
WO2011024949A1 (ja) * 2009-08-31 2011-03-03 日本電気株式会社 コンテンツ配信装置、コンテンツ配信方法、およびプログラム
EP2811408A4 (en) * 2012-01-30 2015-01-21 Fujitsu Ltd DATA MANAGEMENT DEVICE, DATA MANAGEMENT METHOD, DATA MANAGEMENT PROGRAM, AND INFORMATION PROCESSING DEVICE
JP5938968B2 (ja) * 2012-03-19 2016-06-22 富士通株式会社 情報処理装置、情報処理プログラム及び情報処理方法
CN104246719A (zh) 2012-05-01 2014-12-24 惠普发展公司,有限责任合伙企业 预先布置数据以提交到非易失性存储器
US9607036B2 (en) * 2013-08-21 2017-03-28 International Business Machines Corporation Managing a data set

Also Published As

Publication number Publication date
EP2889776B1 (en) 2019-09-25
JP2015125597A (ja) 2015-07-06
US9619150B2 (en) 2017-04-11
US20150186048A1 (en) 2015-07-02
EP2889776A1 (en) 2015-07-01

Similar Documents

Publication Publication Date Title
JP6269048B2 (ja) データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置
CN108009008B (zh) 数据处理方法和系统、电子设备
US8275902B2 (en) Method and system for heuristic throttling for distributed file systems
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US9152575B2 (en) Data staging area
US20140115261A1 (en) Apparatus, system and method for managing a level-two cache of a storage appliance
US20140372675A1 (en) Information processing apparatus, control circuit, and control method
JP2015210718A (ja) 記憶制御装置、ストレージシステム、および記憶制御プログラム
US20170185520A1 (en) Information processing apparatus and cache control method
JP6337902B2 (ja) ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム
US9501396B2 (en) Wear leveling with marching strategy
US8086804B2 (en) Method and system for optimizing processor performance by regulating issue of pre-fetches to hot cache sets
US20130054727A1 (en) Storage control method and information processing apparatus
US20170103024A1 (en) Information processing apparatus and cache control method
US10489296B2 (en) Quality of cache management in a computer
CN113641596B (zh) 缓存管理方法、缓存管理装置、处理器
JP2017084338A (ja) フラッシュメモリのフラッシングを改善する方法およびシステム
CN108228088B (zh) 用于管理存储系统的方法和设备
US9851925B2 (en) Data allocation control apparatus and data allocation control method
CN105574008B (zh) 应用于分布式文件系统的任务调度方法和设备
CN113485642A (zh) 数据缓存方法及装置
JP6171816B2 (ja) データ管理プログラム、データ管理装置およびデータ管理方法
JP6919277B2 (ja) ストレージシステム、ストレージ管理装置、ストレージ管理方法、及びプログラム
TW201701160A (zh) 用來於一儲存系統中進行快取管理之方法與裝置
US10678699B2 (en) Cascading pre-filter to improve caching efficiency

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170825

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171218

R150 Certificate of patent or registration of utility model

Ref document number: 6269048

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150