IP Library Granted Patent US 9,436,391
Granted Patent B1
US 9,436,391 · App. 14/229,690 · Granted Sep 6, 2016

Efficient scalable I/O scheduling

Inventors: Mark S. Lewis (Pleasanton, CA); Vinay P. Rao (San Jose, CA); Anna Povzner (San Jose, CA); Subramanian Lakshmanan (San Jose, CA)
Assignee: Formation Data Systems, Inc.
G06F3/0613G06F3/0653G06F3/0674
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,436,391
App. No.
14/229,690
Granted
Sep 6, 2016
Kind
B1
Abstract

An input/output (I/O) request is dispatched. A determination is made regarding a storage volume to service. A determination is made regarding whether an actual disk throughput exceeds a first threshold rate. The first threshold rate exceeds a reserved disk throughput. Responsive to determining that the actual disk throughput exceeds the first threshold rate, a first storage volume is selected based on credits or based on priority. Responsive to determining that the actual disk throughput does not exceed the first threshold rate, a second storage volume is selected based on guaranteed minimum I/O rate. An I/O request queue associated with the determined storage volume is determined. An I/O request is retrieved from the determined I/O request queue. The retrieved I/O request is sent to a persistence layer that includes the selected storage volume.

Claims (71)

1. A method of selecting and dispatching an input/output (I/O) request from a set of I/O requests for a plurality of clients, the I/O requests specifying read or write from storage volumes for the clients, the storage volumes stored on a shared storage device, the storage volumes further having guaranteed minimum I/O rate requirements, the method comprising:

determining a storage volume to service, which comprises:

determining whether an actual disk throughput of I/O requests for the shared storage device exceeds a first threshold rate that is based on and exceeds a reserved disk throughput for the shared storage device, wherein the reserved disk throughput is a rate of I/O requests necessary to meet the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device;

responsive to determining that the actual disk throughput exceeds the first threshold rate, selecting the storage volume to service based on credits for the storage volumes or based on priority for the storage volumes; and

responsive to determining that the actual disk throughput does not exceed the first threshold rate, selecting the storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device;

determining an I/O request queue associated with the determined storage volume;

retrieving an I/O request from the determined I/O request queue; and

sending the retrieved I/O request to a persistence layer that includes the shared storage device.

2. The method of claim 1 , wherein determining the storage volume to service further comprises:

determining whether an I/O request queue associated with the storage volume is empty; and

responsive to determining that the I/O request queue associated with the storage volume is empty:

adding a credit for the storage volume;

determining whether the actual disk throughput is less than a second threshold rate that is less than the reserved disk throughput;

responsive to determining that the actual disk throughput meets the second threshold rate, selecting another storage volume to service based on the credits for the storage volumes or based on the priority for the storage volumes; and

responsive to determining that the actual disk throughput is less than the second threshold rate, selecting the other storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device.

3. The method of claim 2 , wherein adding a credit for the storage volume is performed only if a number of credits associated with the storage volume is less than a maximum credit limit.

4. The method of claim 1 , wherein the actual disk throughput is based on a number of I/O requests dispatched based on rate and a number of storage volumes that were selected based on rate but had zero I/O requests in an associated I/O request queue.

5. The method of claim 1 , wherein selecting the storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device comprises selecting the storage volume according to a rate-based scheduling sequence, the rate-based scheduling sequence comprising a minimum number of slots per storage volume necessary to meet the guaranteed minimum I/O rate requirement for each storage volume stored on the shared storage device.

6. The method of claim 1 , wherein selecting the storage volume to service based on priority for the storage volumes comprises selecting the storage volume according to a priority-based scheduling sequence, the priority-based scheduling sequence comprising a minimum number of slots per storage volume necessary to satisfy weights associated with each storage volume.

7. The method of claim 6 , wherein a weight associated with a storage volume is based on a relative priority of the storage volume.

8. The method of claim 1 , wherein selecting the storage volume to service based on credits for the storage volumes or based on priority for the storage volumes comprises:

determining whether a storage volume with a non-empty I/O request queue and more than zero credits exists;

responsive to determining that the storage volume with a non-empty I/O request queue and more than zero credits exists, selecting the storage volume based on credits for the storage volumes; and

responsive to determining that the storage volume with a non-empty I/O request queue and more than zero credits does not exist, selecting the storage volume based on priority for the storage volumes.

9. The method of claim 8 , wherein selecting the storage volume based on credits for the storage volumes comprises selecting the storage volume with a highest number of credits.

10. A non-transitory computer-readable storage medium storing computer program modules for selecting and dispatching an input/output (I/O) request from a set of I/O requests for a plurality of clients, the I/O requests specifying read or write from storage volumes for the clients, the storage volumes stored on a shared storage device, the storage volumes further having guaranteed minimum I/O rate requirements, the computer program modules executable to perform steps comprising:

determining a storage volume to service, which comprises:

determining whether an actual disk throughput of I/O requests for the shared storage device exceeds a first threshold rate that is based on and exceeds a reserved disk throughput for the shared storage device, wherein the reserved disk throughput is a rate of I/O requests necessary to meet the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device;

responsive to determining that the actual disk throughput exceeds the first threshold rate, selecting the storage volume to service based on credits for the storage volumes or based on priority for the storage volumes; and

responsive to determining that the actual disk throughput does not exceed the first threshold rate, selecting the storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device;

determining an I/O request queue associated with the determined storage volume;

retrieving an I/O request from the determined I/O request queue; and

sending the retrieved I/O request to a persistence layer that includes the shared storage device.

11. The computer-readable storage medium of claim 10 , wherein

determining the storage volume to service further comprises:

determining whether an I/O request queue associated with the storage volume is empty; and

responsive to determining that the I/O request queue associated with the storage volume is empty:

adding a credit for the storage volume;

determining whether the actual disk throughput is less than a second threshold rate that is less than the reserved disk throughput;

responsive to determining that the actual disk throughput meets the second threshold rate, selecting another storage volume to service based on the credits for the storage volumes or based on the priority for the storage volumes; and

responsive to determining that the actual disk throughput is less than the second threshold rate, selecting the other storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device.

12. The computer-readable storage medium of claim 10 , wherein the actual disk throughput is based on a number of I/O requests dispatched based on rate and a number of volumes that were selected based on rate but had zero I/O requests in an associated I/O request queue.

13. The computer-readable storage medium of claim 10 , wherein selecting the storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device comprises selecting the storage volume according to a rate-based scheduling sequence, the rate-based scheduling sequence comprising a minimum number of slots per storage volume necessary to meet the guaranteed minimum I/O rate requirement for each storage volume stored on the shared storage device.

14. The computer-readable storage medium of claim 10 , wherein selecting the storage volume to service based on priority for the storage volumes comprises selecting the storage volume according to a priority-based scheduling sequence, the priority-based scheduling sequence comprising a minimum number of slots per storage volume necessary to satisfy weights associated with each storage volume.

15. The computer-readable storage medium of claim 10 , wherein selecting the storage volume to service based on credits for the storage volumes or based on priority for the storage volumes comprises:

determining whether a storage volume with a non-empty I/O request queue and more than zero credits exists;

responsive to determining that the storage volume with a non-empty I/O request queue and more than zero credits exists, selecting the storage volume based on credits for the storage volumes; and

responsive to determining that the storage volume with a non-empty I/O request queue and more than zero credits does not exist, selecting the storage volume based on priority for the storage volumes.

16. A system for selecting and dispatching an input/output (I/O) request from a set of I/O requests for a plurality of clients, the I/O requests specifying read or write from storage volumes for the clients, the storage volumes stored on a shared storage device, the storage volumes further having guaranteed minimum I/O rate requirements, comprising:

a non-transitory computer-readable storage medium storing computer program modules executable to perform steps comprising:

determining a storage volume to service, which comprises:

determining whether an actual disk throughput of I/O requests for the shared storage device exceeds a first threshold rate that is based on and exceeds a reserved disk throughput for the shared storage device, wherein the reserved disk throughput is a rate of I/O requests necessary to meet the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device;

responsive to determining that the actual disk throughput exceeds the first threshold rate, selecting the storage volume to service based on credits for the storage volumes or based on priority for the storage volumes; and

responsive to determining that the actual disk throughput does not exceed the first threshold rate, selecting the storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device;

determining an I/O request queue associated with the determined storage volume;

retrieving an I/O request from the determined I/O request queue; and

sending the retrieved I/O request to a persistence layer that includes the shared storage device; and

a computer processor for executing the computer program modules.

17. The system of claim 16 , wherein determining the storage volume to service further comprises:

determining whether an I/O request queue associated with the storage volume is empty; and

responsive to determining that the I/O request queue associated with the storage volume is empty:

adding a credit for the storage volume;

determining whether the actual disk throughput is less than a second threshold rate that is less than the reserved disk throughput;

responsive to determining that the actual disk throughput meets the second threshold rate, selecting another storage volume to service based on the credits for the storage volumes or based on the priority for the storage volumes; and

responsive to determining that the actual disk throughput is less than the second threshold rate, selecting the other storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device.

18. The system of claim 16 , wherein selecting the storage volume to service based on the guaranteed minimum I/O rate requirements for the storage volumes stored on the shared storage device comprises selecting the storage volume according to a rate-based scheduling sequence, the rate-based scheduling sequence comprising a minimum number of slots per storage volume necessary to meet the guaranteed minimum I/O rate requirement for each storage volume stored on the shared storage device.

19. The system of claim 16 , wherein selecting the storage volume to service based on priority for the storage volumes comprises selecting the storage volume according to a priority-based scheduling sequence, the priority-based scheduling sequence comprising a minimum number of slots per storage volume necessary to satisfy weights associated with each storage volume.

20. The system of claim 16 , wherein selecting the storage volume to service based on credits for the storage volumes or based on priority for the storage volumes comprises:

determining whether a storage volume with a non-empty I/O request queue and more than zero credits exists;

responsive to determining that the storage volume with a non-empty I/O request queue and more than zero credits exists, selecting the storage volume based on credits for the storage volumes; and

responsive to determining that the storage volume with a non-empty I/O request queue and more than zero credits does not exist, selecting the storage volume based on priority for the storage volumes.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY BY ADDING INVENTOR NAME PREVIOUSLY RECORDED AT REEL: 043869 FRAME: 0209. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Jan 3, 2018
From: FORMATION DATA SYSTEMS, INC.; PACIFIC WESTERN BANK
To: EBAY INC.
Reel/Frame 044986/0595 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2017
From: PACIFIC WESTERN BANK
To: EBAY INC.
Reel/Frame 043869/0209 →
SECURITY INTEREST Recorded May 30, 2017
From: FORMATION DATA SYSTEMS, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 042527/0021 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2014
From: LEWIS, MARK S.; RAO, VINAY P.; POVZNER, ANNA; LAKSHMANAN, SUBRAMANIAN
To: FORMATION DATA SYSTEMS, INC.
Reel/Frame 033525/0223 →