IP Library Granted Patent US 10,303,382
Granted Patent B1
US 10,303,382 · App. 15/407,487 · Granted May 28, 2019

Application defined storage device

Inventors: Derrick Preston Chu (Santa Clara, CA); Suneel Indupuru (Cupertino, CA); Daryl Ng (San Jose, CA)
Assignee: OmniTier Storage, Inc.
G06F3/0629G06F3/061G06F3/0616G06F3/0683G06F12/0802G06F2212/60
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 10,303,382
App. No.
15/407,487
Granted
May 28, 2019
Kind
B1
Abstract

Data to be stored is received from an application. A first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, are selected from based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties. The data is stored in the selected type of storage.

Claims (102)

1. A system, comprising:

a processor; and

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:

receive data to be stored from an application;

select from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

selecting, from a plurality of key-value pair size groups, a key-value pair size group corresponding to a key-value pair size associated with a read instruction; and

selecting that type of storage which corresponds to the selected key-value pair size group; and

store the data in the selected type of storage.

2. The system recited in claim 1 , wherein the application includes a caching application, the access characteristic is received from the caching application; and the access characteristic includes a time-to-live value.

3. The system recited in claim 1 , wherein selecting includes:

receiving a time-to-live value, associated with the data to be stored, from the application;

obtaining a wear metric representing an amount of wear associated with the first type of storage, wherein the first type of storage includes a solid state drive (SSD);

selecting, based at least in part on the wear metric, a time-to-live threshold;

determining if the time-to-live value exceeds the time-to-live threshold;

in the event it is determined that the time-to-live value exceeds the time-to-live threshold, selecting the first type of storage that includes the SSD; and

in the event it is determined that the time-to-live value does not exceed the time-to-live threshold, selecting the second type of storage.

4. The system recited in claim 1 , wherein selecting includes:

receiving an array identifier, associated with the data to be stored, from the application;

determining whether data associated with the array identifier is already stored on the first type of storage or the second type of storage;

in the event it is determined that data associated with the array identifier is already stored on the first type of storage, selecting the first type of storage; and

in the event it is determined that data associated with the array identifier is already stored on the second type of storage, selecting the second type of storage.

5. The system recited in claim 1 , wherein the system is implemented as a plug-in PCIe card.

6. A system, comprising:

a processor; and

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:

receive data to be stored from an application;

select from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

receiving a write address, associated with the data to be stored, from the application;

determining a write count which corresponds to the write address;

determining if the write count exceeds a temperature threshold;

in the event it is determined that the write count exceeds the temperature threshold, selecting the first type of storage, wherein the first type of storage is more durable than the second type of storage; and

in the event it is determined that the write count does not exceed the temperature threshold, selecting the second type of storage; and

store the data in the selected type of storage.

7. A system, comprising:

a processor; and

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:

receive data to be stored from an application;

select from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

receiving a read address associated with a read instruction;

determining a read count which corresponds to the read address;

selecting, from a plurality of read count groups, a read count group corresponding to the determined read count; and

selecting that type of storage which corresponds to the selected read count group; and

store the data in the selected type of storage.

8. A method, comprising:

receiving data to be stored from an application;

selecting from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

selecting, from a plurality of key-value pair size groups, a key-value pair size group corresponding to a key-value pair size associated with a read instruction; and

selecting that type of storage which corresponds to the selected key-value pair size group; and

storing the data in the selected type of storage.

9. The method recited in claim 8 , wherein the application includes a caching application, the access characteristic is received from the caching application; and the access characteristic includes a time-to-live value.

10. The method recited in claim 8 , wherein selecting includes:

receiving a time-to-live value, associated with the data to be stored, from the application;

obtaining a wear metric representing an amount of wear associated with the first type of storage, wherein the first type of storage includes a solid state drive (SSD);

selecting, based at least in part on the wear metric, a time-to-live threshold;

determining if the time-to-live value exceeds the time-to-live threshold;

in the event it is determined that the time-to-live value exceeds the time-to-live threshold, selecting the first type of storage that includes the SSD; and

in the event it is determined that the time-to-live value does not exceed the time-to-live threshold, selecting the second type of storage.

11. The method recited in claim 8 , wherein selecting includes:

receiving an array identifier, associated with the data to be stored, from the application;

determining whether data associated with the array identifier is already stored on the first type of storage or the second type of storage;

in the event it is determined that data associated with the array identifier is already stored on the first type of storage, selecting the first type of storage; and

in the event it is determined that data associated with the array identifier is already stored on the second type of storage, selecting the second type of storage.

12. A method, comprising:

receiving data to be stored from an application;

selecting from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

receiving a write address, associated with the data to be stored, from the application;

determining a write count which corresponds to the write address;

determining if the write count exceeds a temperature threshold;

in the event it is determined that the write count exceeds the temperature threshold, selecting the first type of storage, wherein the first type of storage is more durable than the second type of storage; and

in the event it is determined that the write count does not exceed the temperature threshold, selecting the second type of storage; and

storing the data in the selected type of storage.

13. A method, comprising:

receiving data to be stored from an application;

selecting from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

receiving a read address associated with a read instruction;

determining a read count which corresponds to the read address;

selecting, from a plurality of read count groups, a read count group corresponding to the determined read count; and

selecting that type of storage which corresponds to the selected read count group; and

storing the data in the selected type of storage.

14. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving data to be stored from an application;

selecting from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

selecting, from a plurality of key-value pair size groups, a key-value pair size group corresponding to a key-value pair size associated with a read instruction; and

selecting that type of storage which corresponds to the selected key-value pair size group; and

storing the data in the selected type of storage.

15. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving data to be stored from an application;

selecting from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

receiving a write address, associated with the data to be stored, from the application;

determining a write count which corresponds to the write address;

determining if the write count exceeds a temperature threshold;

in the event it is determined that the write count exceeds the temperature threshold, selecting the first type of storage, wherein the first type of storage is more durable than the second type of storage; and

in the event it is determined that the write count does not exceed the temperature threshold, selecting the second type of storage; and

storing the data in the selected type of storage.

16. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving data to be stored from an application;

selecting from a first type of storage, having a first set of storage properties, and a second type of storage, having a second set of storage properties, based on an access characteristic associated with the data, the first set of storage properties, and the second set of storage properties, wherein selecting includes:

receiving a read address associated with a read instruction;

determining a read count which corresponds to the read address;

selecting, from a plurality of read count groups, a read count group corresponding to the determined read count; and

selecting that type of storage which corresponds to the selected read count group; and

storing the data in the selected type of storage.

Assignments (2)
CHANGE OF NAME Recorded Jul 11, 2023
From: OMNITIER STORAGE, INC.
To: OMNITIER, INC.
Reel/Frame 064383/0910 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2017
From: CHU, DERRICK PRESTON; INDUPURU, SUNEEL; NG, DARYL
To: OMNITIER STORAGE, INC.
Reel/Frame 041532/0643 →
Continuity (2)
Provisional Application 62287701 · Jan 27, 2016
Provisional Application 62294132 · Feb 11, 2016
Cited By (12)
US 12,189,971 US 12,229,425 US 12,265,719 US 12,271,740 US 12,299,307 US 12,299,460 US 12,333,172 US 12,360,802 US 12,393,432 US 12,399,639 US 12,423,117 US 12,443,436