Claims Analysis
Total Claims: 8
Claim 1
Independent Claim
245 words
A method for processing input/output (I/O) commands in a storage subsystem having a command queue, each I/O command having a size corresponding to a number of blocks of data to be subsequently retrieved and transmitted as a result of an execution of said each I/O command, comprising the steps of: setting a maximum allowable depth for the command queue; measuring the size of the I/O commands; determining a predominant I/O command size; and dynamically varying the maximum allowable queue depth in inverse relation to the predominant I/O command size, said varying step including the steps of: exercising the subsystem using a range of I/O command sizes and queue depths; measuring a throughput actually obtained over the full range of expected queue depths and allowed I/O command sizes; selecting a first approximate point where increasing queue depth no longer affects the throughput for the smallest allowed I/O command size as the maximum allowable queue depth for the smallest predominant I/O command size; selecting a second approximate point where increasing queue depth no longer affects throughput for the largest allowed I/O command size as the maximum allowable queue depth for the largest predominant I/O command size; fitting a curve for which queue depth is inversely proportional to the I/O command size between the first approximate point and the second approximate point; storing in a table points on the curve; and selecting from the table a new maximum allowable queue depth corresponding to the current predominant command size.
Claim 2
Independent Claim
245 words
A method for processing input/output (I/O) commands in a storage subsystem having a command queue, each I/O command having a size corresponding to a number of blocks of data to be subsequently retrieved and transmitted as a result of an execution of said each I/O command, comprising the steps of: setting a maximum allowable depth for the command queue; measuring the size of the I/O commands; determining a predominant I/O command size; and dynamically varying the maximum allowable queue depth in inverse relation to the predominant I/O command size, said varying step including the steps of: exercising the subsystem using a range of I/O command sizes and queue depths; measuring a throughput actually obtained over the full range of expected queue depths and allowed I/O command sizes; selecting a first approximate point where increasing queue depth no longer affects the throughput for the smallest allowed I/O command size as the maximum allowable queue depth for the smallest predominant I/O command size; selecting a second approximate point where increasing queue depth no longer affects throughput for the largest allowed I/O command size as the maximum allowable queue depth for the largest predominant I/O command size; fitting a curve for which queue depth is inversely proportional to the I/O command size between the first approximate point and the second approximate point; storing in a table points on the curve; and selecting from the table a new maximum allowable queue depth corresponding to the current predominant command size.
Claim 3
Dependent Claim
30 words
A method as claimed in claim 1 further comprising the step of tuning the preselected maximum allowable queue depth values to minimize the average and maximum latencies of the subsystem.
Claim 4
Independent Claim
205 words
A method for processing input/output (I/O) commands in a storage subsystem having a command queue, each I/O command having a size corresponding to a number of blocks of data to be subsequently retrieved and transmitted as a result of an execution of said each I/O command, comprising the steps of: setting a maximum allowable depth for the command queue; measuring the size of the I/O commands; determining a predominant I/O command size; and dynamically varying the maximum allowable queue depth in inverse relation to the predominant I/O command size, said varying step including the steps of: establishing a cycle interval for the determining of the predominant I/O command size, recording the size of each I/O command sent to the subsystem, periodically determining the predominant size for the I/O commands sent during the established cycle interval, and selecting from a table a new value for the maximum allowable queue depth on the basis of the current predominant I/O command size, wherein the values M(P) in the table are determined according to the equation ##EQU5## R is the maximum transfer rate between the subsystem and the host, K is the average access time for the storage device, and Z is the queuing efficiency factor for the subsystem.
Claim 5
Independent Claim
205 words
A method for processing input/output (I/O) commands in a storage subsystem having a command queue, each I/O command having a size corresponding to a number of blocks of data to be subsequently retrieved and transmitted as a result of an execution of said each I/O command, comprising the steps of: setting a maximum allowable depth for the command queue; measuring the size of the I/O commands; determining a predominant I/O command size; and dynamically varying the maximum allowable queue depth in inverse relation to the predominant I/O command size, said varying step including the steps of: establishing a cycle interval for the determining of the predominant I/O command size, recording the size of each I/O command sent to the subsystem, periodically determining the predominant size for the I/O commands sent during the established cycle interval, and selecting from a table a new value for the maximum allowable queue depth on the basis of the current predominant I/O command size, wherein the values M(P) in the table are determined according to the equation ##EQU5## R is the maximum transfer rate between the subsystem and the host, K is the average access time for the storage device, and Z is the queuing efficiency factor for the subsystem.
Claim 6
Dependent Claim
30 words
A method as claimed in claim 3 further comprising the step of tuning the preselected maximum allowable queue depth values to minimize the average and maximum latencies of the subsystem.
Claim 7
Independent Claim
227 words
A method for processing input/output (I/O) commands in a storage subsystem having a command queue, each I/O command having a size corresponding to a number of blocks of data to be subsequently retrieved and transmitted as a result of an execution of said each I/O command, comprising the steps of: setting a maximum allowable depth for the command queue; measuring the size of the I/O commands; determining a predominant I/O command size; and dynamically varying the maximum allowable queue depth in inverse relation to the predominant I/O command size, said varying step including the steps of: establishing a cycle interval for the determining of the predominant I/O command size, recording the size of each I/O command sent to the subsystem, periodically determining the predominant size for the I/O commands sent during the established cycle interval, and selecting from a table a new value for the maximum allowable queue depth on the basis of the current predominant I/O command size, wherein the values in said table are determined by solving for q the equation ##EQU6## y is the total subsystem response time, n is the allowed I/O command size, R is the maximum transfer rate between the subsystem and the host, K is the average access time for the storage device, C is a small system overhead factor and Z is the queuing efficiency factor for the subsystem.
Claim 8
Independent Claim
227 words
A method for processing input/output (I/O) commands in a storage subsystem having a command queue, each I/O command having a size corresponding to a number of blocks of data to be subsequently retrieved and transmitted as a result of an execution of said each I/O command, comprising the steps of: setting a maximum allowable depth for the command queue; measuring the size of the I/O commands; determining a predominant I/O command size; and dynamically varying the maximum allowable queue depth in inverse relation to the predominant I/O command size, said varying step including the steps of: establishing a cycle interval for the determining of the predominant I/O command size, recording the size of each I/O command sent to the subsystem, periodically determining the predominant size for the I/O commands sent during the established cycle interval, and selecting from a table a new value for the maximum allowable queue depth on the basis of the current predominant I/O command size, wherein the values in said table are determined by solving for q the equation ##EQU6## y is the total subsystem response time, n is the allowed I/O command size, R is the maximum transfer rate between the subsystem and the host, K is the average access time for the storage device, C is a small system overhead factor and Z is the queuing efficiency factor for the subsystem.