JP2022034217A - 情報処理装置およびキャッシュ制御プログラム - Google Patents
情報処理装置およびキャッシュ制御プログラム Download PDFInfo
- Publication number
- JP2022034217A JP2022034217A JP2020137906A JP2020137906A JP2022034217A JP 2022034217 A JP2022034217 A JP 2022034217A JP 2020137906 A JP2020137906 A JP 2020137906A JP 2020137906 A JP2020137906 A JP 2020137906A JP 2022034217 A JP2022034217 A JP 2022034217A
- Authority
- JP
- Japan
- Prior art keywords
- reduction
- divided
- cache
- areas
- area
- 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.)
- Withdrawn
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 256
- 230000008569 process Effects 0.000 claims abstract description 222
- 230000009467 reduction Effects 0.000 claims abstract description 170
- 230000001174 ascending effect Effects 0.000 claims abstract description 12
- 238000013500 data storage Methods 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 109
- 238000004364 calculation method Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 14
- 238000011946 reduction process Methods 0.000 description 7
- 230000000052 comparative effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/314—In storage network, e.g. network attached cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】キャッシュ内の分割領域の割り当て数を削減する際に、削減後の分割領域の中からデータの格納先を決定するための処理負荷を軽減する情報処理装置及びキャッシュ制御プログラムを提供する。【解決手段】情報処理装置は、キャッシュを含む記憶部と、プロセスAに割り当てる分割領域の数を削減する場合、削減後の分割領域の数を削減前の第1の個数の約数である第2の個数に決定し、削減前後の分割領域の位置関係に基づき、削減後の分割領域R0、R1の夫々に対して削減前の分割領域R0~R3の中から複数個の分割領域を第2の分割領域として特定し、削減後の分割領域R0、R1の夫々に対して、対応する第2の分割領域の夫々から追い出し順位が低い順にデータブロックを割り当てることで、削減後の分割領域R0,R1の夫々に格納されるデータブロックを決定し、削減前の分割領域R0~R3のうち残りの分割領域R2、R3を解放する処理部と、を有する。【選択図】図1
Description
本発明は、情報処理装置およびキャッシュ制御プログラムに関する。
記憶装置に対するアクセスの際、その記憶装置よりアクセス速度の高い記憶装置をキャッシュとして用いることで、アクセス性能を向上させることができる。
このようなキャッシュの制御に関しては、キャッシュの領域をプロセスやジョブに関連付けて制御することが提案されている。例えば、プロセスIDに対応してキャッシュ領域をブロック単位で任意に分割可能とした演算装置が提案されている。また、キャッシュの登録時、エントリごとにその時点で実行中のジョブのIDを登録しておき、ジョブの実行が終了した時点で、そのジョブのIDを有するキャッシュエントリ部分のみをフラッシュ可能とした制御方法が提案されている。
このようなキャッシュの制御に関しては、キャッシュの領域をプロセスやジョブに関連付けて制御することが提案されている。例えば、プロセスIDに対応してキャッシュ領域をブロック単位で任意に分割可能とした演算装置が提案されている。また、キャッシュの登録時、エントリごとにその時点で実行中のジョブのIDを登録しておき、ジョブの実行が終了した時点で、そのジョブのIDを有するキャッシュエントリ部分のみをフラッシュ可能とした制御方法が提案されている。
ところで、キャッシュの領域をプロセスに関連付けて管理する方法として、キャッシュの領域をセットと呼ばれる分割領域単位で管理し、プロセスごとに1以上のセットを割り当てる方法が考えられる。この方法では、例えば、プロセスに複数のセットが割り当てられた場合、プロセスによるI/O(Input/Output)対象のデータブロックの格納先セットが、データブロックのアドレスと割り当てられたセット数とを用いた剰余計算によって決定される。
このような管理方法が用いられた場合において、キャッシュの空き領域を確保するために、あるプロセスに割り当て済みのセット数を削減することが考えられる。この場合に、削減前の各セットに格納されているデータブロックのうちキャッシュに残すデータブロックを、削減後のセットのうちのどれに格納するかをどのようにして効率よく決定するかという点に課題がある。例えば、キャッシュに残すすべてのデータブロックについて剰余計算を実行することで格納先を決定する場合、その計算負荷が高いという問題がある。特に、この剰余計算でデータブロックのアドレスを基にハッシュ値が計算される場合には、計算負荷の増大が顕著になる。
1つの側面では、本発明は、キャッシュ内の分割領域の割り当て数を削減する際に、削減後の分割領域の中からデータの格納先を決定するための処理負荷を軽減することが可能な情報処理装置およびキャッシュ制御プログラムを提供することを目的とする。
1つの案では、キャッシュの領域を含む記憶部と、処理部とを有する情報処理装置が提供される。この情報処理装置において、処理部は、複数のプロセスによる記憶装置に対するデータブロックの読み書きをキャッシュを用いて制御する際に、複数のプロセスのうち一のプロセスに対して、キャッシュを分割した複数の分割領域の中から第1の分割領域を第1の個数だけ割り当て、一のプロセスに対応する各データブロックのアドレスと第1の個数とに基づいて、第1の分割領域の中から一のプロセスに対応する各データブロックの格納先を決定する。また、処理部は、一のプロセスに割り当てる第1の分割領域の数を削減する場合、削減後の第1の分割領域の数を第1の個数の約数である第2の個数に決定し、削減前後の第1の分割領域の位置関係に基づき、削減後の第1の分割領域のそれぞれに対して削減前の第1の分割領域の中から複数個の分割領域を第2の分割領域として特定し、削減後の第1の分割領域のそれぞれに対して、対応する第2の分割領域のそれぞれから追い出し順位が低い順にデータブロックを割り当てることで、削減後の第1の分割領域のそれぞれに格納されるデータブロックを決定し、削減前の第1の分割領域のうち削減後の第1の分割領域を除く残りの分割領域を解放する。
また、1つの案では、上記の情報処理装置と同様の処理をコンピュータに実行させるキャッシュ制御プログラムが提供される。
1つの側面では、キャッシュ内の分割領域の割り当て数を削減する際に、削減後の分割領域の中からデータの格納先を決定するための処理負荷を軽減できる。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理システムの構成例および処理例を示す図である。図1に示す情報処理システムは、情報処理装置10と記憶装置20を含む。情報処理装置10は、記憶装置20に対するデータブロックの書き込みや、記憶装置20からのデータブロックの読み出しを制御できるようになっている。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理システムの構成例および処理例を示す図である。図1に示す情報処理システムは、情報処理装置10と記憶装置20を含む。情報処理装置10は、記憶装置20に対するデータブロックの書き込みや、記憶装置20からのデータブロックの読み出しを制御できるようになっている。
情報処理装置10は、記憶部11と処理部12を有する。
記憶部11は、記憶装置20よりアクセス速度の高い記憶装置によって実現される。記憶部11は、記憶装置20に対するアクセス時に利用されるキャッシュ13の領域を含む。キャッシュ13には、記憶装置20に記憶されたデータブロックの一部が一時的に格納される。
記憶部11は、記憶装置20よりアクセス速度の高い記憶装置によって実現される。記憶部11は、記憶装置20に対するアクセス時に利用されるキャッシュ13の領域を含む。キャッシュ13には、記憶装置20に記憶されたデータブロックの一部が一時的に格納される。
このキャッシュ13は、分割領域R0~R3に分割されている。分割領域R0~R3には、それぞれ一定数以下のデータブロックを格納できるようになっている。また、分割領域R0~R3のそれぞれにおいて、個別に追い出し制御が行われる。なお、図1では、下方向を分割領域の先頭側とし、上方向を分割領域の終端側とする。また、分割領域の上側(終端側)ほど追い出し順位(追い出しの優先度)が高いものとする。
処理部12は、例えば、プロセッサとして実現される。処理部12は、複数のプロセスによる記憶装置20に対するデータブロックの読み書きを、キャッシュ13を用いて制御する。この制御において、処理部12は、プロセスごとにキャッシュ13内の1以上の分割領域を割り当てることができる。
図1の例では、処理部12は、プロセスAに対して4個の分割領域R0~R3を割り当てたとする(ステップS1)。その後、例えば、プロセスAによって記憶装置20から読み出されたデータブロックD0~D15が分割領域R0~R3に格納されるとする。
ここで、処理部12は、あるプロセスについてのデータブロックの格納先の分割領域を、そのプロセスに割り当てられた分割領域の個数と、そのデータブロックのアドレスとを用いた計算によって決定する。例えば、分割領域R0,R1,R2,R3のそれぞれについての、プロセスAに割り当てられた分割領域の中における領域番号を、それぞれ0,1,2,3とする。また、「データブロックDX」における「X」の値を、データブロックのアドレスとし、プロセスAに割り当てられた分割領域の個数をYとする。この場合、データブロックDXの格納先の領域番号は、「X mod Y」(アドレスXを個数Yで除算したときの余り)という剰余計算によって決定される。
次に、プロセスAに割り当てられた分割領域の個数を削減する場合について説明する。例えば、他のプロセスBに対応する分割領域を確保するためにキャッシュ13上に空きの分割領域を作成したい場合に、プロセスAに対する分割領域の割り当て個数が削減される。
この場合、処理部12は、プロセスAに割り当てられている分割領域の個数を、現状の個数Y=4の約数に決定する。図1の例では、削減後の個数が「4」の約数である「2」に決定される(ステップS2)。このとき、プロセスAに対する割り当て先が、分割領域R0~R3から分割領域R0,R1に削減されるとする。
次に、処理部12は、削減後の分割領域R0,R1のそれぞれに対して、削減前の分割領域R0~R3の中から複数個の分割領域を「対象分割領域」として特定する。この特定は、削減前の分割領域R0~R3と削減後の分割領域R0,R1との位置関係に基づいて行われる。例えば、削減後の分割領域の割り当て個数をY’とすると、削減後の一の分割領域に対応する対象分割領域は、削減前の分割領域の中から当該一の分割領域を起点としてY’間隔で選択することで特定される。
図1の例では、Y’=2であるので、削減後の分割領域R0に対応する対象分割領域は、削減前の分割領域R0を起点として2個間隔で選択することで特定される。これにより、削減後の分割領域R0に対応する対象分割領域として分割領域R0,R2が特定される。また、削減後の分割領域R1に対応する対象分割領域は、削減前の分割領域R1を起点として2個間隔で選択することで特定される。これにより、削減後の分割領域R1に対応する対象分割領域として分割領域R1,R3が特定される(ステップS3)。
次に、処理部12は、削減後の分割領域R0,R1のそれぞれに対して、対応する対象分割領域のそれぞれから追い出し順位が低い順にデータブロックを割り当てる。これにより、削減前の分割領域R0~R3に格納されていた各データブロックの、削減後における格納先の分割領域が決定される(ステップS4)。
図1の例では、削減後の分割領域R0に対して、対応する対象分割領域である削減前の分割領域R0,R2のそれぞれから、追い出し順位が低い順にデータブロックが割り当てられる。これにより、データブロックD12,D14,D8,D2,D4,D10,D0,D6の順に、削減後の分割領域R0の先頭側からデータブロックが割り当てられる。ただし、分割領域R0から溢れるデータブロックD4,D10,D0,D6については破棄される。
また、削減後の分割領域R1に対しては、対応する対象分割領域である削減前の分割領域R1,R3のそれぞれから、追い出し順位が低い順にデータブロックが割り当てられる。これにより、データブロックD9,D3,D13,D11,D5,D15,D1,D7の順に、削減後の分割領域R1の先頭側からデータブロックが割り当てられる。ただし、分割領域R1から溢れるデータブロックD5,D15,D1,D7については破棄される。
このようにして削減後の分割領域R0,R1に格納されるデータブロックが決定されると、残りの分割領域R2,R3は解放される。
ここで、データブロックD0~D15の、削減後における格納先の分割領域を決定する他の処理例としては、データブロックD0~D15のすべてについて、削減後の個数Y’と各データブロックのアドレスとを用いた上記の剰余計算を行う方法が考えられる。しかし、この方法ではデータブロックD0~D15のすべてについて剰余計算を行う必要があるので、処理負荷が高く、これらすべてについての格納先が決定されるまでに時間がかかる。
ここで、データブロックD0~D15の、削減後における格納先の分割領域を決定する他の処理例としては、データブロックD0~D15のすべてについて、削減後の個数Y’と各データブロックのアドレスとを用いた上記の剰余計算を行う方法が考えられる。しかし、この方法ではデータブロックD0~D15のすべてについて剰余計算を行う必要があるので、処理負荷が高く、これらすべてについての格納先が決定されるまでに時間がかかる。
これに対して、上記の処理部12の処理によれば、データブロックの削減後における格納先の分割領域は、削減前にそのデータブロックが格納されている分割領域によって決定される。例えば、ステップS3の処理により、削減前の分割領域R0,R2に格納されているデータブロックの削減後における格納先は、分割領域R0と決定される。また、削減前の分割領域R1,R3に格納されているデータブロックの削減後における格納先は、分割領域R1と決定される。このように、データブロック単位でなく、削減前の分割領域単位で削減後における格納先を決定することで、その決定のための処理負荷を軽減でき、決定に要する時間を短縮できる。
したがって、第1の実施の形態に係る情報処理装置10によれば、キャッシュ13内の分割領域の割り当て数を削減する際に、削減後の分割領域の中からデータブロックの格納先を決定するための処理負荷を軽減できる。
なお、以上の第1の実施の形態では、データブロックの格納先の分割領域を決定するための剰余計算において、アドレスXを個数Yで除算したときの余りを計算した。しかし、この剰余計算を、アドレスXのハッシュ値を個数Yで除算したときの余りとして計算することもできる。この場合、ハッシュ値計算が含まれる分だけ剰余計算の負荷が大きくなる。第1の実施の形態における上記処理によれば、分割領域数の削減後におけるデータブロックの格納先を決定するために、このような高負荷の剰余計算を実行しなくてよくなり、処理負荷の軽減効果がより大きくなる。
〔第2の実施の形態〕
図2は、第2の実施の形態に係る情報処理システムの構成例を示す図である。図2に示す情報処理システムは、サーバ装置100、ストレージ200およびクライアント装置300を含む。なお、サーバ装置100は、図1に示した情報処理装置10の一例であり、ストレージ200は、図1に示した記憶装置20の一例である。
図2は、第2の実施の形態に係る情報処理システムの構成例を示す図である。図2に示す情報処理システムは、サーバ装置100、ストレージ200およびクライアント装置300を含む。なお、サーバ装置100は、図1に示した情報処理装置10の一例であり、ストレージ200は、図1に示した記憶装置20の一例である。
サーバ装置100は、クライアント装置300からの要求に応じて各種のサービスを提供するための処理を実行する。また、この処理の実行に伴い、サーバ装置100は、ストレージ200に対するI/O処理を実行可能になっている。
ストレージ200には、サーバ装置100からのアクセス対象となる1台以上の不揮発性記憶装置が搭載されている。本実施の形態では、例として、ストレージ200には不揮発性記憶装置としてHDD(Hard Disk Drive)が搭載されている。なお、ストレージ200は、サーバ装置100に内蔵されるローカルストレージであってもよい。
クライアント装置300は、サーバ装置100に対して処理の実行を要求し、処理結果を示す情報を受信する。すなわち、クライアント装置300は、サーバ装置100に対するクライアント機能を実現する。ただし、クライアント装置300は、例えば、業務処理などの各種の処理を実行するサーバコンピュータであってもよい。この場合、サーバコンピュータにサーバ装置100に対するクライアント機能が実装される。なお、クライアント装置300は、サーバ装置100に対して複数台接続されていてもよい。
図3は、サーバ装置およびストレージのハードウェア構成例を示す図である。
サーバ装置100は、プロセッサ101、RAM(Random Access Memory)102、SSD(Solid State Drive)103、読み取り装置104、ネットワークインタフェース(I/F)105およびドライブインタフェース(I/F)106を備える。
サーバ装置100は、プロセッサ101、RAM(Random Access Memory)102、SSD(Solid State Drive)103、読み取り装置104、ネットワークインタフェース(I/F)105およびドライブインタフェース(I/F)106を備える。
プロセッサ101は、サーバ装置100全体を統括的に制御する。プロセッサ101は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM102は、サーバ装置100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
SSD103は、サーバ装置100の補助記憶装置として使用される。SSD103には、OSプログラム、アプリケーションプログラムおよび各種データが格納される。また、SSD103は、ストレージ200内のHDDにアクセスする際のキャッシュとしても利用される。なお、補助記憶装置としての機能は、HDDなどの他の種類の不揮発性記憶装置を用いて実現されてもよい。
読み取り装置104には、可搬型記録媒体104aが脱着される。読み取り装置104は、可搬型記録媒体104aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体104aとしては、光ディスク、半導体メモリなどがある。
ネットワークインタフェース105は、クライアント装置300と通信するための通信インタフェース装置である。ネットワークインタフェース105は、例えば、LAN(Local Area Network)などのネットワークを介してクライアント装置300と通信する。
ドライブインタフェース106は、ストレージ200に含まれるHDDと通信するための通信インタフェース装置である。ドライブインタフェース106は、例えば、FC(Fibre Channel)やiSCSI(Internet Small Computer System Interface)、SATA(Serial Advanced Technology Attachment)などを利用してストレージ200と通信する。
ストレージ200には、不揮発性記憶媒体としてHDD201,202,203,・・・が搭載されている。
図4は、サーバ装置が備える処理機能の構成例を示す図である。サーバ装置100は、アプリケーション111,112,・・・とI/O制御部120を備える。アプリケーション111,112,・・・およびI/O制御部120の処理は、例えば、サーバ装置100のプロセッサ101が所定のアプリケーションプログラムを実行することで実現される。また、SSD103にはキャッシュ130の領域が確保される。さらに、RAM102には、キャッシュ管理情報141とセット管理情報142が記憶される。
図4は、サーバ装置が備える処理機能の構成例を示す図である。サーバ装置100は、アプリケーション111,112,・・・とI/O制御部120を備える。アプリケーション111,112,・・・およびI/O制御部120の処理は、例えば、サーバ装置100のプロセッサ101が所定のアプリケーションプログラムを実行することで実現される。また、SSD103にはキャッシュ130の領域が確保される。さらに、RAM102には、キャッシュ管理情報141とセット管理情報142が記憶される。
アプリケーション111,112,・・・は、クライアント装置300からの要求に応じて各種の処理を実行する。また、アプリケーション111,112,・・・は、I/O制御部120を介してストレージ200内のHDD201,202,203,・・・にアクセスすることが可能となっている。
I/O制御部120は、キャッシュ130を利用しながら、アプリケーション111,112,・・・からの要求に応じてストレージ200内のHDD201,202,203,・・・にアクセスする。I/O制御部120は、I/O受信部121、キャッシュ制御部122およびI/O処理部123を含む。
I/O受信部121は、アプリケーション111,112,・・・からI/O要求(書き込み要求または読み出し要求)を受信する。キャッシュ制御部122は、I/O受信部121が受信したI/O要求に応じたI/O処理を、キャッシュ130を用いて制御する。I/O処理部123は、キャッシュ制御部122の指示に応じて、ストレージ200内のHDD201,202,203,・・・に対するデータの書き込みや、HDD201,202,203,・・・からのデータの読み出しを実行する。
キャッシュ130は、「セット」と呼ばれる領域を単位として管理される。各セットは一定数以下の単位領域(キャッシュライン。以下「ライン」と記載する。)を含み、このラインが最小単位領域となる。また、プロセスごとに1以上のセットを割り当てることが可能となっている。
キャッシュ管理情報141は、キャッシュ130内のラインごとの管理情報(管理ブロック)を含む。管理ブロックは、セット単位で連結して管理される。これにより、キャッシュ130に格納されるデータがセット単位で管理される。セット管理情報142は、キャッシュ130内の絶対セット番号と、プロセスごとの論理的なセット番号であるプロセス内セット番号とを対応付けて記憶する。
図5は、プロセスを考慮したキャッシュ制御について説明するための図である。一般的に、SSDはHDDと比較してアクセス速度が高い。このため、SSDをキャッシュとして用いることで、より低速なHDDに対するアクセスを高速化できる。
図5に示すHDD210は、ストレージ200に含まれる1台または複数台のHDDによって実現される記憶領域であり、アクセス先の単位記憶領域がブロックアドレスによって指定される。このブロックアドレスは、1台または複数台のHDDの物理アドレス(例えばセクタ番号)であってもよいし、1台または複数台のHDDにより実現される論理記憶領域の論理アドレスであってもよい。
本実施の形態では、図5に示すように、サーバ装置100のSSD103が、HDD210へのアクセス時におけるキャッシュ(図4のキャッシュ130)として利用される。これにより、アプリケーション111,112,・・・からのHDD210に対するアクセスを高速化することができる。
なお、ストレージ200に搭載される記憶装置は、キャッシュとして利用される記憶装置と同じ種類であってもよい。このようなケースでも、例えば、ストレージ200の記憶装置がネットワークを介して分散ストレージとして配置されている場合には、ネットワークがボトルネックになってストレージ200の記憶装置に対するアクセス速度が低下し得る。このため、キャッシュが用いられることでデータアクセス速度を向上させることができる。
ところで、サーバ装置100では、HDD210へのアクセス処理に関する複数のプロセスP1,P2,・・・,PNが実行されている。ここでいう「プロセス」とは、例えば、アプリケーション111,112,・・・による処理に含まれるタスクやコンテナである。一般的に、キャッシュの管理はHDD210のブロックアドレスを用いて行われる。この場合、SSD103に確保されたキャッシュ領域は、プロセスP1,P2,・・・,PNで共通に利用される。
これに対して、本実施の形態では、SSD103内のキャッシュ130の領域がプロセス単位で確保される。この方法により、プロセスごとの優先度を考慮してキャッシュ制御を行うことができる。例えば、データベースアクセスなど、レイテンシが重要なプロセスに対応する第1の領域と、定期的なバックアップなど、レイテンシがそれほど重要でないプロセスに対応する第2の領域とがキャッシュ130内に確保されているとする。この状態で、他のプロセスによりキャッシュ130に空き領域を確保する必要が生じたとする。この場合に、第1、第2の領域のうち、レイテンシの重要性が低い(すなわち優先度が低い)第2の領域を解放することで、キャッシュ130の領域を効率的に利用できる。また、実行が終了したプロセスに対応する領域がキャッシュ130内に存在する場合には、その領域を優先的に解放することもできる。
図6は、プロセスに対するセットの割り当て例を示す図である。前述のように、本実施の形態では、キャッシュ130の領域はセット単位で管理される。各セットは、一定数を上限とするラインを含む。すなわち、各セットの最大セットサイズは同一である。以下の説明では、セットサイズとはセット内のライン数を示すものとする。
また、プロセスごとに1以上のセットが割り当てられる。図6の例では、プロセスP1に対して3つのセットが割り当てられ、プロセスP2に対して2つのセットが割り当てられている。各セットには、キャッシュ130内での通し番号である絶対セット番号があらかじめ付与されている。一方、プロセスにセットが割り当てられると、割り当てられた各セットにはプロセスごとのセット番号であるプロセス内セット番号が割り当てられる。図6の例では、プロセスP1用のプロセス内セット番号「0」「1」「2」が、それぞれ絶対セット番号「15」「16」「17」のセットに割り当てられている。また、プロセスP2用のプロセス内セット番号「0」「1」が、それぞれ絶対セット番号「18」「19」のセットに割り当てられている。次の図7に示すように、絶対セット番号とプロセス内セット番号との対応関係は、セット管理情報142によって管理される。
図7は、セット管理情報の構成例を示す図である。図7に示すように、セット管理情報142は、絶対セット番号ごとのレコードを含む。セットにプロセスが割り当てられた場合、そのセットの絶対セット番号に対応するレコードに、プロセス内セット番号と、割り当てられたプロセスを示すプロセス識別子とが登録される。
図8は、キャッシュ管理情報を用いたキャッシュ管理を説明するための図である。前述のように、キャッシュ管理情報141は、キャッシュ130内のラインごとの管理ブロックを含む。各管理ブロックには、キャッシュ130内のラインを示すキャッシュインデックスがあらかじめ登録されている。
また、プロセスに対してキャッシュ130のセットが割り当てられ、そのセット内のラインにデータブロックが格納されると、そのラインに対応する管理ブロックが、そのセットに対応する管理ブロックの配列に加えられる。この状態では、管理ブロックには、ブロックアドレス、前アドレスおよび次アドレスが登録される。ブロックアドレスは、対応するラインに格納されるデータブロックのアドレスを示す。前アドレスは、配列においてその管理ブロックの先頭側に位置する他の管理ブロックのアドレス(管理ブロックアドレス)を示す。管理ブロックが配列の先頭に位置する場合、前アドレスにはNULLが登録される。次アドレスは、配列においてその管理ブロックの終端側に位置する他の管理ブロックのアドレス(管理ブロックアドレス)を示す。管理ブロックが配列の終端に位置する場合、次アドレスにはNULLが登録される。
セットに対してプロセスが割り当てられると、そのセットに対応する配列が生成される。このとき、配列には先頭アドレスおよび最終アドレスのみが登録される。先頭アドレスは、配列の先頭に位置する管理ブロックのアドレスを示すが、初期状態ではNULLである。また、最終アドレスは、配列の終端に位置する管理ブロックのアドレスを示すが、初期状態ではNULLである。
その後、セットに属するラインとして、管理ブロック141aに対応するラインにデータブロックが格納されると、管理ブロック141aが配列に追加される。このとき、配列の先頭アドレスおよび最終アドレスとして管理ブロック141aのアドレスが設定される。また、管理ブロック141aに含まれる前アドレスおよび次アドレスは、ともにNULLである。
次に、セットに属するラインとして、管理ブロック141bに対応するラインにデータブロックが格納されたとする。セット内のデータブロックがLRU(Least Recently Used)方式やFIFO(Fist In/First Out)方式で管理される場合、新たな書き込みデータブロックに対応する管理ブロックは、セットの先頭に追加される。すなわち、配列の先頭アドレスとして管理ブロック141bのアドレスが設定され、管理ブロック141bに含まれる前アドレスとしてNULLが設定される。また、管理ブロック141bに含まれる次アドレスとして管理ブロック141aのアドレスが設定され、管理ブロック141aに含まれる次アドレスとして管理ブロック141bのアドレスが設定される。このようにして、セットに対応する管理ブロックの配列がキャッシュ管理情報141に登録される。
ここで、キャッシュデータの追い出し制御はセットごとに実行される。各セットでは、セットの終端側ほど追い出し順位が高くなるように管理される。上記のように、LRU方式、FIFO方式のいずれの場合でも、セットに新たなデータブロックが格納される際、そのデータブロックはセットの先頭に格納される。すなわち、そのデータブロックが格納されるラインに対応する管理ブロックが、セットの先頭に追加される。また、LRU方式で管理される場合には、セット内のいずれかのデータブロックについてキャッシュヒットすると、そのデータブロックが格納されたラインに対応する管理ブロックは、セットの先頭に付け替えられる。
ところで、データブロックの格納先のセットは、プロセスに割り当てられたセット数と、データブロックのブロックアドレスとから一意に決定される。したがって、次の図9に示すように、データブロックの読み出しが要求された場合のキャッシュヒット/ミスの判定時には、セット数とブロックアドレスとからセットが特定され、特定されたセットに対象のデータブロックが格納されているか否かが判定される。
図9は、キャッシュを用いたデータ読み出し処理を示すフローチャートの例である。
[ステップS11]I/O受信部121は、アプリケーション111,112,・・・のいずれかから読み出し要求を受信する。このとき、読み出し対象のデータブロックのブロックアドレスと、読み出し元のプロセスを示すプロセス識別子とが指定される。
[ステップS11]I/O受信部121は、アプリケーション111,112,・・・のいずれかから読み出し要求を受信する。このとき、読み出し対象のデータブロックのブロックアドレスと、読み出し元のプロセスを示すプロセス識別子とが指定される。
[ステップS12]キャッシュ制御部122は、セット管理情報142を参照し、指定されたプロセス識別子に対応付けられたセット数NSを取得する。
[ステップS13]キャッシュ制御部122は、指定されたブロックアドレスのハッシュ値HAを計算する。
[ステップS13]キャッシュ制御部122は、指定されたブロックアドレスのハッシュ値HAを計算する。
[ステップS14]キャッシュ制御部122は、剰余計算「HA mod NS」を実行することにより、ブロックアドレスに対応するプロセス内セット番号を計算する。すなわち、ハッシュ値HAをセット数NSが除算して得られる余りが、ブロックアドレスに対応するプロセス内セット番号として算出される。
[ステップS15]キャッシュ制御部122は、セット管理情報142を参照し、指定されたプロセス識別子と、ステップS14で算出されたプロセス内セット番号とに対応付けられた絶対セット番号を取得する。
[ステップS16]キャッシュ制御部122は、キャッシュ管理情報141に含まれる管理ブロックの配列のうち、ステップS15で取得された絶対セット番号が示すセットに対応する配列を参照する。キャッシュ制御部122は、参照先の配列に、指定されたブロックアドレスが登録された管理ブロックが存在するか(すなわち、対応するセットに、読み出しが要求されたデータブロックが存在するか)を判定する。該当する管理ブロックが存在する場合、キャッシュヒットとなり、処理がステップS17に進められる。一方、該当する管理ブロックが存在しない場合、キャッシュミスとなり、処理がステップS18に進められる。
[ステップS17]キャッシュ制御部122は、キャッシュ130内のセットのうち、ステップS15で取得された絶対セット番号が示すセットから、読み出しが要求されたデータブロックを読み出し、I/O受信部121を介して読み出し元のアプリケーションに送信する。
[ステップS18]I/O処理部123は、キャッシュ制御部122からの指示に基づき、読み出しが要求されたデータブロックをHDD210から読み出し、キャッシュ制御部122およびI/O受信部121を介して読み出し元のアプリケーションに送信する。また、キャッシュ制御部122は、HDD210から読み出されたデータブロックを、ステップS15で取得された絶対セット番号が示すセットの先頭ラインに格納する。
次に、プロセスに割り当てられたセットの数を削減する処理について説明する。例えば、空きのセット数が少ない状態で新規のプロセスが発生したときに、そのプロセスに対してセットを割り当てるために、既存プロセスに割り当て済みのセット数を削減して空きのセットを確保したい、というケースがある。
以下の図10、図11では、このようなケースにおけるセット数削減処理の比較例を示す。図10、図11では、あるプロセスに対して、絶対セット番号「15」~「18」の4セットが割り当てられている状態から、絶対セット番号「18」のセットを解放して、そのプロセスに対する割り当てセット数を「3」に削減するものとする。
図10は、セット数削減処理の第1の比較例を示す図である。図10に示すように、1つの方法としては、セット数の削減前のセットに格納されていたデータブロックを破棄し、その状態から、削減後のセットを用いたI/O制御を開始する方法が考えられる。この場合、I/O制御の開始に伴って、削減後のセットにデータブロックが再度読み込まれることになる。しかし、この方法では、既存プロセスからのI/O要求に対するレイテンシが大きく悪化してしまう。特にこのケースでは、新規プロセスからのI/O要求も多く発生する可能性が高く、既存プロセスと新規プロセスの両方のレイテンシが悪化する可能性が高い。
図11は、セット数削減処理の第2の比較例を示す図である。図11の例では、削減前のセットに格納されていたデータブロックをできる限り残すことで、既存プロセスからのI/O要求に対するレイテンシの増加を抑制する。この処理では、削減前のセットに格納されているすべてのデータブロックについて、削減後のセット数(3)とブロックアドレスのハッシュ値を用いた剰余計算によって、削減後における格納先(割り当て先)のセットが決定される。また、削減前の各セットにおける先頭側のデータブロックが、削減後のセットに優先的に残される。
その結果、削減前のセットに格納されていたデータブロックのうち、セットの終端側に格納されていたデータブロックA5,A6,A7,A19がセットから漏れて破棄されるが、それ以外のデータブロックが削減後のセットに残される。残されるデータブロックが格納されているラインについては、対応する管理ブロックのセットに対する割り当て先や配列上の位置が変更されるだけなので、データブロック自体を格納し直す必要性は生じない。したがって、I/O要求に対するレイテンシについては、一部のデータブロックが破棄されることにより悪化するものの、図10の例と比較して大きく改善できる。
しかしながら、この方法では、すべてのデータブロックについて、格納先セットを決定するための剰余計算を実行する必要がある。このため、格納先セット決定のための計算負荷が大きいという問題がある。その結果、例えば、セット割り当て数の削減処理が完了するまでに時間がかかり、対応するプロセスについてのI/O処理を再開するまでに時間がかかる。また、上記の計算処理負荷が、実行中の他のプロセスからのI/O要求に対するレイテンシに悪影響を与える可能性もある。
そこで、第2の実施の形態に係るサーバ装置100では、プロセスに対するセットの割り当て数、および割り当て済みのセットの削減数についてルールを設けることで、データブロックの削減後における格納先セットの計算を簡易化し、その計算負荷を軽減する。具体的には、割り当て数の削減を可能にする場合、1つのプロセスに対するセットの割り当て数を2以上の自然数の倍数とする。そして、削減後の割り当てセット数を、削減前のセット数の約数とする。
図12は、セット割り当ておよび削減の第1の処理例を示す図である。第1の処理例では、プロセスに対してセットを割り当てる場合に、そのセット数が2nとされる(ただし、nは2以上の自然数)。図12の例では、n=2とされ、プロセスに対して4セットが割り当てられる。具体的には、プロセスに対して絶対セット番号「15」~「18」の4セットが割り当てられる。なお、絶対セット番号「15」~「18」の各セットには、プロセス内セット番号「0」~「3」が付与されている。
この状態から、セット数が1/2n’に削減される(ただし、n’はnより小さい自然数)。図12の例では、n’=1とされ、プロセスに対して割り当てられるセットが絶対セット番号「15」「16」の2セットに変更される。このとき、絶対セット番号「15」「16」の各セットには、プロセス内セット番号「0」「1」が付与されるものとする。なお、以下の説明では、プロセス内セット番号「X」のセットをセット「X」と表す。
削減前の各セットに格納されているデータブロックの、削減後における格納先(割り当て先)のセットは、削減後のセット数「2」と、削減前後のセットの位置関係とに基づいて決定される。例えば、削減後における格納先がセット「0」となるセットは、削減前のセットの中から同じセット「0」を起点として削減後のセット数「2」間隔で選択することで特定される。すなわち、該当するセットはセット「0」「2」となる。また、削減後における格納先がセット「1」となるセットは、削減前のセットの中から同じセット「1」を起点として削減後のセット数「2」間隔で選択することで特定される。すなわち、該当するセットはセット「1」「3」となる。
削減後のセット「0」に対しては、削減前のセット「0」「2」のそれぞれから追い出し順位が低い順に1つずつデータブロックが選択されて格納される(割り当てられる)。具体的には、削減後のセット「0」に対して、データブロックA0,A2,A4,A18,A16,A10,A8,A6の順に割り当てられる。ただし、セット「0」から溢れたデータブロックA16,A10,A8,A6については破棄される。すなわち、データブロックA16,A10,A8,A6が格納されたラインが、セットから解放されて未使用ラインとなる。一方、データブロックA0,A2,A4,A18が格納された各ラインについては、対応する管理ブロックがセット「0」に対応する配列に付け替えられる。
また、同様に削減後のセット「1」に対しては、削減前のセット「1」「3」のそれぞれから追い出し順位が低い順に1つずつデータブロックが選択されて格納される(割り当てられる)。具体的には、削減後のセット「1」に対して、データブロックA9,A11,A1,A3,A17,A7,A5,A19の順に割り当てられる。ただし、セット「1」から溢れたデータブロックA17,A7,A5,A19については破棄される。すなわち、データブロックA17,A7,A5,A19が格納されたラインが、セットから解放されて未使用ラインとなる。一方、データブロックA9,A11,A1,A3が格納された各ラインについては、対応する管理ブロックがセット「1」に対応する配列に付け替えられる。
以上の処理により、削減後のセット「0」「1」に対するデータブロック(ライン)の割り当てが完了し、セット「2」「3」が解放されて未使用セットとなる。
上記処理によれば、プロセスに対する初期の割り当てセット数を2nとし、セット数を削減する際には削減後のセット数を1/2n’とすることで、各データブロックについて格納先を決定する処理が簡易化される。すなわち、削減前の各セットに格納されているデータブロックの、削減後における格納先(割り当て先)のセットは、削減後のセット数と、削減前後のセットの位置関係とに基づいて決定される。これにより、格納先セットの決定のために、アドレスのハッシュ値計算や剰余計算のような複雑な計算が必要にならない。しかも、格納先セットはデータブロック(ライン)単位でなく削減前のセット単位で決定される。したがって、図11に示した方法と比較して、格納先決定のための計算処理負荷を軽減でき、その決定に要する時間を短縮できる。
上記処理によれば、プロセスに対する初期の割り当てセット数を2nとし、セット数を削減する際には削減後のセット数を1/2n’とすることで、各データブロックについて格納先を決定する処理が簡易化される。すなわち、削減前の各セットに格納されているデータブロックの、削減後における格納先(割り当て先)のセットは、削減後のセット数と、削減前後のセットの位置関係とに基づいて決定される。これにより、格納先セットの決定のために、アドレスのハッシュ値計算や剰余計算のような複雑な計算が必要にならない。しかも、格納先セットはデータブロック(ライン)単位でなく削減前のセット単位で決定される。したがって、図11に示した方法と比較して、格納先決定のための計算処理負荷を軽減でき、その決定に要する時間を短縮できる。
図13は、セット割り当ておよび削減の第2の処理例を示す図である。第2の処理例では、プロセスに対してセットを割り当てる場合に、そのセット数がa・mnとされる(ただし、aは自然数、mは2以上の自然数、n>0)。また、プロセスごとにa,mを任意に設定できるようになっている。そして、セットの割り当て数を削減する場合には、セット数が1/mn’、または1/aに削減される。
図13の例では、プロセスP1について、n=1,a=3,m=2に設定され、絶対セット番号「0」~「5」の6セットが割り当てられている。また、プロセスP2について、n=1,a=1,m=3に設定され、絶対セット番号「6」~「8」の3セットが割り当てられている。絶対セット番号「9」~「11」のセットについては空きセットとなっている。
この場合、プロセスP1,P2のいずれについても、セットの割り当て数を削減する場合には、セット数を1/mn’、または1/aに削減することができる。どちらの削減方法を用いるかはプロセスごとに任意に選択可能であり、前者の方法を採用した場合のn’の値も、プロセスごとに任意に設定可能である。いずれの場合でも、図12の例と同様に、削減前の各セットに格納されているデータブロックの、削減後における格納先(割り当て先)のセットは、削減後のセット数と、削減前後のセットの位置関係とに基づいて決定される。
例えば、プロセスP1に対するセットの割り当て数が1/a=1/3に削減されたとする。なお、ここでは、削減前において絶対セット番号「0」~「5」のセットにそれぞれプロセス内セット番号「0」~「5」が割り当てられていたとする。また、この状態から割り当てセットが絶対セット番号「0」「1」に変更され、セット数の削減後においては絶対セット番号「0」「1」のセットにそれぞれプロセス内セット番号「0」「1」が割り当てられたとする。
この場合、例えば、削減後における格納先がセット「0」となるセットは、削減前のセットの中から同じセット「0」を起点として削減後のセット数「2」間隔で選択することで特定される。すなわち、該当するセットはセット「0」「2」「4」となる。そして、削減後のセット「0」に対しては、削減前のセット「0」「2」「4」のそれぞれから追い出し順位が低い順に1つずつデータブロックが選択されて格納される(割り当てられる)。セット「0」から溢れたデータブロックについては破棄され、それらのデータブロックが格納されていたラインがセットから解放される。
一方、プロセスP2については、例えば、セットの割り当て数を1/31に削減することができる。この場合、プロセスP2に対する削減後のセット割り当て数は「1」となる。
このように、セットの初期割り当て数および削減数についてのルール(セット数管理ポリシー)を、プロセスごとに任意に設定することができる。これにより、例えば、プロセスの特性などに応じてプロセスに対してセットを柔軟に割り当てることができる。
なお、前述の図12では、プロセスに対する初期の割り当てセット数が2nとされていたが、これは、図13の例においてa=1,m=2とした場合に相当する。
図14は、セット割り当ておよび削減の第3の処理例を示す図である。この図14には、プロセスごとにセット数管理ポリシーを変えた場合の別の例を示している。
図14は、セット割り当ておよび削減の第3の処理例を示す図である。この図14には、プロセスごとにセット数管理ポリシーを変えた場合の別の例を示している。
図14の上段に示すように、プロセスP1に対して絶対セット番号「0」~「8」の各セットが割り当てられたとする。この場合、割り当てセット数は例えば1×32=9となっている。すなわち、プロセスP1についてはn=2,a=1,m=3に設定されている。
その後、プロセスP2に対してセットを割り当てるために、プロセスP1に対する割り当てセット数を削減するものとする。この場合、図14の中段に示すように、プロセスP1に対する割り当てセット数は1/31に削減され、絶対セット番号「0」~「2」の3セットがプロセスP1に割り当てられた状態となる。このとき、絶対セット番号「3」~「8」のセットは空き状態になる。この状態から、プロセスP2に対して絶対セット番号「3」~「6」の各セットが割り当てられたとする。この場合、割り当てセット数は例えば1×22=4となっている。すなわち、プロセスP2についてはn=2,a=1,m=2に設定されている。
その後、プロセスP3に対してセットを割り当てるために、割り当て済みのセットを解放する。ここで、プロセスP2よりプロセスP1の方がキャッシュ使用の優先度が高い場合には、プロセスP2に対する割り当てセット数が削減される。この場合、図14の下段に示すように、プロセスP2に対する割り当てセット数は1/21に削減され、絶対セット番号「3」「4」の2セットがプロセスP2に割り当てられた状態となる。そして、プロセスP3に対して絶対セット番号「5」~「7」の各セットが割り当てられたとする。この場合、割り当てセット数は例えば1×31=3となっている。すなわち、プロセスP3についてはn=1,a=1,m=3に設定されている。
図15は、セット割り当ておよび削減の第4の処理例を示す図である。同じプロセスについて複数のセット群を割り当て、セット群ごとに割り当て管理を独立して実行してもよい。例えば、同じプロセスからアクセスされてキャッシュに格納されるデータブロックの間では、アクセス頻度に差がある。そこで、図15の例では、アクセス頻度の高いデータブロックと低いデータブロックとを、それぞれ異なるセット群で管理している。
図15の上側に示す例では、プロセスAに割り当てられたセットがセット群G1とセット群G2とに区分されている。セット群G1,G2のいずれも6個のセットを含む。セット群G1には、アクセス回数が2回以上のデータブロックが格納される。一方、セット群G2には、アクセス回数が1回のデータブロックが格納される。
このケースでは、セット群G2に含まれるデータブロックよりセット群G1に含まれるセット群の方が、キャッシュ使用の優先度が高いと考えられる。そこで、キャッシュに空きセットを確保する必要が生じた場合に、セット群G1よりセット群G2から優先的に割り当てセット数が削減される。さらに、セット群G1よりセット群G2の方がセットの削減数が多くなるように、セット数管理ポリシーが設定されてもよい。例えば、セット群G1の割り当てセット数を削減する場合、割り当てセット数は1/2に削減される。一方、セット群G2の割り当てセット数を削減する場合、割り当てセット数は1/3に削減される。このような処理により、プロセスP1によるI/O要求に対するレイテンシの悪化を抑制しつつ、プロセスP1に対するセット割り当て数を削減した他のプロセスのための空きセットを確保することができるようになる。
図15の下側に示す例では、セット群G2のセット数が1/3に削減されて、セット数が「2」となっている。
次に、プロセスに対するセットの割り当て処理について、フローチャートを用いて説明する。
次に、プロセスに対するセットの割り当て処理について、フローチャートを用いて説明する。
図16は、プロセスに対するセット割り当て処理を示すフローチャートの例である。
[ステップS21]キャッシュ制御部122は、新規プロセス(セットを未割り当てのプロセス)が追加されたことを検知する。すると、処理がステップS22に進められる。
[ステップS21]キャッシュ制御部122は、新規プロセス(セットを未割り当てのプロセス)が追加されたことを検知する。すると、処理がステップS22に進められる。
[ステップS22]キャッシュ制御部122は、新規プロセスに割り当てる初期セット数を決定する。初期セット数がa・mnで与えられるとすると、例えば、a,m,nの設定値はプロセスごとにあらかじめ決められている。この場合、キャッシュ制御部122は、新規セットについて決められたa,m,nの設定値に基づいて、初期セット数を決定する。
[ステップS23]キャッシュ制御部122は、キャッシュ130における現在の空きセット数が、ステップS22で決定された初期セット数以上あるかを判定する。空きセット数が初期セット数以上ある場合、処理がステップS26に進められ、空きセット数が初期セット数未満の場合、処理がステップS24に進められる。
[ステップS24]キャッシュ制御部122は、セットを割り当て済みのプロセスの中から、割り当てセット数を削減するプロセスを決定し、さらに、そのプロセスについての削減後の割り当てセット数を決定する。この処理では、例えば、新規プロセスよりキャッシュ使用の優先度が低く、かつ、セット数管理ポリシーに基づくセット数削減の後にキャッシュ130の全体の中から新規プロセスの初期セット数分の空きセットが確保されるようなプロセスが選択されて決定される。
[ステップS25]キャッシュ制御部122は、ステップS24で決定されたプロセスについて、割り当てセット数を削減する処理を実行する。
[ステップS26]キャッシュ制御部122は、空きセットの中からステップS22で決定された初期セット数分のセットを選択し、それらを新規プロセスに割り当てる。
[ステップS26]キャッシュ制御部122は、空きセットの中からステップS22で決定された初期セット数分のセットを選択し、それらを新規プロセスに割り当てる。
図17~図19は、セット数削減処理を示すフローチャートの例である。図17~図19の処理は、図16のステップS25の処理に対応する。
[ステップS31]キャッシュ制御部122は、セット数の削減前に割り当てられていたセット(削減前セット)についての絶対セット番号の配列Sbを取得する。この配列Sbは、削減前セットの数だけの絶対セット番号を含む。また、キャッシュ制御部122は、セット数の削減後に割り当てられるセット(削減後セット)についての絶対セット番号の配列Saを取得する。
[ステップS31]キャッシュ制御部122は、セット数の削減前に割り当てられていたセット(削減前セット)についての絶対セット番号の配列Sbを取得する。この配列Sbは、削減前セットの数だけの絶対セット番号を含む。また、キャッシュ制御部122は、セット数の削減後に割り当てられるセット(削減後セット)についての絶対セット番号の配列Saを取得する。
[ステップS32]キャッシュ130における実際の削減後セットとは別に、この削減後セットに対応する「移動先セット」が、作業用の一時的な情報として作成される。キャッシュ制御部122は、移動先セットの先頭管理ブロックのアドレスの配列H’[size(Sa)]と、移動先セットの最終管理ブロックのアドレスの配列T’[size(Sb)]を作成する。
[ステップS33]キャッシュ制御部122は、移動先セットにおける処理対象のセットの番号(プロセス内セット番号)を示す変数jを、0にリセットする。
以下、図18を用いて説明を続ける。
以下、図18を用いて説明を続ける。
[ステップS41]キャッシュ制御部122は、変数jが、移動先セットの数を示すsize(Sa)より小さいかを判定する。変数jがsize(Sa)より小さい場合、処理がステップS42に進められ、変数jがsize(Sa)と等しくなった場合には、処理が図19のステップS61に進められる。
[ステップS42]キャッシュ制御部122は、削減前セットにおける処理対象の管理ブロックの番号(先頭からの通し番号)を示す変数iを、0にリセットする。また、キャッシュ制御部122は、移動先セット内での処理対象となる管理ブロックの番号(先頭からの通し番号)を示す変数NBを、0にリセットする。
[ステップS43]キャッシュ制御部122は、次の条件1,2の両方とも満たされるかを判定する。条件1,2が両方とも満たされる場合、処理がステップS45に進められ、条件1,2の少なくとも一方が満たされない場合、処理がステップS44に進められる。
(条件1)変数iが、セットサイズ(セット内の最大管理ブロック数)より小さい。
(条件2)各移動先セットの先頭管理ブロックのアドレスの配列H[Sb]のうち、g mod size(Sa)=jとなるSb(g)(j番目の移動先セットに対応する削減前セット)についてのアドレスのいずれかが、NULLでない要素を含む。
(条件2)各移動先セットの先頭管理ブロックのアドレスの配列H[Sb]のうち、g mod size(Sa)=jとなるSb(g)(j番目の移動先セットに対応する削減前セット)についてのアドレスのいずれかが、NULLでない要素を含む。
[ステップS44]キャッシュ制御部122は、変数jをインクリメントする。この後、処理がステップS41に進められる。
ステップS43の条件(1)が満たされない場合、j番目の移動先セットに含まれるセットサイズ分の管理ブロックについての処理が終了している(移動先セットに上限数の管理ブロックが割り当て済みである)。このため、処理対象の移動先セットが次のセットに移行される。また、ステップS43の条件(2)が満たされない場合、処理対象となっていた削減前セットには管理ブロックが割り当てられていない(セットにデータブロックが格納されていない)。このため、処理対象の移動先セットが次のセットに移行される。
ステップS43の条件(1)が満たされない場合、j番目の移動先セットに含まれるセットサイズ分の管理ブロックについての処理が終了している(移動先セットに上限数の管理ブロックが割り当て済みである)。このため、処理対象の移動先セットが次のセットに移行される。また、ステップS43の条件(2)が満たされない場合、処理対象となっていた削減前セットには管理ブロックが割り当てられていない(セットにデータブロックが格納されていない)。このため、処理対象の移動先セットが次のセットに移行される。
[ステップS45]キャッシュ制御部122は、処理対象の削減前セットの番号(プロセス内セット番号)を示す変数hに、変数jを設定する。
[ステップS46]キャッシュ制御部122は、変数hが、削減前セットの数を示すsize(Sb)より小さいかを判定する。変数hがsize(Sb)より小さい場合、処理がステップS48に進められ、変数hがsize(Sb)と等しくなった場合には、処理がステップS47に進められる。
[ステップS46]キャッシュ制御部122は、変数hが、削減前セットの数を示すsize(Sb)より小さいかを判定する。変数hがsize(Sb)より小さい場合、処理がステップS48に進められ、変数hがsize(Sb)と等しくなった場合には、処理がステップS47に進められる。
[ステップS47]ステップS46でNoと判定されるケースとは、j番目の移動先セットをセット数削減後の割り当て先とする削減前セットのうちの最終セットまで処理が終了したケースである。この場合、キャッシュ制御部122は、変数iをインクリメントして、セット内の処理対象の管理ブロックを終端側に1つ移動させる。この後、処理がステップS43に進められる。
[ステップS48]キャッシュ制御部122は、h番目の削減前セットにおける先頭管理ブロックのアドレスH[Sb[h]]が、NULLであるかを判定する。該当アドレスがNULLでない場合、処理がステップS49に進められ、該当アドレスがNULLである場合、処理がステップS55に進められる。後者のケースは、処理対象の削減前セットに管理ブロックが存在しない(データブロックが格納されていない)ケースである。
[ステップS49]キャッシュ制御部122は、変数NBがセットサイズより小さいかを判定する。変数NBがセットサイズより小さい場合、処理がステップS51に進められ、変数NBがセットサイズと等しくなった場合、処理がステップS50に進められる。
[ステップS50]ステップS49でNoと判定されるケースとは、h番目の削減前セットに含まれるすべての管理ブロックについて処理が終了しているケースである。この場合、キャッシュ制御部122は、変数jをインクリメントして、処理対象の移動先セットを次のセットに移動させる。
[ステップS51]キャッシュ制御部122は、変数NBをインクリメントする。
[ステップS52]キャッシュ制御部122は、j番目の移動先セットの最終管理ブロックを示すT’[j]が指す先がない場合、すなわち、この移動先セットについての最初の処理である場合には、この移動先セットの先頭管理ブロックを示すH’[j]として、h番目の削減前セットにおける先頭管理ブロックを示すH[Sb[h]]に設定する。これにより、移動先セットの先頭に、h番目の削減前セットにおける先頭管理ブロックが追加される。
[ステップS52]キャッシュ制御部122は、j番目の移動先セットの最終管理ブロックを示すT’[j]が指す先がない場合、すなわち、この移動先セットについての最初の処理である場合には、この移動先セットの先頭管理ブロックを示すH’[j]として、h番目の削減前セットにおける先頭管理ブロックを示すH[Sb[h]]に設定する。これにより、移動先セットの先頭に、h番目の削減前セットにおける先頭管理ブロックが追加される。
[ステップS53]キャッシュ制御部122は、移動先セットについてのアドレスの付け替え処理を実行する。まず、キャッシュ制御部122は、削減前セットの先頭管理ブロックに含まれる前アドレス(M[H[Sb[h]]].prev)として、移動先セットの最終管理ブロックのアドレス(T’[j])を設定する。また、キャッシュ制御部122は、移動先セットの最終管理ブロックに含まれる次アドレス(M[T’[j]].next)として、削減元セットの先頭管理ブロックのアドレス(H[Sb[h]])を設定する。さらに、キャッシュ制御部122は、移動先セットの最終管理ブロックのアドレス(T’[j])として、削減前セットの先頭管理ブロックのアドレス(H[Sb[h]])を設定する。このような処理により、削減前セットの先頭が移動先セットの末尾に連結されるとともに、移動先セットの末尾を示すブロック番号が更新される。
[ステップS54]キャッシュ制御部122は、削減前セットについてのアドレスの付け替え処理を実行する。すなわち、キャッシュ制御部122は、削減前セットの先頭管理ブロックのアドレス(H[Sb[h]])として、移動先セットの最終管理ブロックに含まれる次アドレス(M[T’[j]].next)を設定する。これにより、削減前セットの先頭管理ブロックに、移動先セットの最終管理ブロックの次のアドレスが設定される。これにより、処理が終了した削減前セットの管理ブロックが分離される。
[ステップS55]キャッシュ制御部122は、変数hに、削減後セットの数を示すsize(Sa)を加算する。これにより、処理対象の移動先セットを割り当て先とする削減前セットが、削減後のセット数に応じて次のセットに移動される。そして、処理がステップS46に進められる。
以上の図18の処理では、変数jにより処理対象の移動先セットが選択され、変数hにより処理対象の削減前セットが選択される。そして、ステップS46,S48,S49,S51~S54の処理により、削減前セットにおける先頭管理ブロックが移動先セットの先頭に移動される。次に、ステップS55により、処理対象の移動先セットを割り当て先とする次の削減前セットが選択されて、同様にステップS46,S48,S49,S51~S54が実行される。これにより、選択された削減前セットにおける先頭管理ブロックが移動先セットの先頭に移動される。
処理対象の移動先セットを割り当て先とする削減前セットについて一通り処理が実行されると、ステップS46でNoと判定されて処理対象の管理ブロックがセットの終端側に1つ移動される。そして、上記と同様の処理が実行されることで、処理対象の移動先セットを割り当て先とする削減前セットのそれぞれから、次の管理ブロックが1つずつ移動先セットの終端側に連結される。このような処理を繰り返すことで、1つの移動先セットに対して対応する削減前セットから管理ブロックが移動されていく。他の移動先セットについても同様の処理が実行される。
なお、移動先セットへの管理ブロックの移動は、移動先セットの配列に対して管理ブロックが連結されるだけであるので、管理ブロックに対応するデータブロックについての実際のデータ移動は発生しない。
以下、図19を用いて説明を続ける。
[ステップS61]キャッシュ制御部122は、削減前セットにおける残りの管理ブロック(図18で未処理の管理ブロック)を、未使用の管理ブロックに設定する。これにより、各管理ブロックは割り当て先のセットから離脱する。
[ステップS61]キャッシュ制御部122は、削減前セットにおける残りの管理ブロック(図18で未処理の管理ブロック)を、未使用の管理ブロックに設定する。これにより、各管理ブロックは割り当て先のセットから離脱する。
[ステップS62]キャッシュ制御部122は、移動先セットの先頭および最終の管理ブロックを、キャッシュ130上の削減後セットの先頭および最終の管理ブロックに対応付ける。具体的には、キャッシュ制御部122は、削減後セットの先頭管理ブロックのアドレスの配列H[Sa]として、移動先セットについての対応するアドレスの配列H’[[0,・・・,size(Sa)-1]]を設定する。また、キャッシュ制御部122は、削減後セットの最終管理ブロックのアドレスの配列T[Sa]として、移動先セットについての対応するアドレスの配列T’[[0,・・・,size(Sa)-1]]を設定する。
[ステップS63]キャッシュ制御部122は、不要になった削減前セット(すなわち、削減後セット以外の削減前セット)についての先頭および最終の管理ブロックのアドレスを解放する。これにより、不要になった削減前セットが未使用状態に変更される。
ところで、図16では新規プロセスの追加に伴って既存プロセスの割り当てセット数が削減される場合について示した。これに加えて、次の図20に示すように、プロセスごとのキャッシュ130の効果に応じてプロセスごとに割り当てセット数を調整することも可能である。
図20は、セット数調整処理を示すフローチャートの例である。
[ステップS71]キャッシュ制御部122は、プロセスごとのキャッシュ130の効果(例えば、I/O要求に対する平均レイテンシなど)をモニタする。
[ステップS71]キャッシュ制御部122は、プロセスごとのキャッシュ130の効果(例えば、I/O要求に対する平均レイテンシなど)をモニタする。
[ステップS72]キャッシュ制御部122は、モニタ結果に基づき、割り当てセット数を変更した方が性能向上を期待できるかを判定する。性能向上を期待できる場合、処理がステップS73に進められ、性能向上を期待できない場合、処理がステップS71に進められる。
[ステップS73]キャッシュ制御部122は、割り当てセット数を削除する対象のプロセスについて、割り当てセット数を削減する処理を実行する。
[ステップS74]キャッシュ制御部122は、割り当てセット数を拡張する対象のプロセスについて、割り当てセット数を増加させる処理を実行する。
[ステップS74]キャッシュ制御部122は、割り当てセット数を拡張する対象のプロセスについて、割り当てセット数を増加させる処理を実行する。
なお、上記の各実施の形態に示した装置(例えば、情報処理装置10、サーバ装置100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) キャッシュの領域を含む記憶部と、処理部とを有し、
前記処理部は、
複数のプロセスによる記憶装置に対するデータブロックの読み書きを前記キャッシュを用いて制御する際に、前記複数のプロセスのうち一のプロセスに対して、前記キャッシュを分割した複数の分割領域の中から第1の分割領域を第1の個数だけ割り当て、前記一のプロセスに対応する各データブロックのアドレスと前記第1の個数とに基づいて、前記第1の分割領域の中から前記一のプロセスに対応する各データブロックの格納先を決定し、
前記一のプロセスに割り当てる前記第1の分割領域の数を削減する場合、削減後の前記第1の分割領域の数を前記第1の個数の約数である第2の個数に決定し、削減前後の前記第1の分割領域の位置関係に基づき、削減後の前記第1の分割領域のそれぞれに対して削減前の前記第1の分割領域の中から複数個の分割領域を第2の分割領域として特定し、削減後の前記第1の分割領域のそれぞれに対して、対応する前記第2の分割領域のそれぞれから追い出し順位が低い順にデータブロックを割り当てることで、削減後の前記第1の分割領域のそれぞれに格納されるデータブロックを決定し、削減前の前記第1の分割領域のうち削減後の前記第1の分割領域を除く残りの分割領域を解放する、
情報処理装置。
(付記2) 削減後の前記第1の分割領域のうち一の分割領域に対応する前記第2の分割領域は、削減前の前記第1の分割領域の中から前記一の分割領域を起点として前記第2の個数の間隔で選択することで特定される、
付記1記載の情報処理装置。
(付記3) 前記第1の個数は、A・MN(ただし、Aは自然数、MおよびNは2以上の自然数)で設定され、前記第2の個数は、前記第1の個数の1/MN’(ただし、N’<N)である、
付記1または2記載の情報処理装置。
(付記4) 前記処理部はさらに、
前記複数のプロセスのうち他のプロセスに対して、前記複数の分割領域の中からA・MNで設定される個数の第3の分割領域を割り当て、
前記他のプロセスに割り当てる前記第3の分割領域の数を削減する場合、前記第3の分割領域の数を1/MN’に削減し、
前記一のプロセスと前記他のプロセスとの間で、A,M,N,N’の少なくとも1つについて異なる値が設定される、
付記3記載の情報処理装置。
(付記5) コンピュータに、
複数のプロセスによる記憶装置に対するデータブロックの読み書きをキャッシュを用いて制御する際に、前記複数のプロセスのうち一のプロセスに対して、前記キャッシュを分割した複数の分割領域の中から第1の分割領域を第1の個数だけ割り当て、前記一のプロセスに対応する各データブロックのアドレスと前記第1の個数とに基づいて、前記第1の分割領域の中から前記一のプロセスに対応する各データブロックの格納先を決定し、
前記一のプロセスに割り当てる前記第1の分割領域の数を削減する場合、削減後の前記第1の分割領域の数を前記第1の個数の約数である第2の個数に決定し、削減前後の前記第1の分割領域の位置関係に基づき、削減後の前記第1の分割領域のそれぞれに対して削減前の前記第1の分割領域の中から複数個の分割領域を第2の分割領域として特定し、削減後の前記第1の分割領域のそれぞれに対して、対応する前記第2の分割領域のそれぞれから追い出し順位が低い順にデータブロックを割り当てることで、削減後の前記第1の分割領域のそれぞれに格納されるデータブロックを決定し、削減前の前記第1の分割領域のうち削減後の前記第1の分割領域を除く残りの分割領域を解放する、
処理を実行させるキャッシュ制御プログラム。
(付記6) 削減後の前記第1の分割領域のうち一の分割領域に対応する前記第2の分割領域は、削減前の前記第1の分割領域の中から前記一の分割領域を起点として前記第2の個数の間隔で選択することで特定される、
付記5記載のキャッシュ制御プログラム。
(付記7) 前記第1の個数は、A・MN(ただし、Aは自然数、MおよびNは2以上の自然数)で設定され、前記第2の個数は、前記第1の個数の1/MN’(ただし、N’<N)である、
付記5または6記載のキャッシュ制御プログラム。
(付記8) 前記コンピュータに、
前記複数のプロセスのうち他のプロセスに対して、前記複数の分割領域の中からA・MNで設定される個数の第3の分割領域を割り当て、
前記他のプロセスに割り当てる前記第3の分割領域の数を削減する場合、前記第3の分割領域の数を1/MN’に削減する、
処理をさらに実行させ、
前記一のプロセスと前記他のプロセスとの間で、A,M,N,N’の少なくとも1つについて異なる値が設定される、
付記7記載のキャッシュ制御プログラム。
(付記1) キャッシュの領域を含む記憶部と、処理部とを有し、
前記処理部は、
複数のプロセスによる記憶装置に対するデータブロックの読み書きを前記キャッシュを用いて制御する際に、前記複数のプロセスのうち一のプロセスに対して、前記キャッシュを分割した複数の分割領域の中から第1の分割領域を第1の個数だけ割り当て、前記一のプロセスに対応する各データブロックのアドレスと前記第1の個数とに基づいて、前記第1の分割領域の中から前記一のプロセスに対応する各データブロックの格納先を決定し、
前記一のプロセスに割り当てる前記第1の分割領域の数を削減する場合、削減後の前記第1の分割領域の数を前記第1の個数の約数である第2の個数に決定し、削減前後の前記第1の分割領域の位置関係に基づき、削減後の前記第1の分割領域のそれぞれに対して削減前の前記第1の分割領域の中から複数個の分割領域を第2の分割領域として特定し、削減後の前記第1の分割領域のそれぞれに対して、対応する前記第2の分割領域のそれぞれから追い出し順位が低い順にデータブロックを割り当てることで、削減後の前記第1の分割領域のそれぞれに格納されるデータブロックを決定し、削減前の前記第1の分割領域のうち削減後の前記第1の分割領域を除く残りの分割領域を解放する、
情報処理装置。
(付記2) 削減後の前記第1の分割領域のうち一の分割領域に対応する前記第2の分割領域は、削減前の前記第1の分割領域の中から前記一の分割領域を起点として前記第2の個数の間隔で選択することで特定される、
付記1記載の情報処理装置。
(付記3) 前記第1の個数は、A・MN(ただし、Aは自然数、MおよびNは2以上の自然数)で設定され、前記第2の個数は、前記第1の個数の1/MN’(ただし、N’<N)である、
付記1または2記載の情報処理装置。
(付記4) 前記処理部はさらに、
前記複数のプロセスのうち他のプロセスに対して、前記複数の分割領域の中からA・MNで設定される個数の第3の分割領域を割り当て、
前記他のプロセスに割り当てる前記第3の分割領域の数を削減する場合、前記第3の分割領域の数を1/MN’に削減し、
前記一のプロセスと前記他のプロセスとの間で、A,M,N,N’の少なくとも1つについて異なる値が設定される、
付記3記載の情報処理装置。
(付記5) コンピュータに、
複数のプロセスによる記憶装置に対するデータブロックの読み書きをキャッシュを用いて制御する際に、前記複数のプロセスのうち一のプロセスに対して、前記キャッシュを分割した複数の分割領域の中から第1の分割領域を第1の個数だけ割り当て、前記一のプロセスに対応する各データブロックのアドレスと前記第1の個数とに基づいて、前記第1の分割領域の中から前記一のプロセスに対応する各データブロックの格納先を決定し、
前記一のプロセスに割り当てる前記第1の分割領域の数を削減する場合、削減後の前記第1の分割領域の数を前記第1の個数の約数である第2の個数に決定し、削減前後の前記第1の分割領域の位置関係に基づき、削減後の前記第1の分割領域のそれぞれに対して削減前の前記第1の分割領域の中から複数個の分割領域を第2の分割領域として特定し、削減後の前記第1の分割領域のそれぞれに対して、対応する前記第2の分割領域のそれぞれから追い出し順位が低い順にデータブロックを割り当てることで、削減後の前記第1の分割領域のそれぞれに格納されるデータブロックを決定し、削減前の前記第1の分割領域のうち削減後の前記第1の分割領域を除く残りの分割領域を解放する、
処理を実行させるキャッシュ制御プログラム。
(付記6) 削減後の前記第1の分割領域のうち一の分割領域に対応する前記第2の分割領域は、削減前の前記第1の分割領域の中から前記一の分割領域を起点として前記第2の個数の間隔で選択することで特定される、
付記5記載のキャッシュ制御プログラム。
(付記7) 前記第1の個数は、A・MN(ただし、Aは自然数、MおよびNは2以上の自然数)で設定され、前記第2の個数は、前記第1の個数の1/MN’(ただし、N’<N)である、
付記5または6記載のキャッシュ制御プログラム。
(付記8) 前記コンピュータに、
前記複数のプロセスのうち他のプロセスに対して、前記複数の分割領域の中からA・MNで設定される個数の第3の分割領域を割り当て、
前記他のプロセスに割り当てる前記第3の分割領域の数を削減する場合、前記第3の分割領域の数を1/MN’に削減する、
処理をさらに実行させ、
前記一のプロセスと前記他のプロセスとの間で、A,M,N,N’の少なくとも1つについて異なる値が設定される、
付記7記載のキャッシュ制御プログラム。
10 情報処理装置
11 記憶部
12 処理部
13 キャッシュ
20 記憶装置
D0~D15 データブロック
R0~R3 分割領域
S1~S4 ステップ
11 記憶部
12 処理部
13 キャッシュ
20 記憶装置
D0~D15 データブロック
R0~R3 分割領域
S1~S4 ステップ
Claims (5)
- キャッシュの領域を含む記憶部と、処理部とを有し、
前記処理部は、
複数のプロセスによる記憶装置に対するデータブロックの読み書きを前記キャッシュを用いて制御する際に、前記複数のプロセスのうち一のプロセスに対して、前記キャッシュを分割した複数の分割領域の中から第1の分割領域を第1の個数だけ割り当て、前記一のプロセスに対応する各データブロックのアドレスと前記第1の個数とに基づいて、前記第1の分割領域の中から前記一のプロセスに対応する各データブロックの格納先を決定し、
前記一のプロセスに割り当てる前記第1の分割領域の数を削減する場合、削減後の前記第1の分割領域の数を前記第1の個数の約数である第2の個数に決定し、削減前後の前記第1の分割領域の位置関係に基づき、削減後の前記第1の分割領域のそれぞれに対して削減前の前記第1の分割領域の中から複数個の分割領域を第2の分割領域として特定し、削減後の前記第1の分割領域のそれぞれに対して、対応する前記第2の分割領域のそれぞれから追い出し順位が低い順にデータブロックを割り当てることで、削減後の前記第1の分割領域のそれぞれに格納されるデータブロックを決定し、削減前の前記第1の分割領域のうち削減後の前記第1の分割領域を除く残りの分割領域を解放する、
情報処理装置。 - 削減後の前記第1の分割領域のうち一の分割領域に対応する前記第2の分割領域は、削減前の前記第1の分割領域の中から前記一の分割領域を起点として前記第2の個数の間隔で選択することで特定される、
請求項1記載の情報処理装置。 - 前記第1の個数は、A・MN(ただし、Aは自然数、MおよびNは2以上の自然数)で設定され、前記第2の個数は、前記第1の個数の1/MN’(ただし、N’<N)である、
請求項1または2記載の情報処理装置。 - 前記処理部はさらに、
前記複数のプロセスのうち他のプロセスに対して、前記複数の分割領域の中からA・MNで設定される個数の第3の分割領域を割り当て、
前記他のプロセスに割り当てる前記第3の分割領域の数を削減する場合、前記第3の分割領域の数を1/MN’に削減し、
前記一のプロセスと前記他のプロセスとの間で、A,M,N,N’の少なくとも1つについて異なる値が設定される、
請求項3記載の情報処理装置。 - コンピュータに、
複数のプロセスによる記憶装置に対するデータブロックの読み書きをキャッシュを用いて制御する際に、前記複数のプロセスのうち一のプロセスに対して、前記キャッシュを分割した複数の分割領域の中から第1の分割領域を第1の個数だけ割り当て、前記一のプロセスに対応する各データブロックのアドレスと前記第1の個数とに基づいて、前記第1の分割領域の中から前記一のプロセスに対応する各データブロックの格納先を決定し、
前記一のプロセスに割り当てる前記第1の分割領域の数を削減する場合、削減後の前記第1の分割領域の数を前記第1の個数の約数である第2の個数に決定し、削減前後の前記第1の分割領域の位置関係に基づき、削減後の前記第1の分割領域のそれぞれに対して削減前の前記第1の分割領域の中から複数個の分割領域を第2の分割領域として特定し、削減後の前記第1の分割領域のそれぞれに対して、対応する前記第2の分割領域のそれぞれから追い出し順位が低い順にデータブロックを割り当てることで、削減後の前記第1の分割領域のそれぞれに格納されるデータブロックを決定し、削減前の前記第1の分割領域のうち削減後の前記第1の分割領域を除く残りの分割領域を解放する、
処理を実行させるキャッシュ制御プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020137906A JP2022034217A (ja) | 2020-08-18 | 2020-08-18 | 情報処理装置およびキャッシュ制御プログラム |
US17/338,827 US11474947B2 (en) | 2020-08-18 | 2021-06-04 | Information processing apparatus and non-transitory computer-readable storage medium storing cache control program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020137906A JP2022034217A (ja) | 2020-08-18 | 2020-08-18 | 情報処理装置およびキャッシュ制御プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022034217A true JP2022034217A (ja) | 2022-03-03 |
Family
ID=80269579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020137906A Withdrawn JP2022034217A (ja) | 2020-08-18 | 2020-08-18 | 情報処理装置およびキャッシュ制御プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11474947B2 (ja) |
JP (1) | JP2022034217A (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6468855A (en) | 1987-09-10 | 1989-03-14 | Nec Corp | Cache memory control system |
JPH02287849A (ja) | 1989-04-28 | 1990-11-27 | Toshiba Corp | ディスクキャッシュ制御方法およびディスクキャッシュ装置 |
JPH11259362A (ja) | 1998-03-13 | 1999-09-24 | Nec Corp | キャッシュメモリ制御方法及び装置 |
US6848026B2 (en) * | 2001-11-09 | 2005-01-25 | International Business Machines Corporation | Caching memory contents into cache partitions based on memory locations |
JP2008181243A (ja) * | 2007-01-23 | 2008-08-07 | Hitachi Ltd | ストレージシステムのキャッシュパーティション領域の設定を制御するデータベース管理システム |
JP5614213B2 (ja) * | 2010-10-01 | 2014-10-29 | 日本電気株式会社 | 記憶領域提供装置、記憶領域提供方法、及び、記憶領域提供プログラム |
JP2012203729A (ja) | 2011-03-25 | 2012-10-22 | Fujitsu Ltd | 演算処理装置および演算処理装置の制御方法 |
US20130205089A1 (en) * | 2012-02-08 | 2013-08-08 | Mediatek Singapore Pte. Ltd. | Cache Device and Methods Thereof |
-
2020
- 2020-08-18 JP JP2020137906A patent/JP2022034217A/ja not_active Withdrawn
-
2021
- 2021-06-04 US US17/338,827 patent/US11474947B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20220058128A1 (en) | 2022-02-24 |
US11474947B2 (en) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6792509B2 (en) | Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria | |
US8397016B2 (en) | Efficient use of hybrid media in cache architectures | |
US8996799B2 (en) | Content storage system with modified cache write policies | |
US10203876B2 (en) | Storage medium apparatus, method, and program for storing non-contiguous regions | |
JP4146380B2 (ja) | ストレージシステム、ブロック再配置制御方法及びプログラム | |
JP5550741B1 (ja) | ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法 | |
US20150095555A1 (en) | Method of thin provisioning in a solid state disk array | |
JPH10187505A (ja) | 情報記憶システム及び同システムに適用するデータ配置方法 | |
JP4992835B2 (ja) | ディスク記憶装置およびプログラム | |
US20050108473A1 (en) | Storage device adapter equipped with integrated cache | |
US7032093B1 (en) | On-demand allocation of physical storage for virtual volumes using a zero logical disk | |
US10733114B2 (en) | Data cache performance | |
WO2015140931A1 (ja) | トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム | |
JP2022034217A (ja) | 情報処理装置およびキャッシュ制御プログラム | |
JP2014010604A (ja) | ストレージ装置とプログラムと方法 | |
JP5800347B2 (ja) | 情報処理装置及びデータアクセス方法 | |
WO2014125559A1 (ja) | 記憶制御装置および記憶制御装置の制御方法 | |
JP6559752B2 (ja) | ストレージシステムおよび制御方法 | |
JP5335215B2 (ja) | データ記憶装置、データ記憶方法及びプログラム | |
JP6928247B2 (ja) | ストレージ制御装置およびストレージ制御プログラム | |
US20220253241A1 (en) | Method and system for accelerating storage of data in write-intensive computer applications | |
JP6273678B2 (ja) | ストレージ装置 | |
JP2005166073A (ja) | 記憶装置の制御装置および制御方法 | |
JP2019153166A (ja) | ストレージ装置、ストレージシステムおよびストレージ制御プログラム | |
JP4035683B2 (ja) | Wwwプロキシ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230511 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20240129 |