IP Library Granted Patent US 11,422,750
Granted Patent B2
US 11,422,750 · App. 16/643,470 · Granted Aug 23, 2022

Computer program product, system, and method to manage access to storage resources from multiple applications

Inventors: Ziye Yang (Shanghai, CN); Gang Cao (Shanghai, CN); Cunyin Chang (Shanghai, CN); Changpeng Liu (Shanghai, CN); James Harris (Chandler, AZ)
Assignee: Intel Corporation
G06F3/0664G06F3/061G06F3/0679G06F9/5016G06F9/5077
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 11,422,750
App. No.
16/643,470
Filed
Feb 28, 2020
Granted
Aug 23, 2022
Kind
B2
Art Unit
2139
USPC
711/154
Abstract

A computer program product, system, and method to manage access to storage resources from multiple applications. A plurality of virtual controllers is generated in a host memory space. Each virtual controller includes at least one virtual namespace that maps to a physical namespace in a physical controller. Applications are assigned to the virtual controllers. For each application of the applications assigned one of the virtual controllers, a virtual submission queue is generated to communicate with the virtual controller assigned to the application. An Input/Output (I/O) request to a target virtual namespace in one of the virtual submission queues is added to a physical submission queue for the physical controller having the physical namespace for which the target virtual namespace was generated.

Claims (46)

1. A computer program product comprising a non-transitory computer readable storage media executed in a host system in communication with a plurality of storage devices, wherein the computer readable storage media includes program code executed to:

generate a plurality of virtual controllers in a host memory space, wherein each virtual controller includes at least one virtual namespace, wherein each of the at least one virtual namespace in each virtual controller maps to a physical namespace in a respective physical controller of one storage device from among the plurality of storage devices;

assign each of a plurality of applications to a respective virtual controller of the virtual controllers;

for each application of the applications assigned to one of the virtual controllers, generate a virtual submission queue for the application to use to communicate with the respective virtual controller assigned to the application;

add an Input/Output (I/O) request to a target virtual namespace in one of the virtual submission queues to a physical submission queue for the respective physical controller having the physical namespace for which the target virtual namespace was generated; and

process each virtual submission queue of the virtual submission queues to alternate access of I/O requests from the virtual submission queues, wherein to determine the physical submission queue and add the I/O request to the determined physical submission queue is performed in response to the access of each of the I/O requests from the virtual submission queues.

2. The computer program product of claim 1 , wherein the plurality of virtual controllers are maintained in a user space of the host memory space, and wherein an I/O service layer executing in the user space is to generate the plurality of virtual controllers, generate the virtual namespace for each physical namespace, indicate the application assigned to the virtual namespace, generate the virtual submission queue, process the I/O request in the virtual submission queue, determine the physical submission queue and add the I/O request to the determined physical submission queue.

3. The computer program product of claim 1 , wherein each physical namespace is associated with only one virtual namespace, and wherein each virtual namespace is only assigned to one virtual controller, and wherein each virtual controller is only assigned to one of the applications.

4. The computer program product of claim 1 , wherein one of the plurality of virtual controllers includes a plurality of virtual namespaces that map to physical namespaces in different physical controllers to allow the application to stripe data across the physical namespaces in the different physical controllers by queueing I/O requests to the virtual namespaces in the virtual submission queue for the application and the virtual controller having the virtual namespaces that map to physical namespaces in the different physical controllers.

5. The computer program product of claim 4 , wherein to process each of the virtual submission queues is to process a fixed number of I/O requests from each of the virtual submission queues before the process of I/O requests from another of the virtual submission queues.

6. The computer program product of claim 4 , wherein priorities are indicated for the applications, wherein the priorities for the plurality of applications are used to determine a frequency at which I/O requests are processed from the virtual submission queues, wherein virtual submission queues having an I/O request from applications having a higher priority are processed at a greater frequency than the virtual submission queues having an I/O request from applications having a lower priority.

7. The computer program product of claim 1 , wherein the program code is further executed to:

receive a first request from a requesting application to discover storage devices;

return, to the requesting application, information on the plurality of virtual controllers and virtual namespaces in the plurality of virtual controllers in response to the first request;

receive a second request by the requesting application to create a virtual submission queue for a selected virtual controller of the virtual controllers indicated in the returned information;

generating a virtual submission queue for the selected virtual controller for the requesting application to use in response to the second request; and

assigning to the requesting application the selected virtual controller with indication of an assigned priority based on a quality of service level determined for the application, wherein the requesting application submits I/O requests in the virtual submission queue to be processed at a frequency corresponding to the assigned priority.

8. The computer program product of claim 7 , wherein the program code is further executed to:

determine at least one virtual controller not assigned to an application in response to the first request from the requesting application, wherein information returned to the requesting application on the plurality of virtual controllers and virtual namespaces comprises only the determined at least one virtual controller not assigned to an application.

9. A system in communication with a plurality of storage devices, comprising:

a processor; and

a computer readable storage media including program code that the processor executes to:

generate a plurality of virtual controllers in a host memory space, wherein each virtual controller includes at least one virtual namespace, wherein each of the at least one virtual namespace in each virtual controller maps to a physical namespace in a respective physical controller of one storage device from among the plurality of storage devices;

assign each of a plurality of applications to a respective virtual controller of the virtual controllers;

for each application of the applications assigned to one of the virtual controllers, generate a virtual submission queue for the application to use to communicate with the respective virtual controller assigned to the application;

add an Input/Output (I/O) request to a target virtual namespace in one of the virtual submission queues to a physical submission queue for the respective physical controller having the physical namespace for which the target virtual namespace was generated; and

process each virtual submission queue of the virtual submission queues to alternate access of I/O requests from the virtual submission queues, wherein to determine the physical submission queue and add the I/O request to the determined physical submission queue is performed in response to the access of each of the I/O requests from the virtual submission queues.

10. The system of claim 9 , wherein the plurality of virtual controllers are maintained in a user space of the host memory space, and wherein an I/O service layer executing in the user space is to generate the plurality of virtual controllers, generate the virtual namespace for each physical namespace, indicate the application assigned to the virtual namespace, generate the virtual submission queue, process the I/O request in the virtual submission queue, determine the physical submission queue and add the I/O request to the determined physical submission queue.

11. The system of claim 9 , wherein each physical namespace is associated with only one virtual namespace, and wherein each virtual namespace is only assigned to one virtual controller, and wherein each virtual controller is only assigned to one of the applications.

12. The system of claim 9 , wherein one of the plurality of virtual controllers includes a plurality of virtual namespaces that map to physical namespaces in different physical controllers to allow the application to stripe data across the physical namespaces in the different physical controllers by queueing I/O requests to the virtual namespaces in the virtual submission queue for the application and the virtual controller having the virtual namespaces that map to physical namespaces in the different physical controllers.

13. The system of claim 9 , wherein priorities are indicated for the applications, wherein the priorities for the plurality of applications are used to determine a frequency at which I/O requests are processed from the virtual submission queues, wherein virtual submission queues having an I/O request from applications having a higher priority are processed at a greater frequency than the virtual submission queues having an I/O request from applications having a lower priority.

14. The system of claim 9 , wherein the program code is further executed to:

receive a first request from a requesting application to discover storage devices;

return, to the requesting application, information on the plurality of virtual controllers and virtual namespaces in the plurality of virtual controllers in response to the first request;

receive a second request by the requesting application to create a virtual submission queue for a selected virtual controller of the virtual controllers indicated in the returned information;

generating a virtual submission queue for the selected virtual controller for the requesting application to use in response to the second request; and

assigning to the requesting application the selected virtual controller with indication of an assigned priority based on a quality of service level determined for the application, wherein the requesting application submits I/O requests in the virtual submission queue to be processed at a frequency corresponding to the assigned priority.

15. A method for communicating with a plurality of storage devices, comprising:

generating a plurality of virtual controllers in a host memory space, wherein each virtual controller includes at least one virtual namespace, wherein each of the at least one virtual namespace in each virtual controller maps to a physical namespace in a respective physical controller of one storage device from among the plurality of storage devices;

assigning each of a plurality of applications to a respective virtual controller of the virtual controllers;

for each application of the applications assigned to one of the virtual controllers, generating a virtual submission queue for the application to use to communicate with the respective virtual controller assigned to the application;

adding an Input/Output (I/O) request to a target virtual namespace in one of the virtual submission queues to a physical submission queue for the respective physical controller having the physical namespace for which the target virtual namespace was generated; and

processing each virtual submission queue of the virtual submission queues to alternate access of I/O requests from the virtual submission queues, wherein to determine the physical submission queue and add the I/O request to the determined physical submission queue is performed in response to the access of each of the I/O requests from the virtual submission queues.

16. The method of claim 15 , wherein the plurality of virtual controllers are maintained in a user space of the host memory space, and wherein an I/O service layer executing in the user space is to generate the plurality of virtual controllers, generate the virtual namespace for each physical namespace, indicate the application assigned to the virtual namespace, generate the virtual submission queue, process the I/O request in the virtual submission queue, determine the physical submission queue and add the I/O request to the determined physical submission queue.

17. The method of claim 15 , wherein each physical namespace is associated with only one virtual namespace, and wherein each virtual namespace is only assigned to one virtual controller, and wherein each virtual controller is only assigned to one of the applications.

18. The method of claim 15 , wherein one of the plurality of virtual controllers includes a plurality of virtual namespaces that map to physical namespaces in different physical controllers to allow the application to stripe data across the physical namespaces in the different physical controllers by queueing I/O requests to the virtual namespaces in the virtual submission queue for the application and the virtual controller having the virtual namespaces that map to physical namespaces in the different physical controllers.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072792/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2020
From: YANG, ZIYE; CAO, GANG; CHANG, CUNYIN; LIU, CHANGPENG; HARRIS, JAMES
To: INTEL CORPORATION
Reel/Frame 052054/0385 →
Continuity (1)
Related Publication 20210072927A1 · Mar 11, 2021