Memory subsystem supported quality of service levels for virtualized storage
Memory subsystem supported quality of service (QOS) levels for virtualized storage can be provided by advertising, by the memory subsystem coupled to a host, QoS levels supported by the memory subsystem. Examples of such QoS levels can include a function level, a process address space identifier (PASID) level, and a submission queue level. The memory subsystem can receive from the host a definition of QoS parameters for at least one QoS level. The memory subsystem can provide input/output virtualized (IOV) storage while enforcing the QoS parameters via hardware of the memory subsystem.
1 . A method, comprising:
advertising, by a memory subsystem coupled to a host, those quality of service (QOS) levels supported by the memory subsystem of a group of QoS levels, the group comprising:
function level;
process address space identifier (PASID) level; and
submission queue level;
receiving, from the host by the memory subsystem, a definition of QoS parameters for at least one of the group of QoS levels; and
providing, by the memory subsystem, input/output virtualized (IOV) storage for a plurality of user processes associated with the host while enforcing the QoS parameters at the at least one of the group of QoS levels via hardware of the memory subsystem.
2 . The method of claim 1 , wherein advertising those QoS levels supported by the memory subsystem comprises storing data indicative of those QoS levels supported by the memory subsystem in a vendor-specific register of the memory subsystem; and
wherein the method further comprises storing the definition of the QoS parameters in a table in a memory mapped input/output (MMIO) region of the memory subsystem referenced by the vendor-specific register.
3 . The method of claim 1 , wherein receiving the definition of QoS parameters for at least one of the group of QoS levels comprises receiving a definition of respective QoS parameters for each of a plurality of functions.
4 . The method of claim 3 , wherein providing IOV storage comprises enforcing the respective QoS parameters defined for each of a plurality of PASIDs and each of a plurality of submission queues belonging to a particular function of the plurality of functions.
5 . The method of claim 1 , wherein receiving the definition of QoS parameters for at least one of the group of QoS levels comprises receiving a definition of respective QoS parameters for each of a plurality of PASIDs.
6 . The method of claim 5 , wherein providing IOV storage comprises enforcing the respective QoS parameters for each of a plurality of submission queues belonging to a particular PASID of the plurality of PASIDs.
7 . The method of claim 1 , wherein receiving the definition of QoS parameters for at least one of the group of QoS levels comprises receiving a definition of respective QoS parameters for each of a plurality of submission queues; and
wherein providing IOV storage comprises enforcing the respective QoS parameters for each of a plurality of submission queues.
8 . The method of claim 1 , wherein receiving the definition of QoS parameters comprises receiving the definition of one or more of a group of QoS parameters comprising:
write commands per unit interval;
read commands per unit interval;
write data per unit interval; and
read data per unit interval.
9 . The method of claim 1 , wherein the plurality of user processes include one or more of:
a plurality of virtualized computing instances (VCIs) provisioned by the host;
a plurality of user processes running on a plurality of VCIs provisioned by the host; and
a plurality of user processes running directly on the host.
10 . An apparatus comprising:
a host interface;
a register;
a memory device; and
a controller coupled to the host interface, the register, and the memory device, wherein the controller is configured to:
allow a host to access at least a portion of the register via the host interface;
cause a respective capability indicator for each of a plurality of quality of service (QOS) levels to be stored in the register;
wherein the respective capability indicator is readable by the host; and
wherein the plurality of QoS levels include a function level, a process address space identifier (PASID) level, and a submission queue level;
read a selection of one of the plurality of QoS levels written to the register by the host;
read a definition of QoS parameters written to the register by the host; and
provide input/output virtualized (IOV) storage via the memory device for a plurality of user processes associated with the host while enforcing the QoS parameters at the selected QoS level.
11 . The apparatus of claim 10 , wherein the controller includes a QoS parameter register configured to track respective values of credits available to the plurality of user processes.
12 . The apparatus of claim 11 , wherein the controller includes a plurality of hardware counters coupled to a credit calculator and a clock input;
wherein the plurality of counters are configured to be incremented based on the clock input;
wherein the credit calculator is configured to:
receive an input indicating respective initial credits for the plurality of user processes;
update the various counters based on user process operations;
calculate updates to the respective initial credits; and
write the updates to the hardware registers.
13 . The apparatus of claim 12 , wherein to enforce the QoS parameters, the controller is configured to perform credit arbitration on a per QoS mode basis and collective credit arbitration on an overall basis thereafter.
14 . The apparatus of claim 10 , further comprising an address translation cache coupled to the register and the host interface;
wherein the address translation cache is configured to store physical addresses corresponding to user space addresses tagged in the PASID table.
15 . The apparatus of claim 14 , further comprising physical region page/scatter gather list (PRP/SGL) fetch circuitry coupled to the register and the host interface;
wherein the PRP/SGL fetch circuitry is configured to determine whether user space addresses have been translated before.
16 . The apparatus of claim 10 , wherein the plurality of QOS parameters include write commands per unit interval, read commands per unit interval, write data per unit interval, and read data per unit interval.
17 . The apparatus of claim 10 , wherein the register comprises a plurality of registers in a mapped input/output (MMIO) region of the apparatus.
18 . A system, comprising:
a memory subsystem, comprising:
a register;
a memory device; and
a controller coupled to the memory device and the register; and
a host including host memory and a host processor, wherein the host is coupled to the memory subsystem and configured to:
provision a plurality of user processes;
read the register to discover quality of service (QOS) level capabilities of the memory subsystem;
write to the register to select a QoS level; and
write to the register to define QoS parameters for the selected QoS level;
wherein the controller is configured to provide input/output virtualized (IOV) storage via the memory device for the plurality of user processes while enforcing the QoS parameters at the selected QoS level.
19 . The system of claim 18 , wherein the host is configured to write to the register to store definitions of a credit structure for the QoS parameters.
20 . The system of claim 18 , wherein the plurality of user processes include one or more of a group of user processes including:
VCIs running on a hypervisor of the host;
user processes running inside a VCI; and
user process running directly on the host memory and the host processor.