This invention relates to an apparatus and method to adjust one or more input I output parameters for a computing system. In certain embodiments, the invention relates to an apparatus and method to adjust one or more input/output parameters for an information storage and retrieval system.
As a general matter, a computing systems comprises at least one computing devices in communication with one or more data storage devices. The one or more computing devices and the one or more data storage devices bidirectionally exchange data. In certain embodiments, a computing system comprises an information retrieval system comprising, inter alia, a plurality of data storage devices.
Information storage and retrieval systems are used to store information provided by one or more host computer systems. Such information storage and retrieval systems receive requests to write information to one or more data storage devices, and requests to retrieve information from those one or more data storage devices. In certain embodiments, upon receipt of a read request the system recalls information from the one or more data storage devices and moves that information to a data cache. Thus, the computing system is continuously moving information to and from a plurality of data storage devices, to and from a data cache, and to and from one or more interconnected host computers.
What is needed is an apparatus and method to autonomically adjust one or more input/output (“I/O”) parameters to optimize the overall data flow, i.e. the I/O rate, between the one or more computing devices and the one or more data storage devices.
Applicants' invention comprises a method to adjust one or more I/O parameters for a computing system. The method provides a computing system comprising at least one computing device, one or more data storage devices, and one or more variable I/O parameters. The method establishes a change value and a stabilization period for each of the one or more I/O parameters. The method determines a current I/O rate, selects the (i)th I/O parameter, where that (i)th I/O parameter comprises the (i)th current value.
The method then sets the (i)th I/O parameter equal to the (i)th current value plus the (i)th change value, calculates an adjusted I/O rate, and determines if the adjusted I/O rate is less than the current I/O rate. If the adjusted I/O rate is not less than the current I/O rate, the method saves the adjusted (i)th I/O parameter as the (i)th current value. The method iteratively adjusts the (i)th I/O parameter until the resulting I/O rate is less than the previous I/O rate.
The invention will be better understood from a reading of the following detailed description taken in conjunction with the drawings in which like reference designators are used to designate like elements, and in which:
This invention is described in preferred embodiments in the following description with reference to the Figures, in which like numbers represent the same or similar elements. The invention will be described as embodied in a data processing system comprising an information storage and retrieval system in communication with one or more host computers. The following description of Applicants' method is not meant, however, to limit Applicants' invention to data processing systems, as the invention herein can be generally applied to adjusting one or more I/O parameters for bidirectionally exchanging data between one or more computing devices and one or more information storage devices.
In the illustrated embodiment of
Host computer 390 comprises a computing device, such as a mainframe computer, personal computer, workstation, and combinations thereof, where that computing device comprises an operating system 393 such as Windows, AIX, UNIX, MVS, Linux, etc. (Windows is a registered trademark of Microsoft Corporation; AIX is a registered trademark and MVS is a trademark of IBM Corporation; UNIX is a registered trademark in the United States and other countries licensed exclusively through The Open Group; and Linux is a registered trademark of Linus Torvald). In certain embodiments, operating system 393 comprises one or more device drivers for one or more data storage devices in communication with host computer 390.
Host computer 390 further comprises processor 394. In certain embodiments, host computer 390 further includes a storage management program 391. The storage management program in the host computer 390 may include the functionality of storage management type programs known in the art that manage the transfer of data to and from a information storage and retrieval system, such as the IBM DFSMS implemented in the IBM MVS operating system.
In certain embodiments, Applicants' information storage and retrieval system includes a plurality of host adapters. In the illustrated embodiment of
Each host adapter may comprise one or more Fibre Channel ports, one or more FICON ports, one or more ESCON ports, or one or more SCSI ports, and the like. Each host adapter is connected to both clusters through interconnect bus 121 such that each cluster can handle 1/0 from any host adapter. Internal buses in each subsystem are connected via a Remote 1/0 bridge 155/195 between the processor portions 130/140 and I/O portions 160/170, respectively.
Processor portion 130 includes processor 132 and cache 134. In certain embodiments, processor portion 130 further includes memory 133. In certain embodiments, memory device 133 comprises random access memory. In certain embodiments, memory device 133 comprises non-volatile memory.
Processor portion 140 includes processor 142 and cache 144. In certain embodiments, processor portion 140 further includes memory 143. In certain embodiments, memory device 143 comprises random access memory. In certain embodiments, memory device 143 comprises non-volatile memory.
I/O portion 160 comprises a plurality of device adapters 161 which in the illustrated embodiment of
I/O portion 170 comprises a plurality of device adapters 171 which in the illustrated embodiment of FIG. I comprises device adapters 175, 176, 177, and 178. I/O portion 170 further comprises nonvolatile storage (“NVS”) 172 and battery backup 174 for NVS 172.
In certain embodiments of Applicants' system, one or more host adapters, processor portion 130, and one or more device adapters are disposed on a first control card disposed in Applicants' information storage and retrieval system. Similarly, in certain embodiments, one or more host adapters, processor portion 140, one or more device adapters are disposed on a second control card disposed in Applicants' information storage and retrieval system.
In the illustrated embodiment of
In certain embodiments, one or more of the data storage devices comprise a plurality of hard disk drive units. In certain embodiments, arrays 180 and 190 utilize a RAID protocol. In certain embodiments, arrays 180 and 190 comprise what is sometimes called a JBOD array, i.e. “Just a Bunch Of Disks ” where the array is not configured according to RAID. In certain embodiments, arrays 180 and 190 comprise what is sometimes called an SBOD array, i.e. “Switched Bunch Of Disks”.
The illustrated embodiment of
In the illustrated embodiment of
Each loop contains one or more local controllers, such as switch domain controllers 210, 220, 230, 240, 250, and 260. Each switch domain controller comprises a switch, a processor, and microcode. In certain embodiments, the switch comprises a Fibre Channel switch. In certain embodiments, the processor comprises a SES processor. For example, local controllers 210, 220, 230, 240, 250, and 260, include processors 212, 222, 232, 242, 252, and 262, respectively. Similarly, local controllers 210, 220, 230, 240, 250, and 260, include switches 214, 224, 234, 244, 254, and 264, respectively. In addition, local controllers 210, 220, 230, 240, 250, and 260, include microcode 216, 226, 236, 246, 256, and 266, respectively.
Applicants' invention comprises a method to adjust one or more I/O parameters for a computing system. By “computing system,” Applicants' mean at least one computing device in bidirectional communication with one or more data storage devices.
Referring now to
In step 320, Applicants' method establishes a maximum value, a minimum value, a start value, a change value, a direction vector, and a stabilization period for each of the one or more variable I/O parameters. Table I recites these values for the variable I/O parameters described above.
In certain embodiments, one or more of the values recited in Table 1 are established by the manufacturer of the computing device, such as computer 390. In certain embodiments, one or more of the values recited in Table 1 are established by the manufacturer of the information storage and retrieval system. In certain embodiments, one or more of the values recited in Table 1 are established by the owner of the information storage and retrieval system. In certain embodiments, one or more of the values recited in Table 1 are established by the operator of the information storage and retrieval system. In certain embodiments, one or more of the values recited in Table 1 are established during the initial startup of the information storage and retrieval system. In certain embodiments, one or more of the values recited in Table 1 are established by one or more host computers in communication with the information storage and retrieval system.
In certain embodiments, one or more of the parameters established in step 320 are stored in memory, such as for example memory 396, disposed a computing device, such as host computer 390. In certain embodiments, one or more of the parameters established in step 320 are stored in memory, such as for example memory 133 (
In step 330, Applicants' method selects the (i)th I/O parameter, where that (i)th I/O parameter is one of the one or more I/O parameters of step 310. In certain embodiments, step 330 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 330 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 330 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 330 is performed by a processor, such as processor 132 (
In certain embodiments, step 330 is performed by a processor, such as processor 398, disposed in an appliance, such as appliance 392, external to information storage and retrieval system 100, wherein that appliance is in bidirectional communication with system 100, using for example communication link 397. In certain embodiments, appliance 392 comprises a portable device used to adjust the I/O parameters of an information storage and retrieval system, such as system 100.
In step 340, Applicants' method retrieves the (i)th current value, i.e. the current value for the (i)th I/O parameter, the (i)th minimum value, the (i)th maximum value, the (i)th change value, the (i)th stabilization period, the (i)th director vector, and an iteration counter set to 0.
In certain embodiments, step 340 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 340 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 340 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 340 is performed by a processor, such as processor 132 (
Applicants' method transitions from step 340 to step 350 wherein the method determines the current I/O rate for the information storage and retrieval system, such as system 100. In certain embodiments, step 350 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 350 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 350 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 350 is performed by a processor, such as processor 132 (
Applicants' method transitions from step 350 to step 360 wherein the method calculates an adjusted (i)th I/O parameter by setting the (i)th I/O parameter to the (i)th I/O current value of step 340 plus the multiplication product of the (i)th change value and the (i)th direction vector. In certain embodiments, step 360 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 360 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 360 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 360 is performed by a processor, such as processor 132 (
In certain embodiments, Applicants' method transitions from step 360 to step 370. In other embodiments, Applicants' method transitions from step 360 to step 510 (
In certain embodiments, step 510 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 510 is performed by a processor, such as processor 132 (
If Applicants' method determines in step 510 that the adjusted (i)th I/O parameter is greater than the(i)th maximum value, then the method transitions from step 510 to step 530 wherein the method sets the (i)th I/O parameter equal to the (i)th current value. In certain embodiments, step 530 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 530 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 530 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 530 is performed by a processor, such as processor 132 (
Applicants' method transitions from step 530 to step 540 wherein the method changes the sign of the (i)th direction vector. In certain embodiments, step 540 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 540 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 540 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 540 is performed by a processor, such as processor 132 (
If Applicants' method transitioned from step 360 to step 510 then the method transitions from step 540 to step 360 and continues as described herein. If Applicants' method transitioned from step 440 to step 510 then the method transitions from step 540 to step 440 and continues as described herein.
If Applicants' method determines in step 510 that the adjusted (i)th I/O parameter is not greater than the(i)th maximum value, then the method transitions from step 510 to step 520 wherein the method determines if the adjusted (i)th I/O parameter is less than the (i)th minimum value. In certain embodiments, step 520 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 520 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 520 is performed by a processor, such as processor 132 (
If Applicants' method determines in step 520 that the adjusted (i)th I/O parameter is less than the(i)th minimum value, then the method transitions from step 520 to step 530 and continues as described herein. If Applicants' method determines in step 520 that the adjusted (i)th I/O parameter is not less than the(i)th minimum value, and if the method transitioned from step 360 to step 510 then the method transitions from step 520 to step 370 and continues as described herein. If Applicants' method determines in step 520 that the adjusted (i)th I/O parameter is not less than the(i)th minimum value, and if the method transitioned from step 440 to step 510 then the method transitions from step 520 to step 450 and continues as described herein.
Referring once again to
In certain embodiments, step 370 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 370 is performed by a processor, such as processor 132 (
In step 380, Applicants' method increments by unity the iteration counter. In certain embodiments, step 380 is performed during the (i)th stabilization period. In certain embodiments, steps 370 and 380 are performed substantially synchronously. In certain embodiments, step 380 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 380 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 380 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 380 is performed by a processor, such as processor 132 (
In step 385, Applicants' method determines if the (i)th stabilization period has expired. In certain embodiments, step 385 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 385 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 385 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 385 is performed by a processor, such as processor 132 (
If Applicants' method determines in step 385 that the (i)th stabilization period, initiated in step 370, has not yet expired, then the method continues to monitor whether the (i)th stabilization period has expired. Alternatively, if the method determines in step 385 that the (i)th stabilization period has expired, then the method transitions from step 385 to step 410 (
Referring now to
In certain embodiments, step 410 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 410 is performed by a processor, such as processor 132 (
Applicants' method transitions from step 410 to step 420 wherein the method determines if the adjusted I/O rate determined in step 410 is less than the current I/O rate determined in step 350 (
In certain embodiments, step 420 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 420 is performed by a processor, such as processor 132 (
If Applicants' method determines that the I/O rate of step 410 is not less than the current I/O rate determined in step 350, 470, or 425, then the method transitions from step 420 to step 425 wherein the method saves the I/O rate determined in step 410 as the current I/O rate. In certain embodiments, step 425 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 425 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 425 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 425 is performed by a processor, such as processor 132 (
If Applicants' method determines in step 420 that the I/O rate determined in step 410 is less than the I/O rate determined in step 350 (
In certain embodiments, step 430 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 430 is performed by a processor, such as processor 132 (
If Applicants' method determines in step 430 that the iteration counter is set to 1, then the method transitions from step 430 to step 435 wherein the method changes the sign of the (i)th direction vector, i.e. in step 435 the method sets the (i)th direction vector equal to the multiplication product of the (i)th direction vector of step 340 and −1. In certain embodiments, step 435 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 435 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 435 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 435 is performed by a processor, such as processor 132 (
If Applicants' method determines in step 430 that the iteration counter is not set to 1, then the method transitions from step 430 to step 440 wherein the method sets the (i)th I/O parameter equal to the (i)th current value retrieved in step 340, i.e. reverses the action taken in step 360. In certain embodiments, step 440 comprises setting the (i)th I/O parameter equal to the adjusted value of step 360 minus the multiplication product of the (i)th change value and the (i)th direction vector. In certain embodiments, step 440 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 440 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 440 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 440 is performed by a processor, such as processor 132 (
In certain embodiments, Applicants' method transitions from step 440 to step 510 and continues as described herein. In other embodiments, Applicants' method transitions from step 440 to step 450. In step 450, Applicants' method implements, i.e. begins, the (i)th stabilization period. In certain embodiments, step 450 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 450 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 450 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 450 is performed by a processor, such as processor 132 (
Applicants' method transitions from step 450 to step 460 wherein Applicants' method determines if the (i)th stabilization period has expired. In certain embodiments, step 460 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 460 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 460 is performed by a host computer in communication, with the information storage and retrieval system. In certain embodiments, step 460 is performed by a processor, such as processor 132 (
If Applicants' method determines in step 460 that the (i)th stabilization period, initiated in step 450, has not yet expired, then the method continues to monitor whether the (i)th stabilization period has expired. Alternatively, if the method determines in step 460 that the (i)th stabilization period has expired, then the method transitions from step 460 to step 470 wherein the method determines the system's I/O rate, and saves that I/O rate as the current I/O rate. In certain embodiments, step 470 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 470 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 470 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 470 is performed by a processor, such as processor 132 (
Applicants' method transitions from step 470 to step 480 wherein the method saves the value of (i)th I/O parameter set in step 440 as the (i)th current value. In certain embodiments, step 480 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 480 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 480 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 480 is performed by a processor, such as processor 132 (
Applicants' method transitions from step 480 to step 490 wherein the method sets the iteration counter to 0. In certain embodiments, step 490 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 490 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 490 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 490 is performed by a processor, such as processor 132 (
Applicants' method transitions from step 490 to step 495 wherein the method increments (i) by unity, i.e. sets (i) equal to (i+1). In certain embodiments, step 495 is performed by a processor, such as processor 394, disposed in a computing device, such as computing device 390. In certain embodiments, step 495 is performed by a processor, such as processor 394, disposed in a computing device using a device driver disposed in an operating system, such as operating system 393 (
In certain embodiments, step 495 is performed by a host computer in communication with the information storage and retrieval system. In certain embodiments, step 495 is performed by a processor, such as processor 132 (
The following examples are presented to further illustrate to persons skilled in the art how to make and use the invention. These examples are not intended as a limitation, however, upon the scope of the invention, which is defined only by the appended claims.
In step 330, a computing device, such as host computer 390 (
The device adapter in step 340 retrieves data pertinent to the selected I/O parameter, in step 350 determines the current I/O rate, in step 360 calculates an adjusted (i)th I/O parameter, in step 370 implements the (i)th stabilization period, in step 380 sets the iteration counter to 1, and after expiration of the (i)th stabilization period determines in step 410 an adjusted I/O rate.
As long as an adjusted I/O rate is not less than the prior I/O rate, the device adapter repeats steps 360, 370, 380, 385, 410, 420, and 425. Eventually, raising the number of blocks per I/O results in a negative performance change, i.e. the adjusted I/O rate is less than the current I/O rate. In response, the device adapter determines in step 430 that the iteration counter is not set to 1, and the device adapter in step 440 sets the (i)th I/O parameter to the current value saved during the previous iteration at step 425, in step 450 implements the (i)th stabilization period, after expiration of that stabilization period in step 470 determines and saves the current I/O rate, in step 480 saves the value of the (i)th I/O parameter set in step 470 as the (i)th current value, and in step 490 sets the iteration counter to 0. The device adapter then provides a signal to the host computer that the selected parameter, i.e. BLOCKS_PER_IO has been optimized.
Upon receiving a signal from the device adapter that the I/O parameter BLOCKS_PER_IO has been optimized, the host computer selects the I/O parameter FCP_SCSI_QUEUE_DEPTH, and calls a device driver component of the host computer operating system to optimize that selected I/O parameter. In step 360 the operating system/device driver adjusts the FCP_SCSI_QUEUE_DEPTH parameter by adding the appropriate change value to the current value to permit the simultaneous execution of more commands. In step 420 the operating system/device driver determines that the I/O rate decreased. The current value of the FCP_SCSI_QUEUE_DEPTH parameter is not changed.
In step 430, the operating system/device driver determines that the iteration counter is set to 1, i.e. an initial adjustment had an adverse impact. In step 435, the operating system/device driver changes the sign of the (i)th direction vector, and in step 360 the operating system/device driver adjusts the FCP_SCSI_QUEUE_DEPTH parameter by subtracting the appropriate change value from the current value to permit the simultaneous execution of fewer commands.
In step 420, the operating system/device driver again determines that the system's I/O rate decreased. The current value of the FCP_SCSI_QUEUE_DEPTH parameter is not changed. The operating system/device driver then returns the I/O parameter FCP_SCSI_QUEUE_DEPTH to the current value in step 440.
In certain embodiments, individual steps recited in FIGS. 3 and/or 4 may be combined, eliminated, or reordered.
In certain embodiments, Applicants' invention includes instructions residing in microcode/memory, such as for example microcode 202 (
In other embodiments, Applicants' invention includes instructions residing in any other computer program product, where those instructions are executed by a computer external to, or internal to, system 100, to perform steps 330, 340, 350, 360, 370, 380, 385, recited in
While the preferred embodiments of the present invention have been illustrated in detail, it should be apparent that modifications and adaptations to those embodiments may occur to one skilled in the art without departing from the scope of the present invention as set forth in the following claims.