US 11,720,280 B2
Storage system and method for improving utilization of a communication channel between a host and the storage system
Abhijit K Rao, Bengaluru (IN); Avinash Sharma, Jharkhand (IN); Bala Siva Kumar Narala, Andhra Pradesh (IN); and Kartheshwar Shanmuga Sundaram, Nadu (IN)
Assigned to Western Digital Technologies, Inc., San Jose, CA (US)
Filed by Western Digital Technologies, Inc., San Jose, CA (US)
Filed on Dec. 17, 2019, as Appl. No. 16/717,469.
Prior Publication US 2021/0181980 A1, Jun. 17, 2021
Int. Cl. G06F 3/06 (2006.01)
CPC G06F 3/0659 (2013.01) [G06F 3/0607 (2013.01); G06F 3/0611 (2013.01); G06F 3/0653 (2013.01); G06F 3/0679 (2013.01)] 14 Claims
OG exemplary drawing
 
1. A method for improving utilization of a communication channel between a host and a storage system, the method comprising:
performing the following in a storage system in communication with a host via a communication channel, wherein the storage system comprises a memory:
determining a plurality of factors based on a host application, wherein the plurality of factors comprises a utilization of the communication channel, a workload indicating a number of read commands versus write commands, and a command length;
assigning a weight to each of the plurality of factors, which is tuned by firmware in the storage system based on experiments, wherein utilization of the communication channel is assigned a highest weight and one or both of workload and command length is assigned a next-highest weight
receiving a plurality of commands from the host;
dynamically calculating a command priority factor for each command of the plurality of commands in response to arrival of the command using a weighted priority-based function based on the plurality of factors and assigned weights;
storing the plurality of commands in a queue in an order in which the plurality of commands was received by the storage system, wherein the plurality of commands comprise read commands and write commands with overlapping address ranges and the order in which the plurality of commands was received requires that a first set of write commands in the plurality of commands be executed before certain other write and/or read commands in the plurality of commands due to dependency that the certain other write and/or read commands have on the first set of write commands;
storing the command priority factors for each command of the plurality of commands in a data structure, wherein each command priority factor is tagged to a command identifier in the data structure;
selecting commands for execution from the queue in descending command priority factor order, which is different from the order in which the plurality of commands was received and provides greater utilization of the communication channel than the order in which the plurality of commands was received; and
executing the plurality of commands in descending command priority factor order, wherein the first set of write commands in the plurality of commands is executed before the certain other write and/or read commands in the plurality of commands due to the dependency.