Managing cache compression in data storage systems

US2017199820A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2017199820-A1
Application numberUS-201515320468-A
CountryUS
Kind codeA1
Filing dateMar 27, 2015
Priority dateJun 27, 2014
Publication dateJul 13, 2017
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A technique for managing cache in a data storage system is disclosed. Data storage system cache memory is arranged into multiple input/output (IO) cache macroblocks, where a first set of IO cache macroblocks are configured as compressed IO cache macroblocks, each compressed IO cache macroblock storing a plurality of variable sized compressed IO data blocks, and a second set of IO cache macroblocks are configured as non-compressed IO cache macroblocks, each non-compressed IO cache macroblock storing a plurality of fixed sized non-compressed IO data blocks. A write request is receive at the data storage system. If the IO data associated with the write request is determined to be compressible, the IO data is compressed in-line and written to an IO data block in a compressed IO cache macroblock, otherwise non-compressed IO data is written to an IO data block in a non-compressed IO cache macroblock.

First claim

Opening claim text (preview).

What is claimed is: 1 . A method for managing data storage in a data storage system, the method comprising: arranging data storage system cache memory into multiple input/output (IO) cache macroblocks, wherein a first set of IO cache macroblocks are configured as compressed IO cache macroblocks, each compressed IO cache macroblock storing a plurality of variable sized compressed IO data blocks, and a second set of IO cache macroblocks are configured as non-compressed IO cache macroblocks, each non-compressed IO cache macroblock storing a plurality of fixed sized non-compressed IO data blocks; receiving, at the data storage system, an write request; determining if IO data associated with the write request is compressible data; if the IO data is determined to be compressible, compressing the IO data in-line, and writing the compressed IO data to an IO data block in a compressed IO cache macroblock; and if the IO data is determined to be non-compressible, writing the non-compressed IO data to an IO data block in a non-compressed IO cache macroblock. 2 . The method of claim 1 , further comprising: creating a cache macroblock data structure, wherein the cache macroblock data structure includes cache metadata describing characteristics of the IO data blocks stored in the compressed IO cache macroblocks. 3 . The method of claim 2 , further comprising: receiving, at the data storage system, request to delete an IO cache macroblock, wherein deleting the IO cache macroblock includes setting a delete bit corresponding to the IO cache macroblock in a bitmap in the cache macroblock data structure. 4 . The method of claim 1 , wherein the compressed IO cache macroblocks are further configured to include IO cache macroblock header data comprising IO data block size information and compression algorithm version information. 5 . The method of claim 1 , wherein writing the IO data to an IO cache macroblock further includes: determining that a previous version of the IO data is currently stored in an existing IO data block, wherein the existing IO data block belongs to a compressed IO cache macroblock or non-compressed IO cache macroblock; and if the IO data is less than or equal in size to the previous version of the IO data block, overwriting the previous IO data stored in the existing IO data block with the IO data associated with the write request. 6 . The method of claim 1 , wherein writing the IO data to an IO cache macroblock further includes: determining that a previous version of the IO data is not currently stored in an existing IO data block; determining if there is sufficient space to write the IO data in an existing IO cache macroblock; if there is sufficient space, writing the IO data to a the existing IO cache macroblock; and if there is not sufficient space, evicting an existing IO cache macroblock and writing the IO data to a new IO cache macroblock. 7 . The method of claim 6 , wherein evicting an existing IO cache macroblock further includes: if an existing IO cache macroblock having all IO data blocks marked as deleted is identified, reusing the IO cache macroblock as the new IO cache macroblock; else identifying and evicting an IO cache macroblock and reusing the evicted IO cache macroblock as the new IO cache macroblock. 8 . The method of claim 1 , further including: receiving, at the data storage system, a read request from a host; determining that IO data associated with the read request is stored in an existing IO cache macroblock; if the IO data is in a compressed cache macroblock, decompressing the IO data in-line; and returning the IO data to the host. 9 . The method of claim 1 , further including: receiving, at the data storage system, a read request from a host; determining that IO data associated with the read request is stored in a persistent IO macroblock residing in persistent storage; copying the persistent IO macroblock from persistent storage to an IO cache macroblock residing in cache; if the copied IO cache macroblock is compressed, decompressing the IO data in-line; and returning the IO data to the host. 10 . The method of claim 1 , wherein the first set of IO cache macroblocks and second set of IO cache macroblocks vary in size. 11 . A system for managing data storage in a data storage system, the system comprising a special purpose storage processor and memory configured to: arrange data storage system cache memory into multiple input/output (IO) cache macroblocks, wherein a first set of IO cache macroblocks are configured as compressed IO cache macroblocks, each compressed IO cache macroblock storing a plurality of variable sized compressed IO data blocks, and a second set of IO cache macroblocks are configured as non-compressed IO cache macroblocks, each non-compressed IO cache macroblock storing a plurality of fixed sized non-compressed IO data blocks; receive, at the data storage system, an write request; determine if IO data associated with the write request is compressible data; if the IO data is determined to be compressible, compress the IO data in-line, and writing the compressed IO data to an IO data block in a compressed IO cache macroblock; and if the IO data is determined to be non-compressible, write the non-compressed IO data to an IO data block in a non-compressed IO cache macroblock. 12 . The system of claim 11 , further comprising: create a cache macroblock data structure, wherein the cache macroblock data structure includes cache metadata describing characteristics of the IO data blocks stored in the compressed IO cache macroblocks. 13 . The system of claim 12 , further comprising: receive, at the data storage system, request to delete an IO cache macroblock, wherein deleting the IO cache macroblock includes setting a delete bit corresponding to the IO cache macroblock in a bitmap in the cache macroblock data structure. 14 . The system of claim 11 , wherein the compressed IO cache macroblocks are further configured to include IO cache macroblock header data comprising IO data block size information and compression algorithm version information. 15 . The system of claim 11 , wherein write the IO data to an IO cache macroblock further includes: determine that a previous version of the IO data is currently stored in an existing IO data block, wherein the existing IO data block belongs to a compressed IO cache macroblock or non-compressed IO cache macroblock; and if the IO data is less than or equal in size to the previous version of the IO data block, overwrite the previous IO data stored in the existing IO data block with the IO data associated with the write request. 16 . The system of claim 11 , wherein write the IO data to an IO cache macroblock further includes: determine that a previous version of the IO data is not currently stored in an existing IO data block; determine if there is, sufficient space to write the IO data in an existing IO cache macroblock; if there is sufficient space, write the IO data to a the existing IO cache macroblock; and if there is not sufficient space, evict an existing IO cache macroblock and writing the IO data to a new IO cache macroblock. 17 . The system of claim 16 , wherein evict an existing IO cache macroblock further includes: if an existing IO cache macroblock having all IO data blocks marked as deleted is identified, reuse the IO cache macroblock as the new IO cache macroblock; else identify and evicting an IO cache macroblock and reusing the evicted IO cache macroblock as the new IO cache macroblock.

Assignees

Inventors

Classifications

  • Replication mechanisms · CPC title

  • Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket · CPC title

  • Data transfer between cache memory and other subsystems, e.g. storage devices or host systems · CPC title

  • with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list · CPC title

  • Details relating to cache mapping · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2017199820A1 cover?
A technique for managing cache in a data storage system is disclosed. Data storage system cache memory is arranged into multiple input/output (IO) cache macroblocks, where a first set of IO cache macroblocks are configured as compressed IO cache macroblocks, each compressed IO cache macroblock storing a plurality of variable sized compressed IO data blocks, and a second set of IO cache macroblo…
Who is the assignee on this patent?
Emc Ip Holding Co Llc
What technology area does this patent fall under?
Primary CPC classification G06F12/0873. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Jul 13 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).