Selective compression in data storage systems
A method for selectively compressing data in a data storage system is provided. Data storage system cache memory is arranged into multiple input/output (IO) cache macroblocks, wherein a first set of IO cache macroblocks are configured as compressed IO cache macroblocks 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 storing a plurality of fixed sized non-compressed IO data blocks. An IO activity level of IO data blocks stored in IO cache macroblocks is determined. Multiple macroblock groups are created which correspond to a particular IO activity level. IO data blocks are arranged into macroblocks belonging to a macroblock category according to data block IO activity level. Each macroblock group is compressed, wherein compressing includes selecting a compression algorithm based on the macroblock category. The macroblocks are written to corresponding macroblocks in persistent storage.
1. A method for selectively compressing data 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, wherein the first and second set of IO cache macroblocks are stored in memory as contiguous segments having a fixed size;
determining IO activity level of IO data blocks stored in IO cache macroblocks;
creating a plurality of macroblock groups, wherein each macroblock group corresponds to a particular IO activity range;
arranging IO data blocks into of the macroblock groups according to the IO activity range that corresponds to the data block IO activity level;
compressing each macroblock group, wherein compressing includes selecting a software compression algorithm based on the IO activity range of the macroblock group; and
writing the macroblocks to corresponding macroblocks in persistent storage.
2. The method of claim 1 , wherein creating the macroblock groups includes creating macroblocks that correspond to data block content.
3. The method of claim 2 , wherein the data block content is text associated with a text file.
4. The method of claim 1 , wherein arranging IO data blocks includes arranging IO data blocks into a macroblock belonging to a macroblock category according to data block content.