Selectively operating data storage equipment in a “stripe write” mode and a “fill hole” mode
US-10203880-B1 · Feb 12, 2019 · US
US10970221B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10970221-B2 |
| Application number | US-201916398670-A |
| Country | US |
| Kind code | B2 |
| Filing date | Apr 30, 2019 |
| Priority date | Apr 30, 2019 |
| Publication date | Apr 6, 2021 |
| Grant date | Apr 6, 2021 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A technique for managing data received into a cache operates in cycles. To process a current batch of compressed blocks during a current cache processing cycle, a storage system obtains a new mapping structure and a new segment of contiguous storage space. If the system can place some of the current batch of compressed blocks into previously-allocated space, the system does so and partially populates the new mapping structure with entries for mapping the other compressed blocks that were not placed. The system then asserts a hold on the new mapping structure, so that the mapping structure is retained in cache at the end of the current cache processing cycle, and more completely populates the new mapping structure with entries for other compressed blocks during a later cache processing cycle before releasing the hold.
Opening claim text (preview).
What is claimed is: 1. A method of managing data received for writing, the method comprising: during a first cache processing cycle, (i) placing M compressed blocks of the data in a segment of storage space, (ii) populating M entries of a mapping structure in cache for mapping the M compressed blocks in the segment, the mapping structure having space for N entries, N>M, with N-M locations of the mapping structure remaining unpopulated, and (iii), applying a hold to the mapping structure in the cache to ensure that the mapping structure is retained in the cache; during a second cache processing cycle, (i) placing between 1 and N-M additional compressed blocks in the segment and (ii) populating an additional location in the mapping structure for each additional compressed block placed or to be placed in the segment; and during or after the second cache processing cycle, releasing the hold on the mapping structure. 2. The method of claim 1 , wherein the M compressed blocks have a collective size in the segment, and wherein the method further comprises, during the first cache processing cycle and prior to placing the M compressed blocks in the segment, allocating the segment with a size that exceeds the collective size of the M compressed blocks by a margin, the margin based upon a predicted size of N-M additional compressed blocks. 3. The method of claim 2 , further comprising predicting the size of the N-M additional compressed blocks based on (i) a block size of uncompressed blocks in the cache and (ii) a compression ratio achieved when compressing previously processed blocks. 4. The method of claim 2 , wherein one or more of the M compressed blocks represent overwrites of data elements already stored, and wherein the method further comprises, for at least one of the M compressed blocks: identifying a current storage location of the respective data element; and confirming that the compressed block does not fit in a space provided for the respective data element at the current storage location. 5. The method of claim 4 , wherein, during the first cache processing cycle, the M compressed blocks belong to a batch of N compressed blocks, and wherein the method further comprises, for each of the N compressed blocks in the batch that is not one of the M compressed blocks, placing the compressed block in another segment that has available space for accommodating the compressed block. 6. The method of claim 4 , wherein the cache operates repeatedly on successive cache processing cycles, and wherein during each cache processing cycle, the method includes (i) allocating a new segment for placing compressed blocks during that cache processing cycle and (ii) allocating a new mapping structure for mapping the compressed blocks in the respective new segment. 7. The method of claim 6 , wherein allocating each new segment includes over-allocating space within the new segment when fewer than N compressed blocks are being placed in the new segment during the cache processing cycle. 8. The method of claim 6 , further comprising running multiple computing threads that manage data in the cache, each of the computing threads configured to place holds on certain mapping structures, and wherein the method further comprises maintaining a hold list of mapping structures on which holds have been placed by the computing threads. 9. The method of claim 8 , further comprising: obtaining, by one of the computing threads, a new batch of N compressed blocks from the cache; accessing the hold list; identifying a mapping structure on the hold list that maps to a segment that has available space for storing one or more of the N compressed blocks, and placing said one or more of the N compressed blocks in the segment mapped by the identified mapping structure. 10. A computerized apparatus, comprising control circuitry that includes a set of processing units coupled to memory, the control circuitry constructed and arranged to: during a first cache processing cycle, (i) place M compressed blocks of the data in a segment of storage space, (ii) populate M entries of a mapping structure in cache for mapping the M compressed blocks in the segment, the mapping structure having space for N entries, N>M, with N-M locations of the mapping structure remaining unpopulated, and (iii), apply a hold to the mapping structure in the cache to ensure that the mapping structure is retained in the cache; during a second cache processing cycle, (i) place between 1 and N-M additional compressed blocks in the segment and (ii) populate an additional location in the mapping structure for each additional compressed block placed or to be placed in the segment; and during or after the second cache processing cycle, release the hold on the mapping structure. 11. The computerized apparatus of claim 10 , wherein the M compressed blocks have a collective size in the segment, and wherein, during the first cache processing cycle and prior to placing the M compressed blocks in the segment, the control circuitry is further constructed and arranged to allocate the segment with a size that exceeds the collective size of the M compressed blocks by a margin, the margin based upon a predicted size of N-M additional compressed blocks. 12. A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by control circuitry of a computerized apparatus, cause the control circuitry to perform a method of managing data received for writing, the method comprising: during a first cache processing cycle, (i) placing M compressed blocks of the data in a segment of storage space, (ii) populating M entries of a mapping structure in cache for mapping the M compressed blocks in the segment, the mapping structure having space for N entries, N>M, with N-M locations of the mapping structure remaining unpopulated, and (iii), applying a hold to the mapping structure in the cache to ensure that the mapping structure is retained in the cache; during a second cache processing cycle, (i) placing between 1 and N-M additional compressed blocks in the segment and (ii) populating an additional location in the mapping structure for each additional compressed block placed or to be placed in the segment; and during or after the second cache processing cycle, releasing the hold on the mapping structure. 13. The computer program product of claim 12 , wherein the M compressed blocks have a collective size in the segment, and wherein the method further comprises, during the first cache processing cycle and prior to placing the M compressed blocks in the segment, allocating the segment with a size that exceeds the collective size of the M compressed blocks by a margin, the margin based upon a predicted size of N-M additional compressed blocks. 14. The computer program product of claim 13 , wherein the method further comprises predicting the size of the N-M additional compressed blocks based on (i) a block size of uncompressed blocks in the cache and (ii) a compression ratio achieved when compressing previously processed blocks. 15. The computer program product of claim 13 , wherein one or more of the M compressed blocks represent overwrites of data elements already stored, and wherein the method further comprises, for at least one of the M compressed blocks: identifying a current storage location of the respective data element; and confirming that the compressed block does not fit in a space provided for the respective data element at the current storage location. 16. The computer program product of claim 15 , wherein, during the first cac
Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title
Data buffering arrangements · CPC title
Improving I/O performance · CPC title
Management of blocks · CPC title
Allocation or management of cache space · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.