US10606519B1ActiveUtilityA1

Edge case handling in system with dynamic flow control

98
Assignee: EMC IP HOLDING CO LLCPriority: Oct 19, 2018Filed: Oct 19, 2018Granted: Mar 31, 2020
Est. expiryOct 19, 2038(~12.3 yrs left)· nominal 20-yr term from priority
G06F 3/0659G06F 3/061G06F 3/067G06F 3/0673G06F 3/0613
98
PatentIndex Score
33
Cited by
37
References
20
Claims

Abstract

A storage system includes a storage controller that is configured to receive an input-output (IO) request and to obtain a flow control window size of the storage system. The flow control window size is dynamically adjustable by the storage controller based at least in part on an IO latency of the storage system. The storage controller is configured, in response to determining that an actual size of a portion of the IO request to be processed is greater than the flow control window size, to add an entry corresponding to the portion of the IO request to a flow control queue of the storage system with an indication that the portion of the IO request has an effective size equal to the flow control window size. The storage controller is further configured to process the entry in the flow control queue corresponding to the portion of the IO request using the actual size of the portion of the IO request.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. An apparatus comprising:
 a storage system comprising a plurality of storage devices and a storage controller associated with the plurality of storage devices; 
 wherein the storage controller is configured:
 to receive an input-output (IO) request; 
 to obtain a flow control window size of the storage system, the flow control window size being dynamically adjustable by the storage controller based at least in part on an IO latency of the storage system; 
 to determine whether or not an actual size of a portion of the IO request to be processed by the storage controller is greater than the flow control window size; 
 in response to determining that the actual size of the portion of the IO request is greater than the flow control window size, to add an entry corresponding to the portion of the IO request to a flow control queue of the storage system, the entry comprising an indication that the portion of the IO request has an effective size equal to the flow control window size; and 
 to process the entry in the flow control queue corresponding to the portion of the IO request, the processing comprising processing the actual size of the portion of the IO request. 
 
 
     
     
       2. The apparatus of  claim 1 , wherein the storage controller is further configured:
 to obtain a maximum IO size of the storage system; 
 to determine a total size of the received IO request; 
 to determine whether or not the total size of the received IO request is greater than the maximum IO size of the storage system; and 
 in response to determining that the total size of the received IO request is greater than the maximum IO size of the storage system, to split the received IO request into a plurality of chunks that are equal to or less than the maximum IO size of the storage system, the portion of the IO request being one of the chunks. 
 
     
     
       3. The apparatus of  claim 2 , wherein each chunk is processed by a separate thread of the storage controller. 
     
     
       4. The apparatus of  claim 2 , wherein the obtained flow control window size of the storage system is less than the maximum IO size. 
     
     
       5. The apparatus of  claim 1 , wherein the storage controller is further configured:
 to dynamically reduce the flow control window size to a second flow control window size; 
 to determine whether or not an entry in the flow control queue comprises an indication that a portion of a corresponding IO request has a size greater than the second size; and 
 to abort the entry in the flow control queue that comprises the indication that a portion of a corresponding IO request has a size greater than the second size, the aborting comprising removing the entry that comprises the indication that a portion of the corresponding IO request has a size greater than the second size from the queue, and re-adding the removed entry to the queue with an effective size equal to the second size. 
 
     
     
       6. The apparatus of  claim 1 , wherein processing the entry in the flow control queue corresponding to the portion of the IO request comprises decrementing a flow control counter of the storage system by the effective size. 
     
     
       7. The apparatus of  claim 6 , wherein the storage controller is further configured:
 in response to a completion of the processing of the entry in the flow control queue corresponding to the portion of the IO request, to increment the flow control counter of the storage system by the effective size. 
 
     
     
       8. The apparatus of  claim 7 , wherein the storage controller is further configured:
 to delay the increment of the flow control counter of the storage system by the effective size for a period of time based at least in part on the actual size of the portion of the IO request. 
 
     
     
       9. The apparatus of  claim 8 , wherein the period of time to delay the increment is determined based at least in part on the actual size of the portion of the IO request, the IO latency of the storage system, and the flow control window size. 
     
     
       10. The apparatus of  claim 9 , wherein the period of time to delay the increment is determined based at least in part on the equation: 
       
         
           
             
               delay 
               = 
               
                 IO_latency 
                 * 
                 
                   ( 
                   
                     
                       ( 
                       
                         actual_size 
                         - 
                         effective_size 
                       
                       ) 
                     
                     
                       flow_control 
                       ⁢ 
                       _window 
                       ⁢ 
                       _size 
                     
                   
                   ) 
                 
               
             
           
         
         where:
 IO_latency is the IO latency of the storage system; 
 actual_size is the actual size of the portion of the IO request; 
 effective_size is the effective size; and 
 flow_control_window_size is the obtained flow control window size. 
 
       
     
     
       11. A method comprising:
 receiving an input-output (IO) request; 
 obtaining a flow control window size of a storage system, the flow control window size being dynamically adjustable by a storage controller associated with the storage system based at least in part on an IO latency of the storage system; 
 determining that an actual size of a portion of the IO request to be processed by the storage system is greater than the flow control window size; 
 in response to determining that the actual size of the portion of the IO request is greater than the flow control window size, adding an entry corresponding to the portion of the IO request to a flow control queue of the storage system, the entry comprising an indication that the portion of the IO request has an effective size equal to the flow control window size; and 
 processing the entry in the flow control queue corresponding to the portion of the IO request, the processing comprising processing the actual size of the portion of the IO request, 
 wherein the method is implemented by at least one processing device comprising a processor coupled to a memory. 
 
     
     
       12. The method of  claim 11 , wherein the method further comprises:
 obtaining a maximum IO size of the storage system; 
 determining a total size of the received IO request; 
 determining that the total size of the received IO request is greater than the maximum IO size of the storage system; and 
 in response to determining that the total size of the received IO request is greater than the maximum IO size of the storage system, splitting the received IO request into a plurality of chunks that are equal to or less than the maximum IO size of the storage system, the portion of the IO request being one of the chunks. 
 
     
     
       13. The method of  claim 12 , wherein the obtained flow control window size of the storage system is less than the maximum IO size. 
     
     
       14. The method of  claim 11 , wherein the method further comprises:
 dynamically reducing the flow control window size to a second flow control window size; 
 determining that an entry in the flow control queue comprises an indication that a portion of a corresponding IO request has a size greater than the second size; and 
 aborting the entry in the flow control queue that comprises the indication that a portion of a corresponding IO request has a size greater than the second size, the aborting comprising removing the entry that comprises the indication that a portion of the corresponding IO request has a size greater than the second size from the queue, and re-adding the removed entry to the queue with an effective size equal to the second size. 
 
     
     
       15. The method of  claim 11 , wherein processing the entry in the flow control queue corresponding to the portion of the IO request comprises decrementing a flow control counter of the storage system by the effective size. 
     
     
       16. The method of  claim 15 , wherein the method further comprises:
 in response to a completion of the processing of the entry in the flow control queue corresponding to the portion of the IO request, incrementing the flow control counter of the storage system by the effective size. 
 
     
     
       17. The method of  claim 16 , wherein the method further comprises:
 delaying the increment of the flow control counter of the storage system by the effective size for a period of time based at least in part on the actual size of the portion of the IO request. 
 
     
     
       18. The method of  claim 17 , wherein the period of time to delay the increment is determined based at least in part on the actual size of the portion of the IO request, the IO latency of the storage system, and the flow control window size. 
     
     
       19. The method of  claim 18 , wherein the period of time to delay the increment is determined based at least in part on the equation: 
       
         
           
             
               delay 
               = 
               
                 IO_latency 
                 * 
                 
                   ( 
                   
                     
                       ( 
                       
                         actual_size 
                         - 
                         effective_size 
                       
                       ) 
                     
                     
                       flow_control 
                       ⁢ 
                       _window 
                       ⁢ 
                       _size 
                     
                   
                   ) 
                 
               
             
           
         
         where:
 IO_latency is the IO latency of the storage system; 
 actual_size is the actual size of the portion of the IO request; 
 effective_size is the effective size; and 
 flow_control_window_size is the obtained flow control window size. 
 
       
     
     
       20. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes said at least one processing device to:
 to receive an input-output (IO) request; 
 to obtain a flow control window size of a storage system, the flow control window size being dynamically adjustable by a storage controller associated with the storage system based at least in part on an IO latency of the storage system; 
 to determine whether or not an actual size of a portion of the IO request to be processed by the storage controller is greater than the flow control window size; 
 in response to determining that the actual size of the portion of the IO request is greater than the flow control window size, to add an entry corresponding to the portion of the IO request to a flow control queue of the storage system, the entry comprising an indication that the portion of the IO request has an effective size equal to the flow control window size; and 
 to process the entry in the flow control queue corresponding to the portion of the IO request, the processing comprising processing the actual size of the portion of the IO request.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.