Adaptive throughput optimization
AssigneeApple Computer, Inc.
InventorMichael L. Wiese
Life of this patent
Estimating the term…
Abstract
Computer system performance may be significantly enhanced by optimizing data throughput during input/output (I/O) operations. In turn, data throughput, during an I/O operation, may be optimized by adaptively modifying the I/O strategy at runtime, and/or continuously throughout the I/O operation, regardless of the specific hardware configuration associated with the I/O devices involved with the I/O operation, as well as additional factors that might otherwise impact the efficiency of the I/O operation.
Claims35
A method for adaptively improving throughput during an I/O operation comprising the steps of:
- transferring an amount of data corresponding to a first I/O request;
- adapting an amount of data corresponding to a second I/O request, such that the throughput associated with the second I/O request increases over the throughput associated with the first I/O request;
- and
- adapting an amount of data corresponding to each of a number of additional I/O requests, such that the throughput associated with each additional I/O request increases over the throughput associated with a previous I/O request, until the I/O operation is complete.
A method for adaptively improving throughput during an I/O operation comprising the steps of:
- transferring data associated with the I/O operation from a source device to a destination device through a plurality of I/O requests;
- continuously increasing the I/O size of the I/O requests, until throughput has been maximized;
- and
- transferring any remaining data associated with the I/O operation through one or more I/O requests, wherein the I/O size associated with the one or more I/O requests is fixed and equal to the I/O size corresponding to maximum throughput.
A method for improving computer performance during an I/O operation comprising the steps of:
- transferring a portion of data associated with the I/O operation from a source device to a destination device;
- measuring a throughput value associated with transferring said portion of data;
- determining whether the measured throughput value is greater than a previous throughput value;
- and
- transferring a next portion of data associated with the I/O operation from the source device to the destination device, wherein the next portion of data is greater than the prior portion of data, if the measured throughput value is determined to be greater than the previous throughput value.
A method for improving the performance of a computer system during an ion that involves the transfer of a quantity of data, said method comprising the steps of:
- storing a value representing an amount of time to transfer a portion of data from a source device to a destination device;
- transferring a portion of the data from the source device to the destination device;
- measuring the time required to complete said step of transferring the portion of data from the source device to the destination device;
- determining whether the measured amount of time is greater than the stored value;
- transferring a next portion of data, where the next portion of data is less than the prior portion of data, if it is determined that the measured amount of time is greater than the stored value;
- and
- storing the value associated with the measured amount of time in place of the previously stored value.
A computer system comprising:
- means for transferring a portion of data associated with an I/O operation from a source device to a destination device;
- means for measuring a throughput value associated with transferring said portion of data;
- means for determining whether the measured throughput value is greater than a previous throughput value;
- and
- means for transferring a next portion of data associated with the I/O operation from the source device to the destination device, wherein the next portion of data is greater than the prior portion of data, if the measured throughput value associated with the transfer of the prior portion of data is greater than a previous throughput value.
A computer system comprising:
- means for storing a value that represents an amount of time to transfer a portion of data associated with an I/O operation from a source device to a destination device;
- means for transferring a portion of the data from the source device to the destination device;
- means for measuring the time required to transfer the portion of data from the source device to the destination device;
- means for determining whether the measured amount of time is greater than the stored value;
- means for transferring a next portion of data associated with the I/O operation, where the next portion of data is less than the previous portion of data, if it is determined that the measured amount of time is greater than the stored value;
- and
- means for storing the value associated with the measured amount of time in place of the previously stored value.
A computer-readable medium having stored there on, a computer program that adaptively optimizes throughput for an I/O operation, said computer program comprising the executable steps of:
- storing a value for throughput;
- storing a value for I/O size;
- moving a portion of data associated with the I/O operation from a source device to a destination device, wherein the I/O size associated with the portion of data is equivalent to the stored value associated with I/O size;
- measuring the throughput associated with moving the portion of data;
- determining whether the measured throughput value is greater than the stored throughput value;
- and
- increasing the I/O size of a next portion of data to be transferred during the I/O operation, if it was determined that the measured throughput value is greater than the stored throughput value;
- and
- moving a next portion of data associated with the I/O operation from the source device to the destination device.
A computer-readable medium having stored thereon, a computer program that adaptively optimizes data throughput for an I/O operation, said computer program comprising the executable steps of:
- storing a value representing an amount of time to move a portion of data from a source device to a destination device;
- moving a portion of the data associated with the I/O operation from the source device to the destination device;
- measuring the time required to move the portion of data;
- determining whether the measured amount of time is greater than the stored value;
- moving a next portion of data associated with the I/O operation, where the I/O size associated with the next portion of data is less than the I/O size of the prior portion of data, if it is determined that the measured amount of time is greater than the stored value;
- and
- storing the value associated with the measured amount of time in place of the previously stored value.
Dependencies are inferred from the claim text.