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.

Description:
FIELD OF INVENTION 
     The present invention relates to computer systems. More specifically, the present invention relates to optimizing throughput during I/O operations to enhance system performance. 
     BACKGROUND 
     Input/Output (I/O) generally refers to the transfer of data between a computer and an I/O device, such as a hard disk. Traditionally, I/O operations were controlled by the central processing unit (CPU). The CPU accomplished this by issuing simple I/O instructions, which may have included nothing more than a read or write command and a source or destination of the data to be transferred. 
     In more conventional systems, I/O operations are typically controlled by special I/O processors. This gives the CPU more time to execute other critical tasks. 
     There are many ways to measure the efficiency of an I/O operation. One such way is to measure the “throughput” of the I/O operation. Throughput actually represents the rate at which an I/O operation is performed (e.g., in Megabytes per second). If, for example, an I/O operation involves the transfer of 1 Megabyte of data, and that transfer takes 0.1 seconds to complete, the throughput is 10 Megabytes per second. 
     Throughput optimization is extremely important, as less than optimal throughput can significantly hinder the overall performance of the computer system. Optimizing throughput is particularly important when the amount of data to be transferred during an I/O operation (i.e., the I/O size) is exceptionally large, which is often the case when data is being transported, for example, over a network a network connection. 
     There are problems, however, associated with optimizing I/O operation throughput. The main problem is that no single technique or strategy for accomplishing an I/O operation is guaranteed to optimize throughput for each and every set of circumstances associated with the I/O operation. That is because each I/O operation may involve different circumstances, such as, different I/O devices (e.g., hard disks, CD ROMs, network devices), wherein each I/O device exhibits its own distinct characteristics which dictate how an I/O operation involving that I/O device should be accomplished. When the I/O operation involves transferring data over a network connection, network conditions such as traffic load and bandwidth restrictions associated with the network connection may affect throughput, and hence, the ability of one specific I/O technique or strategy to achieve optimal throughput. 
     Typically, the conventional strategy for optimizing throughput during an I/O operation is to maximize I/O size. In other words, conventional systems attempt to optimize throughput during I/O operations by reading as much data as possible from the source I/O device prior to writing the data to the intended destination I/O device. In theory, maximizing I/O size reduces the number of I/O requests (i.e., the number of read and write commands) that must be issued in order to complete the I/O operation. As will be illustrated in greater detail below, reducing the number of I/O requests reduces the number of hardware and/or software overhead operations that are required to complete the I/O operation, for example, issuing commands to reposition the read and/or write heads associated with a hard disk and, of course, physically repositioning them. While this conventional strategy may optimize I/O throughput under one set of circumstances, there is, as stated above, no guarantee that this same strategy will optimize I/O throughput under another set of circumstances. Simply stated, there are many factors that determine which of several I/O strategies are best suited to optimize throughput during a given I/O operation. 
     One factor that is highly likely to determine which of several I/O strategies is best suited for optimizing throughput is whether the I/O device (or devices) has an internal buffer or cache. Another factor is the amount of overhead involved with reading and/or writing the data from/to an I/O device. FIGS. 1A-1D illustrate how factors, such as whether an I/O device has an internal buffer, influence whether one I/O strategy, for example, a strategy that involves a relatively large I/O size, is more likely to optimize throughput than another I/O strategy, for example, a strategy that involves a relatively small I/O size. 
     More specifically, FIG. 1A illustrates the amount of time that may be required to complete an I/O operation that involves reading data from a first I/O device (e.g., a first hard disk) to a computer, and writing that data from the computer to a second I/O device (e.g., a second hard disk), where neither I/O device has an internal buffer or cache. In this example, four relatively small read operations and four relatively small write operations are needed to complete the I/O operation, where a certain amount of hardware and software overhead is associated with each read operation and each write operation. 
     In contrast, FIG. 1B illustrates that the I/O operation shown in FIG. 1A may be accomplished in a shorter period of time if I/O size is increased. As illustrated, increasing the I/O size results in fewer read and write operations. Fewer read and write operations, in turn, result in less time dedicated to overhead operations. As less time is needed for overhead operations, the overall I/O operation is completed in a shorter period of time. Since the same amount of data is transferred using the I/O strategy illustrated in FIG. 1B as compared to FIG. 1A, the throughput associated with the strategy illustrated in FIG. 1B is greater than the throughput associated with the strategy illustrated in FIG.  1 A. 
     Contrary to the results achieved by employing the I/O strategies illustrated in FIGS. 1A and 1B, FIGS. 1C and 1D together illustrate that a shorter I/O size may result in optimal throughput when the I/O devices employ an internal buffer or cache, particularly “read-ahead” and/or “write-behind” cache, and accordingly, the read and write operations, in whole or in part, overlap in the time domain. More specifically, FIG. 1C illustrates that under these circumstances, a relatively large I/O size results in lower throughput as compared to the strategy shown in FIG. 1D, which involves a relatively small I/O size. 
     Given the above-identified problems associated with optimizing throughput during I/O operations, it would be highly desirable to provide a method and/or apparatus that is capable of adaptively establishing an I/O operation strategy that is most likely to optimize throughput during any given I/O operation, on a case-by-case basis. 
     SUMMARY OF THE INVENTION 
     The present invention involves optimizing throughput during I/O operations. Moreover, the present invention does so at runtime and/or continuously throughout the duration of the I/O operation. Thus, the present invention provides an adaptive technique for optimizing throughput, and it does so regardless of the specific hardware configuration associated with the I/O device or devices involved with the I/O operation, as well as additional factors that might otherwise impact the efficiency of the I/O operation. 
     In accordance with one aspect of the present invention, a method for adaptively improving throughput during an I/O operation is provided. The method involves transferring an amount of data corresponding to a first I/O request. An amount of data corresponding to a second I/O request is then adapted so that the throughput associated with the second I/O request increases as compared to the throughput associated with the first I/O request. 
     In accordance with another aspect of the present invention, a method for adaptively improving throughput during an I/O operation is provided. The method involves transferring data from a source device to a destination device through a plurality of I/O requests, and continuously increasing the I/O size of the I/O requests, until throughput has been maximized. Any remaining data associated with the I/O operation is then transferred through one or more I/O requests, where 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. 
     In accordance with yet another aspect of the present invention, a technique, including a corresponding apparatus, for improving computer performance during an I/O operation is provided, wherein a portion of data associated with the I/O operation is transferred from a source device to a destination device, and a throughput value associated with this transfer of data is measured. A determination is then made as to whether the measured throughput value is greater than a previous throughput value. A next portion of data associated with the I/O operation is then transferred from the source device to the destination device, where the next portion of data is greater than the prior portion of data, if the aforementioned determination indicates that the measured throughput value is greater than the previous throughput value. 
     In accordance with still another aspect of the present invention, a technique, including a corresponding apparatus, for improving the performance of a computer system during an I/O operation, where a value representing an amount of time to transfer a portion of data from a source device to a destination device is stored. A portion of the data associated with the I/O operation is then transferred from the source device to the destination device, and the time required to complete this transfer is measured. A determination is then made as to whether the the measured amount of time is greater than the stored value. Then, a next portion of data is transferred, 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. The value associated with the measured amount of time is then stored in place of the previously stored value. 
    
    
     BRIEF DESCRIPTION OF THE FIGURES 
     The objectives and advantages of the present invention will be understood by reading the following detailed description in conjunction with the drawings, in which: 
     FIGS. 1A-1D illustrate how the presence of an internal buffer or cache may influence whether one I/O operation strategy should be employed over others to optimize throughput; 
     FIG. 2 illustrates the architecture of a conventional computer system; 
     FIG. 3A illustrates a technique, in accordance with exemplary  10  embodiments of the present invention, for maximizing throughput during a non-network I/O operation; and 
     FIG. 3B illustrates a technique, in accordance with exemplary embodiments of the present invention, for maximizing throughput during a network I/O operation. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The present invention involves adaptively maximizing the performance of a computer system during I/O operations. More specifically, the present invention involves a technique that adaptively optimizes data throughput for an I/O operation for any given set of circumstances (e.g., any combination of I/O device hardware), at run-time, on a case-by-case basis. If the I/O operation involves transferring data to or from a network device, the present invention provides a technique that continuously adapts to changes in the network environment over the course of the I/O operation to achieve optimal data throughput. 
     FIG. 2 illustrates the architecture of a typical computer system  200 . The computer system  200  comprises a CPU  205 . The CPU  205  controls the operation of the computer system  200 , and it contains units which perform the arithmetic and logical operations necessary to execute program instructions. The computer system  200  also includes internal memory  210 , including both read-only memory and random access memory, and an I/O control unit  215 . The I/O control unit  215  serves as an interface device between the CPU  205  and various I/O devices, such as the display device  220 , the keyboard  225 , and any number of mass storage devices, for example, disk A ( 230 ) and disk B ( 235 ), and network devices (not shown) over network  240 . 
     As stated above, the present invention involves a technique that adaptively optimizes I/O throughput for, or during, an I/O operation regardless of the particular hardware configuration associated with the I/O devices, as well as other relevant factors. As one skilled in the art will readily appreciate, the present invention may be implemented in software or firmware, in accordance with standard programming practices, where the software or firmware may, for example, reside in an I/O control unit such as I/O control unit  215 . 
     FIGS. 3A and 3B illustrate, in greater detail, an exemplary procedure for achieving the adaptive I/O operation strategy, in accordance with exemplary embodiments of the present invention. As shown in FIG. 3A, a number of variables are initialized during a first procedural step  305 . These variables include maximum delay, maximum I/O size, minimum I/O size, and throughput “T”. The maximum delay variable represents the maximum amount of time for completing an I/O request (e.g., a read operation and a corresponding write operation). Maximum I/O size represents the maximum amount of data that can be transferred during an I/O request. In contrast, minimum I/O size represents the minimum amount of data that can be transferred during an I/O request. 
     In decision step  310 , it is determined whether the present I/O operation involves transferring data to or from a network device over a network connection. If the I/O operation, for example, involves transferring data from disk A ( 230 ) to disk B ( 235 ) as shown in FIG. 2, the I/O operation does not involve a network device, in accordance with the “NO” path out of decision step  310 . Thereafter, the initial I/O size is set equal to the minimum I/O size, as defined during step  305 . 
     A first I/O request, or data transfer, is then accomplished as shown in step  320 , where the amount of data transferred is equal to the minimum I/O size. If the I/O operation involves transferring data from disk A ( 230 ) to disk B ( 235 ), the first I/O request generally involves reading data from the source disk A ( 230 ) into computer memory  210 , and thereafter, writing the data from computer memory  210  to the destination disk B ( 235 ). 
     Upon completion of the I/O request, throughput “T” associated with the I/O request is measured, in accordance with step  325 . As stated above, throughput “T” represents the amount of time necessary to transfer the data associated with the I/O request. The first time step  325  is executed, throughput “T” reflects the amount of time needed to transfer an amount of data equivalent to the minimum I/O size. 
     In accordance with decision step  330 , it is determined whether an increase in throughput “T” was realized during the most recent I/O request. Of course, during the first iteration of the procedure illustrated in FIG. 3A, throughput “T” inherently increases, since throughput “T” was initially set to zero (0) during step  305 . Thus, in accordance with the “YES” path out of decision step  330 , the procedure moves to decision step  335 , where a determination is made as to whether the time to accomplish the most recent I/O request exceeded the maximum delay, as defined in step  305 . If the time required to accomplish the most recent I/O request did not exceed the maximum delay, in accordance with the “NO” path out of decision step  335 , the I/O size associated with the next I/O request, if any, is increased by a set amount, in accordance with step  345 . However, the I/O size should not exceed the maximum I/O size defined during step  305 . 
     As shown in decision step  350 , a determination is made as to whether the I/O operation is complete. If, of course, all of the data has been transferred to the destination I/O device, for example, disk B ( 235 ), in accordance with the “YES” path out of decision step  350 , the procedure is terminated. If, however, all of the data associated with the I/O operation has not yet been transferred, in accordance with the “NO” path out of decision step  350 , a next I/O request is executed, as shown in step  320 . 
     The above-identified procedure is then repeated until the I/O operation is complete, or either one of the following events occurs: the throughput “T” measurement indicates that throughput “T” did not increase over the previous throughput “T” measurement, in accordance with the “NO” path out of decision  330 ; the amount of time required to complete the most recent I/O request exceeded the maximum delay, in accordance with the “YES” path out of decision step  335 . If either of these two events do occur, the procedure moves to step  355 , where the I/O size is reduced, for example, to the I/O size used during the previous I/O request, if any. In accordance with a preferred embodiment of the present invention, the I/O size is now fixed for the duration of the I/O operation, which proceeds in accordance with steps  360  and  365 , until all the data has been transferred to the destination I/O device. 
     As previously stated, a determination is initially made as to whether the I/O operation involves transferring data to or from a network device, in accordance with decision step  310 . If the I/O operation does involve transferring data to or from a network device, in accordance with the “YES” path out of decision step  310 , the I/O size is initially set equal to the maximum I/O size, as shown in step  370  on FIG.  3 B. An I/O request is then executed, in accordance with step  375 , and upon completion of the I/O request, the time required to accomplish the I/O request is measured, as shown in step  380 . 
     In accordance with decision step  385 , it is determined whether the amount of time required to complete the I/O request exceeded the value associated with the maximum delay variable. If the amount of time required to complete the I/O request did exceed the maximum delay, in accordance with the “YES” path out of decision step  385 , the I/O size for the next I/O request, if any, is reduced by a set amount, as shown in step  391 . If the I/O operation is not yet complete, in accordance with the “NO” path out of decision step  395 , another I/O request is executed in accordance with step  375 . 
     If, however, at some point the amount of time required to complete the most recent I/O request is determined to be less than or equal to the maximum desired delay, in accordance with the “NO” path out of decision step  385 , the I/O size in increased as shown in step  390 . Again, if the I/O operation is not yet complete, in accordance with the “NO” path out of decision step  395 , another I/O request is executed as shown in step  375 . 
     The above-identified procedure, in accordance with steps  375 - 395 , is continuously executed until all of the data has been transferred to the destination I/O device. However, one skilled in the art will appreciate that the efficiency of the I/O operation strategy is continuously measured, and the strategy, by virtue of continuously increasing or decreasing I/O size, provides optimal I/O throughput. 
     The present invention has been described with reference to exemplary embodiments. However, it will be readily apparent to those skilled in the art that it is possible to embody the invention in specific forms other than those described above without departing from the spirit of the invention. The various aspects and exemplary embodiments are illustrative, and they should not be considered restrictive in any way. The scope of the invention is given by the appended claims, rather than the preceding description, and all variations and equivalents thereof which fall within the range of the claims are intended to be embraced therein.