IP Library Granted Patent US 9,747,044
Granted Patent B2
US 9,747,044 · App. 15/284,808 · Granted Aug 29, 2017

Interleaving read and write requests to reduce latency and maximize throughput in a flash storage device

Inventors: Anil Kumar Nanduri (San Jose, CA); Murali Krishna Vishnumolakala (San Jose, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F3/0613G06F3/0659G06F3/0679G06F3/0688
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,747,044
App. No.
15/284,808
Granted
Aug 29, 2017
Kind
B2
Abstract

In an all-flash storage array, write requests can take about 9 to 10 times longer than a read request of the same size. There could be several problems when reading or writing from all-flash storage, such as a large write request slowing down small read requests, or other write requests. Also, a large read request may slow down smaller read requests by filling the incoming requests queue. In one implementation, a determination is made on what is the maximum size of a request to flash storage that improves the throughput of a flash chip (e.g., write requests beyond a certain size do not improve throughput). A chunklet is defined as a block of data having the calculated maximum size. As write requests come in, the write requests are broken into chunklets, and then the chunklets are queued for processing by the flash chip. One chunklet is processed at a time per write request. This way, one write request does not monopolize the use of the flash chip for a period of time, allowing other requests to be queued while the chunklet is being processed by the all-flash storage.

Claims (39)

1. A storage device comprising:

a processor;

memory coupled to the processor;

a solid state drive (SSD) having a performance value for completing write requests and read requests; and

a scheduler module stored in the memory and having program instructions for execution by the processor, wherein a chunklet size is predetermined based on the performance value, wherein the scheduler module is operable to schedule write requests and read requests received by the storage device for processing by the SSD;

wherein the scheduler module further includes a chunklet processor module stored in the memory and having program instructions for execution by the processor;

wherein the chunklet processor module is further operable to break a write request into a plurality of write segments each having a corresponding segment size less than or equal to the chunklet size when a size of the write request is greater than the chunklet size;

wherein the chunklet processor module is further operable to send to the SSD the plurality of write segments interleaved with a read request;

wherein the performance value is defined as a number of channels of the SSD times a page size of the SSD.

2. The storage device of claim 1 , wherein a size of the read request is less than or equal to the chunklet size.

3. The storage device of claim 1 , wherein the chunklet processor module is further operable to break the read request into a plurality of read segments each having a corresponding segment size less than or equal to the chunklet size when the size of the read request is greater than the chunklet size; and

wherein the chunklet processor module is further operable to send to the SSD the plurality of write segments interleaved with at least one of the plurality of read segments.

4. The storage device of claim 3 , wherein each of the plurality of write segments has a corresponding segment size less than the chunklet size; and

wherein each of the plurality of read segments has a corresponding segment size less than the chunklet size.

5. The storage device of claim 1 , wherein each of the plurality of write segments has a corresponding segment size less than the chunklet size.

6. A method comprising:

identifying a performance value for completing write requests and read requests by a solid state drive (SSD), the SSD being part of a storage device including a scheduler module, the scheduler module being operable to schedule write requests and read requests received by the storage device for processing by the SSD, the scheduler module including a chunklet processor module, wherein a chunklet size is predetermined based on the performance value;

breaking a write request into a plurality of write segments each having a corresponding segment size less than or equal to the chunklet size when a size of the write request of the write request is greater than the chunklet size;

sending to the SSD the plurality of write segments interleaved with a read request; and

defining the performance value as a number of channels of the SSD times a page size of the SSD.

7. The method of claim 6 , wherein a size of the read request is less than or equal to the chunklet size.

8. The method of claim 6 , further comprising:

breaking the read request into a plurality of read segments each having a corresponding segment size less than or equal to the chunklet size when the size of the read request is greater than the chunklet size; and

wherein the sending to the SSD the plurality of write segments further comprises sending the plurality of write segments interleaved with at least one of the plurality of read segments.

9. The method of claim 8 , wherein each of the plurality of write segments has a corresponding segment size less than the chunklet size, and wherein each of the plurality of read segments has a corresponding segment size less than the chunklet size.

10. The method of claim 6 , wherein each of the plurality of write segments has a corresponding segment size less than the chunklet size.

11. A storage device comprising:

a processor;

a solid state drive (SSD) having a performance value for completing write requests and read requests; and

a scheduler module having program instructions for execution by the processor, wherein a chunklet size is predetermined based on the performance value, wherein the scheduler module is operable to schedule write requests and read requests received by the storage device for processing by the SSD;

wherein the scheduler module further includes a chunklet processor module;

wherein the chunklet processor module is operable to determine if a size of a write request is greater than the chunklet size;

wherein the chunklet processor module is further operable to send to the SSD a segment from the write request when the size of the write request is greater than the chunklet size, the segment having a segment size equal to or less than the chunklet size;

wherein the performance value is defined as a number of channels of the SSD times a page size of the SSD.

12. The storage device of claim 11 , wherein the chunklet processor module is further operable to send to the SSD the write request when the size of the write request is not greater than the chunklet size.

13. The storage device of claim 11 , wherein the chunklet processor module is further operable to send to the SSD the plurality of write segments interleaved with a read request.

14. The storage device of claim 13 , wherein a size of the read request is less than or equal to the chunklet size.

15. The storage device of claim 14 , wherein the chunklet processor module is further operable to break the read request into a plurality of read segments each having a corresponding segment size less than or equal to the chunklet size when the size of the read request is greater than the chunklet size; and

wherein the chunklet processor module is further operable to send to the SSD the plurality of write segments interleaved with at least one of the plurality of read segments.

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 14575103 · Dec 18, 2014
Related Publication 20170024149A1 · Jan 26, 2017