← Back to Patent Explorer
US5426736A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for processing input/output commands in a storage system having a command queue

Assignee: Hewlett Packard Development Co LP
•
Filing: 1993-05-26
•
Granted: 1995-06-20
•
Expires: 2013-05-26
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An apparatus and method for dynamically tuning queue depths to provide improved storage subsystem throughput and resource utilization across a full range of I/O loads is described. The maximum allowable queue depth for a command queue is adjusted at predetermined cycle intervals on the basis of an I/O workload measured during the cycle. In one embodiment of the invention, the interval is a fixed system parameter, but in an alternative embodiment, the interval size is automatically adjusted to keep the rate of adjustment of the maximum allowable queue depth within a preferred range. In a preferred embodiment, the size of each I/O command is stored before it is sent to the device queue. Read, write and miscellaneous I/O commands may be queued and managed separately. After a predetermined number of commands have been stored, the predominant command size during the cycle interval is determined. The predominant command size is used to select a new maximum allowable queue depth, from a set of established values preferably selected so that, at least to a first order approximation, the maximum allowable queue depth is inversely proportional to the predominant command size. Preferably, this value is selected from a set of values which have been predetermined for all possible command sizes allowed for the system.

Inventors

  • 👤 William J. Guineau, III

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 20:49
CPC Classifications
G; G06; G06F; G06F13/00; G06F13/10; G06F13/12; G06F13/124; G06F13/126; G06F13/38; G06F13/382; G06F13/385

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.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1998-06-19 1998-12-19 1999-06-20 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2002-06-19 2002-12-19 2003-06-20 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2006-06-19 2006-12-19 2007-06-20 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag