Scheduling operations in non-volatile memory devices using preference values
First Claim
1. A method of managing a storage system, the method comprising:
- in the storage system, which includes a storage controller and non-volatile memory devices;
identifying a plurality of memory operations to be performed by a plurality of the non-volatile memory devices in the storage system, whereinthe plurality of memory operations comprises a first number of memory operations and the plurality of non-volatile memory devices comprises a second number of memory devices,the first number is no greater than the second number,each memory operation of the plurality of memory operations is to be performed by a distinct non-volatile memory device, andthe memory operations comprise host writes, garbage collection writes, and garbage collection reads;
for each non-volatile memory device in the plurality of non-volatile memory devices, assigning preference values to each of the memory operations in the plurality of memory operations, wherein assigning preference values comprises, for a respective non-volatile memory device;
determining that a first memory operation of the plurality of memory operations is associated with a process for which no more than a specified number of memory operations are incomplete; and
in response to the determining, assigning preference values to the memory operations that indicate a preference of the respective non-volatile memory device for the first memory operation over other memory operations of the plurality of memory operations; and
assigning each memory operation in the plurality of memory operations to a distinct non-volatile memory device in the plurality of non-volatile memory devices, using the preference values assigned to each of the memory operations for each non-volatile memory device;
wherein;
assigning each memory operation to a distinct non-volatile memory device comprises;
solving a predefined combinatorial optimization problem, known as The Stable Marriage Problem using the Gale-Shapely algorithm;
orsolving a predefined combinatorial optimization problem, known as The Assignment Problem using the Hungarian algorithm; and
wherein;
the storage controller manages a plurality of processes;
each memory operation is part of a process;
a respective process comprises memory operations of a common type selected from the group consisting of host writes, garbage collection writes, and garbage collection reads; and
the memory operations of a respective process comprise memory operations directed to respective pages in each of the non-volatile memory devices.
3 Assignments
0 Petitions
Accused Products
Abstract
A method of scheduling memory operations to be performed by non-volatile memory devices in a storage system includes identifying a plurality of memory operations to be performed by a plurality of non-volatile memory devices in the storage system. The number of memory operations in the plurality of memory operations is no greater than the number of non-volatile memory devices in the plurality of non-volatile memory devices; each memory operation is to be performed by a distinct non-volatile memory device; and the memory operations include host writes, garbage collection writes, and garbage collection reads. The method also includes, for each non-volatile memory device, assigning preference values to each of the memory operations. The method further includes assigning each memory operation to a distinct non-volatile memory device, using the preference values assigned to each of the memory operations for each non-volatile memory device.
128 Citations
20 Claims
-
1. A method of managing a storage system, the method comprising:
-
in the storage system, which includes a storage controller and non-volatile memory devices; identifying a plurality of memory operations to be performed by a plurality of the non-volatile memory devices in the storage system, wherein the plurality of memory operations comprises a first number of memory operations and the plurality of non-volatile memory devices comprises a second number of memory devices, the first number is no greater than the second number, each memory operation of the plurality of memory operations is to be performed by a distinct non-volatile memory device, and the memory operations comprise host writes, garbage collection writes, and garbage collection reads; for each non-volatile memory device in the plurality of non-volatile memory devices, assigning preference values to each of the memory operations in the plurality of memory operations, wherein assigning preference values comprises, for a respective non-volatile memory device; determining that a first memory operation of the plurality of memory operations is associated with a process for which no more than a specified number of memory operations are incomplete; and in response to the determining, assigning preference values to the memory operations that indicate a preference of the respective non-volatile memory device for the first memory operation over other memory operations of the plurality of memory operations; and assigning each memory operation in the plurality of memory operations to a distinct non-volatile memory device in the plurality of non-volatile memory devices, using the preference values assigned to each of the memory operations for each non-volatile memory device; wherein; assigning each memory operation to a distinct non-volatile memory device comprises; solving a predefined combinatorial optimization problem, known as The Stable Marriage Problem using the Gale-Shapely algorithm;
orsolving a predefined combinatorial optimization problem, known as The Assignment Problem using the Hungarian algorithm; and wherein; the storage controller manages a plurality of processes; each memory operation is part of a process; a respective process comprises memory operations of a common type selected from the group consisting of host writes, garbage collection writes, and garbage collection reads; and the memory operations of a respective process comprise memory operations directed to respective pages in each of the non-volatile memory devices. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A storage system, comprising:
-
a plurality of non-volatile memory devices; one or more processors; and memory storing one or more programs configured for execution by the one or more processors, the one or more programs comprising instructions that when executed by the one or more processors, cause the storage system to; identify a plurality of memory operations to be performed by a plurality of the non-volatile memory devices in the storage system, wherein the plurality of memory operations comprises a first number of memory operations and the plurality of non-volatile memory devices comprises a second number of memory devices, the first number is no greater than the second number, each memory operation of the plurality of memory operations is to be performed by a distinct non-volatile memory device, and the memory operations comprise host writes, garbage collection writes, and garbage collection reads; for each non-volatile memory device in the plurality of non-volatile memory devices, assign preference values to each of the memory operations in the plurality of memory operations, wherein to assign preference values the one or more programs further comprise instructions to cause the storage system to, for a respective non-volatile memory device; determine that a first memory operation of the plurality of memory operations is associated with a process for which no more than a specified number of memory operations are incomplete; and in response to determining that the first memory operation of the plurality of memory operations is associated with the process, assign preference values to the plurality of memory operations that indicate a preference of the respective non-volatile memory device for the first memory operation over other memory operations of the plurality of memory operations; and assign each memory operation in the plurality of memory operations to a distinct non-volatile memory device in the plurality of non-volatile memory devices, using the preference values assigned to each of the memory operations for each non-volatile memory device; wherein; the storage system assigns each memory operation to a distinct non-volatile memory device by; solving a first predefined combinatorial optimization problem known as The Stable Marriage Problem using the Gale-Shapely iterative algorithm;
orsolving a second predefined combinatorial optimization problem known as The Assignment Problem using the Hungarian algorithm; and wherein; the one or more processors manage a plurality of processes; each memory operation is part of a process; a respective process comprises memory operations of a common type selected from the group consisting of host writes, garbage collection writes, and garbage collection reads; and the memory operations of a respective process comprise memory operations directed to respective pages in each of the non-volatile memory devices. - View Dependent Claims (15, 17, 18)
-
-
16. A non-transitory computer-readable storage medium storing one or more programs configured for execution by one or more processors of a storage system that further comprises a plurality of non-volatile memory devices, the one or more programs comprising instructions that when executed by the one or more processors, cause the storage system to:
-
identify a plurality of memory operations to be performed by a plurality of the non-volatile memory devices in the storage system, wherein the plurality of memory operations comprises a first number of memory operations and the plurality of non-volatile memory devices comprises a second number of memory devices, the first number is no greater than the second number, each memory operation of the plurality of memory operations is to be performed by a distinct non-volatile memory device, and the memory operations comprise host writes, garbage collection writes, and garbage collection reads; for each non-volatile memory device in the plurality of non-volatile memory devices, assign preference values to each of the memory operations in the plurality of memory operations, wherein to assign preference values the one or more programs further comprise instructions to cause the storage system to, for a respective non-volatile memory device; determine that a first memory operation of the plurality of memory operations is associated with a process for which no more than a specified number of memory operations are incomplete; and in response to determining that the first memory operation of the plurality of memory operations is associated with the process, assign preference values to the plurality of memory operations that indicate a preference of the respective non-volatile memory device for the first memory operation over other memory operations of the plurality of memory operations; and assign each memory operation in the plurality of memory operations to a distinct non-volatile memory device in the plurality of non-volatile memory devices, using the preference values assigned to each of the memory operations for each non-volatile memory device; wherein; the storage system assigns each memory operation to a distinct non-volatile memory device by; solving a first predefined combinatorial optimization problem known as The Stable Marriage Problem using the Gale-Shapely iterative algorithm;
orsolving a second predefined combinatorial optimization problem known as The Assignment Problem using the Hungarian algorithm; and wherein; the one or more processors manage a plurality of processes; each memory operation is part of a process; a respective process comprises memory operations of a common type selected from the group consisting of host writes, garbage collection writes, and garbage collection reads; and the memory operations of a respective process comprise memory operations directed to respective pages in each of the non-volatile memory devices. - View Dependent Claims (19, 20)
-
Specification