IP Library Granted Patent US 9,880,934
Granted Patent B2
US 9,880,934 · App. 15/256,463 · Granted Jan 30, 2018

Access-based eviction of blocks from solid state drive cache memory

Inventors: Pradeep Shetty (San Jose, CA); Sandeep Karmarkar (San Jose, CA); Senthil Kumar Ramamoorthy (San Jose, CA); Umesh Maheshwari (San Jose, CA); Vanco Buca (San Jose, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F12/0831G06F3/061G06F3/0613G06F3/0617G06F3/0655G06F3/0665G06F3/0685G06F3/0688G06F12/0246G06F12/128G11C7/1072G06F2212/621G06F2212/7207
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,880,934
App. No.
15/256,463
Granted
Jan 30, 2018
Kind
B2
Abstract

Methods and systems are presented for allocating CPU cycles among processes in a storage system. One method includes operations for maintaining segments in a first memory, each segment including blocks, and for maintaining a block temperature for each block in a second memory. The first memory is a read-cache where one segment is written at a time, and each block is readable from the first memory without reading the corresponding complete segment. The block temperature is based on the frequency of access to the respective block, and a segment temperature is based on the block temperature of its blocks. Additionally, the segment with the lowest segment temperature is selected for eviction from the second memory, and blocks in the selected segment with a block temperature greater than a threshold temperature are identified. The selected segment is evicted, and a segment with the identified blocks is written to the first memory.

Claims (33)

1. A method comprising:

maintaining, in a first memory, a plurality of segments, each segment including a plurality of blocks, and maintaining, in a second memory, a block temperature for each of a plurality of blocks, wherein the first memory is a read-cache memory where one segment is written at a time, wherein each block is readable from the first memory without reading the corresponding complete segment, each block temperature being based on a frequency of access to the respective block, wherein a segment temperature for each segment is based on block temperatures for the corresponding plurality of blocks within the segment;

selecting a segment from a plurality of segments with a lowest segment temperature for eviction based on block temperatures from the second memory;

identifying blocks in the selected segment with a block temperature greater than a threshold temperature;

evicting the selected segment from the first memory; and

writing to the first memory a new segment having the identified blocks.

2. The method as recited in claim 1 , wherein the block temperature increases when the block is accessed, wherein the block temperature decreases periodically.

3. The method as recited in claim 1 , wherein the segment temperature is equal to a total number of bytes in blocks with temperatures greater than or equal to a temperature threshold.

4. The method as recited in claim 1 , wherein the first memory is a solid-state drive (SSD).

5. The method as recited in claim 1 , wherein the second memory is one of a random access memory (RAM) or a dynamic random-access memory (DRAM).

6. The method as recited in claim 1 , wherein each block is associated with a volume, wherein each segment is operable to include blocks from one volume and each segment is operable to include blocks from a plurality of volumes.

7. The method as recited in claim 1 , wherein a read-cache memory is a memory acting as a cache for read requests and not acting as a cache for write requests.

8. The method as recited in claim 1 , wherein the identified blocks are copied forward by being re-cached in the first memory, wherein blocks in the segment that were not identified are not copied forward.

9. The method as recited in claim 1 , wherein selecting a segment further includes:

calculating the segment temperature for segments cached in the first memory; and

selecting the segment with the lowest calculated temperature.

10. The method as recited in claim 1 , wherein a non-volatile random-access memory (NVRAM) memory is used as write cache, wherein the segments are formed in the NVRAM and transferred to hard disk storage.

11. A system comprising:

a first memory for storing a plurality of segments, each segment including a plurality of blocks, wherein the first memory is a read-cache memory where one segment is written at a time, wherein each block is readable from the first memory without reading the corresponding complete segment;

a second memory for storing a block temperature for each of the plurality of blocks, each block temperature being based on a frequency of access to the respective block, wherein a segment temperature for each segment is based on block temperatures for the corresponding plurality of blocks within the segment; and

a processor operable to select a segment from a plurality of segments with a lowest segment temperature for eviction based on block temperatures from the second memory, wherein the processor identifies identifying blocks in the selected segment with a block temperature greater than a threshold temperature, wherein the selected segment is evicted from the first memory and a new segment having the identified blocks is written to the first memory.

12. The system as recited in claim 11 , further including:

hard disk storage for keeping all blocks in non-volatile memory.

13. The system as recited in claim 12 , further including:

a non-volatile random-access memory (NVRAM) memory used as a write-cache memory, wherein the segments are formed in the NVRAM and transferred to the hard disk storage.

14. The system as recited in claim 11 , wherein blocks are of variable length.

15. A non-transitory computer-readable storage medium storing a computer program, the computer-readable storage medium comprising:

program instructions for maintaining, in a first memory, a plurality of segments, each segment including a plurality of blocks, and maintaining, in a second memory, a block temperature for each of a plurality of blocks, wherein the first memory is a read-cache memory where one segment is written at a time, wherein each block is readable from the first memory without reading the corresponding complete segment, each block temperature being based on a frequency of access to the respective block, wherein a segment temperature for each segment is based on block temperatures for the corresponding plurality of blocks within the segment;

program instructions for selecting a segment from a plurality of segments with a lowest segment temperature for eviction based on block temperatures from the second memory;

program instructions for identifying blocks in the selected segment with a block temperature greater than a threshold temperature;

program instructions for evicting the selected segment from the first memory; and

program instructions for writing to the first memory a new segment having the identified blocks.

16. The storage medium as recited in claim 15 , wherein the first memory is a solid-state drive (SSD), wherein the second memory is one of a random access memory (RAM) or a dynamic random-access memory (DRAM).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
Continuity (2)
Continuation 14623731 · Feb 17, 2015
Related Publication 20160371186A1 · Dec 22, 2016