IP Library Granted Patent US 10,949,103
Granted Patent B2
US 10,949,103 · App. 16/393,796 · Granted Mar 16, 2021

Native storage quality of service for virtual machines

Inventors: Sumedh V. Sakdeo (San Jose, CA); Edward K. Lee (Dublin, CA); Brandon W. Salmon (Menlo Park, CA)
Assignee: Tintri by DDN, Inc.
G06F3/0631G06F3/061G06F3/0604G06F3/0605G06F3/067G06F3/0644G06F3/0659G06F3/0664G06F3/0673G06F9/45558G06F11/3409G06F11/3485G06F12/00G06F2009/45579G06F2009/45583G06F2201/815
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,949,103
App. No.
16/393,796
Granted
Mar 16, 2021
Kind
B2
Abstract

Techniques to satisfy quality of service (QoS) requirements on a per virtual machine basis natively in a storage system are disclosed. In various embodiments, for each of a plurality of virtual machines a corresponding input/output (I/O) request queue is stored on the storage system. Requests are scheduled to be pulled from the respective request queues and added to a corresponding storage operation pipeline at the storage system in an order determined based at least in part on a per virtual machine quality of service parameter.

Claims (42)

1. A storage system comprising:

a memory configured to store for each of a plurality of virtual machines a corresponding virtual machine-specific input/output (I/O) request queue included in a set of queues; and

a processor coupled to the memory and configured to:

receive at the storage system from a hypervisor a request to create a file;

in response to the request to create the file, determine at the storage system a virtual machine associated with the file;

store in a data structure stored at the storage system data representing the determined association between the file and the virtual machine, wherein the created file is included in a plurality of files stored at the storage system and each file comprising at least a subset of the files in the plurality of files is associated with a corresponding virtual machine with which each file is associated;

receive I/O requests, each received I/O request being associated with a corresponding file identified in the received I/O request;

for each received I/O request, use the corresponding file identified in the received I/O request and data stored in the data structure to identify the corresponding virtual machine with which the file is associated and place the I/O request in the virtual machine-specific I/O request queue corresponding to the corresponding virtual machine with which the file is associated; and

schedule the received I/O requests to be pulled from the set of request queues and added to a corresponding storage operation pipeline based at least in part on a per virtual machine quality of service parameter.

2. The storage system of claim 1 , wherein the processor is further configured to map each received I/O request to a corresponding one of said set of request queues.

3. The storage system of claim 2 , wherein the processor is configured to map each received I/O request to a corresponding virtual machine-specific input/output (I/O) request queue included in said set of request queues at least in part by extracting from each I/O request a file identifier with which the I/O request is associated and mapping the file identifier to a virtual machine with which the file identifier is associated.

4. The storage system of claim 2 , wherein said I/O requests are received from one or more hypervisors.

5. The storage system of claim 2 , wherein said I/O requests are received from one or more hypervisors.

6. The storage system of claim 1 , wherein the processor is further configured to determine an order in which to place the I/O requests in the virtual machine-specific I/O request queue based at least in part on an automatically determined fair sharing of resources among a plurality of virtual machines.

7. The storage system of claim 1 , wherein the processor is further configured to determine an order in which to place the I/O requests in the virtual machine-specific I/O request queue based at least in part on respective request sizes associated with requests in different request queues.

8. The storage system of claim 1 , wherein the received I/O requests are added to the corresponding storage operation pipeline in an order determined based at least in part on a minimum share of input/output per second (IOPS) capacity.

9. The storage system of claim 8 , wherein the processor is further configured to determine an order in which to place the I/O requests in the virtual machine-specific I/O request queue based at least in part on said minimum share and request size.

10. The storage system of claim 1 , the received I/O requests are added to a corresponding storage operation pipeline in an order determined based at least in part on a maximum input/output per second (IOPS) setting.

11. The storage system of claim 1 , wherein said processor is further configured to track and report a normalized IOPS metric determined at least in part by comparing an actual request size to a reference request size.

12. The storage system of claim 1 , wherein said processor is further configured to track and report a contention latency on a per virtual machine basis.

13. The storage system of claim 1 , wherein said processor is configured to enforce a maximum TOPS setting and to track a report an associated throttle latency.

14. The storage system of claim 1 , wherein the processor is configured to schedule I/O requests based at least in part on a model of storage system performance capacity.

15. The storage system of claim 14 , wherein said model comprises a storage system operation-specific model.

16. The storage system of claim 1 , wherein a storage operation pipeline comprises a frontend write request pipeline and wherein the processor is configured to schedule I/O requests based at least in part on a current state of an associated backend write pipeline.

17. A method comprising:

storing, for each of a plurality of virtual machines, a corresponding virtual machine-specific input/output (I/O) request queue included in a set of request queues;

receiving at a storage system from a hypervisor a request to create a file;

in response to the request to create the file, determining at the storage system a virtual machine associated with the file;

storing in a data structure stored at the storage system data representing the determined association between the file and the virtual machine, wherein the created file is included in a plurality of files stored at the storage system and each file comprising at least a subset of the files in the plurality of files is associated with a corresponding virtual machine with which each file is associated;

receiving I/O requests, each received I/O request being associated with a corresponding file identified in the received I/O request;

for each received I/O request, using the corresponding file identified in the I/O request and data stored in the data structure to identify the corresponding virtual machine with which the file is associated and placing the received I/O request in the virtual machine-specific I/O request queue corresponding to the corresponding virtual machine with which the file is associated; and

scheduling the received I/O requests to be pulled from the set of request queues and added to a corresponding storage operation pipeline based at least in part on a per virtual machine quality of service parameter.

18. The method of claim 17 , further comprising mapping each received I/O request to a corresponding virtual machine-specific input/output (I/O) request queue included in said set of request queues.

19. The method of claim 17 , wherein each received I/O request is mapped to a corresponding virtual machine-specific input/output (I/O) request queue included in said set of request queues at least in part by extracting from the request a file identifier with which the request is associated and mapping the file identifier to a virtual machine with which the file identifier is associated.

20. A computer program product embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

storing, for each of a plurality of virtual machines, a corresponding virtual machine-specific input/output (I/O) request queue included in a set of request queues;

receiving at a storage system from a hypervisor a request to create a file;

in response to the request to create the file, determining at the storage system a virtual machine associated with the file;

storing in a data structure stored at the storage system data representing the determined association between the file and the virtual machine, wherein the created file is included in a plurality of files stored at the storage system and each file comprising at least a subset of the files in the plurality of files is associated with a corresponding virtual machine with which each file is associated;

receiving I/O requests, each received I/O request being associated with a corresponding file identified in the received I/O request;

for each received I/O request, using the corresponding file identified in the received I/O request and data stored in the data structure to identify the corresponding virtual machine with which the file is associated and placing the received I/O request in the virtual machine-specific I/O request queue corresponding to the corresponding virtual machine with which the file is associated; and

scheduling the received I/O requests to be pulled from the set of request queues and added to a corresponding storage operation pipeline based at least in part on a per virtual machine quality of service parameter.

Continuity (3)
Continuation 15092345 · Apr 6, 2016
Provisional Application 62144518 · Apr 8, 2015
Related Publication 20190347023A1 · Nov 14, 2019