Systems, methods, and media for recovering work process shares from read prioritization

By using the count adjustment mechanism on the hardware processor in the storage device, the problem of mismatch in the share of worker processes after read priority is solved, and share recovery and performance improvement is achieved.

CN119923625AActive Publication Date: 2025-05-02SK HYNIX NAND PRODUCT SOLUTIONS CORP
View PDF 9 Cites 0 Cited by

Patent Information

Application Number
CN202380067943.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-21
Filing Date
2023-09-21
Publication Date
2025-05-02
Estimated Expiration
2043-09-21

AI Technical Summary

Technical Problem

After reading priority is achieved in a storage device, the share of the worker process does not match the share it is allocated, resulting in performance degradation.

Method used

The percentage of read and write share is adjusted based on the count of read and write accesses by performing a count adjustment mechanism on the hardware processor, thereby restoring the matching of shares.

Benefits of technology

Effectively restores the share matching of work processes, improves the performance of storage devices, and meets the quality of service (QoS) requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119923625A_ABST
    Figure CN119923625A_ABST
Patent Text Reader

Abstract

Resuming a work process share from read prioritization includes: when a read access (RA) to a storage device (SD) is prioritized over a write access (WA) to the SD: determining a first count of the RA to the SD; performing a first adjustment of a basic read percentage (RSP) to a first adjusted RSP for the RA to the SD based on the first count of the RA; and controlling read access to the SD based on the first adjustment; determining that RA for the SD has been completed prior to WA for the SD; and after prioritizing the RA of the SD has completed: determining a second count of the WA of the SD; performing a second adjustment from the first adjusted RSP to a second adjusted RSP for the RA to the SD based on the second count of the WA; and controlling write access to the SD based on the second adjustment.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the benefit of U.S. patent application No. 17 / 949,378, filed on September 21, 2022, which is incorporated herein by reference in its entirety. Background Art

[0003] Modern computing devices, which may include general-purpose and special-purpose computers such as desktop computers, laptop computers, tablet computers, servers, mobile phones, Internet of Things (IoT) devices, among many other devices, frequently implement different processes (which may be referred to herein as "workers") that read information (which may include data and / or programs) and / or write information to one or more storage devices (such as solid-state drives). In order to ensure that each worker receives the expected amount of access to the (one or more) storage devices, such modern computing devices may assign a share to each worker, which defines the amount of access each worker has to the (one or more) storage devices or a portion thereof. For example, the share amount may indicate the percentage of time that the worker has access to the storage device or a portion of the storage device. As a more specific example, for a computing device with three worker processes, worker process 1 may be assigned a 50% share (or any other suitable percentage between 0% and 100%), worker process 2 may be assigned a 30% share (or any other suitable percentage between 0% and 100%), and worker process 3 may be assigned a 20% share (or any other suitable percentage between 0% and 100%). In this case, on average over a long period of time, worker process 1 will be able to access the storage device or a portion thereof approximately 50% of the total time the storage is accessed, and worker processes 2 and 3 will similarly have access times approximately equal to 30% and 20%, respectively.

[0004] In some instances, to meet Quality of Service (QoS) requirements, the storage device may prioritize read accesses to the storage device (which tend to be shorter) over write accesses to the storage device (which tend to be longer). While this prioritization can improve the performance of the storage device, it can also cause a mismatch between the shares achieved by different worker processes and their assigned shares.

[0005] Therefore, a new mechanism for recovering worker process shares from read prioritization is desirable. Summary of the invention

[0006] According to some embodiments, mechanisms (which may include systems, methods, and media) are provided for recovering work process shares from read prioritization.

[0007] In some embodiments, a system for recovering work process shares from read prioritization is provided, the system comprising: a memory; and at least one hardware processor, which is collectively configured to perform at least the following operations: determine that read access to a storage device takes precedence over write access to the storage device; when read access to the storage device takes precedence over write access to the storage device: determine a first count of read accesses to the storage device; perform a first adjustment on at least one of the following items: (i) based on the first count of read accesses, for read accesses to the storage device, adjust the basic read share percentage to a first adjusted read share percentage; or (ii) based on the first count of read accesses, for write accesses to the storage device, adjust the basic write share percentage to a first adjusted write share percentage; and controlling read access to the storage device based on the first adjustment; determining that read access to the storage device has taken precedence over write access to the storage device has been completed; and after read access to the storage device has taken precedence over write access to the storage device has been completed: determining a second count of write accesses to the storage device; performing a second adjustment on at least one of the following: (i) based on the second count of write accesses, adjusting the first adjusted read share percentage to a second adjusted read share percentage for read access to the storage device; or (ii) based on the second count of write accesses, adjusting the first adjusted write share percentage to a second adjusted write share percentage for write access to the storage device; and controlling write access to the storage device based on the second adjustment. In some of these embodiments, a first adjustment of at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on the first count of read accesses, includes at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on a control parameter raised to a power of the first count of read accesses.In some of these embodiments, a second adjustment of at least one of: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, includes at least one of: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses. In some of these embodiments, the second adjustment of at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, comprises at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter raised to a product of a scaling factor and the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter raised to a product of a scaling factor and the second count of write accesses. In some of these embodiments, the at least one hardware processor is also collectively configured to at least determine that the initial write share percentage is equal to the base write share percentage. In some of these embodiments, at least one hardware processor is also collectively configured to at least determine the adjusted work process write share percentage as the base work process write share percentage multiplied by the adjusted write share percentage divided by the base write share percentage. In some of these embodiments, at least one hardware processor is also collectively configured to at least determine the adjusted work process read share percentage as the base work process read share percentage multiplied by the adjusted read share percentage divided by the base read share percentage.

[0008] In some embodiments, a method for recovering a work process share from read prioritization is provided, the method comprising: using at least one hardware processor to determine that read access to a storage device takes precedence over write access to the storage device; when read access to the storage device takes precedence over write access to the storage device: determining a first count of read accesses to the storage device; performing a first adjustment on at least one of the following: (i) based on the first count of read accesses, adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to the storage device; or (ii) based on the first count of read accesses, adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to the storage device; and based on the first Adjust to control read access to a storage device; determine that read access to the storage device has taken precedence over write access to the storage device has been completed; and after read access to the storage device has taken precedence over write access to the storage device has been completed: determine a second count of write accesses to the storage device; perform a second adjustment on at least one of the following: (i) based on the second count of write accesses, for read access to the storage device, adjust a first adjusted read share percentage to a second adjusted read share percentage; or (ii) based on the second count of write accesses, for write access to the storage device, adjust the first adjusted write share percentage to a second adjusted write share percentage; and control write access to the storage device based on the second adjustment. In some of these embodiments, a first adjustment of at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on the first count of read accesses, includes at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on a control parameter raised to a power of the first count of read accesses.In some of these embodiments, a second adjustment of at least one of: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, includes at least one of: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses. In some of these embodiments, the second adjustment of at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, includes at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter raised to a product of a scaling factor and the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter raised to a product of a scaling factor and the second count of write accesses. In some of these embodiments, the method further includes determining that the initial write share percentage is equal to the base write share percentage. In some of these embodiments, the method further includes determining the adjusted worker process write share percentage as the base worker process write share percentage multiplied by the adjusted write share percentage divided by the base write share percentage. In some of these embodiments, the method further includes determining the adjusted worker process read share percentage as the base worker process read share percentage multiplied by the adjusted read share percentage divided by the base read share percentage.

[0009] In some embodiments, a non-transitory computer-readable medium containing computer-executable instructions is provided. When executed by a processor, the instructions cause the processor to implement a method for recovering a work process share from read prioritization, the method comprising: determining that read access to a storage device takes precedence over write access to the storage device; when read access to the storage device takes precedence over write access to the storage device: determining a first count of read accesses to the storage device; performing a first adjustment on at least one of the following: (i) based on the first count of read accesses, adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to the storage device; or (ii) based on the first count of read accesses, adjusting a basic write share percentage to a first adjusted the write share percentage after the first adjustment; and controlling read access to the storage device based on the first adjustment; determining that read access to the storage device has taken precedence over write access to the storage device has been completed; and after read access to the storage device has taken precedence over write access to the storage device has been completed: determining a second count of write accesses to the storage device; performing a second adjustment on at least one of the following: (i) based on the second count of write accesses, adjusting the first adjusted read share percentage to a second adjusted read share percentage for read access to the storage device; or (ii) based on the second count of write accesses, adjusting the first adjusted write share percentage to a second adjusted write share percentage for write access to the storage device; and controlling write access to the storage device based on the second adjustment. In some of these embodiments, a first adjustment of at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on the first count of read accesses, includes at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on a control parameter raised to a power of the first count of read accesses.In some of these embodiments, a second adjustment of at least one of: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, includes at least one of: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses. In some of these embodiments, the second adjustment of at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, includes at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter raised to a product of a scaling factor and the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter raised to a product of a scaling factor and the second count of write accesses. In some of these embodiments, the method further includes determining that the initial write share percentage is equal to the base write share percentage. In some of these embodiments, the method further includes determining the adjusted worker process write share percentage as the base worker process write share percentage multiplied by the adjusted write share percentage divided by the base write share percentage. In some of these embodiments, the method further includes determining the adjusted worker process read share percentage as the base worker process read share percentage multiplied by the adjusted read share percentage divided by the base read share percentage. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] Figure 1 is an example of a block diagram of a solid state drive coupled to a host device via a bus in accordance with some embodiments.

[0011] Figure 2 is an example of a value that may be tracked according to some embodiments.

[0012] Figure 3 is an example of a process for recovering worker process shares from read prioritization according to some embodiments.

[0013] Figure 4 is an example of a process for selecting and processing commands based on a no-read prioritization process in accordance with some embodiments. DETAILED DESCRIPTION

[0014] According to some embodiments, mechanisms (which may include systems, methods, and media) are provided for recovering work process shares from read prioritization.

[0015] As described herein, in some embodiments, these mechanisms can adjust the share of work processes to any suitable portion or all of any suitable one or more storage devices (the portion or all is referred to herein as a "portion"). For example, in some embodiments, in a NAND solid-state drive (SSD), there can be multiple NAND dies (each of which can be referred to herein as a "NAND"), and one or more or all of these NAND dies can be referred to herein as a portion of the NAND SSD. Similarly, when multiple SSDs are used, a portion of the SSD can be one, two, any suitable subset, or all of the SSDs.

[0016] In some embodiments, the mechanism can be triggered by a read prioritization trigger that indicates that read commands to a portion i of the storage device are being prioritized. In some embodiments, after initializing the count of read commands processed during read prioritization to zero, during read prioritization, the mechanisms can repeatedly: select and process read commands based on the read prioritization process; increment the count of processed read commands; update the adjusted read and write share values ​​for portion i of the storage device based on the product of the base read share value and the control parameter raised to the processed read command count value; and determine whether the read command is still prioritized.

[0017] Once read prioritization has been completed, in some embodiments, the mechanism may set the final read share value for portion i of the storage device during read prioritization to the most recently adjusted read share value for portion i of the storage device during read prioritization, and initialize the count of write commands processed during read prioritization recovery to zero.

[0018] Next, in some embodiments, during recovery from read prioritization, the mechanism may repeatedly: select and process commands based on a non-read prioritization process; determine whether a write command is selected; and if a write command is selected, then: increment the count of the write command; update the adjusted read and write share values ​​for portion i of the storage device based on the minimum of: a base read share value; and a quotient of the final read share value and a control value raised to the power of the product of the scaling factor and the count of the write command; and determine whether the adjusted read share value is equal to the base read share value. When the adjusted read share value is equal to the base read share value, the mechanism may end.

[0019] Through this process, during read prioritization, as more read commands are processed for part i of the storage device, the adjusted read share value will gradually decrease, and the adjusted write share value will gradually increase. Then, when recovering from read prioritization, as more write commands are processed for part i of the storage device, the adjusted read share value will gradually increase, and the adjusted write share value will gradually decrease, returning to their base values.

[0020] Steering Figure 1 , illustrates an example block diagram of a solid state drive 102 coupled to a host device 124 via a bus 132 in accordance with some embodiments.

[0021] As shown, in some embodiments, solid-state drive 102 may include controller 104, NAND devices 106, 108, and 110, channels 112, 114, and 116, random access memory (RAM) 118, firmware 120, and cache 122. In some embodiments, the solid-state drive 102 may include a controller 104, NAND devices 106, 108, and 110, channels 112, 114, and 116, random access memory (RAM) 118, firmware 120, and cache 122. Figure 1 In some embodiments, Figure 1 Two or more components shown in may be included in one component.

[0022] In some embodiments, the controller 104 may be any suitable controller for a solid state drive. In some embodiments, the controller 104 may include any suitable hardware processor(s) (such as a microprocessor, a digital signal processor, a microcontroller, a programmable gate array, etc.). In some embodiments, the controller 104 may also include any suitable memory (such as RAM, firmware, cache, buffer, latch, etc.), interface controller(s), interface logic, drivers, etc.

[0023] In some embodiments, NAND devices 106, 108, and 110 may be any suitable NAND devices for storing information (which may include data, programs, and / or any other suitable information that may be stored in a solid-state drive). In some embodiments, NAND devices may include any suitable memory cells, hardware processor(s) (such as microprocessors, digital signal processors, microcontrollers, programmable gate arrays, etc.), interface controller(s), interface logic, drivers, etc. Although Figure 1 , three NAND devices (106, 108, and 110) are shown, but in some embodiments any suitable number D of NAND devices (including only one) may be used. In some embodiments, any suitable type of NAND device (such as single-level cell (SLC), multi-level cell (MLC), triple-level cell (TLC), quad-level cell (QLC), 3D NAND, etc.) may be used. In some embodiments, each NAND device may have any suitable size. Although devices 106, 108, and 110 are described herein as NAND devices, these devices may additionally or alternatively use any other suitable one or more storage technologies, such as NOR flash memory or any other suitable flash memory technology, phase change memory technology, and / or any other suitable non-volatile memory storage technology.

[0024] In some embodiments, channels 112, 114, and 116 may be any suitable mechanism for transferring information between controller 104 and NAND devices 106, 108, and 110. For example, in some embodiments, the channels may be implemented using conductors (pads) on a circuit board. Figure 1 Three channels (112, 114, and 116) are shown in FIG, but any suitable number C of channels may be used in some embodiments.

[0025] In some embodiments, random access memory (RAM) 118 may include any suitable type of RAM, such as dynamic RAM, static RAM, etc. In some embodiments, any suitable number of RAMs 118 may be included, and each RAM 118 may have any suitable size.

[0026] In some embodiments, firmware 120 may include any suitable combination of software and hardware. For example, in some embodiments, firmware 120 may include software programmed in any suitable programmable read-only memory (PROM). In some embodiments, any suitable number of firmware 120 may be used, each having any suitable size.

[0027] In some embodiments, cache 122 may be any suitable device for temporarily storing information (which may include data and programs in some embodiments). In some embodiments, cache 122 may be implemented using any suitable type of device, such as RAM (e.g., static RAM, dynamic RAM, etc.). In some embodiments, any suitable number of caches 122 may be used, each having any suitable size.

[0028] In some embodiments, host device 124 may be any suitable device for accessing stored information. For example, in some embodiments, host device 124 may be a general purpose computer, a special purpose computer, a desktop computer, a laptop computer, a tablet computer, a server, a database, a router, a gateway, a switch, a mobile phone, a communication device, an entertainment system (e.g., a car entertainment system, a television, a set-top box, a music player, etc.), a navigation system, etc. Figure 1 Only one host device 124 is shown, but any suitable number of host devices may be included in some embodiments.

[0029] In some embodiments, host device 124 may include worker processes 126, 128, and 130. Figure 1 102. Three work processes (126, 128, and 130) are shown, but in some embodiments any suitable number W of work processes may be included. In some embodiments, at least two work processes may be included. A work process may be any suitable hardware and / or software that reads data from the solid-state drive 102 and / or writes data to the solid-state drive 102.

[0030] In some embodiments, bus 132 may be any suitable bus for transferring information (which may include data and / or programs in some embodiments). For example, in some embodiments, bus 132 may be a PCIE bus, a SATA bus, or any other suitable bus.

[0031] although Figure 1 NAND solid state drives are illustrated, but it should be understood that the mechanisms described herein can be used with other forms of storage and / or other devices. For example, in some embodiments, the mechanisms can be used with any suitable device that a network node, a computing node, and / or multiple work processes in a route require access to, and their access is controlled by using shares determined by a QoS bypass mechanism.

[0032] Steering Figure 2, illustrates an example 200 of values ​​that may be tracked according to some embodiments. As shown, these values ​​may include counts N[0:D-1] 202, 204, and 206 of read commands processed during read prioritization, counts M[0:D-1] 208, 210, and 212 of write commands processed during recovery from read prioritization, control parameters α[0:D-1] 214, 216, and 218, scaling factors K[0:D-1] 220, 222, and 224, an initial read share value S read,0 [0:D-1] 226, 228 and 230, finally read the share value S read,1 [0:D-1] 232, 234 and 236, adjusted read share value S read [0:D-1] 238, 240, and 242, and the adjusted write share value S write [0:D-1]244, 246 and 248.

[0033] Despite Figure 2 202, 204 and 206, M[0:D-1]208, 210 and 212, α[0:D-1]214, 216 and 218, K[0:D-1]220, 222 and 224, S[0:D-1]208, 210 and 212, read,0 [0:D-1] 226, 228 and 230, S read,1 [0:D-1] 232, 234 and 236, S read [0:D-1] 238, 240, 242 and S write [0:D-1], but in some embodiments any suitable number of these values ​​(including only one) may be tracked. For example, as illustrated, in some embodiments, each portion of the storage device (e.g., Figure 1 One of the above-listed values ​​for each NAND in the solid-state drive).

[0034] In some embodiments, Figure 2 The values ​​in may be stored in any suitable location. For example, in some embodiments, these values ​​may be stored in Figure 1 of RAM 118.

[0035] Steering Figure 3 , shows an example 300 of a process for recovering work process shares from read prioritization according to some embodiments. The process can be performed on any suitable device. For example, in some embodiments, the process can be performed on a controller of a storage device (e.g., such as Figure 1According to some embodiments, a different instance of the process may be performed for each portion i of the storage device (eg, each NAND device 106, 108, and 110 on the solid-state drive 102).

[0036] As shown, process 300 may begin at 302 in response to receiving a read prioritization trigger. The trigger may indicate that read commands to portion i of the storage device are prioritized over write commands to portion i of the storage device. In some embodiments, the trigger may be received from any suitable source in any suitable manner. For example, in some embodiments, the trigger may be received as a flag (e.g., a bit in a shared register) set by a process in controller 104 for monitoring QoS when the QoS to portion i of the storage device falls below a threshold.

[0037] Then, at 304, process 300 can initialize N[i] to zero. In some embodiments, this initialization can be performed in any suitable manner. For example, in some embodiments, the initialization can be performed by setting the memory location corresponding to N[i] to zero.

[0038] In some embodiments, blocks 306 , 308 , 310 , and 312 described below may be performed during read prioritization.

[0039] Next, at 306, the process can select and process a read command based on a read prioritization process. In some embodiments, selecting and processing a read command can be performed in any suitable manner and can be based on any suitable read prioritization process. For example, in some embodiments, selecting and processing a read command can be performed by selecting the earliest read command of a next work process whose command share for portion i of the storage device has not been satisfied, and then processing the command based on parameters of the command.

[0040] At 308, process 300 can then increment N[i]. In some embodiments, N[i] can be incremented in any suitable manner at 308. For example, in some embodiments, incrementing N[i] can be performed by increasing the value in the memory location corresponding to N[i] by one.

[0041] Then, at 310, process 300 may update the share value S read [i] and S write [i], so that the share value of the read command decreases and the share value of the write command increases. This updating of these share values ​​can be performed in any suitable manner. For example, in some embodiments, the share value S read [i] and S write [i] can be updated using the following equation:

[0042] S read [i] = S read,0 [i]*α[i] N[i] ;as well as

[0043] S write [i] = 1-S read [i]

[0044] in:

[0045] S read [i] is the adjusted read share percentage for portion i of the storage device;

[0046] S write [i] is the adjusted write share percentage for portion i of the storage device;

[0047] S read,0 [i] is the base read share percentage for portion i of the storage device;

[0048] α[i] is a control parameter for portion i of the storage device and may have any suitable value, such as a value greater than zero and less than one; and

[0049] N[i] is the number of read accesses made to portion i of the storage device during read prioritization.

[0050] Next, at 312, the process can determine whether read commands to portion i of the storage device are still prioritized. In some embodiments, this determination can be made in any suitable manner. For example, in some embodiments, when the QoS to portion i of the storage device rises above a threshold, the determination can be made by checking that a process in the controller 104 for monitoring QoS has cleared a flag (e.g., a bit in a shared register).

[0051] If process 300 determines that read commands are still prioritized for portion i of the storage device, the process can loop back to 306 .

[0052] Otherwise, if process 300 determines that read commands are not still prioritized for portion i of the storage device, the process can branch to 314 where it can prioritize the final read share value (S ) from the reads for portion i of the storage device. read,1 [i]) is set equal to the adjusted read share value (S) for portion i of the storage device at 310. read [i]) of the set. In some embodiments, prioritizing the final read share value (S) from the reads of portion i of the storage device may be performed in any suitable manner. read,1[i]) is set equal to the adjusted read share value (S read [i]) the most recent value of the set. For example, in some embodiments, by read,1 The memory location of [i] is set equal to the value corresponding to S read The value in the memory location of [i]N[i] can be used to perform a final read share value (S) that prioritizes reads from portion i of the storage device. read,1 [i]) is set equal to the adjusted read share value (S read [i])The most recent value of a set.

[0053] At 314, in some embodiments, process 300 may also initialize M[i] to zero. In some embodiments, this initialization may be performed in any suitable manner. For example, in some embodiments, the initialization may be performed by setting the memory location corresponding to M[i] to zero.

[0054] In some embodiments, blocks 316 , 318 , 320 , 322 , and 324 described below may be performed while recovering from read prioritization.

[0055] At 316, process 300 may select and process a read or write command based on a non-read prioritization process. In some embodiments, selecting and processing a read or write command may be performed in any suitable manner and may be based on any suitable non-read prioritization process. For example, 316 of process 300 may be combined as follows: Figure 4 Execute as described.

[0056] Then at 318, process 300 can determine whether a write command was selected at 316. In some embodiments, this determination can be made in any suitable manner. For example, in some embodiments, determining whether a write command is selected can be performed by checking the command type indicated in the command field.

[0057] If process 300 determines at 318 that a write command was not selected at 316 , process 300 may loop back to 316 .

[0058] Otherwise, if process 300 determines at 318 that a write command was selected at 316, process 300 can branch to 320 where it can increment M[i]. In some embodiments, process 300 can increment M[i] in any suitable manner. For example, in some embodiments, incrementing N[i] can be performed by increasing the value in the memory location corresponding to N[i] by one.

[0059] Next, at 322, process 300 may update the share value Sread [i] and S write [i], so that the share value of the read command increases and the share value of the write command decreases. This updating of these share values ​​can be performed in any suitable manner. For example, in some embodiments, the share value S read [i] and S write [i] can be updated using the following equation:

[0060] S read [i] = min(S read,0 [i],S read,1 [i] / α[i] K[i]*M[i] );as well as

[0061] S write [i] = 1-S read [i]

[0062] in:

[0063] S read [i] is the adjusted read share percentage for portion i of the storage device;

[0064] S write [i] is the adjusted write share percentage for portion i of the storage device;

[0065] S read,0 [i] is the base read share percentage for portion i of the storage device;

[0066] S read,1 [i] is the final read share percentage for portion i of the storage device during the read prioritization of portion i of the storage device;

[0067] α[i] is a control parameter of portion i of the storage device and may have any suitable value, such as a value greater than zero and less than one;

[0068] K[i] is a scaling value for portion i of the storage device and may have a value greater than 1; and

[0069] M[i] is the number of write accesses made to portion i of the storage device when recovering from read prioritization.

[0070] Then, at 324, process 300 may determine an adjusted read share percentage (S read [i]) is equal to the basic read share percentage (S read,0 [i]). In some embodiments, the determination can be made in any suitable manner. For example, in some embodiments, the determination can be made by comparing the values ​​corresponding to S read[i] to determine whether it is equal to the value in the memory location corresponding to S read,0 [i] to make this determination. If not, process 300 can loop back to 316. Otherwise, process 300 can end at 326.

[0071] Steering Figure 4 , showing that according to some embodiments, Figure 3 400 of an example of a process for deciding which command to proceed to portion i (shown here as NAND[i]) of a storage device, as used at 316 of FIG. The process may be performed on any suitable device. For example, in some embodiments, the process may be performed on a controller of the storage device (e.g., such as Figure 1 Executed on the controller 104).

[0072] As illustrated, after process 400 begins at 402, the process may select a first work process. In some embodiments, any suitable work process may be selected as the first work process, and the work process may be selected in any suitable manner. For example, in some embodiments, the work process with the oldest uncompleted commands may be selected as the first work process. As another example, in some embodiments, the work process that is instantiated first may be selected as the first work process.

[0073] Next, at 406, process 400 can determine that NAND[i] is ready to receive commands. In some embodiments, this determination can be made in any suitable manner. For example, in some embodiments, this determination can be made by checking the command queue of NAND[i] to see if it is empty (which can indicate that NAND[i] is ready to receive commands).

[0074] Then, at 408, process 400 can determine the actual usage share of the selected work process. In some embodiments, this determination can be made in any suitable manner. For example, in some embodiments, process 400 can determine the actual usage share of the selected work process by dividing the total work process time on NAND[i] by the total time of all work processes on NAND[i].

[0075] At 410, process 400 can next determine whether the actual usage share of the selected work process meets (e.g., is greater than, or is greater than or equal to) the allocated share of the selected work process for the corresponding NAND[i]. In some embodiments, this determination can be made in any suitable manner. For example, in some embodiments, process 400 can make this determination by comparing a first value in a memory location corresponding to the actual usage share of the selected work process with a second value in a memory location corresponding to the allocated share of the selected work process for the corresponding NAND[i] to determine whether the first value is greater than, or is greater than or equal to the second value.

[0076] If it is determined at 410 that the actual usage share of the selected work process satisfies (e.g., is greater than, or is greater than or equal to) the allocated share of the selected work process to the corresponding NAND[i], process 400 can select the next work process at 412. The next work process can be selected in any suitable manner. For example, in some embodiments, the work process with the next earliest uncompleted command compared to the currently selected work process can be selected as the next work process. As another example, in some embodiments, the next work process instantiated after the currently selected work process can be selected as the first work process. After selecting the next work process at 412, process 400 can loop back to 408.

[0077] Otherwise, if it is determined at 410 that the actual usage share of the selected work process does not satisfy (e.g., is less than, or is less than or equal to) the allocated share of the selected work process for the corresponding NAND[i], then process 400 can process the next command of the selected work process at 414 and then loop back to 406. In some embodiments, process 400 can process the next command of the selected work process in any suitable manner. For example, in some embodiments, the process can process the command of the selected work process based on the parameters of the command, which is the next in the command queue.

[0078] In some embodiments, Figure 3 and Figure 4 At least some of the above blocks of the process may be performed or implemented in any order or sequence, not limited to the order and sequence shown and described in conjunction with the various figures. In addition, in some embodiments, Figure 3 and Figure 4 Some of the above blocks of the process may be executed or performed substantially simultaneously or in parallel where appropriate to reduce waiting time and processing time. Additionally or alternatively, in some embodiments, the Figure 3 and Figure 4 Some of the above boxes of the process.

[0079] In some embodiments, any suitable computer-readable medium may be used to store instructions for performing the functions and / or processes herein. For example, in some embodiments, the computer-readable medium may be temporary or non-temporary. For example, a non-temporary computer-readable medium may include a medium such as a non-temporary form of magnetic medium (such as a hard disk, a floppy disk, and / or any other suitable magnetic medium), a non-temporary form of optical medium (such as a compact disk, a digital video disk, a Blu-ray disk, and / or any other suitable optical medium), a non-temporary form of semiconductor medium (such as flash memory, an electrically programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and / or any other suitable semiconductor medium), any suitable medium that is not transient or lacks any persistent appearance during transmission, and / or any suitable tangible medium. As another example, a temporary computer-readable medium may include a signal on a network, a signal in a wire, a conductor, an optical fiber, a circuit, any suitable medium that is transient and lacks any persistent appearance during transmission, and / or any suitable intangible medium.

[0080] As can be seen from the above description, new mechanisms (which may include systems, methods, and media) are provided for recovering work process shares from read prioritization. By recovering work process shares from read prioritization when needed, these mechanisms can improve satisfaction of work process shares allocated for accessing storage devices, and thereby improve the performance of host devices connected to the storage devices.

[0081] Although the present invention has been described and illustrated in the foregoing illustrative embodiments, it should be understood that the present disclosure is by way of example only and that numerous changes may be made to the details of the embodiments of the present invention without departing from the spirit and scope of the present invention, which is limited only by the following claims. The features of the disclosed embodiments may be combined and rearranged in various ways.

Claims

1. A system for recovering worker process shares from read prioritization, comprising: Memory; as well as At least one hardware processor collectively configured to at least: determining that read access to the storage device takes precedence over write access to the storage device; When read access to a storage device takes precedence over write access to the storage device: determining a first count of read accesses to a storage device; Performing a first adjustment on at least one of: (i) adjusting a base read share percentage to a first adjusted read share percentage for read accesses to the storage device based on the first count of read accesses; or (ii) adjusting a base write share percentage to a first adjusted write share percentage for write accesses to the storage device based on the first count of read accesses; as well as controlling read access to the storage device based on the first adjustment; Determining that a read access to the storage device has taken precedence over a write access to the storage device has been completed; as well as After a read access to a storage device takes precedence over a write access to a storage device has completed: determining a second count of write accesses to the storage device; performing a second adjustment on at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses; and Write access to the storage device is controlled based on the second adjustment.

2. The system according to claim 1, wherein: A first adjustment of at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on the first count of read accesses, comprises at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on a control parameter raised to a power of the first count of read accesses.

3. The system according to claim 1, wherein: A second adjustment of at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a second count of write accesses, comprising at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses.

4. The system according to claim 1, wherein: A second adjustment of at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a second count of write accesses, comprising at least one of the following: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter increased to the product of a scaling factor and a second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter increased to the product of a scaling factor and a second count of write accesses.

5. The system according to claim 1, wherein: The at least one hardware processor is further collectively configured to at least determine that the initial write share percentage is equal to the base write share percentage.

6. The system according to claim 1, wherein: The at least one hardware processor is further collectively configured to determine at least the adjusted work process write share percentage as the base work process write share percentage multiplied by the adjusted write share percentage divided by the base write share percentage.

7. The system according to claim 1, wherein: The at least one hardware processor is further collectively configured to determine at least the adjusted worker process read share percentage as the base worker process read share percentage multiplied by the adjusted read share percentage divided by the base read share percentage.

8. A method for recovering worker process shares from read prioritization, comprising: determining, using at least one hardware processor, that read access to the storage device takes precedence over write access to the storage device; When read access to a storage device takes precedence over write access to the storage device: determining a first count of read accesses to a storage device; Performing a first adjustment on at least one of: (i) adjusting a base read share percentage to a first adjusted read share percentage for read accesses to the storage device based on the first count of read accesses; or (ii) adjusting a base write share percentage to a first adjusted write share percentage for write accesses to the storage device based on the first count of read accesses; as well as controlling read access to the storage device based on the first adjustment; Determining that a read access to the storage device has taken precedence over a write access to the storage device has been completed; as well as After a read access to a storage device takes precedence over a write access to a storage device has completed: determining a second count of write accesses to the storage device; performing a second adjustment on at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses; and Write access to the storage device is controlled based on the second adjustment.

9. The method according to claim 8, wherein: A first adjustment of at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on the first count of read accesses, comprises at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on a control parameter raised to a power of the first count of read accesses.

10. The method according to claim 8, wherein: A second adjustment of at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a second count of write accesses, comprising at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses.

11. The method according to claim 8, wherein: A second adjustment of at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a second count of write accesses, comprising at least one of the following: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter increased to the product of a scaling factor and a second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter increased to the product of a scaling factor and a second count of write accesses. 12 . The method of claim 8 , further comprising determining the initial write share percentage to be equal to the basic write share percentage.

13. The method of claim 8, further comprising determining the adjusted worker process write share percentage as the base worker process write share percentage multiplied by the adjusted write share percentage divided by the base write share percentage.

14. The method of claim 8, further comprising determining the adjusted worker process read share percentage as the base worker process read share percentage multiplied by the adjusted read share percentage divided by the base read share percentage.

15. A non-transitory computer readable medium containing computer executable instructions, which when executed by a processor causes the processor to perform a method for recovering work process shares from read prioritization, the method comprising: determining that read access to the storage device takes precedence over write access to the storage device; When read access to a storage device takes precedence over write access to the storage device: determining a first count of read accesses to a storage device; Performing a first adjustment on at least one of: (i) adjusting a base read share percentage to a first adjusted read share percentage for read accesses to the storage device based on the first count of read accesses; or (ii) adjusting a base write share percentage to a first adjusted write share percentage for write accesses to the storage device based on the first count of read accesses; as well as controlling read access to the storage device based on the first adjustment; Determining that a read access to the storage device has taken precedence over a write access to the storage device has been completed; as well as After a read access to a storage device takes precedence over a write access to a storage device has completed: determining a second count of write accesses to the storage device; performing a second adjustment on at least one of: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to the storage device based on the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses; and Write access to the storage device is controlled based on the second adjustment.

16. The non-transitory computer readable medium of claim 15, wherein: A first adjustment of at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on the first count of read accesses, comprises at least one of the following: (i) adjusting a basic read share percentage to a first adjusted read share percentage for read accesses to a storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting a basic write share percentage to a first adjusted write share percentage for write accesses to a storage device based on a control parameter raised to a power of the first count of read accesses.

17. The non-transitory computer readable medium of claim 15, wherein: A second adjustment of at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a second count of write accesses, comprising at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a control parameter increased to a product of a scaling factor and the second count of write accesses.

18. The non-transitory computer readable medium of claim 15, wherein: A second adjustment of at least one of the following: (i) adjusting a first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a second count of write accesses; or (ii) adjusting a first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a second count of write accesses, comprising at least one of the following: (i) adjusting the first adjusted read share percentage to a second adjusted read share percentage for read accesses to a storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter increased to the product of a scaling factor and a second count of write accesses; or (ii) adjusting the first adjusted write share percentage to a second adjusted write share percentage for write accesses to a storage device based on a minimum of: a base read share percentage; and the first adjusted read share percentage divided by a control parameter increased to the product of a scaling factor and a second count of write accesses.

19. The non-transitory computer readable medium of claim 15, wherein: The method further includes determining that the initial write share percentage is equal to the basic write share percentage.

20. The non-transitory computer-readable medium of claim 15, wherein the method further comprises determining an adjusted worker process write share percentage as a base worker process write share percentage multiplied by the adjusted write share percentage divided by the base write share percentage.

21. The non-transitory computer-readable medium of claim 15, wherein the method further comprises determining an adjusted worker process read share percentage as a base worker process read share percentage multiplied by the adjusted read share percentage divided by the base read share percentage.

Citation Information

Patent Citations

  • Method, device and computer program product for managing storage equipment

    CN111124253A

  • Data read-write priority balancing method, system and device and storage medium

    CN112416556A

  • Storage management method, device and equipment and machine readable storage medium

    CN114721589A

  • Multi-core processor system, control program, and control method

    JP2014013587A

  • Method and apparatus for dynamically adjusting differentiated share prioritization in a storage system

    US11314436B1