Method and apparatus for write destage
A method for use in a storage system, including: selecting one or more front-end (FE) tracks that are arranged to cache data associated with one or more write requests; selecting a given one of a plurality of buckets in an aging queue as a recipient for the FE tracks, the given bucket being selected based on one or more characteristics of the FE tracks; placing the FE tracks in the given bucket; updating an aging time for the given bucket; waiting until an age of the FE tracks is greater than the aging time of the aging queue, and placing the one or more FE tracks in a write commit queue after the age of the FE tracks has become greater than the aging time of the aging queue; and completing the write requests after one or more FE tracks have been placed in the write commit queue.
1 . A method for use in a storage system, comprising:
selecting one or more front-end (FE) tracks that are arranged to cache data associated with one or more write requests;
selecting a given one of a plurality of buckets in an aging queue as a recipient for the FE tracks, the given bucket being selected based on one or more characteristics of the FE tracks;
placing the FE tracks in the given bucket;
updating an aging time for the given bucket;
waiting until an age of the FE tracks is greater than the aging time of the aging queue, and placing the one or more FE tracks in a write commit queue after the age of the FE tracks has become greater than the aging time of the aging queue; and
completing the write requests after one or more FE tracks have been placed in the write commit queue.
2 . The method of claim 1 , wherein the aging time of the given bucket is updated repeatedly by the storage system.
3 . The method of claim 1 , wherein waiting until the age of the FE tracks is greater than the aging time of the aging queue includes examining each of the buckets in a round-robin fashion to remove, from the given bucket, any FE tracks whose age is greater than the aging time of the given bucket.
4 . The method of claim 3 , wherein a respective aging time of each of the plurality of buckets is recalculated every time before the given bucket is examined.
5 . The method of claim 1 , wherein placing the FE tracks in the given bucket includes generating an object that points to the FE tracks and a BE track corresponding to the FE tracks and placing the object in the given bucket.
6 . The method of claim 1 , wherein the aging time of the given bucket is updated based on one or more of an indication of priority of the given bucket, a hit or miss rate that is associated with a caching space of the storage system, a load of the storage system or portion thereof, and a page-in time of the storage system.
7 . The method of claim 1 , wherein each of the plurality of buckets has a different priority.
8 . The method of claim 1 , wherein the given bucket is selected based on at least one of a frequency at which the FE tracks are expected to be updated in a future period and/or the frequency at which the one or more FE tracks have been updated in a past period.
9 . The method of claim 1 , wherein the given bucket is selected based on a write pattern associated with the FE tracks.
10 . The method of claim 1 , wherein the given bucket is selected based on a hit and/or miss rate that is associated with the FE tracks.
11 . A system, comprising:
a memory; and
at least one processor that is operatively coupled to the memory, the at least one processor being configured to perform the operations of:
selecting one or more front-end (FE) tracks that are arranged to cache data associated with one or more write requests;
selecting a given one of a plurality of buckets in an aging queue as a recipient for the FE tracks, the given bucket being selected based on one or more characteristics of the FE tracks;
placing the FE tracks in the given bucket;
updating an aging time for the given bucket;
waiting until an age of the FE tracks is greater than the aging time of the aging queue, and placing the one or more FE tracks in a write commit queue after the age of the FE tracks has become greater than the aging time of the aging queue; and
completing the write requests after one or more FE tracks have been placed in the write commit queue.
12 . The system of claim 11 , wherein the aging time of the given bucket is updated repeatedly by the storage system.
13 . The system of claim 11 , wherein waiting until the age of the FE tracks is greater than the aging time of the aging queue includes examining each of the buckets in a round-robin fashion to remove, from the given bucket, any FE tracks whose age is greater than the aging time of the given bucket.
14 . The system of claim 13 , wherein a respective aging time of each of the plurality of buckets is recalculated every time before the given bucket is examined.
15 . The system of claim 11 , wherein placing the FE tracks in the given bucket includes generating an object that points to the FE tracks and a BE track corresponding to the FE tracks and placing the object in the given bucket.
16 . The system of claim 11 , wherein the aging time of the given bucket is updated based on one or more of an indication of priority of the given bucket, a hit or miss rate that is associated with a caching space of the storage system, a load of the storage system or portion thereof, and a page-in time of the storage system.
17 . The system of claim 11 , wherein each of the plurality of buckets has a different priority.
18 . The system of claim 11 , wherein the given bucket is selected based on at least one of a frequency at which the FE tracks are expected to be updated in a future period and/or the frequency at which the one or more FE tracks have been updated in a past period.
19 . The system of claim 11 , wherein the given bucket is selected based on a write pattern associated with the FE tracks.
20 . A non-transitory computer readable medium storing one or more processor-executable instructions, which, when executed by at least one processor, cause the at least one processor to perform the operations of:
selecting one or more front-end (FE) tracks that are arranged to cache data associated with one or more write requests;
selecting a given one of a plurality of buckets in an aging queue as a recipient for the FE tracks, the given bucket being selected based on one or more characteristics of the FE tracks;
placing the FE tracks in the given bucket;
updating an aging time for the given bucket;
waiting until an age of the FE tracks is greater than the aging time of the aging queue, and placing the one or more FE tracks in a write commit queue after the age of the FE tracks has become greater than the aging time of the aging queue; and
completing the write requests after one or more FE tracks have been placed in the write commit queue.