Systems, methods, and media for resuming worker process shares from read prioritization.

By adjusting the percentage of read and write accesses on the storage device, the mismatch in worker process share caused by read priority was resolved, thus improving the performance and service quality of the storage device.

CN119923625BActive Publication Date: 2026-05-26SK HYNIX NAND PRODUCT SOLUTIONS CORP

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
SK HYNIX NAND PRODUCT SOLUTIONS CORP
Filing Date
2023-09-21
Publication Date
2026-05-26

AI Technical Summary

Technical Problem

In modern computing devices, the mismatch between the share of worker processes and their allocated shares due to read access prioritization leads to a decline in storage device performance.

Method used

By adjusting the share percentage of read and write accesses on the storage device, the hardware processor determines the count when read accesses take precedence over write accesses, and adjusts the share percentage of write accesses after read accesses are completed, in order to restore the share balance of worker processes.

Benefits of technology

It effectively restored the share balance of the workload and improved the performance and service quality of the storage devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119923625B_ABST
    Figure CN119923625B_ABST
Patent Text Reader

Abstract

Recovering worker share from read priority includes: when read access (RA) to the storage device (SD) takes precedence over write access (WA) to the SD: determining a first count of RA to the SD; based on the first count of RA, performing a first adjustment of the basic read share percentage (RSP) to a first adjusted RSP for the RA to the SD; and controlling read access to the SD based on the first adjustment; determining that RA priority over WA to the SD has been completed; and after RA priority to the SD has been completed: determining a second count of WA to the SD; based on the second count of WA, performing a second adjustment of the first adjusted RSP to a second adjusted RSP for the RA to the SD; 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-references to related applications

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

[0003] Modern computing devices—which, among many others, can include general-purpose and special-purpose computers such as desktop computers, laptops, tablets, servers, mobile phones, and Internet of Things (IoT) 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). To ensure that each worker receives the expected amount of access to the storage device(s), such modern computing devices may assign a share to each worker, which defines the amount of access each worker has to the storage device(s) or a portion thereof. For example, the share may indicate the percentage of time a worker has the right to access a storage device or a portion thereof. 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 scenario, on average, over a long period of time, worker process 1 will be able to access the storage device or a portion thereof for approximately 50% of the total access time, and worker processes 2 and 3 will similarly have access times of approximately 30% and 20%, respectively.

[0004] In some instances, to meet Quality of Service (QoS) requirements, storage devices may prioritize read accesses (which tend to be shorter) over write accesses (which tend to be longer). While this prioritization can improve storage device performance, it can also lead to a mismatch between the share of work performed by different worker processes and the share they are allocated.

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

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

[0007] In some embodiments, a system is provided for recovering worker process shares from read prioritization, the system comprising: a memory; and at least one hardware processor, collectively configured to perform at least the following operations: determining that read accesses to the storage device take precedence over write accesses to the storage device; when read accesses to the storage device take precedence over write accesses to the storage device: determining a first count of read accesses to the storage device; and performing a first adjustment for 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 for write accesses to the storage device based on the first count of read accesses. Percentage; and control read access to the storage device based on the first adjustment; determine that read access to the storage device prior to write access to the storage device has been completed; and after read access to the storage device prior to write access to the storage device has been completed: determine a second count of write access to the storage device; perform a second adjustment for at least one of the following: (i) adjust the first adjusted read share percentage to the second adjusted read share percentage for read access to the storage device based on the second count of write access; or (ii) adjust the first adjusted write share percentage to the second adjusted write share percentage for write access to the storage device based on the second count of write access; and control write access to the storage device based on the second adjustment. In some of these embodiments, a first adjustment to at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the storage device based on a first count of read accesses, including at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the 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 to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on a control parameter that is increased to the product of the scaling factor and the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on a control parameter that is increased to the product of the scaling factor and the second count of write accesses. In some of these embodiments, a second adjustment to 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 the storage device based on 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 the storage device based on a second count of write accesses, includes 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 the storage device based on the minimum of the following: a base read share percentage; and a first adjusted read share percentage divided by a control parameter that is increased to the product of the 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 the minimum of the following: a base read share percentage; and a first adjusted read share percentage divided by a control parameter that is increased to the product of the scaling factor and the second count of write accesses. In some of these embodiments, 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 commonly configured to determine at least 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, at least one hardware processor is also commonly 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.

[0008] In some embodiments, a method is provided for recovering worker process shares from read prioritization, the method comprising: using at least one hardware processor to determine that read accesses to a storage device take precedence over write accesses to a storage device; when read accesses to a storage device take precedence over write accesses to a storage device: determining a first count of read accesses to the storage device; performing a first adjustment for 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; and based on the first... Adjustments are made to control read access to the storage device; it is determined that read access to the storage device has taken precedence over write access to the storage device; and after read access to the storage device has taken precedence over write access to the storage device: a second count of write access to the storage device is determined; a second adjustment is performed on at least one of the following: (i) based on the second count of write access, the first adjusted read share percentage is adjusted to the second adjusted read share percentage for read access to the storage device; or (ii) based on the second count of write access, the first adjusted write share percentage is adjusted to the second adjusted write share percentage for write access to the storage device; and write access to the storage device is controlled based on the second adjustment. In some of these embodiments, a first adjustment to at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the storage device based on a first count of read accesses, including at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the 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 to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on a control parameter that is increased to the product of the scaling factor and the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on a control parameter that is increased to the product of the scaling factor and the second count of write accesses. In some of these embodiments, a second adjustment to 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 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 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 the storage device based on the minimum of the following: a base read share percentage; and a first adjusted read share percentage divided by a control parameter that is increased to the product of the 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 the minimum of the following: a base read share percentage; and a first adjusted read share percentage divided by a control parameter that is increased to the product of the scaling factor and the second count of write accesses. In some of these embodiments, the method further includes determining that an initial write share percentage is equal to a 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 is provided containing computer-executable instructions that, when executed by a processor, cause the processor to perform a method for recovering a share of the working process from read prioritization, the method comprising: determining that read accesses to a storage device take precedence over write accesses to a storage device; when read accesses to a storage device take precedence over write accesses to a storage device: determining a first count of read accesses to the storage device; and performing a first adjustment for 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 read share percentage for write accesses to the storage device based on the first count of read accesses. The percentage of write accesses to the storage device is determined; and read accesses to the storage device are controlled based on the first adjustment; it is determined that read accesses to the storage device have been completed before write accesses to the storage device have been completed; and after read accesses to the storage device have been completed before write accesses to the storage device: a second count of write accesses to the storage device is determined; and a second adjustment is performed on at least one of the following: (i) based on the second count of write accesses, the percentage of read accesses to the storage device is adjusted from the first adjusted percentage of read accesses to the second adjusted percentage of read accesses to the second adjusted percentage of read accesses to the storage device; or (ii) based on the second count of write accesses, the percentage of write accesses to the storage device is adjusted from the first adjusted percentage of write accesses to the second adjusted percentage of write accesses to the second adjusted percentage of write accesses to the storage device; and write accesses to the storage device are controlled based on the second adjustment. In some of these embodiments, a first adjustment to at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the storage device based on a first count of read accesses, including at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a control parameter raised to a power of the first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the 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 to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on a control parameter that is increased to the product of the scaling factor and the second count of write accesses; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on a control parameter that is increased to the product of the scaling factor and the second count of write accesses. In some of these embodiments, a second adjustment to 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 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 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 the storage device based on the minimum of the following: a base read share percentage; and a first adjusted read share percentage divided by a control parameter that is increased to the product of the 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 the minimum of the following: a base read share percentage; and a first adjusted read share percentage divided by a control parameter that is increased to the product of the scaling factor and the second count of write accesses. In some of these embodiments, the method further includes determining that an initial write share percentage is equal to a 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. Attached Figure Description

[0010] Figure 1 This is an example of a block diagram of a solid-state drive coupled to a host device via a bus, according to some embodiments.

[0011] Figure 2 These are examples of values ​​that can be tracked according to some embodiments.

[0012] Figure 3 These are examples of procedures for recovering worker process shares from read prioritization, according to some embodiments.

[0013] Figure 4 These are examples of procedures for selecting and processing commands based on an unread priority process, according to some embodiments. Detailed Implementation

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

[0015] As described herein, in some embodiments, these mechanisms can adjust the workload share to any suitable portion or whole of any suitable one or more storage devices (referred to herein as a “part”). For example, in some embodiments, in a NAND solid-state drive (SSD), there may be multiple NAND dies (each of which may be referred to herein as “NAND”), and one or more or all of these NAND dies may be referred to herein as a part of the NAND SSD. Similarly, when using multiple SSDs, a part of an SSD can be one, two, any suitable subset, or all of the SSDs.

[0016] In some embodiments, the mechanism may be triggered by a read priority trigger that indicates that read commands for a portion i of the storage device are being prioritized. In some embodiments, after initializing the count of read commands processed during read priority to zero, these mechanisms may repeat during read priority: selecting and processing read commands based on the read priority process; incrementing the count of processed read commands; updating the adjusted read and write share values ​​for the portion i of the storage device based on the product of a base read share value and a control parameter that has been increased to the count value of processed read commands; and determining whether read commands are still being prioritized.

[0017] Once read prioritization is complete, in some embodiments, the mechanism may set the final read share value of portion i of the storage device during read prioritization to the most recently adjusted read share value of 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 priority, the mechanism may repeatedly: select and process commands based on a non-read priority process; determine whether a write command has been selected; and if a write command has been selected, then: increment the write command count; update the adjusted read and write share values ​​for portion i of the storage device based on the minimum of: the base read share value; and the quotient of the final read share value and a control value raised to the power of the product of the scaling factor and the write command count; and determine whether the adjusted read share value is equal to the base read share value. The mechanism may terminate when the adjusted read share value equals the base read share value.

[0019] Through this process, during read-prioritization, as more read commands are processed for portion i of the storage device, the adjusted read share value gradually decreases, and the adjusted write share value gradually increases. Then, upon resuming from read-prioritization, as more write commands are processed for portion i of the storage device, the adjusted read share value gradually increases, and the adjusted write share value gradually decreases, returning to their base values.

[0020] Turning Figure 1 The diagram illustrates an example block diagram of a solid-state drive 102 coupled to a host device 124 via a bus 132 according to some embodiments.

[0021] As shown in the figure, 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. In some embodiments, it may include a... Figure 1 The number of components shown may be more or fewer. In some embodiments, Figure 1 Two or more components shown can be included in one component.

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

[0023] In some embodiments, NAND devices 106, 108, and 110 can be any suitable NAND device for storing information (which may include data, programs, and / or any other suitable information that can be stored in a solid-state drive). In some embodiments, a NAND device may include any suitable memory cell, one or more hardware processors (such as microprocessors, digital signal processors, microcontrollers, programmable gate arrays, etc.), one or more interface controllers, interface logic, drivers, etc. Although Figure 1 Three NAND devices (106, 108, and 110) are shown, but in some embodiments any suitable number of NAND devices (including only one) may be used. In some embodiments, any suitable type of NAND device may be used (such as single-cell (SLC), multi-cell (MLC), three-cell (TLC), four-cell (QLC), 3D NAND, etc.). 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 memory 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 can be any suitable mechanism for transferring information between controller 104 and NAND devices 106, 108, and 110. For example, in some embodiments, channels can be implemented using conductors (pads) on a circuit board. Although Figure 1 Three channels (112, 114, and 116) are shown, but in some embodiments any suitable number of channels C may be used.

[0025] In some embodiments, the 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 into any suitable programmable read-only memory (PROM). In some embodiments, any suitable number of firmware 120s may be used, each firmware having any suitable size.

[0027] In some embodiments, cache 122 can be any suitable device for temporarily storing information (which in some embodiments may include data and programs). In some embodiments, cache 122 can 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 can be used, each cache having any suitable size.

[0028] In some embodiments, the host device 124 can be any suitable device for accessing the stored information. For example, in some embodiments, the host device 124 can 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. Although Figure 1 Only one host device 124 is shown, but in some embodiments any suitable number of host devices may be included.

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

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

[0031] although Figure 1 A NAND solid-state drive is illustrated, but it should be understood that the mechanism described herein can be used with other forms of storage devices and / or other devices. For example, in some embodiments, the mechanism can be used with any suitable device requested for access by network nodes, compute nodes, and / or multiple worker processes in a routing process, and their access is controlled by a share determined using a QoS bypass mechanism.

[0032] Turning Figure 2The illustration shows an example 200 of values ​​that can be tracked according to some embodiments. As shown, these values ​​may include counts of read commands processed during read prioritization N[0:D-1]202, 204, and 206, counts of write commands processed during recovery from read prioritization M[0:D-1]208, 210, and 212, control parameters α[0:D-1]214, 216, and 218, scaling factors K[0:D-1]220, 222, and 224, and 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 The diagram illustrates N[0:D-1]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, and S. 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, and 242, and S write Three of each of [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 Each of the NAND flash units in the solid-state drive is one of the values ​​listed above.

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

[0035] Turning Figure 3 Example 300 of a process for resuming a share of the worker process from read prioritization, according to some embodiments, is shown. This process can be performed on any suitable device. For example, in some embodiments, the process can be performed on the controller of a storage device (e.g., such as...). Figure 1The process is executed on the controller 104. According to some embodiments, different instances of the process may be executed on each part i of the storage device (e.g., each NAND device 106, 108, and 110 on the solid-state drive 102).

[0036] As shown, in response to receiving a read priority trigger, process 300 may begin at 302. This trigger may indicate that read commands to portion i of the storage device take precedence 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, when the QoS of portion i of the storage device drops below a threshold, 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.

[0037] Then, at 304, procedure 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 can be executed during read priority.

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

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

[0041] Then, at 310, process 300 can update the share value S. read [i] and S write [i] causes the share value of read commands to decrease and the share value of write commands to increase. This update of 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 percentage of reads for part i of the storage device;

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

[0047] S read,0 [i] represents the basic read share percentage of portion i of the storage device;

[0048] α[i] is a control parameter for part i of the storage device, and can 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 performed on part i of the storage device during read priority.

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

[0051] If process 300 determines that for part i of the storage device, the read command is still prioritized, then the process can loop back to 306.

[0052] Otherwise, if process 300 determines that read commands are not still prioritized for portion i of storage device, the process can branch to 314, where it can prioritize the final read share value (S) from reads of portion i of storage device. read,1 [i]) is set to the adjusted read share value (S) of the portion i of the storage device at 310. read The most recent value of the set [i]. In some embodiments, the final read share value (S) that prioritizes reads from the portion i of the storage device can be performed in any suitable manner. read,1[i]) is set to be equal to the adjusted read share value (S) of the portion i of the storage device. read [i]) The most recent value of the set. For example, in some embodiments, by corresponding to S read,1 The memory location of [i] is set to be equal to the location corresponding to S. read The value in the memory location [i]N[i] can be used to perform the final read share value (S) that prioritizes reads from a portion i of the storage device. read,1 [i]) is set to be equal to the adjusted read share value (S) of the portion i of the storage device. read [i]) The most recent value of the 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, while resuming from read priority, blocks 316, 318, 320, 322 and 324 described below may be executed.

[0055] At 316, process 300 can select and process read or write commands based on a non-read-prioritized process. In some embodiments, the selection and processing of read or write commands can be performed in any suitable manner and can be based on any suitable non-read-prioritized process. For example, 316 of process 300 can be combined as follows Figure 4 To be executed 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 performed in any suitable manner. For example, in some embodiments, determining whether a write command was selected can be performed by checking the command type indicated in the command field.

[0057] If process 300 determines at 318 that no write command was selected at 316, then process 300 can loop back to 316.

[0058] Otherwise, if process 300 determines at 318 that a write command was selected at 316, then 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 M[i] can be performed by adding one to the value in the memory location corresponding to M[i].

[0059] Next, at point 322, process 300 can update the share value S.read [i] and S write [i] causes the share value of read commands to increase and the share value of write commands to decrease. This update of 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 percentage of reads for part i of the storage device;

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

[0065] S read,0 [i] represents the basic read share percentage of portion i of the storage device;

[0066] S read,1 [i] is the final read share percentage of storage device i during the read priority period of storage device i;

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

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

[0069] M[i] is the number of write accesses made to part i of the storage device when resuming from read priority.

[0070] Then, at 324, process 300 can determine the adjusted read share percentage (S) of portion i of the storage device. read Is [i] equal to the basic read share percentage (S) of the portion i of the storage device? read,0 [i]). In some embodiments, this determination can be performed in any suitable manner. For example, in some embodiments, it can be done by comparing the values ​​corresponding to S. readThe value in the memory location [i] is used to determine whether it is equal to the value corresponding to S. read,0 This determination is made using the value in the memory location [i]. If not, process 300 can loop back to 316. Otherwise, process 300 can end at 326.

[0071] Turning Figure 4 This illustrates that, according to some embodiments, it is possible to Figure 3 Example 400 uses a process at point 316 to determine which command should proceed to part i of the storage device (here shown as NAND[i]). This process can be executed on any suitable device. For example, in some embodiments, the process can be executed on the controller of the storage device (e.g., such as...). Figure 1 Executed on controller 104).

[0072] As illustrated, after process 400 begins at 402, the process can select a first worker process. In some embodiments, any suitable worker process can be selected as the first worker process, and this worker process can be selected in any suitable manner. For example, in some embodiments, the worker process with the earliest pending command can be selected as the first worker process. As another example, in some embodiments, the worker process that was first instantiated can be selected as the first worker 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 worker process. In some embodiments, this determination can be performed in any suitable manner. For example, in some embodiments, process 400 can determine the actual usage share of the selected worker process by dividing the total worker process time on NAND[i] by the total time of all worker processes on NAND[i].

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

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

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

[0078] In some embodiments, Figure 3 and Figure 4 At least some of the processes outlined in the above boxes can be performed or carried out in any order or sequence, not limited to the order and sequence shown and described in conjunction with the figures. Furthermore, in some embodiments, Figure 3 and Figure 4 Some of the processes described in the boxes above can be executed or implemented substantially simultaneously or in parallel where appropriate to reduce waiting and processing times. Additionally or alternatively, in some embodiments, these processes may be omitted. Figure 3 and Figure 4 Some of the processes described in the boxes above.

[0079] In some embodiments, any suitable computer-readable medium may be used to store instructions for performing the functions and / or processes described herein. For example, in some embodiments, the computer-readable medium may be transient or non-transitory. For example, a non-transitory computer-readable medium may include media such as magnetic media in non-transitory forms (such as hard disks, floppy disks, and / or any other suitable magnetic media), optical media in non-transitory forms (such as compact disks, digital video disks, Blu-ray discs, and / or any other suitable optical media), semiconductor media in non-transitory forms (such as flash memory, electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and / or any other suitable semiconductor media), any suitable medium that is not transient or lacks any persistent appearance during transmission, and / or any suitable tangible medium. As another example, a transient computer-readable medium may include signals on a network, in wires, conductors, optical fibers, circuits, 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 worker process shares from read prioritization. By recovering worker process shares from read prioritization when needed, these mechanisms can improve the fulfillment of worker process shares allocated for accessing storage devices, and thus improve the performance of host devices connected to storage devices.

[0081] Although the invention has been described and illustrated in the foregoing illustrative embodiments, it should be understood that this disclosure is by way of example only, and numerous changes may be made to the details of the embodiments of the invention without departing from the spirit and scope of the invention, which is defined only by the following claims. The features of the disclosed embodiments can 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, which is collectively configured to at least: Prioritize read access to storage devices over write access to storage devices; When read access to a storage device takes precedence over write access to the storage device: Determine the first count of read accesses to the storage device; A first adjustment is performed on at least one of the following: (i) for read accesses to the storage device, based on a first count of read accesses, the basic read share percentage is adjusted to a first adjusted read share percentage such that the first adjusted read share percentage decreases as the first count of read accesses increases; or (ii) for write accesses to the storage device, based on a first count of read accesses, the basic write share percentage is adjusted to a first adjusted write share percentage such that the first adjusted write share percentage increases as the first count of read accesses increases; and The first adjustment is used to control read access to the storage device; It has been determined that read access to the storage device takes precedence over write access to the storage device; as well as After read access to the storage device has been completed, taking precedence over write access: Determine a second count of write accesses to the storage device; The second adjustment is performed on 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 the storage device based on the second count of write accesses, such that the second adjusted read share percentage increases as the second count of write accesses increases; 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, such that the second adjusted write share percentage decreases as the second count of write accesses increases; and The second adjustment controls write access to the storage device.

2. The system according to claim 1, wherein, A first adjustment to at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the storage device based on a first count of read accesses, including at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a control parameter raised to a power of the first count of read accesses, wherein the control parameter is a value greater than zero and less than one; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the 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 to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on a control parameter raised to the power of the product of the scaling factor and the second count of write accesses, wherein the control parameter is a value greater than zero and less than one and the scaling factor is a value greater than one; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on a control parameter raised to the power of the product of the scaling factor and the second count of write accesses.

4. The system according to claim 1, wherein, A second adjustment to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on the minimum of the following: a base read share percentage; and a control parameter that is raised to the power of the product of the scaling factor and the second count of write accesses, wherein the control parameter is a value greater than zero and less than one and the scaling factor is a value greater than one; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on the minimum of the following: a base read share percentage; and a control parameter that is raised to the power of the product of the scaling factor and the second count of write accesses.

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

6. The system according to claim 1, wherein, The at least one hardware processor is further configured to determine at least 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.

7. The system according to claim 1, wherein, The at least one hardware processor is further 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: Use at least one hardware processor to determine 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: Determine the first count of read accesses to the storage device; A first adjustment is performed on at least one of the following: (i) for read accesses to the storage device, based on a first count of read accesses, the basic read share percentage is adjusted to a first adjusted read share percentage such that the first adjusted read share percentage decreases as the first count of read accesses increases; or (ii) for write accesses to the storage device, based on a first count of read accesses, the basic write share percentage is adjusted to a first adjusted write share percentage such that the first adjusted write share percentage increases as the first count of read accesses increases; and The first adjustment is used to control read access to the storage device; It has been determined that read access to the storage device takes precedence over write access to the storage device; as well as After read access to the storage device has been completed, taking precedence over write access: Determine a second count of write accesses to the storage device; The second adjustment is performed on 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 the storage device based on the second count of write accesses, such that the second adjusted read share percentage increases as the second count of write accesses increases; 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, such that the second adjusted write share percentage decreases as the second count of write accesses increases; and The second adjustment controls write access to the storage device.

9. The method according to claim 8, wherein, A first adjustment to at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the storage device based on a first count of read accesses, including at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a control parameter raised to a power of the first count of read accesses, wherein the control parameter is a value greater than zero and less than one; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the 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 to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on a control parameter raised to the power of the product of the scaling factor and the second count of write accesses, wherein the control parameter is a value greater than zero and less than one and the scaling factor is a value greater than one; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on a control parameter raised to the power of the product of the scaling factor and the second count of write accesses.

11. The method according to claim 8, wherein, A second adjustment to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on the minimum of the following: a base read share percentage; and a control parameter that is raised to the power of the product of the scaling factor and the second count of write accesses, wherein the control parameter is a value greater than zero and less than one and the scaling factor is a value greater than one; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on the minimum of the following: a base read share percentage; and a control parameter that is raised to the power of the product of the scaling factor and the second count of write accesses.

12. The method of claim 8, further comprising determining that the initial write share percentage is 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 comprising computer-executable instructions, which, when executed by a processor, cause the processor to perform a method for resuming a share of the working process from read prioritization, the method comprising: Prioritize read access to storage devices over write access to storage devices; When read access to a storage device takes precedence over write access to the storage device: Determine the first count of read accesses to the storage device; A first adjustment is performed on at least one of the following: (i) for read accesses to the storage device, based on a first count of read accesses, the basic read share percentage is adjusted to a first adjusted read share percentage such that the first adjusted read share percentage decreases as the first count of read accesses increases; or (ii) for write accesses to the storage device, based on a first count of read accesses, the basic write share percentage is adjusted to a first adjusted write share percentage such that the first adjusted write share percentage increases as the first count of read accesses increases; and The first adjustment is used to control read access to the storage device; It has been determined that read access to the storage device takes precedence over write access to the storage device; as well as After read access to the storage device has been completed, taking precedence over write access: Determine a second count of write accesses to the storage device; The second adjustment is performed on 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 the storage device based on the second count of write accesses, such that the second adjusted read share percentage increases as the second count of write accesses increases; 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, such that the second adjusted write share percentage decreases as the second count of write accesses increases; and The second adjustment controls write access to the storage device.

16. The non-transitory computer-readable medium according to claim 15, wherein, A first adjustment to at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a first count of read accesses; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the storage device based on a first count of read accesses, including at least one of the following: (i) adjusting the basic read share percentage to a first adjusted read share percentage for read accesses to the storage device based on a control parameter raised to a power of the first count of read accesses, wherein the control parameter is a value greater than zero and less than one; or (ii) adjusting the basic write share percentage to a first adjusted write share percentage for write accesses to the 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 according to claim 15, wherein, A second adjustment to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on a control parameter raised to the power of the product of the scaling factor and the second count of write accesses, wherein the control parameter is a value greater than zero and less than one and the scaling factor is a value greater than one; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on a control parameter raised to the power of the product of the scaling factor and the second count of write accesses.

18. The non-transitory computer-readable medium according to claim 15, wherein, A second adjustment to at least one of the following: (i) adjusting the first adjusted read share percentage to the 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 the second adjusted write share percentage for write accesses to the storage device based on the second count of write accesses, including at least one of the following: (i) adjusting the first adjusted read share percentage to the second adjusted read share percentage for read accesses to the storage device based on the minimum of the following: a base read share percentage; and a control parameter that is raised to the power of the product of the scaling factor and the second count of write accesses, wherein the control parameter is a value greater than zero and less than one and the scaling factor is a value greater than one; or (ii) adjusting the first adjusted write share percentage to the second adjusted write share percentage for write accesses to the storage device based on the minimum of the following: a base read share percentage; and a control parameter that is raised to the power of the product of the scaling factor and the second count of write accesses.

19. The non-transitory computer-readable medium according to 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 the 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 the 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.