IP Library Granted Patent US 10,146,574
Granted Patent B1
US 10,146,574 · App. 15/195,447 · Granted Dec 4, 2018

Techniques for scheduling storage operations on virtual disks of a virtual machine

Inventors: Dmitry Vladimirovich Krivenok (Saint-Petersburg, RU); Yuri A. Stotski (Saint-Petersburg, RU); Derek M. Scott (Raleigh, NC)
Assignee: EMC IP Holding Company LLC
G06F9/4881G06F3/061G06F3/067G06F3/0659G06F3/0664G06F9/45558G06F2009/45583G06F2009/45595
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,146,574
App. No.
15/195,447
Granted
Dec 4, 2018
Kind
B1
Abstract

A method, of scheduling storage commands for processing on a virtual machine (VM) operating on a computing device includes (a) intercepting, by a front end storage scheduler module running on the VM, a set of storage commands each of which is directed at one of a plurality of virtual disks assigned to the VM, the plurality of virtual disks sharing underlying storage, (b) queueing the intercepted storage commands for each virtual disk into a respective front-end queue for each virtual disk, and (c) selectively dequeueing storage commands from the front-end queues onto their respective virtual disks in a manner that prioritizes certain virtual disks over others, wherein the selectively dequeueing is performed in a different order than the queueing. An apparatus, system, and computer program product for performing a similar method are also provided.

Claims (38)

1. A method of scheduling storage commands for processing on a virtual machine (VM) operating on a computing device, the method comprising:

intercepting, by a front end storage scheduler module running in user space of the VM, a set of storage commands each of which is directed at one of a plurality of virtual disks assigned to the VM, the plurality of virtual disks sharing underlying storage;

queuing, by the front end storage scheduler module, the intercepted storage commands for each virtual disk into a respective front-end queue of the front end storage scheduler module for each virtual disk; and

selectively de-queuing storage commands from the front-end queues onto their respective virtual disks in a manner that prioritizes certain virtual disks over others, wherein the selectively de-queuing is performed in a different order than the queuing, wherein the de-queued storage commands are further en-queued to corresponding back-end queues of corresponding back end storage scheduler modules running in kernel space of the VM;

executing, by a respective storage driver of each respective virtual disk running in kernel space, a storage command that is de-queued from a corresponding back-end queue by a corresponding back end storage scheduler module of the respective virtual disk.

2. The method of claim 1 wherein:

the method further comprises assigning a respective weight to each virtual disk; and

selectively de-queuing includes prioritizing storage commands for de-queuing based on respective weights assigned to their virtual disks, higher weights leading to higher prioritization.

3. The method of claim 2 wherein:

the method further comprises assigning each virtual disk to a group of a plurality of groups, each group having an assigned weight for that group; and

assigning the respective weight to each virtual disk includes assigning the assigned weight for the group to which that virtual disk is assigned to that virtual disk.

4. The method of claim 3 wherein assigning each virtual disk to the group of the plurality of groups includes:

assigning virtual disks which serve as system disks of the VM to a first group having a highest weight assigned thereto; and

assigning virtual disks which serve as user disks of the VM to other groups aside from the first group, the other groups having weight assigned thereto lower than the highest weight.

5. The method of claim 3 wherein selectively de-queuing includes:

for each group that has at least one virtual disk with a front-end queue that has a queued storage command; dividing a number of storage commands previously de-queuing from the front-end queues of the virtual disks of that group by the weight assigned to that group, yielding a quotient for each such group; and

de-queuing a storage command from the front-end queue of a virtual disk assigned to a group having a lowest quotient.

6. The method of claim 5 wherein de-queuing the storage command from the front-end queue of the virtual disk assigned to the group having the lowest quotient includes:

determining that more than one groups share the lowest quotient; and

in response to determining that the plurality of groups share the lowest quotient, selecting a group from the more than one groups having a highest weight assigned to that group.

7. The method of claim 5 wherein de-queuing the storage command from the front-end queue of the virtual disk assigned to the group having the lowest quotient includes selecting a particular virtual disk from the group for de-queuing based on a round-robin arrangement.

8. The method of claim 5 wherein the method further comprises periodically resetting the numbers of storage commands previously de-queued from the front-end queues to zero.

9. The method of claim 2 wherein assigning the respective weight to each virtual disk includes:

assigning a highest weight to virtual disks which serve as system disks of the VM; and

assigning respective weights lower than the highest weight to virtual disks which serve as user disks of the VM.

10. The method of claim 2 wherein prioritizing storage commands for de-queuing based on their respective assigned weights includes de-queuing successive storage commands from the front-end queues in proportion to the respective weights assigned to their respective virtual disks.

11. An apparatus comprising:

networking circuitry for communicating with a network; and

processing circuitry couple to memory configured to operate a virtual machine (VM) and to schedule storage commands for processing by:

intercepting, by a front end storage scheduler module running in user space of the VM, a set of storage commands each of which is directed at one of a plurality of virtual disks assigned to the VM, the plurality of virtual disks sharing underlying storage;

queuing, by the front end storage scheduler module, the intercepted storage commands for each virtual disk into a respective front-end queue of the front end storage scheduler module for each virtual disk; and

selectively de-queuing storage commands from the front-end queues onto their respective virtual disks in a manner that prioritizes certain virtual disks over others, wherein the selectively de-queuing is performed in a different order than the queuing, wherein the de-queued storage commands are further en-queued to corresponding back-end queues of corresponding back end storage scheduler modules running in kernel space of the VM;

executing, by a respective storage driver of each respective virtual disk at the kernel space, a storage command that is de-queued from a corresponding back-end queue by a corresponding back end storage scheduler module of the respective virtual disk.

12. A computer program product comprising a non-transitory computer-readable storage medium storing a set of instructions, which, when performed by a computing device, causes the computing device to schedule storage commands for processing on a virtual machine (VM) operating on the computing device by:

intercepting, by a front end storage scheduler module running in user space of the VM, a set of storage commands each of which is directed at one of a plurality of virtual disks assigned to the VM, the plurality of virtual disks sharing underlying storage;

queuing, by the front end storage scheduler module, the intercepted storage commands for each virtual disk into a respective front-end queue of the front end storage scheduler module for each virtual disk; and

selectively de-queuing storage commands from the front-end queues onto their respective virtual disks in a manner that prioritizes certain virtual disks over others, wherein the selectively de-queuing is performed in a different order than the queuing, wherein the de-queued storage commands are further en-queued to corresponding back-end queues of corresponding back end storage scheduler modules running in kernel space of the VM;

executing, by a respective storage driver of each respective virtual disk at the kernel space, a storage command that is de-queued from a corresponding back-end queue by a corresponding back end storage scheduler module of the respective virtual disk.

Assignments (6)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST AT REEL 048825 FRAME 0489 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058000/0916 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Apr 8, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 048825/0489 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2017
From: KRIVENOK, DMITRY VLADIMIROVICH; STOTSKI, YURI A.; SCOTT, DEREK M.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041180/0878 →