1. Field of the Invention
The invention relates generally to input/output (I/O) controller devices and more specifically relates to techniques and apparatus for providing a variety of performance levels in a single I/O controller circuit design.
2. Discussion of Related Art
Input/Output (I/O controller devices typically control an associated I/O device and enable communications between the I/O device and host systems or other sources of generating I/O requests to exchange data. Manufacturers of such I/O controller devices (such as storage controller devices) often produce a family of related controller products where each member of the family offers a different level of performance—lower cost, lower performance controllers and higher cost, higher performance models.
At present, manufacturers design such a family of product by using different hardware/circuit designs to upgrade or downgrade performance of each model of the controller device. For example, a higher performance model may use a faster main processor and memory or may use more “lanes” of a Peripheral Component Interconnect Express (PCI Express) internal connection to enhance performance of the controller in processing I/O requests. By contrast, a lower performance model may use slower processor and memory components or may not include custom assist circuits designed into the higher performance models of the controller.
Such hardware re-design techniques raise a number of problems. First, each controller model with its corresponding desired performance level may require design, debug, and maintenance of a unique design. The manufacturer is thus burdened with added design, manufacture, and support costs due to the proliferation of controller models. Further, a hardware design that attempts to lower performance by restricting use of a particular circuit or by removing an assist circuit from the lower cost design may not achieve the desired reduced performance for all mixes of I/O requests. Some types of I/O requests may utilize different processing logic within the controller that avoid the restricted or removed circuitry such that the controller performance may vary depending on the mix of types of requests processed.
Thus it is an ongoing challenge to provide a family of controller models having different performance characteristics.
The present invention solves the above and other problems, thereby advancing the state of the useful arts, by providing methods and apparatus for configurably limiting performance of an I/O controller device. A performance monitor and control module operates in cooperation with the I/O request processing module within the I/O controller to process I/O requests while assuring that the configured maximum performance threshold values are not exceeded.
In one aspect hereof, a method is provided operable in an I/O controller device for limiting performance of the I/O controller device. The method includes determining, within the I/O controller device, a maximum performance threshold value for the I/O controller device and determining, within the I/O controller device, performance of the I/O controller device during processing of I/O requests by the I/O controller device. The method then delays processing of an I/O request within the I/O controller device to maintain performance of the I/O controller device below the maximum performance threshold value.
Another aspect hereof provides an I/O controller device adapted to provide a configurable level of performance. The controller device includes an I/O request processing module adapted to receive I/O requests from one or more host systems and adapted to exchange information with one or more I/O devices to process the received I/O requests. The controller also includes a memory for storing one or more maximum performance threshold values and a performance monitor and control module coupled with the I/O request processing module and coupled with the memory. The performance monitor and control module operable to monitor performance of the I/O request processing module and operable to control operation of the I/O request processing module responsive to the monitoring to assure that performance of the I/O request processing module does not exceed any of the one or more maximum performance threshold values.
In accordance with features and aspects hereof, I/O controller device 102 includes an I/O request processing module 110 operable under control of performance monitor and control module 108. As I/O requests are received and processed by I/O request processing module 110, performance monitor and control module 108 monitors the performance of the processing of I/O requests by processing module 110. Performance monitor and control module 108 retrieves information from a suitable memory storing maximum performance threshold values 106. The threshold values represent the maximum performance configured for operation of I/O controller device 102. The manufacturer of I/O controller device 102 may provide different maximum performance threshold values 106 to allow configuration of a variety of performance levels in marketing a family of related I/O controller devices 102. By simply altering the maximum performance threshold values 106 stored in a suitable memory of I/O controller device 102, a manufacturer may provide a plurality of models of I/O controller device 102 each having a different maximum performance threshold characteristic but operating on the same physical controller design. Such performance threshold value information may be stored in a secured, read-only memory device on the controller programmed/configured only at time of manufacture. In other embodiments, a manufacturer may provide a modifiable configuration for the maximum performance threshold values 106. Such re-programmable values may be stored in a re-writable memory device of the controller and may be secured by a key so that an authorized end user may re-program the controller to permit higher performance levels. Methods and structures for allowing reprogramming of the maximum performance threshold values 106 in a memory of the I/O controller device 102 will be readily apparent to those of ordinary skill in the art.
Performance monitor and control module 106 may monitor a variety of performance criteria/measurements to determine the present performance of the I/O controller device 102. The performance criteria may include, for example, the total number of I/O requests processed, the total volume of data exchanged between the I/O controller device 102 and the host systems, the number of I/O requests satisfied by use of a cache memory (not shown) associated with controller device, the number of I/O requests satisfied without the use of the cache memory, etc. One or more such performance criteria are measured by performance monitor and control module 108 and compared with corresponding one or more maximum performance threshold values 106.
In one exemplary embodiment, such performance criteria are measured over a determined period of time of operation of the I/O controller device. Thus an average performance measurement over a period of time may be compared with the specified one or more maximum performance threshold values 106. Still further, in an exemplary embodiment, the period of time may be altered and a number of such periods of time may be specified to produce an average performance measurement. Thus the performance measurements and threshold values may specify comparisons to be made through a “moving window” of time of operation of the controller device 102. In such a moving window measurement, a specified previous number of time periods may be measured and averaged to determine the average performance over the present moving window period of time.
When a new I/O request is received from a host system 104.1 through 104.2, performance monitor and control module 108 determines whether the I/O request may be processed within the present period of time without exceeding any of the maximum performance threshold values. If not, the request may be delayed until a subsequent period of time. In one exemplary embodiment, I/O controller device 102 may include a memory storing one or more queues 114.1 through 114.2. Each queue may be associated with a corresponding host system 104.1 through 104.2. In such an exemplary embodiment, a newly received I/O request is first entered into the queue corresponding to the host system that generated the newly received request. Performance monitor and control module 108 in conjunction with I/O request processing module 110 then looks for a next I/O request on any of the queues that may be performed within the present period of time by comparing the performance measurements (e.g., average performance during the present period of time) against corresponding maximum performance threshold values 106. When a next I/O request is located that may be performed within the present period of time, the request may be unqueued by I/O request processing module 110 and processed to completion by exchanging related data with I/O device 112. Requests that cannot be processed during the present of time remain queued until a next period of time when the performance monitor and control module 108 in conjunction with I/O processing module 110 attempts again to locate an I/O request to be processed.
Those of ordinary skill in the art will readily recognize that performance monitor and control module 108 and I/O request processing module 110 may be implemented as suitably programmed instructions executed by a general or special purpose processor (not shown) within I/O controller device 102. In other embodiments, the functions of I/O request processing module 110 and performance monitor and control module 108 may be implemented as suitably designed custom circuits and/or combinations of custom circuits and suitably programmed instructions executed by a general or special purpose processor. Still further those of ordinary skill in the art will readily recognize numerous additional and equivalent functional modules within a fully operable I/O controller device 102. Such additional and equivalent modules are omitted for simplicity and brevity of this discussion. Still further, those of ordinary skill in the art will readily recognize numerous types of memory components that may be utilized for storing the maximum performance threshold values 106 and queues 114. 1 through 114.2. Threshold values may be stored in a read-only memory as statically configured by a manufacturer or may be stored in a re-programmable memory device to allow authorized users to upgrade performance of a previously installed I/O controller device. Queues 114.1 through 114.2 may be stored in any suitable RAM device.
Substantially concurrently with the ongoing measurement of performance of the I/O controller device, step 204 may receive a new I/O request from an attached host computing system. Step 206 then determines whether the newly received request may be processed by the I/O controller device without exceeding any of the determined maximum performance threshold value. If processing of the newly received I/O request would cause the measured performance (e.g., average performance) to exceed any of the maximum performance threshold values, step 208 delays processing of the newly received I/O request until a subsequent time during which the I/O request may be processed without exceeding any of the maximum performance threshold values. If the newly received I/O request may be processed during the present period of time without exceeding any of the maximum performance threshold values, step 210 processes the newly received request and adjusts performance measurements to account for the processing of the I/O request. Steps 204 through 210 are repeated for each newly received I/O request delaying any I/O requests that would cause the performance of the I/O controller device to exceed any of the maximum performance threshold values and processing a received request that may be performed without exceeding any of the maximum performance threshold values.
Those of ordinary skill in the art will recognize additional and equivalent method steps relative to the methods discussed in
Embodiments of the invention can take the form of an entirely hardware (i.e., circuits) embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In one embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, embodiments of the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium 512 providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the computer, instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
An I/O controller device computer 500 suitable for storing and/or executing program code will include at least one processor 502 coupled directly or indirectly to memory elements 504 through a system bus 550. The memory elements 504 can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output interface 506 couples the controller to I/O devices to be controlled (e.g., storage devices, etc.). Host system interface 508 may also couple the computer 500 to other data processing systems.
While the invention has been illustrated and described in the drawings and foregoing description, such illustration and description is to be considered as exemplary and not restrictive in character. One embodiment of the invention and minor variants thereof have been shown and described. In particular, features shown and described as exemplary software or firmware embodiments may be equivalently implemented as customized logic circuits and vice versa. Protection is desired for all changes and modifications that come within the spirit of the invention. Those skilled in the art will appreciate variations of the above-described embodiments that fall within the scope of the invention. As a result, the invention is not limited to the specific examples and illustrations discussed above, but only by the following claims and their equivalents.